This commit is contained in:
CismonX 2020-11-04 14:42:31 +08:00
parent d2c94e5773
commit ead5e15b9d
Signed by: cismonx
GPG Key ID: 3094873E29A482FB
4 changed files with 32 additions and 20 deletions

28
package-lock.json generated
View File

@ -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",

View File

@ -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": {

View File

@ -33,15 +33,13 @@ export default class DocumentSymbolContext {
* Calculate document symbols based on folding ranges.
*/
private calculcateDocumentSymbols() {
const ranges = Array<RangeNode>(this.document.lineCount);
const ranges = Array<Optional<FoldingRange>>(this.document.lineCount);
this.documentContext.foldingRange.values.forEach(range => range.kind ?? (ranges[range.start] = range));
return foldingRangeToSymbols(ranges, 0, ranges.length);
}
}
type RangeNode = Optional<FoldingRange>;
function foldingRangeToSymbols(ranges: readonly RangeNode[], start: number, end: number) {
function foldingRangeToSymbols(ranges: readonly Optional<FoldingRange>[], start: number, end: number) {
const symbols = <vscode.DocumentSymbol[]>[];
for (let idx = start; idx < end; ++idx) {
const node = ranges[idx];

View File

@ -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',