@vscode/component-explorer-vite-plugin 0.1.1-1 → 0.1.1-11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,55 @@
1
+ # @vscode/component-explorer-vite-plugin
2
+
3
+ Vite plugin for the [Component Explorer](../../README.md). Discovers fixture files, generates virtual entry modules, and serves the explorer UI during development.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ // vite.config.ts
9
+ import { defineConfig } from 'vite';
10
+ import { componentExplorer } from '@vscode/component-explorer-vite-plugin';
11
+
12
+ export default defineConfig({
13
+ plugins: [
14
+ componentExplorer({
15
+ // options (all optional)
16
+ }),
17
+ ],
18
+ });
19
+ ```
20
+
21
+ ## Options
22
+
23
+ | Option | Type | Default | Description |
24
+ |---|---|---|---|
25
+ | `include` | `string` | `'./src/**/*.fixture.{ts,tsx}'` | Glob pattern for discovering fixture files. |
26
+ | `route` | `string` | `'/___explorer'` | URL path where the explorer UI is served during development. |
27
+ | `build` | `BuildMode` | `'app-only'` | Controls what gets included in `vite build` output. See [Build Modes](#build-modes). |
28
+ | `outFile` | `string` | `'___explorer.html'` | Output filename for the explorer HTML in production builds. Defaults to `'index.html'` when `build` is `'explorer-only'`. |
29
+ | `logLevel` | `LogLevel` | `'info'` | Logging verbosity: `'silent'`, `'info'`, or `'verbose'`. |
30
+
31
+ ### Build Modes
32
+
33
+ The `build` option controls what gets emitted during `vite build` (has no effect on `vite dev`):
34
+
35
+ | Mode | Description |
36
+ |---|---|
37
+ | `'app-only'` | Build the app without the explorer. Suitable for production deployments. |
38
+ | `'all'` | Build both the app and the explorer. Useful for CI/staging environments. |
39
+ | `'explorer-only'` | Build only the explorer, emitting `index.html`. For static hosting of the explorer. |
40
+
41
+ ```ts
42
+ componentExplorer({
43
+ build: 'all', // include explorer in production build
44
+ })
45
+ ```
46
+
47
+ To set the build mode via an environment variable:
48
+
49
+ ```ts
50
+ import { type BuildMode } from '@vscode/component-explorer-vite-plugin';
51
+
52
+ componentExplorer({
53
+ build: (process.env.EXPLORER_BUILD as BuildMode) ?? undefined,
54
+ })
55
+ ```
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { componentExplorer, type ComponentExplorerOptions } from './plugin.js';
1
+ export { componentExplorer, type ComponentExplorerOptions, type BuildMode } from './plugin.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiD,MAAM,aAAa,CAAC"}
package/dist/plugin.d.ts CHANGED
@@ -1,12 +1,28 @@
1
1
  import type { Plugin } from 'vite';
2
- export type LogLevel = 'silent' | 'info' | 'verbose';
2
+ declare global {
3
+ interface Window {
4
+ __EXPLORER_DAEMON__?: {
5
+ sessionName: string;
6
+ };
7
+ }
8
+ }
9
+ export type LogLevel = 'silent' | 'info' | 'verbose' | 'warn' | 'error';
10
+ /** Controls what the plugin includes during `vite build`. Has no effect on dev serve. */
11
+ export type BuildMode = 'app-only' | 'all' | 'explorer-only';
3
12
  export interface ComponentExplorerOptions {
4
13
  /** Glob pattern for fixture files. Default: './src/**\/*.fixture.{ts,tsx}' */
5
14
  include?: string;
6
15
  /** Explorer route path. Default: '/___explorer' */
7
16
  route?: string;
8
- /** Output filename for the explorer HTML. Default: '___explorer.html' */
17
+ /** Output filename for the explorer HTML. Default: '___explorer.html' (or 'index.html' in explorer-only mode) */
9
18
  outFile?: string;
19
+ /**
20
+ * Controls what gets built during `vite build`. Has no effect on dev serve.
21
+ * - `'app-only'` (default): build the app without the explorer
22
+ * - `'all'`: build the app + explorer
23
+ * - `'explorer-only'`: build only the explorer (emits index.html for static hosting)
24
+ */
25
+ build?: BuildMode;
10
26
  /** Log level. Default: 'info' */
11
27
  logLevel?: LogLevel;
12
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAC;AAUnD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAarD,MAAM,WAAW,wBAAwB;IACvC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,MAAM,CAoKhF"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAC;AAkBnD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,mBAAmB,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9C;CACD;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAExE,0FAA0F;AAC1F,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,KAAK,GACL,eAAe,CAAC;AAapB,MAAM,WAAW,wBAAwB;IACvC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iHAAiH;IACjH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,MAAM,CAoRhF"}
package/dist/plugin.js CHANGED
@@ -1,9 +1,11 @@
1
+ import http from 'node:http';
1
2
  import { glob } from 'tinyglobby';
2
3
  import path from 'node:path';
3
4
  const VIRTUAL_ENTRY_ID = 'virtual:component-explorer/entry';
4
5
  const VIRTUAL_FIXTURES_ID = 'virtual:component-explorer/fixtures';
5
6
  const RESOLVED_VIRTUAL_ENTRY_ID = '\0' + VIRTUAL_ENTRY_ID;
6
7
  const RESOLVED_VIRTUAL_FIXTURES_ID = '\0' + VIRTUAL_FIXTURES_ID;
8
+ const DAEMON_API_PREFIX = '/__explorer/daemon-api';
7
9
  /** Normalize a glob pattern for use with import.meta.glob (must start with '/') */
8
10
  function normalizeGlobForImportMeta(fixtureGlob) {
9
11
  if (fixtureGlob.startsWith('./')) {
@@ -17,11 +19,13 @@ function normalizeGlobForImportMeta(fixtureGlob) {
17
19
  }
18
20
  }
19
21
  export function componentExplorer(options = {}) {
20
- const fixtureGlob = options.include ?? './src/**/*.fixture.{ts,tsx}';
22
+ const rawInclude = options.include ?? './src/**/*.fixture.{ts,tsx}';
21
23
  const explorerRoute = options.route ?? '/___explorer';
22
- const outFile = options.outFile ?? '___explorer.html';
24
+ const buildMode = options.build ?? 'app-only';
25
+ const outFile = options.outFile ?? (buildMode === 'explorer-only' ? 'index.html' : '___explorer.html');
23
26
  const logLevel = options.logLevel ?? 'info';
24
27
  let config;
28
+ let fixtureGlob;
25
29
  const log = (level, message) => {
26
30
  const levels = ['silent', 'info', 'verbose'];
27
31
  if (levels.indexOf(level) <= levels.indexOf(logLevel)) {
@@ -32,6 +36,14 @@ export function componentExplorer(options = {}) {
32
36
  name: 'component-explorer',
33
37
  async configResolved(resolvedConfig) {
34
38
  config = resolvedConfig;
39
+ // If the include glob is absolute, make it relative to root so both
40
+ // tinyglobby and import.meta.glob resolve consistently.
41
+ if (path.isAbsolute(rawInclude)) {
42
+ fixtureGlob = './' + path.relative(config.root, rawInclude).split(path.sep).join('/');
43
+ }
44
+ else {
45
+ fixtureGlob = rawInclude;
46
+ }
35
47
  if (logLevel === 'verbose') {
36
48
  const rootDir = config.root;
37
49
  const normalizedGlob = fixtureGlob.startsWith('./') ? fixtureGlob.slice(2) : fixtureGlob;
@@ -52,7 +64,25 @@ export function componentExplorer(options = {}) {
52
64
  }
53
65
  },
54
66
  config(userConfig) {
55
- // Add explorer entry to build inputs
67
+ if (buildMode === 'app-only') {
68
+ return;
69
+ }
70
+ if (buildMode === 'explorer-only') {
71
+ // Mutate directly — returning `input` would deep-merge with the
72
+ // user's existing entries (e.g. MPA pages), but we want only the
73
+ // explorer entry.
74
+ userConfig.build ??= {};
75
+ userConfig.build.rollupOptions ??= {};
76
+ userConfig.build.rollupOptions.input = { '___explorer': VIRTUAL_ENTRY_ID };
77
+ // Clear lib mode so the explorer gets a proper HTML build
78
+ delete userConfig.build.lib;
79
+ return {
80
+ define: {
81
+ 'process.env.NODE_ENV': JSON.stringify('production'),
82
+ },
83
+ };
84
+ }
85
+ // buildMode === 'all': add explorer entry alongside app inputs
56
86
  const currentInput = userConfig.build?.rollupOptions?.input;
57
87
  let input;
58
88
  if (!currentInput) {
@@ -68,21 +98,52 @@ export function componentExplorer(options = {}) {
68
98
  else {
69
99
  input = { ...currentInput, '___explorer': VIRTUAL_ENTRY_ID };
70
100
  }
101
+ // When lib mode is used, lib.fileName controls entryFileNames for ALL
102
+ // entries, causing the explorer chunk to get the same filename as the
103
+ // app entry (e.g. both become "index.js"). Override entryFileNames to
104
+ // give the explorer entry a distinct name while preserving the lib
105
+ // naming for the app entry.
106
+ const lib = userConfig.build?.lib;
107
+ const libFileName = lib && typeof lib === 'object' && !Array.isArray(lib)
108
+ ? lib.fileName
109
+ : undefined;
110
+ const outputOverrides = {};
111
+ if (typeof libFileName === 'string') {
112
+ outputOverrides.entryFileNames = (chunkInfo) => {
113
+ if (chunkInfo.name === '___explorer') {
114
+ return '___explorer-[hash].js';
115
+ }
116
+ return `${libFileName}.js`;
117
+ };
118
+ }
71
119
  return {
120
+ define: {
121
+ 'process.env.NODE_ENV': JSON.stringify('production'),
122
+ },
72
123
  build: {
73
124
  rollupOptions: {
74
125
  input,
126
+ output: outputOverrides,
75
127
  },
76
128
  },
77
129
  };
78
130
  },
79
- resolveId(id) {
131
+ async resolveId(id, importer) {
80
132
  if (id === VIRTUAL_ENTRY_ID) {
81
133
  return RESOLVED_VIRTUAL_ENTRY_ID;
82
134
  }
83
135
  if (id === VIRTUAL_FIXTURES_ID) {
84
136
  return RESOLVED_VIRTUAL_FIXTURES_ID;
85
137
  }
138
+ if (importer === RESOLVED_VIRTUAL_ENTRY_ID && id.startsWith('@vscode/component-explorer')) {
139
+ const fakeImporter = config.configFile; // file must exist for vite resolution to work
140
+ const result = await this.resolve(id, fakeImporter, { skipSelf: true });
141
+ if (result) {
142
+ log('verbose', `Resolving ${id}: Resolved to ${result.id}`);
143
+ return result;
144
+ }
145
+ log('verbose', `Resolving ${id}: Failed to resolve from ${fakeImporter}`);
146
+ }
86
147
  },
87
148
  load(id) {
88
149
  if (id === RESOLVED_VIRTUAL_ENTRY_ID) {
@@ -93,13 +154,35 @@ export function componentExplorer(options = {}) {
93
154
  }
94
155
  },
95
156
  generateBundle(_, bundle) {
157
+ if (buildMode === 'app-only') {
158
+ return;
159
+ }
96
160
  // Find the explorer entry chunk
97
161
  const explorerChunk = Object.values(bundle).find((chunk) => chunk.type === 'chunk' && chunk.name === '___explorer' && chunk.isEntry);
98
162
  if (explorerChunk && explorerChunk.type === 'chunk') {
99
163
  const base = config.base ?? '/';
100
164
  const scriptPath = `${base}${explorerChunk.fileName}`;
101
- // Collect CSS files imported by the explorer
102
- const cssFiles = explorerChunk.viteMetadata?.importedCss ?? new Set();
165
+ // Collect CSS from the explorer chunk and all transitively imported chunks.
166
+ // viteMetadata.importedCss on the entry chunk alone may miss CSS from shared chunks.
167
+ const cssFiles = new Set();
168
+ const visited = new Set();
169
+ const collectCss = (chunkFileName) => {
170
+ if (visited.has(chunkFileName)) {
171
+ return;
172
+ }
173
+ visited.add(chunkFileName);
174
+ const chunk = bundle[chunkFileName];
175
+ if (!chunk || chunk.type !== 'chunk') {
176
+ return;
177
+ }
178
+ for (const css of chunk.viteMetadata?.importedCss ?? []) {
179
+ cssFiles.add(css);
180
+ }
181
+ for (const imported of chunk.imports ?? []) {
182
+ collectCss(imported);
183
+ }
184
+ };
185
+ collectCss(explorerChunk.fileName);
103
186
  const cssLinks = Array.from(cssFiles)
104
187
  .map((file) => ` <link rel="stylesheet" href="${base}${file}">`)
105
188
  .join('\n');
@@ -112,6 +195,18 @@ export function componentExplorer(options = {}) {
112
195
  },
113
196
  configureServer(viteServer) {
114
197
  log('info', `Explorer available at: ${explorerRoute}`);
198
+ // Parse daemon config from env var (set by daemon process)
199
+ const daemonEnv = process.env.COMPONENT_EXPLORER_DAEMON_CONFIG;
200
+ let daemonConfig;
201
+ if (daemonEnv) {
202
+ try {
203
+ daemonConfig = JSON.parse(daemonEnv);
204
+ log('info', `Daemon mode enabled (session: ${daemonConfig.sessionName})`);
205
+ }
206
+ catch (e) {
207
+ log('error', `Failed to parse daemon config: ${e}`);
208
+ }
209
+ }
115
210
  // Watch for fixture file additions/deletions to reload the fixtures module
116
211
  const isFixtureFile = (file) => file.match(/\.fixture\.(ts|tsx)$/);
117
212
  const invalidateFixturesModule = (file, event) => {
@@ -133,12 +228,21 @@ export function componentExplorer(options = {}) {
133
228
  });
134
229
  viteServer.middlewares.use(async (req, res, next) => {
135
230
  const url = req.url ?? '';
136
- // Explorer shell route
137
- if (url === explorerRoute || url === explorerRoute + '/') {
231
+ const parsedUrl = new URL(url, 'http://localhost');
232
+ // Proxy daemon API requests to the named pipe
233
+ if (daemonConfig && parsedUrl.pathname.startsWith(DAEMON_API_PREFIX + '/')) {
234
+ const daemonPath = '/api' + parsedUrl.pathname.slice(DAEMON_API_PREFIX.length);
235
+ proxyToDaemon(req, res, daemonConfig.pipeName, daemonPath, log);
236
+ return;
237
+ }
238
+ // Serve explorer HTML for the explorer route (all modes via query params)
239
+ if (parsedUrl.pathname === explorerRoute || parsedUrl.pathname === explorerRoute + '/') {
138
240
  log('verbose', `Serving explorer HTML for: ${url}`);
139
- const html = getExplorerHtml();
140
- // Transform HTML through Vite to inject React preamble and client
141
- const transformedHtml = await viteServer.transformIndexHtml(url, html);
241
+ const html = getExplorerHtml(daemonConfig);
242
+ // Transform HTML through Vite to inject React preamble and client.
243
+ // Use only the pathname — passing query params (e.g. ?report=...url.json)
244
+ // confuses Vite's JSON plugin into treating inline CSS as JSON.
245
+ const transformedHtml = await viteServer.transformIndexHtml(parsedUrl.pathname, html);
142
246
  res.setHeader('Content-Type', 'text/html');
143
247
  res.end(transformedHtml);
144
248
  return;
@@ -161,17 +265,38 @@ export function componentExplorer(options = {}) {
161
265
  }
162
266
  function generateEntryModule() {
163
267
  return `
