@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.
@@ -1,39 +1,42 @@
1
- import { comparePathnames } from "@jsenv/filesystem"
1
+ import { comparePathnames } from "@jsenv/filesystem";
2
2
 
3
- import { manifestToMappings, manifestKeyFromRelativeUrl } from "./manifest.js"
3
+ import { manifestToMappings, manifestKeyFromRelativeUrl } from "./manifest.js";
4
4
 
5
5
  export const compareTwoFileSizeReports = ({
6
6
  afterMergeFileSizeReport,
7
7
  beforeMergeFileSizeReport,
8
8
  }) => {
9
- const groupComparison = {}
10
- const afterMergeGroups = afterMergeFileSizeReport.groups
11
- const beforeMergeGroups = beforeMergeFileSizeReport.groups
9
+ const groupComparison = {};
10
+ const afterMergeGroups = afterMergeFileSizeReport.groups;
11
+ const beforeMergeGroups = beforeMergeFileSizeReport.groups;
12
12
  Object.keys(afterMergeGroups).forEach((group) => {
13
13
  // || {} exists in case group was not tracked in base branch
14
14
  // and is now tracked in head branch.
15
15
  // compareTwoGroups will handle the empty object and consider everything as added
16
- const beforeMergeGroup = beforeMergeGroups[group] || {}
17
- const afterMergeGroup = afterMergeGroups[group]
18
- groupComparison[group] = compareTwoGroups(beforeMergeGroup, afterMergeGroup)
19
- })
16
+ const beforeMergeGroup = beforeMergeGroups[group] || {};
17
+ const afterMergeGroup = afterMergeGroups[group];
18
+ groupComparison[group] = compareTwoGroups(
19
+ beforeMergeGroup,
20
+ afterMergeGroup,
21
+ );
22
+ });
20
23
 
21
24
  const comparison = {
22
25
  transformationKeys: afterMergeFileSizeReport.transformationKeys,
23
26
  groups: groupComparison,
24
- }
27
+ };
25
28
 
26
- return comparison
27
- }
29
+ return comparison;
30
+ };
28
31
 
29
32
  const compareTwoGroups = (beforeMergeGroup, afterMergeGroup) => {
30
- const groupComparison = {}
31
- const beforeMergeManifestMap = beforeMergeGroup.manifestMap || {}
32
- const beforeMergeFileMap = beforeMergeGroup.fileMap || {}
33
- const beforeMergeMappings = manifestToMappings(beforeMergeManifestMap)
34
- const afterMergeManifestMap = afterMergeGroup.manifestMap || {}
35
- const afterMergeFileMap = afterMergeGroup.fileMap || {}
36
- const afterMergeMappings = manifestToMappings(afterMergeManifestMap)
33
+ const groupComparison = {};
34
+ const beforeMergeManifestMap = beforeMergeGroup.manifestMap || {};
35
+ const beforeMergeFileMap = beforeMergeGroup.fileMap || {};
36
+ const beforeMergeMappings = manifestToMappings(beforeMergeManifestMap);
37
+ const afterMergeManifestMap = afterMergeGroup.manifestMap || {};
38
+ const afterMergeFileMap = afterMergeGroup.fileMap || {};
39
+ const afterMergeMappings = manifestToMappings(afterMergeManifestMap);
37
40
 
38
41
  const getAddInfo = ({ afterMergeRelativeUrl }) => {
39
42
  return {
@@ -47,8 +50,8 @@ const compareTwoGroups = (beforeMergeGroup, afterMergeGroup) => {
47
50
  ) || null,
48
51
  ...afterMergeFileMap[afterMergeRelativeUrl],
49
52
  },
50
- }
51
- }
53
+ };
54
+ };
52
55
  const getUpdateInfo = ({ beforeMergeRelativeUrl, afterMergeRelativeUrl }) => {
53
56
  return {
54
57
  beforeMerge: {
@@ -69,8 +72,8 @@ const compareTwoGroups = (beforeMergeGroup, afterMergeGroup) => {
69
72
  ) || null,
70
73
  ...afterMergeFileMap[afterMergeRelativeUrl],
71
74
  },
72
- }
73
- }
75
+ };
76
+ };
74
77
  const getRemoveInfo = ({ beforeMergeRelativeUrl }) => {
75
78
  return {
76
79
  beforeMerge: {
@@ -82,73 +85,74 @@ const compareTwoGroups = (beforeMergeGroup, afterMergeGroup) => {
82
85
  ...beforeMergeFileMap[beforeMergeRelativeUrl],
83
86
  },
84
87
  afterMerge: null,
85
- }
86
- }
88
+ };
89
+ };
87
90
 
