@jsenv/file-size-impact 14.1.1 → 14.1.2
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/bin/filesize.mjs +6 -6
- package/package.json +4 -4
- package/readme.md +28 -28
- package/src/brotliTransformation.js +7 -7
- package/src/generateFileSizeReport.js +58 -58
- package/src/gzipTransformation.js +7 -7
- package/src/internal/applyTrackingConfig.js +29 -29
- package/src/internal/compareTwoFileSizeReports.js +56 -52
- package/src/internal/formatComment.js +64 -58
- package/src/internal/formatFileSizeReportForLog.js +20 -19
- package/src/internal/formatSize.js +7 -7
- package/src/internal/format_percentage.js +3 -3
- package/src/internal/helper.js +5 -5
- package/src/internal/jsenvCommentParameters.js +38 -38
- package/src/internal/manifest.js +18 -18
- package/src/internal/orderBySizeImpact.js +15 -15
- package/src/internal/renderImpactTable.js +63 -63
- package/src/internal/size_map.js +28 -28
- package/src/jsenvTrackingConfig.js +1 -1
- package/src/main.js +7 -7
- package/src/rawTransformation.js +2 -2
- package/src/report_file_size_impact_in_github_pr.js +17 -17
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { formatPercentage } from "./format_percentage.js"
|
|
2
|
-
import { formatSize } from "./formatSize.js"
|
|
1
|
+
import { formatPercentage } from "./format_percentage.js";
|
|
2
|
+
import { formatSize } from "./formatSize.js";
|
|
3
3
|
|
|
4
4
|
const jsenvFormatGroupSummary = ({
|
|
5
5
|
groupName,
|
|
@@ -7,30 +7,30 @@ const jsenvFormatGroupSummary = ({
|
|
|
7
7
|
groupSizeMapAfterMerge,
|
|
8
8
|
sizeNames,
|
|
9
9
|
}) => {
|
|
10
|
-
const firstSizeName = sizeNames[0]
|
|
11
|
-
const groupSizeBeforeMerge = groupSizeMapBeforeMerge[firstSizeName]
|
|
12
|
-
const groupSizeAfterMerge = groupSizeMapAfterMerge[firstSizeName]
|
|
10
|
+
const firstSizeName = sizeNames[0];
|
|
11
|
+
const groupSizeBeforeMerge = groupSizeMapBeforeMerge[firstSizeName];
|
|
12
|
+
const groupSizeAfterMerge = groupSizeMapAfterMerge[firstSizeName];
|
|
13
13
|
|
|
14
14
|
if (groupSizeBeforeMerge === groupSizeAfterMerge) {
|
|
15
|
-
return `${groupName} (no impact)
|
|
15
|
+
return `${groupName} (no impact)`;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
return `${groupName} (${formatSizeImpactAsPercentage({
|
|
19
19
|
sizeBeforeMerge: groupSizeBeforeMerge,
|
|
20
20
|
sizeAfterMerge: groupSizeAfterMerge,
|
|
21
|
-
})})
|
|
22
|
-
}
|
|
21
|
+
})})`;
|
|
22
|
+
};
|
|
23
23
|
|
|
24
24
|
const jsenvFormatFileRelativeUrl = (fileRelativeUrl) => {
|
|
25
|
-
return fileRelativeUrl
|
|
26
|
-
}
|
|
25
|
+
return fileRelativeUrl;
|
|
26
|
+
};
|
|
27
27
|
|
|
28
28
|
const jsenvFormatFileCell = ({ fileRelativeUrlDisplayed, sizeAfterMerge }) => {
|
|
29
29
|
if (sizeAfterMerge === undefined) {
|
|
30
|
-
return `<del>${fileRelativeUrlDisplayed}</del
|
|
30
|
+
return `<del>${fileRelativeUrlDisplayed}</del>`;
|
|
31
31
|
}
|
|
32
|
-
return fileRelativeUrlDisplayed
|
|
33
|
-
}
|
|
32
|
+
return fileRelativeUrlDisplayed;
|
|
33
|
+
};
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* - added
|
|
@@ -47,8 +47,8 @@ const jsenvFormatFileSizeImpactCell = ({ sizeBeforeMerge, sizeAfterMerge }) => {
|
|
|
47
47
|
// but it would make no sense to compare with something that does not exists like
|
|
48
48
|
// "100 B (+100B / +100%)
|
|
49
49
|
if (sizeBeforeMerge === undefined) {
|
|
50
|
-
const sizeAfterMergeFormatted = formatSize(sizeAfterMerge)
|
|
51
|
-
return sizeAfterMergeFormatted
|
|
50
|
+
const sizeAfterMergeFormatted = formatSize(sizeAfterMerge);
|
|
51
|
+
return sizeAfterMergeFormatted;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
// The file is deleted, it makes sense to display
|
|
@@ -57,41 +57,41 @@ const jsenvFormatFileSizeImpactCell = ({ sizeBeforeMerge, sizeAfterMerge }) => {
|
|
|
57
57
|
// but it would be redundant to add the percentage
|
|
58
58
|
// "deleted (-100 B / -100%)"
|
|
59
59
|
if (sizeAfterMerge === undefined) {
|
|
60
|
-
const sizeDiff = -sizeBeforeMerge
|
|
61
|
-
const sizeDiffFormatted = formatSize(sizeDiff, { diff: true })
|
|
62
|
-
return `deleted (${sizeDiffFormatted})
|
|
60
|
+
const sizeDiff = -sizeBeforeMerge;
|
|
61
|
+
const sizeDiffFormatted = formatSize(sizeDiff, { diff: true });
|
|
62
|
+
return `deleted (${sizeDiffFormatted})`;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
const sizeAfterMergeFormatted = formatSize(sizeAfterMerge)
|
|
66
|
-
const sizeDiff = sizeAfterMerge - sizeBeforeMerge
|
|
67
|
-
const sizeDiffFormatted = formatSize(sizeDiff, { diff: true })
|
|
65
|
+
const sizeAfterMergeFormatted = formatSize(sizeAfterMerge);
|
|
66
|
+
const sizeDiff = sizeAfterMerge - sizeBeforeMerge;
|
|
67
|
+
const sizeDiffFormatted = formatSize(sizeDiff, { diff: true });
|
|
68
68
|
const sizeDiffAsPercentageFormatted = formatSizeImpactAsPercentage({
|
|
69
69
|
sizeBeforeMerge,
|
|
70
70
|
sizeAfterMerge,
|
|
71
|
-
})
|
|
72
|
-
return `${sizeAfterMergeFormatted} (${sizeDiffFormatted} / ${sizeDiffAsPercentageFormatted})
|
|
73
|
-
}
|
|
71
|
+
});
|
|
72
|
+
return `${sizeAfterMergeFormatted} (${sizeDiffFormatted} / ${sizeDiffAsPercentageFormatted})`;
|
|
73
|
+
};
|
|
74
74
|
|
|
75
75
|
export const jsenvFormatEmojiCell = ({ sizeBeforeMerge, sizeAfterMerge }) => {
|
|
76
76
|
if (sizeBeforeMerge === undefined) {
|
|
77
|
-
return ":baby:"
|
|
77
|
+
return ":baby:";
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
if (sizeAfterMerge === undefined) {
|
|
81
|
-
return ""
|
|
81
|
+
return "";
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
const delta = sizeAfterMerge - sizeBeforeMerge
|
|
84
|
+
const delta = sizeAfterMerge - sizeBeforeMerge;
|
|
85
85
|
if (delta === 0) {
|
|
86
|
-
return ":ghost:"
|
|
86
|
+
return ":ghost:";
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
if (delta > 0) {
|
|
90
|
-
return ":arrow_upper_right:"
|
|
90
|
+
return ":arrow_upper_right:";
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
return ":arrow_lower_right:"
|
|
94
|
-
}
|
|
93
|
+
return ":arrow_lower_right:";
|
|
94
|
+
};
|
|
95
95
|
|
|
96
96
|
export const jsenvCommentParameters = {
|
|
97
97
|
filesOrdering: "size_impact",
|
|
@@ -104,10 +104,10 @@ export const jsenvCommentParameters = {
|
|
|
104
104
|
formatFileSizeImpactCell: jsenvFormatFileSizeImpactCell,
|
|
105
105
|
formatEmojiCell: jsenvFormatEmojiCell,
|
|
106
106
|
shouldOpenGroupByDefault: () => false,
|
|
107
|
-
}
|
|
107
|
+
};
|
|
108
108
|
|
|
109
109
|
const formatSizeImpactAsPercentage = ({ sizeBeforeMerge, sizeAfterMerge }) => {
|
|
110
|
-
const sizeDiff = sizeAfterMerge - sizeBeforeMerge
|
|
110
|
+
const sizeDiff = sizeAfterMerge - sizeBeforeMerge;
|
|
111
111
|
const sizeDiffRatio =
|
|
112
112
|
sizeDiff === 0
|
|
113
113
|
? 0
|
|
@@ -115,8 +115,8 @@ const formatSizeImpactAsPercentage = ({ sizeBeforeMerge, sizeAfterMerge }) => {
|
|
|
115
115
|
? 1
|
|
116
116
|
: sizeAfterMerge === 0
|
|
117
117
|
? -1
|
|
118
|
-
: sizeDiff / sizeBeforeMerge
|
|
119
|
-
const sizeDiffAsPercentage = sizeDiffRatio * 100
|
|
120
|
-
const sizeDiffAsPercentageFormatted = formatPercentage(sizeDiffAsPercentage)
|
|
121
|
-
return sizeDiffAsPercentageFormatted
|
|
122
|
-
}
|
|
118
|
+
: sizeDiff / sizeBeforeMerge;
|
|
119
|
+
const sizeDiffAsPercentage = sizeDiffRatio * 100;
|
|
120
|
+
const sizeDiffAsPercentageFormatted = formatPercentage(sizeDiffAsPercentage);
|
|
121
|
+
return sizeDiffAsPercentageFormatted;
|
|
122
|
+
};
|
package/src/internal/manifest.js
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { urlToRelativeUrl } from "@jsenv/urls"
|
|
1
|
+
import { urlToRelativeUrl } from "@jsenv/urls";
|
|
2
2
|
|
|
3
3
|
export const manifestToMappings = (manifestMap) => {
|
|
4
|
-
const mappings = {}
|
|
4
|
+
const mappings = {};
|
|
5
5
|
Object.keys(manifestMap).forEach((manifestRelativeUrl) => {
|
|
6
|
-
const manifest = manifestMap[manifestRelativeUrl]
|
|
6
|
+
const manifest = manifestMap[manifestRelativeUrl];
|
|
7
7
|
const manifestAbstractUrl = new URL(
|
|
8
8
|
manifestRelativeUrl,
|
|
9
9
|
ABSTRACT_DIRECTORY_URL,
|
|
10
|
-
).href
|
|
10
|
+
).href;
|
|
11
11
|
Object.keys(manifest).forEach((manifestKey) => {
|
|
12
|
-
const manifestValue = manifest[manifestKey]
|
|
12
|
+
const manifestValue = manifest[manifestKey];
|
|
13
13
|
const manifestKeyAsAbstractUrl = new URL(manifestKey, manifestAbstractUrl)
|
|
14
|
-
.href
|
|
14
|
+
.href;
|
|
15
15
|
const manifestValueAsAbstractUrl = new URL(
|
|
16
16
|
manifestValue,
|
|
17
17
|
manifestAbstractUrl,
|
|
18
|
-
).href
|
|
18
|
+
).href;
|
|
19
19
|
const manifestKeyAsRelativeUrl = urlToRelativeUrl(
|
|
20
20
|
manifestKeyAsAbstractUrl,
|
|
21
21
|
ABSTRACT_DIRECTORY_URL,
|
|
22
|
-
)
|
|
22
|
+
);
|
|
23
23
|
const manifestValueAsRelativeUrl = urlToRelativeUrl(
|
|
24
24
|
manifestValueAsAbstractUrl,
|
|
25
25
|
ABSTRACT_DIRECTORY_URL,
|
|
26
|
-
)
|
|
27
|
-
mappings[manifestKeyAsRelativeUrl] = manifestValueAsRelativeUrl
|
|
28
|
-
})
|
|
29
|
-
})
|
|
30
|
-
return mappings
|
|
31
|
-
}
|
|
26
|
+
);
|
|
27
|
+
mappings[manifestKeyAsRelativeUrl] = manifestValueAsRelativeUrl;
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
return mappings;
|
|
31
|
+
};
|
|
32
32
|
|
|
33
|
-
const ABSTRACT_DIRECTORY_URL = "file:///directory/"
|
|
33
|
+
const ABSTRACT_DIRECTORY_URL = "file:///directory/";
|
|
34
34
|
|
|
35
35
|
export const manifestKeyFromRelativeUrl = (relativeUrl, mappings) => {
|
|
36
36
|
return Object.keys(mappings).find((keyCandidate) => {
|
|
37
|
-
return mappings[keyCandidate] === relativeUrl
|
|
38
|
-
})
|
|
39
|
-
}
|
|
37
|
+
return mappings[keyCandidate] === relativeUrl;
|
|
38
|
+
});
|
|
39
|
+
};
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
export const orderBySizeImpact = (fileByFileImpact, sizeNames) => {
|
|
2
|
-
const impactOrderedBySizeImpact = {}
|
|
3
|
-
const files = Object.keys(fileByFileImpact)
|
|
4
|
-
const firstSizeName = sizeNames[0]
|
|
2
|
+
const impactOrderedBySizeImpact = {};
|
|
3
|
+
const files = Object.keys(fileByFileImpact);
|
|
4
|
+
const firstSizeName = sizeNames[0];
|
|
5
5
|
files.sort((leftFile, rightFile) => {
|
|
6
6
|
const leftFileSizeImpact =
|
|
7
|
-
fileByFileImpact[leftFile].sizeImpactMap[firstSizeName]
|
|
7
|
+
fileByFileImpact[leftFile].sizeImpactMap[firstSizeName];
|
|
8
8
|
const rightFileSizeImpact =
|
|
9
|
-
fileByFileImpact[rightFile].sizeImpactMap[firstSizeName]
|
|
9
|
+
fileByFileImpact[rightFile].sizeImpactMap[firstSizeName];
|
|
10
10
|
if (leftFileSizeImpact === 0) {
|
|
11
|
-
return 1
|
|
11
|
+
return 1;
|
|
12
12
|
}
|
|
13
13
|
if (rightFileSizeImpact === 0) {
|
|
14
|
-
return -1
|
|
14
|
+
return -1;
|
|
15
15
|
}
|
|
16
16
|
if (leftFileSizeImpact < rightFileSizeImpact) {
|
|
17
|
-
return 1
|
|
17
|
+
return 1;
|
|
18
18
|
}
|
|
19
19
|
if (leftFileSizeImpact > rightFileSizeImpact) {
|
|
20
|
-
return -1
|
|
20
|
+
return -1;
|
|
21
21
|
}
|
|
22
|
-
return 0
|
|
23
|
-
})
|
|
22
|
+
return 0;
|
|
23
|
+
});
|
|
24
24
|
files.forEach((file) => {
|
|
25
|
-
impactOrderedBySizeImpact[file] = fileByFileImpact[file]
|
|
26
|
-
})
|
|
27
|
-
return impactOrderedBySizeImpact
|
|
28
|
-
}
|
|
25
|
+
impactOrderedBySizeImpact[file] = fileByFileImpact[file];
|
|
26
|
+
});
|
|
27
|
+
return impactOrderedBySizeImpact;
|
|
28
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getSizeMapsForManyFiles } from "./size_map.js"
|
|
1
|
+
import { getSizeMapsForManyFiles } from "./size_map.js";
|
|
2
2
|
|
|
3
3
|
export const renderImpactTable = ({
|
|
4
4
|
fileByFileImpact,
|
|
@@ -38,13 +38,13 @@ export const renderImpactTable = ({
|
|
|
38
38
|
groupSizeMapAfterMerge,
|
|
39
39
|
})}
|
|
40
40
|
</tfoot>
|
|
41
|
-
</table
|
|
41
|
+
</table>`;
|
|
42
42
|
|
|
43
|
-
return table
|
|
44
|
-
}
|
|
43
|
+
return table;
|
|
44
|
+
};
|
|
45
45
|
|
|
46
46
|
const renderSizeImpactTableHeader = (transformationKeys) => {
|
|
47
|
-
const lines = []
|
|
47
|
+
const lines = [];
|
|
48
48
|
const headerLine = [
|
|
49
49
|
`<th nowrap>Files</th>`,
|
|
50
50
|
...transformationKeys.map(
|
|
@@ -54,11 +54,11 @@ const renderSizeImpactTableHeader = (transformationKeys) => {
|
|
|
54
54
|
}</th>`,
|
|
55
55
|
),
|
|
56
56
|
`<th></th>`,
|
|
57
|
-
]
|
|
58
|
-
lines.push(headerLine)
|
|
57
|
+
];
|
|
58
|
+
lines.push(headerLine);
|
|
59
59
|
|
|
60
|
-
return renderTableLines(lines)
|
|
61
|
-
}
|
|
60
|
+
return renderTableLines(lines);
|
|
61
|
+
};
|
|
62
62
|
|
|
63
63
|
const renderSizeImpactTableBody = ({
|
|
64
64
|
fileByFileImpact,
|
|
@@ -70,44 +70,44 @@ const renderSizeImpactTableBody = ({
|
|
|
70
70
|
formatFileSizeImpactCell,
|
|
71
71
|
formatEmojiCell,
|
|
72
72
|
}) => {
|
|
73
|
-
const lines = []
|
|
74
|
-
const sizeNames = transformationKeys
|
|
75
|
-
const firstSizeName = sizeNames[0]
|
|
73
|
+
const lines = [];
|
|
74
|
+
const sizeNames = transformationKeys;
|
|
75
|
+
const firstSizeName = sizeNames[0];
|
|
76
76
|
|
|
77
|
-
let remainingFilesToDisplay = maxFilesPerGroup
|
|
78
|
-
const truncateds = []
|
|
79
|
-
const unmodifieds = []
|
|
77
|
+
let remainingFilesToDisplay = maxFilesPerGroup;
|
|
78
|
+
const truncateds = [];
|
|
79
|
+
const unmodifieds = [];
|
|
80
80
|
Object.keys(fileByFileImpact).forEach((fileRelativeUrl) => {
|
|
81
|
-
const fileImpact = fileByFileImpact[fileRelativeUrl]
|
|
81
|
+
const fileImpact = fileByFileImpact[fileRelativeUrl];
|
|
82
82
|
|
|
83
83
|
if (fileImpact.event === "none") {
|
|
84
|
-
unmodifieds.push(fileRelativeUrl)
|
|
85
|
-
return
|
|
84
|
+
unmodifieds.push(fileRelativeUrl);
|
|
85
|
+
return;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
if (remainingFilesToDisplay === 0) {
|
|
89
|
-
truncateds.push(fileRelativeUrl)
|
|
90
|
-
return
|
|
89
|
+
truncateds.push(fileRelativeUrl);
|
|
90
|
+
return;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
remainingFilesToDisplay
|
|
93
|
+
remainingFilesToDisplay--;
|
|
94
94
|
const fileAbstractRelativeUrl =
|
|
95
|
-
fileAbstractRelativeUrlFromFileImpact(fileImpact)
|
|
95
|
+
fileAbstractRelativeUrlFromFileImpact(fileImpact);
|
|
96
96
|
const fileRelativeUrlFormatted = (
|
|
97
97
|
fileImpact.formatFileRelativeUrl || formatFileRelativeUrl
|
|
98
|
-
)(fileAbstractRelativeUrl)
|
|
98
|
+
)(fileAbstractRelativeUrl);
|
|
99
99
|
const fileRelativeUrlDisplayed = truncateFileRelativeUrl(
|
|
100
100
|
fileRelativeUrlFormatted,
|
|
101
101
|
fileRelativeUrlMaxLength,
|
|
102
|
-
)
|
|
102
|
+
);
|
|
103
103
|
const { sizeMapBeforeMerge, sizeMapAfterMerge } =
|
|
104
|
-
fileByFileImpact[fileRelativeUrl]
|
|
104
|
+
fileByFileImpact[fileRelativeUrl];
|
|
105
105
|
const fileCellFormatted = formatFileCell({
|
|
106
106
|
fileRelativeUrl,
|
|
107
107
|
fileRelativeUrlDisplayed,
|
|
108
108
|
sizeBeforeMerge: sizeMapBeforeMerge[firstSizeName],
|
|
109
109
|
sizeAfterMerge: sizeMapAfterMerge[firstSizeName],
|
|
110
|
-
})
|
|
110
|
+
});
|
|
111
111
|
|
|
112
112
|
const line = [
|
|
113
113
|
`<td nowrap>${fileCellFormatted}</td>`,
|
|
@@ -116,7 +116,7 @@ const renderSizeImpactTableBody = ({
|
|
|
116
116
|
sizeBeforeMerge: sizeMapBeforeMerge[sizeName],
|
|
117
117
|
sizeAfterMerge: sizeMapAfterMerge[sizeName],
|
|
118
118
|
sizeName,
|
|
119
|
-
})}</td
|
|
119
|
+
})}</td>`;
|
|
120
120
|
}),
|
|
121
121
|
...(formatEmojiCell
|
|
122
122
|
? [
|
|
@@ -126,17 +126,17 @@ const renderSizeImpactTableBody = ({
|
|
|
126
126
|
})}</td>`,
|
|
127
127
|
]
|
|
128
128
|
: []),
|
|
129
|
-
]
|
|
130
|
-
lines.push(line)
|
|
131
|
-
})
|
|
129
|
+
];
|
|
130
|
+
lines.push(line);
|
|
131
|
+
});
|
|
132
132
|
|
|
133
|
-
const truncatedCount = truncateds.length
|
|
133
|
+
const truncatedCount = truncateds.length;
|
|
134
134
|
if (truncatedCount > 0) {
|
|
135
135
|
const { sizeMapBeforeMerge, sizeMapAfterMerge } = getSizeMapsForManyFiles({
|
|
136
136
|
sizeNames,
|
|
137
137
|
fileByFileImpact,
|
|
138
138
|
files: truncateds,
|
|
139
|
-
})
|
|
139
|
+
});
|
|
140
140
|
const lineForTruncatedFiles = [
|
|
141
141
|
`<td nowrap><i>Truncated (${truncatedCount})</i></td>`,
|
|
142
142
|
...sizeNames.map((sizeName) => {
|
|
@@ -144,7 +144,7 @@ const renderSizeImpactTableBody = ({
|
|
|
144
144
|
sizeBeforeMerge: sizeMapBeforeMerge[sizeName],
|
|
145
145
|
sizeAfterMerge: sizeMapAfterMerge[sizeName],
|
|
146
146
|
sizeName,
|
|
147
|
-
})}</td
|
|
147
|
+
})}</td>`;
|
|
148
148
|
}),
|
|
149
149
|
...(formatEmojiCell
|
|
150
150
|
? [
|
|
@@ -154,17 +154,17 @@ const renderSizeImpactTableBody = ({
|
|
|
154
154
|
})}</td>`,
|
|
155
155
|
]
|
|
156
156
|
: []),
|
|
157
|
-
]
|
|
158
|
-
lines.push(lineForTruncatedFiles)
|
|
157
|
+
];
|
|
158
|
+
lines.push(lineForTruncatedFiles);
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
const unmodifiedCount = unmodifieds.length
|
|
161
|
+
const unmodifiedCount = unmodifieds.length;
|
|
162
162
|
if (unmodifiedCount > 0) {
|
|
163
163
|
const { sizeMapBeforeMerge, sizeMapAfterMerge } = getSizeMapsForManyFiles({
|
|
164
164
|
sizeNames,
|
|
165
165
|
fileByFileImpact,
|
|
166
166
|
files: unmodifieds,
|
|
167
|
-
})
|
|
167
|
+
});
|
|
168
168
|
const lineForUnmodifiedFiles = [
|
|
169
169
|
`<td nowrap><i>Unmodified (${unmodifiedCount})</i></td>`,
|
|
170
170
|
...sizeNames.map((sizeName) => {
|
|
@@ -172,7 +172,7 @@ const renderSizeImpactTableBody = ({
|
|
|
172
172
|
sizeBeforeMerge: sizeMapBeforeMerge[sizeName],
|
|
173
173
|
sizeAfterMerge: sizeMapAfterMerge[sizeName],
|
|
174
174
|
sizeName,
|
|
175
|
-
})}</td
|
|
175
|
+
})}</td>`;
|
|
176
176
|
}),
|
|
177
177
|
...(formatEmojiCell
|
|
178
178
|
? [
|
|
@@ -182,12 +182,12 @@ const renderSizeImpactTableBody = ({
|
|
|
182
182
|
})}</td>`,
|
|
183
183
|
]
|
|
184
184
|
: []),
|
|
185
|
-
]
|
|
186
|
-
lines.push(lineForUnmodifiedFiles)
|
|
185
|
+
];
|
|
186
|
+
lines.push(lineForUnmodifiedFiles);
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
return renderTableLines(lines)
|
|
190
|
-
}
|
|
189
|
+
return renderTableLines(lines);
|
|
190
|
+
};
|
|
191
191
|
|
|
192
192
|
const fileAbstractRelativeUrlFromFileImpact = ({
|
|
193
193
|
manifestKeyBeforeMerge,
|
|
@@ -200,8 +200,8 @@ const fileAbstractRelativeUrlFromFileImpact = ({
|
|
|
200
200
|
relativeUrlAfterMerge ||
|
|
201
201
|
manifestKeyBeforeMerge ||
|
|
202
202
|
relativeUrlBeforeMerge
|
|
203
|
-
)
|
|
204
|
-
}
|
|
203
|
+
);
|
|
204
|
+
};
|
|
205
205
|
|
|
206
206
|
const renderSizeImpactTableFooter = ({
|
|
207
207
|
fileByFileImpact,
|
|
@@ -211,11 +211,11 @@ const renderSizeImpactTableFooter = ({
|
|
|
211
211
|
groupSizeMapBeforeMerge,
|
|
212
212
|
groupSizeMapAfterMerge,
|
|
213
213
|
}) => {
|
|
214
|
-
const footerLines = []
|
|
214
|
+
const footerLines = [];
|
|
215
215
|
|
|
216
|
-
const fileCount = Object.keys(fileByFileImpact).length
|
|
217
|
-
const sizeNames = transformationKeys
|
|
218
|
-
const firstSizeName = sizeNames[0]
|
|
216
|
+
const fileCount = Object.keys(fileByFileImpact).length;
|
|
217
|
+
const sizeNames = transformationKeys;
|
|
218
|
+
const firstSizeName = sizeNames[0];
|
|
219
219
|
|
|
220
220
|
const groupSizeImpactLine = [
|
|
221
221
|
`<td nowrap><strong>Total (${fileCount})</strong></td>`,
|
|
@@ -235,28 +235,28 @@ const renderSizeImpactTableFooter = ({
|
|
|
235
235
|
})}</td>`,
|
|
236
236
|
]
|
|
237
237
|
: []),
|
|
238
|
-
]
|
|
239
|
-
footerLines.push(groupSizeImpactLine)
|
|
238
|
+
];
|
|
239
|
+
footerLines.push(groupSizeImpactLine);
|
|
240
240
|
|
|
241
|
-
return renderTableLines(footerLines)
|
|
242
|
-
}
|
|
241
|
+
return renderTableLines(footerLines);
|
|
242
|
+
};
|
|
243
243
|
|
|
244
244
|
const truncateFileRelativeUrl = (fileRelativeUrl, fileRelativeUrlMaxLength) => {
|
|
245
|
-
const length = fileRelativeUrl.length
|
|
246
|
-
const extraLength = length - fileRelativeUrlMaxLength
|
|
245
|
+
const length = fileRelativeUrl.length;
|
|
246
|
+
const extraLength = length - fileRelativeUrlMaxLength;
|
|
247
247
|
if (extraLength > 0) {
|
|
248
|
-
return `…${fileRelativeUrl.slice(extraLength)}
|
|
248
|
+
return `…${fileRelativeUrl.slice(extraLength)}`;
|
|
249
249
|
}
|
|
250
|
-
return fileRelativeUrl
|
|
251
|
-
}
|
|
250
|
+
return fileRelativeUrl;
|
|
251
|
+
};
|
|
252
252
|
|
|
253
253
|
const renderTableLines = (lines, { indentCount = 3, indentSize = 2 } = {}) => {
|
|
254
254
|
if (lines.length === 0) {
|
|
255
|
-
return ""
|
|
255
|
+
return "";
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
-
const cellLeftSpacing = indent(indentCount + 1, indentSize)
|
|
259
|
-
const lineLeftSpacing = indent(indentCount, indentSize)
|
|
258
|
+
const cellLeftSpacing = indent(indentCount + 1, indentSize);
|
|
259
|
+
const lineLeftSpacing = indent(indentCount, indentSize);
|
|
260
260
|
|
|
261
261
|
return `<tr>${lines.map(
|
|
262
262
|
(cells) => `
|
|
@@ -265,7 +265,7 @@ ${cellLeftSpacing}`)}`,
|
|
|
265
265
|
).join(`
|
|
266
266
|
${lineLeftSpacing}</tr>
|
|
267
267
|
${lineLeftSpacing}<tr>`)}
|
|
268
|
-
${lineLeftSpacing}</tr
|
|
269
|
-
}
|
|
268
|
+
${lineLeftSpacing}</tr>`;
|
|
269
|
+
};
|
|
270
270
|
|
|
271
|
-
const indent = (count, size) => ` `.repeat(size * count)
|
|
271
|
+
const indent = (count, size) => ` `.repeat(size * count);
|
package/src/internal/size_map.js
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
export const getSizeMapsOneFile = ({ sizeNames, beforeMerge, afterMerge }) => {
|
|
2
|
-
const sizeMapBeforeMerge = {}
|
|
3
|
-
const sizeMapAfterMerge = {}
|
|
4
|
-
const sizeImpactMap = {}
|
|
2
|
+
const sizeMapBeforeMerge = {};
|
|
3
|
+
const sizeMapAfterMerge = {};
|
|
4
|
+
const sizeImpactMap = {};
|
|
5
5
|
|
|
6
6
|
sizeNames.forEach((sizeName) => {
|
|
7
7
|
if (beforeMerge === null) {
|
|
8
|
-
sizeMapBeforeMerge[sizeName] = undefined
|
|
9
|
-
sizeMapAfterMerge[sizeName] = afterMerge.sizeMap[sizeName]
|
|
10
|
-
sizeImpactMap[sizeName] = afterMerge.sizeMap[sizeName]
|
|
8
|
+
sizeMapBeforeMerge[sizeName] = undefined;
|
|
9
|
+
sizeMapAfterMerge[sizeName] = afterMerge.sizeMap[sizeName];
|
|
10
|
+
sizeImpactMap[sizeName] = afterMerge.sizeMap[sizeName];
|
|
11
11
|
} else if (afterMerge === null) {
|
|
12
|
-
sizeMapBeforeMerge[sizeName] = beforeMerge.sizeMap[sizeName]
|
|
13
|
-
sizeMapAfterMerge[sizeName] = undefined
|
|
14
|
-
sizeImpactMap[sizeName] = -beforeMerge.sizeMap[sizeName]
|
|
12
|
+
sizeMapBeforeMerge[sizeName] = beforeMerge.sizeMap[sizeName];
|
|
13
|
+
sizeMapAfterMerge[sizeName] = undefined;
|
|
14
|
+
sizeImpactMap[sizeName] = -beforeMerge.sizeMap[sizeName];
|
|
15
15
|
} else {
|
|
16
|
-
sizeMapBeforeMerge[sizeName] = beforeMerge.sizeMap[sizeName]
|
|
17
|
-
sizeMapAfterMerge[sizeName] = afterMerge.sizeMap[sizeName]
|
|
16
|
+
sizeMapBeforeMerge[sizeName] = beforeMerge.sizeMap[sizeName];
|
|
17
|
+
sizeMapAfterMerge[sizeName] = afterMerge.sizeMap[sizeName];
|
|
18
18
|
sizeImpactMap[sizeName] =
|
|
19
|
-
afterMerge.sizeMap[sizeName] - beforeMerge.sizeMap[sizeName]
|
|
19
|
+
afterMerge.sizeMap[sizeName] - beforeMerge.sizeMap[sizeName];
|
|
20
20
|
}
|
|
21
|
-
})
|
|
21
|
+
});
|
|
22
22
|
|
|
23
23
|
return {
|
|
24
24
|
sizeMapBeforeMerge,
|
|
25
25
|
sizeMapAfterMerge,
|
|
26
26
|
sizeImpactMap,
|
|
27
|
-
}
|
|
28
|
-
}
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
29
|
|
|
30
30
|
export const getSizeMapsForManyFiles = ({
|
|
31
31
|
sizeNames,
|
|
32
32
|
fileByFileImpact,
|
|
33
33
|
files,
|
|
34
34
|
}) => {
|
|
35
|
-
const sizeMapBeforeMerge = {}
|
|
36
|
-
const sizeMapAfterMerge = {}
|
|
35
|
+
const sizeMapBeforeMerge = {};
|
|
36
|
+
const sizeMapAfterMerge = {};
|
|
37
37
|
|
|
38
38
|
sizeNames.forEach((sizeName) => {
|
|
39
|
-
let sizeBeforeMerge = 0
|
|
40
|
-
let sizeAfterMerge = 0
|
|
39
|
+
let sizeBeforeMerge = 0;
|
|
40
|
+
let sizeAfterMerge = 0;
|
|
41
41
|
files.forEach((fileRelativeUrl) => {
|
|
42
42
|
const { sizeMapBeforeMerge, sizeMapAfterMerge } =
|
|
43
|
-
fileByFileImpact[fileRelativeUrl]
|
|
44
|
-
sizeBeforeMerge += sizeMapBeforeMerge[sizeName] || 0
|
|
45
|
-
sizeAfterMerge += sizeMapAfterMerge[sizeName] || 0
|
|
46
|
-
})
|
|
47
|
-
sizeMapBeforeMerge[sizeName] = sizeBeforeMerge
|
|
48
|
-
sizeMapAfterMerge[sizeName] = sizeAfterMerge
|
|
49
|
-
})
|
|
43
|
+
fileByFileImpact[fileRelativeUrl];
|
|
44
|
+
sizeBeforeMerge += sizeMapBeforeMerge[sizeName] || 0;
|
|
45
|
+
sizeAfterMerge += sizeMapAfterMerge[sizeName] || 0;
|
|
46
|
+
});
|
|
47
|
+
sizeMapBeforeMerge[sizeName] = sizeBeforeMerge;
|
|
48
|
+
sizeMapAfterMerge[sizeName] = sizeAfterMerge;
|
|
49
|
+
});
|
|
50
50
|
|
|
51
51
|
return {
|
|
52
52
|
sizeMapBeforeMerge,
|
|
53
53
|
sizeMapAfterMerge,
|
|
54
|
-
}
|
|
55
|
-
}
|
|
54
|
+
};
|
|
55
|
+
};
|
package/src/main.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { readGitHubWorkflowEnv } from "@jsenv/github-pull-request-impact"
|
|
1
|
+
export { readGitHubWorkflowEnv } from "@jsenv/github-pull-request-impact";
|
|
2
2
|
|
|
3
|
-
export { jsenvTrackingConfig } from "./jsenvTrackingConfig.js"
|
|
4
|
-
export { transform as raw } from "./rawTransformation.js"
|
|
5
|
-
export { transform as gzip } from "./gzipTransformation.js"
|
|
6
|
-
export { transform as brotli } from "./brotliTransformation.js"
|
|
7
|
-
export { generateFileSizeReport } from "./generateFileSizeReport.js"
|
|
8
|
-
export { reportFileSizeImpactInGitHubPullRequest } from "./report_file_size_impact_in_github_pr.js"
|
|
3
|
+
export { jsenvTrackingConfig } from "./jsenvTrackingConfig.js";
|
|
4
|
+
export { transform as raw } from "./rawTransformation.js";
|
|
5
|
+
export { transform as gzip } from "./gzipTransformation.js";
|
|
6
|
+
export { transform as brotli } from "./brotliTransformation.js";
|
|
7
|
+
export { generateFileSizeReport } from "./generateFileSizeReport.js";
|
|
8
|
+
export { reportFileSizeImpactInGitHubPullRequest } from "./report_file_size_impact_in_github_pr.js";
|
package/src/rawTransformation.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export const name = "raw"
|
|
1
|
+
export const name = "raw";
|
|
2
2
|
|
|
3
|
-
export const transform = (value) => value
|
|
3
|
+
export const transform = (value) => value;
|