diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 679b0ee53c..f8f79c1496 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -15,9 +15,28 @@
"panel": "dedicated",
"reveal": "never"
},
- "problemMatcher": [
- "$tsc-watch"
- ],
+ "problemMatcher": {
+ "owner": "esbuild",
+ "source": "esbuild",
+ "fileLocation": ["relative", "${workspaceFolder}/vscode-extension"],
+ "pattern": [
+ {
+ "regexp": "^✘ \\[ERROR\\] (.+)$",
+ "message": 1
+ },
+ {
+ "regexp": "^\\s+(.+):(\\d+):(\\d+):$",
+ "file": 1,
+ "line": 2,
+ "column": 3
+ }
+ ],
+ "background": {
+ "activeOnStart": true,
+ "beginsPattern": "\\[watch\\] build started",
+ "endsPattern": "\\[watch\\] build (finished|failed)"
+ }
+ },
"options": {
"cwd": "${workspaceFolder}/vscode-extension"
}
diff --git a/vscode-extension/client/src/panels/homepage/icons.ts b/vscode-extension/client/src/panels/homepage/icons.ts
index b5f980507d..285a52e04c 100644
--- a/vscode-extension/client/src/panels/homepage/icons.ts
+++ b/vscode-extension/client/src/panels/homepage/icons.ts
@@ -1,115 +1,61 @@
-// SVG icons for the homepage panel
-
// =============================================================================
// Navigation Icons (used in sidebar)
// =============================================================================
-export const navIcons = {
- dashboard: ``,
-
- packages: ``,
-
- branches: ``,
-
- apps: ``,
-
- "approval-requests": ``,
-
- contributions: ``,
-
- traces: ``,
-
- settings: ``,
-
- changelog: ``,
+import dashboardSvg from "./icons/nav/dashboard.svg";
+import packagesSvg from "./icons/nav/packages.svg";
+import branchesSvg from "./icons/nav/branches.svg";
+import appsSvg from "./icons/nav/apps.svg";
+import approvalRequestsSvg from "./icons/nav/approval-requests.svg";
+import contributionsSvg from "./icons/nav/contributions.svg";
+import tracesSvg from "./icons/nav/traces.svg";
+import settingsSvg from "./icons/nav/settings.svg";
+import changelogSvg from "./icons/nav/changelog.svg";
+import logoutSvg from "./icons/nav/logout.svg";
- logout: ``,
-};
+export const navIcons = {
+ dashboard: dashboardSvg,
+ packages: packagesSvg,
+ branches: branchesSvg,
+ apps: appsSvg,
+ "approval-requests": approvalRequestsSvg,
+ contributions: contributionsSvg,
+ traces: tracesSvg,
+ settings: settingsSvg,
+ changelog: changelogSvg,
+ logout: logoutSvg,
+} as const;
// =============================================================================
// Item Type Icons (used in dashboard cards)
// =============================================================================
-export const itemIcons = {
- branch: ``,
-
- app: ``,
-
- module: ``,
-
- function: ``,
+import branchItemSvg from "./icons/item/branch.svg";
+import appItemSvg from "./icons/item/app.svg";
+import moduleSvg from "./icons/item/module.svg";
+import functionSvg from "./icons/item/function.svg";
+import typeSvg from "./icons/item/type.svg";
+import valueSvg from "./icons/item/value.svg";
- type: ``,
-
- value: ``,
-};
+export const itemIcons = {
+ branch: branchItemSvg,
+ app: appItemSvg,
+ module: moduleSvg,
+ function: functionSvg,
+ type: typeSvg,
+ value: valueSvg,
+} as const;
// =============================================================================
// UI Icons (buttons, controls, etc.)
// =============================================================================
-export const uiIcons = {
- toggle: ``,
+import toggleSvg from "./icons/ui/toggle.svg";
+import unpinSvg from "./icons/ui/unpin.svg";
+import userSvg from "./icons/ui/user.svg";
- unpin: ``,
-
- user: ``,
-};
+export const uiIcons = {
+ toggle: toggleSvg,
+ unpin: unpinSvg,
+ user: userSvg,
+} as const;
diff --git a/vscode-extension/client/src/panels/homepage/icons/item/app.svg b/vscode-extension/client/src/panels/homepage/icons/item/app.svg
new file mode 100644
index 0000000000..6f4f8f1353
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/item/app.svg
@@ -0,0 +1,11 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/item/branch.svg b/vscode-extension/client/src/panels/homepage/icons/item/branch.svg
new file mode 100644
index 0000000000..f608583c3d
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/item/branch.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/item/function.svg b/vscode-extension/client/src/panels/homepage/icons/item/function.svg
new file mode 100644
index 0000000000..5eee93fa15
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/item/function.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/item/module.svg b/vscode-extension/client/src/panels/homepage/icons/item/module.svg
new file mode 100644
index 0000000000..d6a6ee6c79
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/item/module.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/item/type.svg b/vscode-extension/client/src/panels/homepage/icons/item/type.svg
new file mode 100644
index 0000000000..322a98dbdd
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/item/type.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/item/value.svg b/vscode-extension/client/src/panels/homepage/icons/item/value.svg
new file mode 100644
index 0000000000..72d8ec72f6
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/item/value.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/approval-requests.svg b/vscode-extension/client/src/panels/homepage/icons/nav/approval-requests.svg
new file mode 100644
index 0000000000..9f733f49bc
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/approval-requests.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/apps.svg b/vscode-extension/client/src/panels/homepage/icons/nav/apps.svg
new file mode 100644
index 0000000000..60ee5b0f10
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/apps.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/branches.svg b/vscode-extension/client/src/panels/homepage/icons/nav/branches.svg
new file mode 100644
index 0000000000..dc012bd511
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/branches.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/changelog.svg b/vscode-extension/client/src/panels/homepage/icons/nav/changelog.svg
new file mode 100644
index 0000000000..c973fb10cb
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/changelog.svg
@@ -0,0 +1,4 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/contributions.svg b/vscode-extension/client/src/panels/homepage/icons/nav/contributions.svg
new file mode 100644
index 0000000000..e7ea5c5371
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/contributions.svg
@@ -0,0 +1,11 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/dashboard.svg b/vscode-extension/client/src/panels/homepage/icons/nav/dashboard.svg
new file mode 100644
index 0000000000..c7b0d31b3c
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/dashboard.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/logout.svg b/vscode-extension/client/src/panels/homepage/icons/nav/logout.svg
new file mode 100644
index 0000000000..726598c833
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/logout.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/packages.svg b/vscode-extension/client/src/panels/homepage/icons/nav/packages.svg
new file mode 100644
index 0000000000..ca0282091e
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/packages.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/settings.svg b/vscode-extension/client/src/panels/homepage/icons/nav/settings.svg
new file mode 100644
index 0000000000..7cb20104e9
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/settings.svg
@@ -0,0 +1,4 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/nav/traces.svg b/vscode-extension/client/src/panels/homepage/icons/nav/traces.svg
new file mode 100644
index 0000000000..6ad569df2b
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/nav/traces.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/ui/toggle.svg b/vscode-extension/client/src/panels/homepage/icons/ui/toggle.svg
new file mode 100644
index 0000000000..34d40086a8
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/ui/toggle.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/ui/unpin.svg b/vscode-extension/client/src/panels/homepage/icons/ui/unpin.svg
new file mode 100644
index 0000000000..2bb0c22902
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/ui/unpin.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode-extension/client/src/panels/homepage/icons/ui/user.svg b/vscode-extension/client/src/panels/homepage/icons/ui/user.svg
new file mode 100644
index 0000000000..ae9fe1e280
--- /dev/null
+++ b/vscode-extension/client/src/panels/homepage/icons/ui/user.svg
@@ -0,0 +1,5 @@
+
diff --git a/vscode-extension/client/src/svg.d.ts b/vscode-extension/client/src/svg.d.ts
new file mode 100644
index 0000000000..6cf059255f
--- /dev/null
+++ b/vscode-extension/client/src/svg.d.ts
@@ -0,0 +1,10 @@
+/**
+ * TypeScript declaration for SVG imports.
+ *
+ * Tells the compiler that .svg files export a string (the SVG content).
+ * The actual inlining is handled by esbuild's SVG plugin at build time.
+ */
+declare module "*.svg" {
+ const content: string;
+ export default content;
+}
diff --git a/vscode-extension/esbuild.js b/vscode-extension/esbuild.js
new file mode 100644
index 0000000000..8cc5e29b2e
--- /dev/null
+++ b/vscode-extension/esbuild.js
@@ -0,0 +1,106 @@
+const esbuild = require("esbuild");
+const fs = require("fs");
+
+const production = process.argv.includes("--production");
+const watch = process.argv.includes("--watch");
+
+/**
+ * Plugin to load .svg files as inline strings
+ */
+const svgPlugin = {
+ name: "svg-loader",
+ setup(build) {
+ build.onLoad({ filter: /\.svg$/ }, async (args) => {
+ try {
+ const content = await fs.promises.readFile(args.path, "utf8");
+ const trimmed = content.trim();
+
+ // Validate SVG content
+ if (!trimmed.startsWith(" tag)",
+ location: { file: args.path },
+ },
+ ],
+ };
+ }
+
+ // Normalize whitespace for cleaner output
+ const normalized = trimmed.replace(/\n\s*/g, " ");
+ return {
+ contents: `export default ${JSON.stringify(normalized)};`,
+ loader: "js",
+ };
+ } catch (error) {
+ return {
+ errors: [
+ {
+ text: `Failed to load SVG file: ${error.message}`,
+ location: { file: args.path },
+ },
+ ],
+ };
+ }
+ });
+ },
+};
+
+/**
+ * Plugin to log build status
+ */
+const statusPlugin = {
+ name: "status",
+ setup(build) {
+ build.onStart(() => {
+ console.log("[watch] build started");
+ });
+ build.onEnd((result) => {
+ if (result.errors.length > 0) {
+ console.error(`[watch] build failed with ${result.errors.length} errors`);
+ } else {
+ console.log("[watch] build finished");
+ }
+ });
+ },
+};
+
+async function main() {
+ const ctx = await esbuild.context({
+ entryPoints: ["client/src/extension.ts"],
+ bundle: true,
+ format: "cjs",
+ minify: production,
+ sourcemap: !production,
+ sourcesContent: !production,
+ platform: "node",
+ outfile: "client/out/extension.js",
+ external: ["vscode"],
+ logLevel: "warning",
+ plugins: [svgPlugin, statusPlugin],
+ });
+
+ if (watch) {
+ await ctx.watch();
+ console.log("[esbuild] Watching for changes...");
+ } else {
+ await ctx.rebuild();
+ await ctx.dispose();
+ }
+}
+
+main().catch((e) => {
+ console.error(e);
+ process.exit(1);
+});
diff --git a/vscode-extension/package-lock.json b/vscode-extension/package-lock.json
index 8a9e694104..8891f612f5 100644
--- a/vscode-extension/package-lock.json
+++ b/vscode-extension/package-lock.json
@@ -13,6 +13,7 @@
"@types/node": "^16.11.7",
"@typescript-eslint/eslint-plugin": "^5.42.0",
"@typescript-eslint/parser": "^5.42.0",
+ "esbuild": "^0.27.2",
"eslint": "^8.26.0",
"mocha": "^11.1.0",
"typescript": "^4.9.4"
@@ -30,6 +31,448 @@
"node": ">=0.10.0"
}
},
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz",
+ "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz",
+ "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz",
+ "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz",
+ "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz",
+ "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz",
+ "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz",
+ "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz",
+ "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz",
+ "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz",
+ "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz",
+ "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz",
+ "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz",
+ "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz",
+ "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz",
+ "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz",
+ "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz",
+ "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz",
+ "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz",
+ "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz",
+ "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz",
+ "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz",
+ "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz",
+ "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -835,6 +1278,48 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/esbuild": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz",
+ "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.2",
+ "@esbuild/android-arm": "0.27.2",
+ "@esbuild/android-arm64": "0.27.2",
+ "@esbuild/android-x64": "0.27.2",
+ "@esbuild/darwin-arm64": "0.27.2",
+ "@esbuild/darwin-x64": "0.27.2",
+ "@esbuild/freebsd-arm64": "0.27.2",
+ "@esbuild/freebsd-x64": "0.27.2",
+ "@esbuild/linux-arm": "0.27.2",
+ "@esbuild/linux-arm64": "0.27.2",
+ "@esbuild/linux-ia32": "0.27.2",
+ "@esbuild/linux-loong64": "0.27.2",
+ "@esbuild/linux-mips64el": "0.27.2",
+ "@esbuild/linux-ppc64": "0.27.2",
+ "@esbuild/linux-riscv64": "0.27.2",
+ "@esbuild/linux-s390x": "0.27.2",
+ "@esbuild/linux-x64": "0.27.2",
+ "@esbuild/netbsd-arm64": "0.27.2",
+ "@esbuild/netbsd-x64": "0.27.2",
+ "@esbuild/openbsd-arm64": "0.27.2",
+ "@esbuild/openbsd-x64": "0.27.2",
+ "@esbuild/openharmony-arm64": "0.27.2",
+ "@esbuild/sunos-x64": "0.27.2",
+ "@esbuild/win32-arm64": "0.27.2",
+ "@esbuild/win32-ia32": "0.27.2",
+ "@esbuild/win32-x64": "0.27.2"
+ }
+ },
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
diff --git a/vscode-extension/package.json b/vscode-extension/package.json
index 0b0d0e77df..eebc5fee0d 100644
--- a/vscode-extension/package.json
+++ b/vscode-extension/package.json
@@ -407,9 +407,10 @@
}
},
"scripts": {
- "vscode:prepublish": "npm run compile",
- "compile": "tsc -b",
- "watch": "tsc -b -w",
+ "vscode:prepublish": "npm run compile:production",
+ "compile": "node esbuild.js",
+ "compile:production": "node esbuild.js --production",
+ "watch": "node esbuild.js --watch",
"lint": "eslint ./client/src --ext .ts,.tsx",
"postinstall": "cd client && npm install && cd ..",
"package": "vsce package"
@@ -419,6 +420,7 @@
"@types/node": "^16.11.7",
"@typescript-eslint/eslint-plugin": "^5.42.0",
"@typescript-eslint/parser": "^5.42.0",
+ "esbuild": "^0.27.2",
"eslint": "^8.26.0",
"mocha": "^11.1.0",
"typescript": "^4.9.4"