88
91
  Object.keys(afterMergeFileMap).forEach((afterMergeRelativeUrl) => {
89
92
  const afterMergeManifestKey = manifestKeyFromRelativeUrl(
90
93
  afterMergeRelativeUrl,
91
94
  afterMergeMappings,
92
- )
95
+ );
93
96
 
94
97
  if (afterMergeManifestKey) {
95
98
  const existsInBeforeMergeManifest = Object.keys(
96
99
  beforeMergeMappings,
97
- ).includes(afterMergeManifestKey)
100
+ ).includes(afterMergeManifestKey);
98
101
  if (existsInBeforeMergeManifest) {
99
102
  // the manifest key also appears in the manifest before merge.
100
103
  // It means that even if both file have different relative urls,
101
104
  // they are considered the same.
102
105
  // This is to support file generated with a dynamic name
103
106
  const beforeMergeRelativeUrl =
104
- beforeMergeMappings[afterMergeManifestKey]
105
- const beforeMerge = beforeMergeFileMap[beforeMergeRelativeUrl]
107
+ beforeMergeMappings[afterMergeManifestKey];
108
+ const beforeMerge = beforeMergeFileMap[beforeMergeRelativeUrl];
106
109
  if (beforeMerge) {
107
110
  groupComparison[afterMergeRelativeUrl] = getUpdateInfo({
108
111
  beforeMergeRelativeUrl,
109
112
  afterMergeRelativeUrl,
110
- })
111
- return
113
+ });
114
+ return;
112
115
  }
113
116
  }
114
117
  }
115
118
 
116
- const beforeMerge = beforeMergeFileMap[afterMergeRelativeUrl]
119
+ const beforeMerge = beforeMergeFileMap[afterMergeRelativeUrl];
117
120
  groupComparison[afterMergeRelativeUrl] = beforeMerge
118
121
  ? getUpdateInfo({
119
122
  beforeMergeRelativeUrl: afterMergeRelativeUrl,
120
123
  afterMergeRelativeUrl,
121
124
  })
122
- : getAddInfo({ afterMergeRelativeUrl })
123
- })
125
+ : getAddInfo({ afterMergeRelativeUrl });
126
+ });
124
127
  Object.keys(beforeMergeFileMap).forEach((beforeMergeRelativeUrl) => {
125
128
  // if the file is not in the after merge, it got deleted
126
129
  // except if it is remapped, in this case it can be ignored
127
130
  const beforeMergeManifestKey = manifestKeyFromRelativeUrl(
128
131
  beforeMergeRelativeUrl,
129
132
  beforeMergeMappings,
130
- )
133
+ );
131
134
  if (beforeMergeManifestKey) {
132
135
  const existsInAfterMergeManifest = Object.keys(
133
136
  afterMergeMappings,
134
- ).includes(beforeMergeManifestKey)
137
+ ).includes(beforeMergeManifestKey);
135
138
  if (existsInAfterMergeManifest) {
136
139
  // file also referenced in after merge manifest
137
140
  // let's first see if the file still exists
138
- const afterMergeRelativeUrl = afterMergeMappings[beforeMergeManifestKey]
139
- const afterMerge = afterMergeFileMap[afterMergeRelativeUrl]
141
+ const afterMergeRelativeUrl =
142
+ afterMergeMappings[beforeMergeManifestKey];
143
+ const afterMerge = afterMergeFileMap[afterMergeRelativeUrl];
140
144
  if (afterMerge) {
141
145
  // there is a file for this mapping, file was already
142
146
  // detected and considered as an update during afterMergeFileMap loop above
143
- return
147
+ return;
144
148
  }
145
149
  }
146
150
  }
147
151
 
148
- const afterMerge = afterMergeFileMap[beforeMergeRelativeUrl]
152
+ const afterMerge = afterMergeFileMap[beforeMergeRelativeUrl];
149
153
  if (afterMerge) {
150
154
  // there is a file
151
- return
155
+ return;
152
156
  }
153
157
 
154
158
  // at this point there is no file for an eventual file mapping from manifest
@@ -156,23 +160,23 @@ const compareTwoGroups = (beforeMergeGroup, afterMergeGroup) => {
156
160
  // -> the file is gone
157
161
  groupComparison[beforeMergeRelativeUrl] = getRemoveInfo({
158
162
  beforeMergeRelativeUrl,
159
- })
160
- })
163
+ });
164
+ });
161
165
 
