Skip to content

Commit 128d4f6

Browse files
authored
Use **esbuild** to build VSCode extensions (#1808)
* Use webpack to build `vscode-spring-boot` Signed-off-by: BoykoAlex <alex.boyko@broadcom.com> * Webpack for the rest of the extensions Signed-off-by: BoykoAlex <alex.boyko@broadcom.com> * Use esbuild for building VSCode extensions Signed-off-by: BoykoAlex <alex.boyko@broadcom.com> * Add **eslint** for vscode extensions Signed-off-by: BoykoAlex <alex.boyko@broadcom.com> * Latest package dependency versions Signed-off-by: BoykoAlex <alex.boyko@broadcom.com> * Rollback ps-list to cjs compatible Signed-off-by: BoykoAlex <alex.boyko@broadcom.com> --------- Signed-off-by: BoykoAlex <alex.boyko@broadcom.com>
1 parent e99b6f1 commit 128d4f6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+627
-400
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import tseslint from 'typescript-eslint';
2+
3+
export default tseslint.config(
4+
{ files: ['src/**/*.ts'] },
5+
{ ignores: ['lib', 'node_modules'] },
6+
...tseslint.configs.recommended,
7+
{
8+
rules: {
9+
'@typescript-eslint/no-unused-vars': ['error', {
10+
argsIgnorePattern: '^_',
11+
varsIgnorePattern: '^_',
12+
caughtErrorsIgnorePattern: '^_',
13+
}],
14+
'@typescript-eslint/no-explicit-any': 'warn',
15+
'@typescript-eslint/no-empty-object-type': 'off',
16+
}
17+
}
18+
);

vscode-extensions/commons-vscode/package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,20 @@
2121
"clean": "rm -rf lib node_modules package-lock.json",
2222
"compile": "tsc -p ./",
2323
"watch": "tsc -watch -p ./",
24-
"prepack": "tsc -p ./"
24+
"lint": "eslint src",
25+
"prepack": "tsc -p ./ && npm run lint"
2526
},
2627
"dependencies": {
2728
"@pivotal-tools/jvm-launch-utils": "0.0.20",
28-
"deep-equal": "^2.0.5",
29-
"portfinder": "^1.0.28"
29+
"deep-equal": "^2.2.3",
30+
"portfinder": "^1.0.38"
3031
},
3132
"devDependencies": {
3233
"@types/node": "^18.8.0",
3334
"@types/vscode": "1.75.0",
35+
"eslint": "^10.0.1",
3436
"typescript": "^4.8.0",
37+
"typescript-eslint": "^8.56.0",
3538
"vscode-languageclient": "^9.0.1"
3639
}
3740
}

vscode-extensions/commons-vscode/src/classpath.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,22 @@ export function registerClasspathService(client : LanguageClient) : void {
1212
const javaExt = VSCode.extensions.getExtension('redhat.java');
1313
const javaApi = javaExt?.exports;
1414

15-
let addRequest = new RequestType<ClasspathListenerParams, ClasspathListenerResponse, void>("sts/addClasspathListener");
15+
const addRequest = new RequestType<ClasspathListenerParams, ClasspathListenerResponse, void>("sts/addClasspathListener");
1616
client.onRequest(addRequest, async (params: ClasspathListenerParams) => {
1717
if (javaApi?.serverMode === 'LightWeight') {
1818
throw new Error('Classpath listener not supported while Java Language Server is in LightWeight mode');
1919
}
2020
return <ClasspathListenerResponse> await VSCode.commands.executeCommand("java.execute.workspaceCommand", "sts.java.addClasspathListener", params.callbackCommandId);
2121
});
2222

23-
let removeRequest = new RequestType<ClasspathListenerParams, ClasspathListenerResponse, void>("sts/removeClasspathListener");
23+
const removeRequest = new RequestType<ClasspathListenerParams, ClasspathListenerResponse, void>("sts/removeClasspathListener");
2424
client.onRequest(removeRequest, async (params: ClasspathListenerParams) => {
2525
return <ClasspathListenerResponse> await VSCode.commands.executeCommand("java.execute.workspaceCommand", "sts.java.removeClasspathListener", params.callbackCommandId);
2626
});
2727

2828
if (javaApi) {
2929
VSCode.commands.executeCommand(CMD_STS_ENABLE_CLASSPATH_LISTENER, javaApi.serverMode === JDT_SERVER_STANDARD_MODE);
30-
javaApi.onDidServerModeChange(e => VSCode.commands.executeCommand(CMD_STS_ENABLE_CLASSPATH_LISTENER, javaApi.serverMode === JDT_SERVER_STANDARD_MODE));
30+
javaApi.onDidServerModeChange(_e => VSCode.commands.executeCommand(CMD_STS_ENABLE_CLASSPATH_LISTENER, javaApi.serverMode === JDT_SERVER_STANDARD_MODE));
3131
}
3232

3333
}

