diff --git a/package-lock.json b/package-lock.json index 5c017a1..c19c63a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -124,13 +124,13 @@ "dev": true }, "@types/terser-webpack-plugin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/terser-webpack-plugin/-/terser-webpack-plugin-5.0.1.tgz", - "integrity": "sha512-kDxwsSDm5eVffzPpbu7uWSW2xVKmNAJ5YK6j7gdgww98rV+eGGhS9Wi0qNp0ZqCr923hI8JuSce2QO8pcdn3gQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/terser-webpack-plugin/-/terser-webpack-plugin-5.0.2.tgz", + "integrity": "sha512-YcAT1D4gjho1jqc/gjn1ojHFtQtrGHaHPqz5nDMiN5Jj9BeigjDkS2w010PvUnPkdVY3GerDFbY62TArtDBuDQ==", "dev": true, "requires": { - "@types/webpack": "*", - "terser": "^5.3.8" + "terser": "^5.3.8", + "webpack": "^5.1.0" } }, "@types/uglify-js": { @@ -818,9 +818,9 @@ } }, "electron-to-chromium": { - "version": "1.3.585", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.585.tgz", - "integrity": "sha512-xoeqjMQhgHDZM7FiglJAb2aeOxHZWFruUc3MbAGTgE7GB8rr5fTn1Sdh5THGuQtndU3GuXlu91ZKqRivxoCZ/A==", + "version": "1.3.587", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.587.tgz", + "integrity": "sha512-8XFNxzNj0R8HpTQslWAw6UWpGSuOKSP3srhyFHVbGUGb8vTHckZGCyWi+iQlaXJx5DNeTQTQLd6xN11WSckkmA==", "dev": true }, "emoji-regex": { @@ -1335,9 +1335,9 @@ "dev": true }, "jest-worker": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.1.tgz", - "integrity": "sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -2191,9 +2191,9 @@ } }, "webpack": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.3.2.tgz", - "integrity": "sha512-DXsfHoI6lQAR3KnQh7+FsRfs9fs+TEvzXCA35UbKv4kVuzslg7QCMAcpFRZNDMjdtm9N/PoO54XEzGN9TeacQg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.4.0.tgz", + "integrity": "sha512-udpYTyqz8toTTdaOsL2QKPLeZLt2IEm9qY7yTXuFEQhKu5bk0yQD9BtAdVQksmz4jFbbWOiWmm3NHarO0zr/ng==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", diff --git a/package.json b/package.json index 4c77a9f..fc885e2 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "icon": "assets/texinfo.png", "devDependencies": { "@types/node": "^14.14.6", - "@types/terser-webpack-plugin": "^5.0.1", + "@types/terser-webpack-plugin": "^5.0.2", "@types/vscode": "^1.50.0", "@types/webpack": "^4.41.24", "@typescript-eslint/eslint-plugin": "^3.8.0", @@ -28,7 +28,7 @@ "ts-loader": "^8.0.7", "ts-node": "^9.0.0", "typescript": "^4.0.5", - "webpack": "^5.3.2", + "webpack": "^5.4.0", "webpack-cli": "^4.1.0" }, "scripts": { diff --git a/src/contexts/document_symbol.ts b/src/contexts/document_symbol.ts index 27a3346..a5e4be1 100644 --- a/src/contexts/document_symbol.ts +++ b/src/contexts/document_symbol.ts @@ -33,15 +33,13 @@ export default class DocumentSymbolContext { * Calculate document symbols based on folding ranges. */ private calculcateDocumentSymbols() { - const ranges = Array(this.document.lineCount); + const ranges = Array>(this.document.lineCount); this.documentContext.foldingRange.values.forEach(range => range.kind ?? (ranges[range.start] = range)); return foldingRangeToSymbols(ranges, 0, ranges.length); } } -type RangeNode = Optional; - -function foldingRangeToSymbols(ranges: readonly RangeNode[], start: number, end: number) { +function foldingRangeToSymbols(ranges: readonly Optional[], start: number, end: number) { const symbols = []; for (let idx = start; idx < end; ++idx) { const node = ranges[idx]; diff --git a/webpack.config.ts b/webpack.config.ts index 8a4f545..9cbb2e7 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -1,5 +1,6 @@ import * as path from 'path'; import * as webpack from 'webpack'; +import TerserPlugin from 'terser-webpack-plugin'; const config: webpack.Configuration = { target: 'node', @@ -14,6 +15,19 @@ const config: webpack.Configuration = { optimization: { concatenateModules: true, minimize: true, + minimizer: [ + new TerserPlugin({ + extractComments: false, + terserOptions: { + compress: { + unsafe: true, + }, + format: { + comments: false, + }, + }, + }), + ], }, externals: { vscode: 'commonjs vscode',