164
- import { ExplorerApp } from '@vscode/component-explorer';
268
+ import { ExplorerApp, CliRuntime } from '@vscode/component-explorer/viewer';
269
+ import '@vscode/component-explorer/styles.css';
165
270
  import { fixtures } from 'virtual:component-explorer/fixtures';
166
271
 
167
- const app = new ExplorerApp(document.getElementById('root'), fixtures);
272
+ const params = new URLSearchParams(location.search);
273
+ const root = document.getElementById('root');
274
+
275
+ const target = params.get('mode') === 'render'
276
+ ? new CliRuntime(root, fixtures)
277
+ : new ExplorerApp(root, fixtures);
278
+
279
+ const autoFixture = params.get('fixture');
280
+ if (autoFixture && target instanceof CliRuntime) {
281
+ target.renderFixture(autoFixture);
282
+ }
168
283
 
169
284
  if (import.meta.hot) {
170
285
  import.meta.hot.accept('virtual:component-explorer/fixtures', (newModule) => {
171
286
  if (newModule) {
172
- app.updateFixtures(newModule.fixtures);
287
+ target.updateFixtures(newModule.fixtures);
173
288
  }
174
289
  });
290
+
291
+ import.meta.hot.on('vite:afterUpdate', (payload) => {
292
+ if (payload.updates.length > 0) {
293
+ target.bumpVersion();
294
+ }
295
+ });
296
+
297
+ import.meta.hot.on('vite:beforeFullReload', () => {
298
+ console.log('[component-explorer] Full page reload incoming');
299
+ });
175
300
  }