vscode-extensions/commons-vscode/src/code-lens-service.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,14 @@ export class HighlightCodeLensProvider implements CodeLensProvider {
2929
}
3030

3131
static toVSCodeLens(cl: Lsp.CodeLens): CodeLens {
32-
const codeLens: CodeLens = {
32+
return {
3333
range: toVSRange(cl.range),
3434
isResolved: true,
3535
command: cl.command
36-
};
37-
return codeLens;
36+
} as CodeLens;
3837
}
3938

40-
provideCodeLenses(document: TextDocument, token: CancellationToken): ProviderResult<CodeLens[]> {
39+
provideCodeLenses(document: TextDocument, _token: CancellationToken): ProviderResult<CodeLens[]> {
4140
const activeUri = document.uri.toString();
4241
const activeVersion = document.version;
4342
const highlightParams = this.highlights.get(activeUri);

vscode-extensions/commons-vscode/src/highlight-service.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {VersionedTextDocumentIdentifier, MarkupContent, Position, Range, CodeLens} from 'vscode-languageclient'
1+
import {VersionedTextDocumentIdentifier, Position, Range, CodeLens} from 'vscode-languageclient'
22
import * as VSCode from 'vscode';
33
import { TextEditor } from 'vscode';
44

@@ -19,7 +19,7 @@ export class HighlightService {
1919

2020
DECORATION : VSCode.TextEditorDecorationType;
2121

22-
highlights : Map<String, HighlightParams>;
22+
highlights : Map<string, HighlightParams>;
2323

2424
dispose() {
2525
this.DECORATION.dispose();
@@ -48,8 +48,7 @@ export class HighlightService {
4848
}
4949

5050
refresh(docId: VersionedTextDocumentIdentifier) {
51-
let editors = VSCode.window.visibleTextEditors;
52-
for (let editor of editors) {
51+
for (const editor of VSCode.window.visibleTextEditors) {
5352
const activeUri = editor.document.uri.toString();
5453
const activeVersion = editor.document.version;
5554
if (VSCode.Uri.parse(docId.uri).toString() === activeUri && docId.version === activeVersion) {
@@ -63,7 +62,7 @@ export class HighlightService {
6362
if (editor) {
6463
const highlightParams: HighlightParams = this.highlights.get(editor.document.uri.toString());
6564
const highlights: CodeLens[] = highlightParams?.codeLenses || [];
66-
let decorations = highlights.map(hl => toVSRange(hl.range));
65+
const decorations = highlights.map(hl => toVSRange(hl.range));
6766
editor.setDecorations(this.DECORATION, decorations);
6867
}
6968
}

vscode-extensions/commons-vscode/src/launch-util.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import * as VSCode from 'vscode';
44
import * as Path from 'path';
55
import * as FS from 'fs';
6-
import PortFinder = require('portfinder');
6+
import PortFinder from 'portfinder';
77
import * as Net from 'net';
88
import * as CommonsCommands from './commands';
99
import { RequestType, LanguageClientOptions, Position } from 'vscode-languageclient';
@@ -58,7 +58,7 @@ function getUserDefinedJvmHeap(wsOpts : VSCode.WorkspaceConfiguration, dflt : s
5858
if (!wsOpts) {
5959
return dflt;
6060
}
61-
let javaOptions : JavaOptions = wsOpts.get("java");
61+
const javaOptions : JavaOptions = wsOpts.get("java");
6262
return (javaOptions && javaOptions.heap) || dflt;
6363
}
6464

@@ -74,14 +74,14 @@ function getUserDefinedJvmArgs(wsOpts : VSCode.WorkspaceConfiguration) : string[
7474
if (!wsOpts) {
7575
return dflt;
7676
}
77-
let javaOptions : JavaOptions = wsOpts.get("java");
77+
const javaOptions : JavaOptions = wsOpts.get("java");
7878
return javaOptions && javaOptions.vmargs || dflt;
7979
}
8080

8181
function getSpringUserDefinedJavaHome(wsOpts : VSCode.WorkspaceConfiguration, log: VSCode.OutputChannel) : string {
8282
let javaHome: string = null;
8383
if (wsOpts) {
84-
let javaOptions: JavaOptions = wsOpts.get("java");
84+
const javaOptions: JavaOptions = wsOpts.get("java");
8585
javaHome = javaOptions && javaOptions.home;
8686
}
8787
if (!javaHome) {
@@ -135,7 +135,7 @@ export function activate(options: ActivatorOptions, context: VSCode.ExtensionCon
135135
clientOptions.outputChannelName = outChennalName;
136136
clientOptions.outputChannel.appendLine("Activating '" + options.extensionId + "' extension");
137137

138-
let findJRE = options.preferJdk ? findJdk : findJvm;
138+
const findJRE = options.preferJdk ? findJdk : findJvm;
139139

140140
return findJRE(getSpringUserDefinedJavaHome(options.workspaceOptions, clientOptions.outputChannel)
141141
|| findJdtEmbeddedJRE()
@@ -150,7 +150,7 @@ export function activate(options: ActivatorOptions, context: VSCode.ExtensionCon
150150
VSCode.window.showErrorMessage("Couldn't locate java in $JAVA_HOME or $PATH");
151151
return;
152152
}
153-
let javaExecutablePath = jvm.getJavaExecutable();
153+
const javaExecutablePath = jvm.getJavaExecutable();
154154
clientOptions.outputChannel.appendLine("Found java executable: " + javaExecutablePath);
155155

156156
clientOptions.outputChannel.appendLine("isJavaEightOrHigher => true");
@@ -191,7 +191,7 @@ function createServerOptionsForPortComm(options: ActivatorOptions, context: VSCo
191191
});
192192
})
193193
.listen(port, () => {
194-
let processLaunchoptions = {
194+
const processLaunchoptions = {
195195
cwd: context.extensionPath
196196
};
197197
const args = prepareJvmArgs(options, context, jvm, port);
@@ -295,7 +295,7 @@ function addCpAndLauncherToJvmArgs(args: string[], options: ActivatorOptions, co
295295
}
296296
}
297297

298-
function hasHeapArg(vmargs?: string[]) : boolean {
298+
function hasHeapArg(_vmargs?: string[]) : boolean {
299299
return hasVmArg('-Xmx');
300300
}
301301

@@ -308,7 +308,7 @@ function hasVmArg(argPrefix: string, vmargs?: string[]): boolean {
308308
}
309309

310310
function findServerJar(jarsDir) : string {
311-
let serverJars = FS.readdirSync(jarsDir).filter(jar =>
311+
const serverJars = FS.readdirSync(jarsDir).filter(jar =>
312312
jar.indexOf('language-server')>=0 &&
313313
jar.endsWith(".jar")
314314
);
@@ -322,13 +322,13 @@ function findServerJar(jarsDir) : string {
322322
}
323323

324324
function connectToLS(context: VSCode.ExtensionContext, options: ActivatorOptions): Promise<LanguageClient> {
325-
let connectionInfo = {
325+
const connectionInfo = {
326326
port: 5007
327327
};
328328

329-
let serverOptions = () => {
330-
let socket = Net.connect(connectionInfo);
331-
let result: StreamInfo = {
329+
const serverOptions = () => {
330+
const socket = Net.connect(connectionInfo);
331+
const result: StreamInfo = {
332332
writer: socket,
333333
reader: socket
334334
};
@@ -340,7 +340,7 @@ function connectToLS(context: VSCode.ExtensionContext, options: ActivatorOptions
340340

341341
function setupLanguageClient(context: VSCode.ExtensionContext, createServer: ServerOptions, options: ActivatorOptions): Promise<LanguageClient> {
342342
// Create the language client and start the client.
343-
let client = new LanguageClient(options.extensionId, options.extensionId,
343+
const client = new LanguageClient(options.extensionId, options.extensionId,
344344
createServer, options.clientOptions
345345
);
346346
client.registerProposedFeatures();
@@ -349,12 +349,12 @@ function setupLanguageClient(context: VSCode.ExtensionContext, createServer: Ser
349349
client.setTrace(Trace.Verbose);
350350
}
351351

352-
let highlightNotification = new NotificationType<HighlightParams>("sts/highlight");
353-
let moveCursorRequest = new RequestType<MoveCursorParams,MoveCursorResponse,void>("sts/moveCursor");
352+
const highlightNotification = new NotificationType<HighlightParams>("sts/highlight");
353+
const moveCursorRequest = new RequestType<MoveCursorParams,MoveCursorResponse,void>("sts/moveCursor");
354354

355355
const codeLensListanableSetting = options.highlightCodeLensSettingKey ? new ListenablePreferenceSetting<boolean>(options.highlightCodeLensSettingKey) : undefined;
356356

357-
let highlightService = new HighlightService();
357+
const highlightService = new HighlightService();
358358
const codelensService = new HighlightCodeLensProvider();
359359
let codeLensProviderSubscription: Disposable;
360360

@@ -389,10 +389,10 @@ function setupLanguageClient(context: VSCode.ExtensionContext, createServer: Ser
389389
}
390390
});
391391
client.onRequest(moveCursorRequest, (params: MoveCursorParams) => {
392-
for (let editor of VSCode.window.visibleTextEditors) {
392+
for (const editor of VSCode.window.visibleTextEditors) {
393393
if (editor.document.uri.toString() == params.uri) {
394-
let cursor = p2c.asPosition(params.position);
395-
let selection: VSCode.Selection = new VSCode.Selection(cursor, cursor);
394+
const cursor = p2c.asPosition(params.position);
395+
const selection: VSCode.Selection = new VSCode.Selection(cursor, cursor);
396396
editor.selections = [selection];
397397
}
398398
}

vscode-extensions/commons-vscode/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
],
88
"noImplicitAny": false,
99
"sourceMap": true,
10+
"esModuleInterop": true,
1011
"moduleResolution": "node",
1112
"declaration": true,
1213
"outDir": "lib"

vscode-extensions/vscode-bosh/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
out
2+
dist
23
node_modules
34
language-server
45
target
Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,18 @@
1-
// A launch configuration that compiles the extension and then opens it inside a new window
21
{
3-
"version": "0.1.0",
4-
"configurations": [
5-
6-
{
7-
"name": "Launch Extension",
8-
"type": "extensionHost",
9-
"request": "launch",
10-
"runtimeExecutable": "${execPath}",
11-
"args": ["--extensionDevelopmentPath=${workspaceRoot}" ],
12-
"stopOnEntry": false,
13-
"sourceMaps": true,
14-
"outDir": "${workspaceRoot}/out/lib",
15-
"preLaunchTask": "npm"
16-
},
17-
{
18-
"name": "Launch Tests",
19-
"type": "extensionHost",
20-
"request": "launch",
21-
"runtimeExecutable": "${execPath}",
22-
"args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test" ],
23-
"stopOnEntry": false,
24-
"sourceMaps": true,
25-
"outDir": "${workspaceRoot}/out/test",
26-
"preLaunchTask": "npm"
27-
}
28-
]
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"name": "Launch Extension",
6+
"type": "extensionHost",
7+
"request": "launch",
8+
"runtimeExecutable": "${execPath}",
9+
"preLaunchTask": "npm: watch",
10+
"args": [
11+
"--extensionDevelopmentPath=${workspaceFolder}"
12+
],
13+
"outFiles": [
14+
"${workspaceFolder}/dist/**/*.js"
15+
]
16+
}
17+
]
2918
}
Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,29 @@
1-
// Available variables which can be used inside of strings.
2-
// ${workspaceRoot}: the root folder of the team
3-
// ${file}: the current opened file
4-
// ${fileBasename}: the current opened file's basename
5-
// ${fileDirname}: the current opened file's dirname
6-
// ${fileExtname}: the current opened file's extension
7-
// ${cwd}: the current working directory of the spawned process
8-
9-
// A task runner that calls a custom npm script that compiles the extension.
101
{
11-
"version": "2.0.0",
12-
13-
// we want to run npm
14-
"command": "npm",
15-
16-
// we run the custom script "compile" as defined in package.json
17-
"args": ["run", "compile"],
18-
19-
// The tsc compiler is started in watching mode
20-
"isWatching": true,
21-
22-
// use the standard tsc in watch mode problem matcher to find compile problems in the output.
23-
"problemMatcher": "$tsc-watch",
24-
"tasks": [
25-
{
26-
"label": "npm",
27-
"type": "shell",
28-
"command": "npm",
29-
"args": [
30-
"run",
31-
"compile"
32-
],
33-
"isBackground": true,
34-
"problemMatcher": "$tsc-watch",
35-
"group": {
36-
"_id": "build",
37-
"isDefault": false
38-
}
39-
}
40-
]
41-
}
2+
"version": "2.0.0",
3+
"tasks": [
4+
{
5+
"type": "npm",
6+
"script": "watch",
7+
"problemMatcher": {
8+
"owner": "typescript",
9+
"pattern": {
10+
"regexp": "\\[ERROR\\] (.+)",
11+
"message": 1
12+
},
13+
"background": {
14+
"activeOnStart": true,
15+
"beginsPattern": "\\[watch\\] build started",
16+
"endsPattern": "\\[watch\\] build finished"
17+
}
18+
},
19+
"isBackground": true,
20+
"presentation": {
21+
"reveal": "never"
22+
},
23+
"group": {
24+
"kind": "build",
25+
"isDefault": true
26+
}
27+
}
28+
]
29+
}

0 commit comments

Comments
 (0)