162
- const fileImpactMap = sortFileStructure(groupComparison)
166
+ const fileImpactMap = sortFileStructure(groupComparison);
163
167
 
164
168
  return {
165
169
  tracking: afterMergeGroup.tracking,
166
170
  fileImpactMap,
167
- }
168
- }
171
+ };
172
+ };
169
173
 
170
174
  const sortFileStructure = (fileStructure) => {
171
175
  const relativeUrlSortedArray =
172
- Object.keys(fileStructure).sort(comparePathnames)
173
- const fileStructureSorted = {}
176
+ Object.keys(fileStructure).sort(comparePathnames);
177
+ const fileStructureSorted = {};
174
178
  relativeUrlSortedArray.forEach((relativeUrl) => {
175
- fileStructureSorted[relativeUrl] = fileStructure[relativeUrl]
176
- })
177
- return fileStructureSorted
178
- }
179
+ fileStructureSorted[relativeUrl] = fileStructure[relativeUrl];
180
+ });
181
+ return fileStructureSorted;
182
+ };
@@ -1,8 +1,8 @@
1
- import { compareTwoFileSizeReports } from "./compareTwoFileSizeReports.js"
2
- import { isAdded, isModified, isDeleted } from "./helper.js"
3
- import { renderImpactTable } from "./renderImpactTable.js"
4
- import { orderBySizeImpact } from "./orderBySizeImpact.js"
5
- import { getSizeMapsOneFile, getSizeMapsForManyFiles } from "./size_map.js"
1
+ import { compareTwoFileSizeReports } from "./compareTwoFileSizeReports.js";
2
+ import { isAdded, isModified, isDeleted } from "./helper.js";
3
+ import { renderImpactTable } from "./renderImpactTable.js";
4
+ import { orderBySizeImpact } from "./orderBySizeImpact.js";
5
+ import { getSizeMapsOneFile, getSizeMapsForManyFiles } from "./size_map.js";
6
6
 
7
7
  export const formatComment = ({
8
8
  pullRequestBase,
@@ -20,17 +20,17 @@ export const formatComment = ({
20
20
  formatEmojiCell,
21
21
  shouldOpenGroupByDefault,
22
22
  }) => {
23
- const warnings = []
23
+ const warnings = [];
24
24
  const reportComparison = compareTwoFileSizeReports({
25
25
  afterMergeFileSizeReport,
26
26
  beforeMergeFileSizeReport,
27
- })
28
- const groupCount = Object.keys(reportComparison.groups).length
27
+ });
28
+ const groupCount = Object.keys(reportComparison.groups).length;
29
29
 
30
30
  if (groupCount === 0) {
31
31
  warnings.push(
32
32
  `**Warning:** Nothing is tracked. It happens when tracking config is an empty object.`,
33
- )
33
+ );
34
34
  }
35
35
 
36
36
  let body = renderCommentBody({
@@ -47,14 +47,14 @@ export const formatComment = ({
47
47
  formatFileSizeImpactCell,
48
48
  formatEmojiCell,
49
49
  shouldOpenGroupByDefault,
50
- })
50
+ });
51
51
 