176
301
  `;
177
302
  }
@@ -181,7 +306,10 @@ function generateFixturesModule(fixtureGlob) {
181
306
  export const fixtures = import.meta.glob('${normalizedGlob}', { eager: true });
182
307
  `;
183
308
  }
184
- function getExplorerHtml() {
309
+ function getExplorerHtml(daemonConfig) {
310
+ const daemonScript = daemonConfig
311
+ ? `<script>window.__EXPLORER_DAEMON__ = ${JSON.stringify({ sessionName: daemonConfig.sessionName })};</script>`
312
+ : '';
185
313
  return `<!DOCTYPE html>
186
314
  <html lang="en">
187
315
  <head>
@@ -192,6 +320,7 @@ function getExplorerHtml() {
192
320
  * { margin: 0; padding: 0; box-sizing: border-box; }
193
321
  html, body, #root { height: 100%; width: 100%; }
194
322
  </style>
323
+ ${daemonScript}
195
324
  </head>
196
325
  <body>
197
326
  <div id="root"></div>
@@ -199,6 +328,41 @@ function getExplorerHtml() {
199
328
  </body>
200
329
  </html>`;
201
330
  }
331
+ /**
332
+ * Proxies a request to the daemon's named pipe server.
333
+ */
334
+ function proxyToDaemon(req, res, pipeName, daemonPath, log) {
335
+ const body = [];
336
+ req.on('data', chunk => body.push(chunk));
337
+ req.on('end', () => {
338
+ const reqBody = Buffer.concat(body);
339
+ const options = {
340
+ socketPath: pipeName,
341
+ path: daemonPath || '/',
342
+ method: req.method,
343
+ headers: {
344
+ 'Content-Type': 'application/json',
345
+ 'Content-Length': reqBody.byteLength,
346
+ },
347
+ };
348
+ const daemonReq = http.request(options, (daemonRes) => {
349
+ const chunks = [];
350
+ daemonRes.on('data', chunk => chunks.push(chunk));
351
+ daemonRes.on('end', () => {
352
+ const responseBuffer = Buffer.concat(chunks);
353
+ res.writeHead(daemonRes.statusCode || 200, daemonRes.headers);
354
+ res.end(responseBuffer);
355
+ });
356
+ });
357
+ daemonReq.on('error', (err) => {
358
+ log('info', `Daemon proxy error: ${err.message}`);
359
+ res.writeHead(503, { 'Content-Type': 'application/json' });
360
+ res.end(JSON.stringify({ error: 'Daemon unavailable' }));
361
+ });
362
+ daemonReq.write(reqBody);
363
+ daemonReq.end();
364
+ });
365
+ }
202
366
  function getExplorerHtmlForBuild(scriptPath, cssLinks) {
203
367
  return `<!DOCTYPE html>
204
368
  <html lang="en">
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vscode/component-explorer-vite-plugin",
3
- "version": "0.1.1-1",
3
+ "version": "0.1.1-11",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -15,16 +15,23 @@
15
15
  ],
16
16
  "scripts": {
17
17
  "build": "tsc",
18
- "watch": "tsc --watch"
18
+ "dev": "tsc --watch",
19
+ "test": "vitest --run",
20
+ "test:update": "vitest --run --update"
19
21
  },
20
22
  "dependencies": {
21
23
  "tinyglobby": "^0.2.0"
22
24
  },
23
25
  "devDependencies": {
24
26
  "@vscode/component-explorer": "workspace:*",
25
- "@types/node": "^20.0.0",
27
+ "@types/node": "^22.0.0",
28
+ "@vitejs/plugin-react": "^4.3.0",
29
+ "playwright": "^1.40.0",
30
+ "react": "^18.3.0",
31
+ "react-dom": "^18.3.0",
26
32
  "typescript": "^5.4.0",
27
- "vite": "^6.0.0"
33
+ "vite": "^6.0.0",
34
+ "vitest": "^1.3.0"
28
35
  },
29
36
  "peerDependencies": {
30
37
  "@vscode/component-explorer": "*",