Skip to content

Commit 0d06863

Browse files
renovate[bot]renovate-botFeiyang1
authored
Update dependency terser to v5 (#3582)
* Update dependency terser to v5 * fix typescript issue * Update dependency terser to v5 * update script because terser.minify becomes async Co-authored-by: Renovate Bot <[email protected]> Co-authored-by: Feiyang1 <[email protected]>
1 parent 57739ae commit 0d06863

File tree

5 files changed

+55
-36
lines changed

5 files changed

+55
-36
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@
143143
"sinon": "9.0.3",
144144
"sinon-chai": "3.5.0",
145145
"source-map-loader": "1.0.2",
146-
"terser": "4.8.0",
146+
"terser": "5.2.1",
147147
"ts-loader": "8.0.3",
148148
"ts-node": "8.10.2",
149149
"tslint": "6.1.3",

repo-scripts/size-analysis/analysis-helper.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,20 +116,20 @@ export async function extractDependenciesAndSize(
116116
externalDepsNotResolvedOutput,
117117
'utf-8'
118118
);
119-
const externalDepsResolvedOutputContentMinimized: terser.MinifyOutput = terser.minify(
119+
const externalDepsResolvedOutputContentMinimized = await terser.minify(
120120
externalDepsResolvedOutputContent,
121121
{
122-
output: {
122+
format: {
123123
comments: false
124124
},
125125
mangle: { toplevel: true },
126126
compress: false
127127
}
128128
);
129-
const externalDepsNotResolvedOutputContentMinimized: terser.MinifyOutput = terser.minify(
129+
const externalDepsNotResolvedOutputContentMinimized = await terser.minify(
130130
externalDepsNotResolvedOutputContent,
131131
{
132-
output: {
132+
format: {
133133
comments: false
134134
},
135135
mangle: { toplevel: true },

repo-scripts/size-analysis/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"rollup-plugin-typescript2": "0.27.2",
2727
"tmp": "0.2.1",
2828
"typescript": "4.0.2",
29-
"terser": "4.8.0",
29+
"terser": "5.2.1",
3030
"yargs": "15.4.1",
3131
"@firebase/util": "0.3.1"
3232
},

scripts/size_report/report_binary_size.ts

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ function generateReportForCDNScripts(): Report[] {
6565
}
6666

6767
// NPM packages
68-
function generateReportForNPMPackages(): Report[] {
68+
async function generateReportForNPMPackages(): Promise<Report[]> {
6969
const reports: Report[] = [];
7070
const fields = [
7171
'main',
@@ -81,41 +81,50 @@ function generateReportForNPMPackages(): Report[] {
8181
execSync('npx lerna ls --json --scope @firebase/*').toString()
8282
);
8383

84+
const taskPromises: Promise<void>[] = [];
8485
for (const pkg of packageInfo) {
8586
// we traverse the dir in order to include binaries for submodules, e.g. @firebase/firestore/memory
8687
// Currently we only traverse 1 level deep because we don't have any submodule deeper than that.
8788
traverseDirs(pkg.location, collectBinarySize, 0, 1);
8889
}
8990

90-
function collectBinarySize(path: string) {
91-
const packageJsonPath = `${path}/package.json`;
92-
if (!fs.existsSync(packageJsonPath)) {
93-
return;
94-
}
95-
96-
const packageJson = require(packageJsonPath);
91+
await Promise.all(taskPromises);
9792

98-
for (const field of fields) {
99-
if (packageJson[field]) {
100-
const filePath = `${path}/${packageJson[field]}`;
101-
const rawCode = fs.readFileSync(filePath, 'utf-8');
93+
return reports;
10294

103-
// remove comments and whitespaces, then get size
104-
const { code } = terser.minify(rawCode, {
105-
output: {
106-
comments: false
107-
},
108-
mangle: false,
109-
compress: false
110-
});
95+
function collectBinarySize(path: string) {
96+
const promise = new Promise<void>(async resolve => {
97+
const packageJsonPath = `${path}/package.json`;
98+
if (!fs.existsSync(packageJsonPath)) {
99+
return;
100+
}
111101

112-
const size = Buffer.byteLength(code!, 'utf-8');
113-
reports.push(makeReportObject(packageJson.name, field, size));
102+
const packageJson = require(packageJsonPath);
103+
104+
for (const field of fields) {
105+
if (packageJson[field]) {
106+
const filePath = `${path}/${packageJson[field]}`;
107+
const rawCode = fs.readFileSync(filePath, 'utf-8');
108+
109+
// remove comments and whitespaces, then get size
110+
const { code } = await terser.minify(rawCode, {
111+
format: {
112+
comments: false
113+
},
114+
mangle: false,
115+
compress: false
116+
});
117+
118+
const size = Buffer.byteLength(code!, 'utf-8');
119+
reports.push(makeReportObject(packageJson.name, field, size));
120+
}
114121
}
115-
}
116-
}
117122

118-
return reports;
123+
resolve();
124+
});
125+
126+
taskPromises.push(promise);
127+
}
119128
}
120129

121130
function traverseDirs(
@@ -147,10 +156,10 @@ function makeReportObject(sdk: string, type: string, value: number): Report {
147156
};
148157
}
149158

150-
function generateSizeReport(): BinarySizeRequestBody {
159+
async function generateSizeReport(): Promise<BinarySizeRequestBody> {
151160
const reports: Report[] = [
152161
...generateReportForCDNScripts(),
153-
...generateReportForNPMPackages()
162+
...(await generateReportForNPMPackages())
154163
];
155164

156165
for (const r of reports) {
@@ -168,5 +177,6 @@ function generateSizeReport(): BinarySizeRequestBody {
168177
};
169178
}
170179

171-
const report = generateSizeReport();
172-
upload(report, RequestEndpoint.BINARY_SIZE);
180+
generateSizeReport().then(report => {
181+
upload(report, RequestEndpoint.BINARY_SIZE);
182+
});

yarn.lock

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14637,7 +14637,16 @@ terser-webpack-plugin@^1.4.3:
1463714637
webpack-sources "^1.4.0"
1463814638
worker-farm "^1.7.0"
1463914639

14640-
[email protected], terser@^4.1.2, terser@^4.7.0:
14640+
14641+
version "5.2.1"
14642+
resolved "https://registry.npmjs.org/terser/-/terser-5.2.1.tgz#40b971b8d28b4fe98c9e8c0d073ab48e7bb96cd8"
14643+
integrity sha512-/AOtjRtAMNGO0fIF6m8HfcvXTw/2AKpsOzDn36tA5RfhRdeXyb4RvHxJ5Pah7iL6dFkLk+gOnCaNHGwJPl6TrQ==
14644+
dependencies:
14645+
commander "^2.20.0"
14646+
source-map "~0.6.1"
14647+
source-map-support "~0.5.12"
14648+
14649+
terser@^4.1.2, terser@^4.7.0:
1464114650
version "4.8.0"
1464214651
resolved "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
1464314652
integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==

0 commit comments

Comments
 (0)