52
52
  body = `<h4 id="file-size-impact">File size impact</h4>
53
53
 
54
- ${body}`
54
+ ${body}`;
55
55
 
56
- return { warnings, body }
57
- }
56
+ return { warnings, body };
57
+ };
58
58
 
59
59
  const renderCommentBody = ({
60
60
  pullRequestBase,
@@ -71,37 +71,37 @@ const renderCommentBody = ({
71
71
  formatEmojiCell,
72
72
  shouldOpenGroupByDefault,
73
73
  }) => {
74
- const { groups, transformationKeys } = reportComparison
74
+ const { groups, transformationKeys } = reportComparison;
75
75
 
76
76
  const groupMessages = Object.keys(groups).map((groupName) => {
77
- const groupComparison = groups[groupName]
78
- const groupFileImpactMap = groupComparison.fileImpactMap
79
- let fileByFileImpact = {}
80
- const files = Object.keys(groupFileImpactMap)
77
+ const groupComparison = groups[groupName];
78
+ const groupFileImpactMap = groupComparison.fileImpactMap;
79
+ let fileByFileImpact = {};
80
+ const files = Object.keys(groupFileImpactMap);
81
81
 
82
82
  files.forEach((fileRelativeUrl) => {
83
- const { beforeMerge, afterMerge } = groupFileImpactMap[fileRelativeUrl]
83
+ const { beforeMerge, afterMerge } = groupFileImpactMap[fileRelativeUrl];
84
84
  const event = isAdded({ beforeMerge, afterMerge })
85
85
  ? "added"
86
86
  : isDeleted({ beforeMerge, afterMerge })
87
87
  ? "deleted"
88
88
  : isModified({ beforeMerge, afterMerge })
89
89
  ? "modified"
90
- : "none"
91
- const meta = event === "deleted" ? beforeMerge.meta : afterMerge.meta
90
+ : "none";
91
+ const meta = event === "deleted" ? beforeMerge.meta : afterMerge.meta;
92
92
 
93
93
  const { sizeMapBeforeMerge, sizeMapAfterMerge, sizeImpactMap } =
94
94
  getSizeMapsOneFile({
95
95
  sizeNames: transformationKeys,
96
96
  beforeMerge,
97
97
  afterMerge,
98
- })
98
+ });
99
99
  const { showSizeImpact, formatFileRelativeUrl } = metaToData(meta, {
100
100
  fileRelativeUrl,
101
101
  sizeBeforeMerge: sizeMapBeforeMerge[0],
102
102
  sizeAfterMerge: sizeMapAfterMerge[0],
103
103
  sizeImpactMap,
104
- })
104
+ });
105
105
  fileByFileImpact[fileRelativeUrl] = {
106
106
  event,
107
107
  manifestKeyBeforeMerge: beforeMerge
@@ -117,20 +117,23 @@ const renderCommentBody = ({
117
117
  sizeImpactMap,
118
118
  showSizeImpact,
119
119
  formatFileRelativeUrl,
120
- }
121
- })
120
+ };
121
+ });
122
122
  if (filesOrdering === "size_impact") {
123
- fileByFileImpact = orderBySizeImpact(fileByFileImpact, transformationKeys)
123
+ fileByFileImpact = orderBySizeImpact(
124
+ fileByFileImpact,
125
+ transformationKeys,
126
+ );
124
127
  }
125
128
 
126
129
  const groupSizeMaps = getSizeMapsForManyFiles({
127
130
  sizeNames: transformationKeys,
128
131
  fileByFileImpact,
129
132
  files,
130
- })
131
- const groupSizeMapBeforeMerge = groupSizeMaps.sizeMapBeforeMerge
132
- const groupSizeMapAfterMerge = groupSizeMaps.sizeMapAfterMerge
133
- const groupIsEmpty = Object.keys(fileByFileImpact).length === 0
133
+ });
134
+ const groupSizeMapBeforeMerge = groupSizeMaps.sizeMapBeforeMerge;
135
+ const groupSizeMapAfterMerge = groupSizeMaps.sizeMapAfterMerge;
136
+ const groupIsEmpty = Object.keys(fileByFileImpact).length === 0;
134
137
 
135
138
  const groupSummary = formatGroupSummary({
136
139
  groupName,
@@ -138,14 +141,14 @@ const renderCommentBody = ({
138
141
  groupSizeMapAfterMerge,
139
142
  sizeNames: transformationKeys,
140
143
  fileByFileImpact,
141
- })
144
+ });
142
145
  const groupShouldBeOpenByDefault = shouldOpenGroupByDefault({
143
146
  groupName,
144
147
  groupSizeMapBeforeMerge,
145
148
  groupSizeMapAfterMerge,
146
149
  sizeNames: transformationKeys,
147
150
  fileByFileImpact,
148
- })
151
+ });
149
152
 
150
153
  return renderDetails({
151
154
  open: groupShouldBeOpenByDefault,
@@ -167,19 +170,22 @@ const renderCommentBody = ({
167
170
  groupSizeMapBeforeMerge,
168
171
  groupSizeMapAfterMerge,
169
172
  }),
170
- })
171
- })
173
+ });
174
+ });
172
175
 
173
- const mergeImpact = formulateMergeImpact({ pullRequestHead, pullRequestBase })
176
+ const mergeImpact = formulateMergeImpact({
177
+ pullRequestHead,
178
+ pullRequestBase,
179
+ });
174
180
  if (groupMessages.length === 0) {
175
- return mergeImpact
181
+ return mergeImpact;
176
182
  }
177
183
 
178
184
  return `${mergeImpact}
179
185
  ${groupMessages.join(`
180
186
 
181
- `)}`
182
- }
187
+ `)}`;
188
+ };
183
189
 
184
190
  const renderEmptyGroupContent = ({ groupName, groupConfig }) => {
185
191
  return `<p>No file in ${groupName} group (see config below).</p>
@@ -187,12 +193,12 @@ const renderEmptyGroupContent = ({ groupName, groupConfig }) => {
187
193
  \`\`\`json
188
194
  ${JSON.stringify(groupConfig, null, " ")}
189
195
  \`\`\`
190
- `
191
- }
196
+ `;
197
+ };
192
198
 
193
199
  const formulateMergeImpact = ({ pullRequestBase, pullRequestHead }) => {
194
- return `<p>Impact on file sizes when merging <em>${pullRequestHead}</em> into <em>${pullRequestBase}</em>.</p>`
195
- }
200
+ return `<p>Impact on file sizes when merging <em>${pullRequestHead}</em> into <em>${pullRequestBase}</em>.</p>`;
201
+ };
196
202
 
197
203
  const metaToData = (
198
204
  meta,
@@ -201,7 +207,7 @@ const metaToData = (
201
207
  if (typeof meta === "boolean") {
202
208
  return {
203
209
  showSizeImpact: true,
204
- }
210
+ };
205
211
  }
206
212
 
207
213
  if (typeof meta === "object") {
@@ -210,34 +216,34 @@ const metaToData = (
210
216
  sizeBeforeMerge,
211
217
  sizeAfterMerge,
212
218
  sizeImpactMap,
213
- })
214
- const { formatFileRelativeUrl } = meta
219
+ });
220
+ const { formatFileRelativeUrl } = meta;
215
221
  return {
216
222
  showSizeImpact,
217
223
  formatFileRelativeUrl,
218
- }
224
+ };
219
225
  }
220
226
 
221
227
  console.warn(
222
228
  `meta must be a boolean or an object, received ${meta} for ${fileRelativeUrl}`,
223
- )
229
+ );
224
230
  return {
225
231
  showSizeImpact: Boolean(meta),
226
- }
227
- }
232
+ };
233
+ };
228
234
 
229
235
  const showSizeImpactGetter = (
230
236
  meta,
231
237
  { fileRelativeUrl, sizeBeforeMerge, sizeAfterMerge, sizeImpactMap },
232
238
  ) => {
233
- const { showSizeImpact } = meta
239
+ const { showSizeImpact } = meta;
234
240
 
235
241
  if (typeof showSizeImpact === "undefined") {
236
- return true
242
+ return true;
237
243
  }
238
244
 
239
245
  if (typeof showSizeImpact === "boolean") {
240
- return showSizeImpact
246
+ return showSizeImpact;
241
247
  }
242
248
 
243
249
  if (typeof showSizeImpact === "function") {
@@ -246,18 +252,18 @@ const showSizeImpactGetter = (
246
252
  sizeBeforeMerge,
247
253
  sizeAfterMerge,
248
254
  sizeImpactMap,
249
- })
255
+ });
250
256
  }
251
257
 
252
258
  console.warn(
253
259
  `showSizeImpact must be a boolean or a function, received ${showSizeImpact} for ${fileRelativeUrl}`,
254
- )
255
- return true
256
- }
260
+ );
261
+ return true;
262
+ };
257
263
 
258
264
  const renderDetails = ({ summary, content, open = false, indent = 0 }) => {
259
265
  return `${" ".repeat(indent)}<details${open ? " open" : ""}>
260
266
  ${" ".repeat(indent + 2)}<summary>${summary}</summary>
261
267
  ${" ".repeat(indent + 2)}${content}
262
- ${" ".repeat(indent)}</details>`
263
- }
268
+ ${" ".repeat(indent)}</details>`;
269
+ };
@@ -1,40 +1,41 @@
1
- import { formatSize } from "./formatSize.js"
2
- import { manifestToMappings, manifestKeyFromRelativeUrl } from "./manifest.js"
1
+ import { formatSize } from "./formatSize.js";
2
+ import { manifestToMappings, manifestKeyFromRelativeUrl } from "./manifest.js";
3
3
 
4
4
  export const formatFileSizeReportForLog = (fileSizeReport) => {
5
- const { groups } = fileSizeReport
5
+ const { groups } = fileSizeReport;
6
6
 
7
7
  const groupMessages = Object.keys(groups).map((groupName) => {
8
- const { fileMap, manifestMap } = groups[groupName]
8
+ const { fileMap, manifestMap } = groups[groupName];
9
9
 
10
- const mappings = manifestToMappings(manifestMap)
10
+ const mappings = manifestToMappings(manifestMap);
11
11
  const fileMessages = Object.keys(fileMap).map((fileRelativeUrl) => {
12
12
  const fileDisplayed =
13
- manifestKeyFromRelativeUrl(fileRelativeUrl, mappings) || fileRelativeUrl
14
- const file = fileMap[fileRelativeUrl]
15
- const { sizeMap } = file
16
- const sizeNames = Object.keys(sizeMap)
13
+ manifestKeyFromRelativeUrl(fileRelativeUrl, mappings) ||
14
+ fileRelativeUrl;
15
+ const file = fileMap[fileRelativeUrl];
16
+ const { sizeMap } = file;
17
+ const sizeNames = Object.keys(sizeMap);
17
18
  if (sizeNames.length === 1) {
18
- return `${fileDisplayed}: ${formatSize(sizeMap[sizeNames[0]])}`
19
+ return `${fileDisplayed}: ${formatSize(sizeMap[sizeNames[0]])}`;
19
20
  }
20
21
 
21
22
  const sizesFormatted = sizeNames.map((sizeName) => {
22
- return `${sizeName}: ${formatSize(sizeMap[sizeName])}`
23
- })
24
- return `${fileDisplayed}: { ${sizesFormatted.join(`, `)} }`
25
- })
23
+ return `${sizeName}: ${formatSize(sizeMap[sizeName])}`;
24
+ });
25
+ return `${fileDisplayed}: { ${sizesFormatted.join(`, `)} }`;
26
+ });
26
27
 
27
28
  return `${groupName}
28
29
  ---------------------
29
30
  ${fileMessages.join(`
30
- `)}`
31
- })
31
+ `)}`;
32
+ });
32
33
 
33
34
  const message = `
34
35
  ${groupMessages.join(`
35
36
 
36
37
  `)}
37
- `
38
+ `;
38
39
 
39
- return message
40
- }
40
+ return message;
41
+ };
@@ -1,14 +1,14 @@
1
- import { byteAsFileSize } from "@jsenv/log"
1
+ import { byteAsFileSize } from "@jsenv/log";
2
2
 
3
3
  export const formatSize = (sizeNumber, { diff = false } = {}) => {
4
- const sizeNumberAbsolute = Math.abs(sizeNumber)
5
- let sizeString = byteAsFileSize(sizeNumberAbsolute)
4
+ const sizeNumberAbsolute = Math.abs(sizeNumber);
5
+ let sizeString = byteAsFileSize(sizeNumberAbsolute);
6
6
  if (diff) {
7
7
  if (sizeNumber < 0) {
8
- sizeString = `-${sizeString}`
8
+ sizeString = `-${sizeString}`;
9
9
  } else if (sizeNumber > 0) {
10
- sizeString = `+${sizeString}`
10
+ sizeString = `+${sizeString}`;
11
11
  }
12
12
  }
13
- return sizeString
14
- }
13
+ return sizeString;
14
+ };
@@ -1,8 +1,8 @@
1
- import { setRoundedPrecision } from "@jsenv/log"
1
+ import { setRoundedPrecision } from "@jsenv/log";
2
2
 
3
3
  export const formatPercentage = (number) => {
4
4
  return `${number < 0 ? `-` : "+"}${setRoundedPrecision(Math.abs(number), {
5
5
  decimals: 0,
6
6
  decimalsWhenSmall: 1,
7
- })}%`
8
- }
7
+ })}%`;
8
+ };
@@ -1,12 +1,12 @@
1
1
  // https://gist.github.com/borekb/f83e48479aceaafa43108e021600f7e3
2
2
  export const anchor = (text, id) => {
3
- return `<a href="#user-content-${id.replace()}">${text}<a>`
4
- }
3
+ return `<a href="#user-content-${id.replace()}">${text}<a>`;
4
+ };
5
5
 
6
- export const isAdded = ({ beforeMerge }) => !beforeMerge
6
+ export const isAdded = ({ beforeMerge }) => !beforeMerge;
7
7
 
8
8
  export const isDeleted = ({ beforeMerge, afterMerge }) =>
9
- beforeMerge && !afterMerge
9
+ beforeMerge && !afterMerge;
10
10
 
11
11
  export const isModified = ({ beforeMerge, afterMerge }) =>
12
- beforeMerge && afterMerge && beforeMerge.hash !== afterMerge.hash
12
+ beforeMerge && afterMerge && beforeMerge.hash !== afterMerge.hash;