diff --git a/workspace/extension/src/constants/version.ts b/workspace/extension/src/constants/version.ts new file mode 100644 index 0000000..71b2a89 --- /dev/null +++ b/workspace/extension/src/constants/version.ts @@ -0,0 +1 @@ +export const SVELTE_SUPPORTED_MAJOR_VERSIONS: number[] = [4]; \ No newline at end of file diff --git a/workspace/extension/src/lib/runtime.svelte.ts b/workspace/extension/src/lib/runtime.svelte.ts index d8cd54c..24629e0 100644 --- a/workspace/extension/src/lib/runtime.svelte.ts +++ b/workspace/extension/src/lib/runtime.svelte.ts @@ -44,6 +44,11 @@ function resolveEventBubble(node: any) { port.onMessage.addListener(({ type, payload }) => { switch (type) { + case 'bridge::ext/svelte_version:set': { + app.svelteVersion = payload; + break; + } + case 'bridge::ext/clear': { app.nodes = {}; app.selected = undefined; diff --git a/workspace/extension/src/lib/state.svelte.ts b/workspace/extension/src/lib/state.svelte.ts index f192277..f43bf89 100644 --- a/workspace/extension/src/lib/state.svelte.ts +++ b/workspace/extension/src/lib/state.svelte.ts @@ -1,5 +1,19 @@ type Overwrite = Omit & B; +type AppState = { + svelteVersion?: number; + + nodes: Record; + root: Readonly; + + selected?: DebugNode; + hovered?: DebugNode; + + inspecting: boolean; + query: string; +} + + export type DebugNode = Overwrite< SvelteBlockDetail, { @@ -28,15 +42,17 @@ export type DebugNode = Overwrite< } >; -export const app = $state({ - nodes: {} as { [key: string]: DebugNode }, +export const app: AppState = $state({ + svelteVersion: undefined, + + nodes: {} as Record, get root() { const nodes = Object.values(this.nodes); return nodes.filter((node) => !node.parent); }, - selected: undefined as undefined | DebugNode, - hovered: undefined as undefined | DebugNode, + selected: undefined, + hovered: undefined, inspecting: false, query: '', diff --git a/workspace/extension/src/routes/ConnectMessage.svelte b/workspace/extension/src/routes/ConnectMessage.svelte index 4815049..00b5573 100644 --- a/workspace/extension/src/routes/ConnectMessage.svelte +++ b/workspace/extension/src/routes/ConnectMessage.svelte @@ -1,9 +1,27 @@
-

Svelte DevTools

+ {#if app.svelteVersion && !SVELTE_SUPPORTED_MAJOR_VERSIONS.includes(app.svelteVersion)} +

Svelte DevTools

+

+ Unsupported Svelte version detected + + +

+ +
+

Svelte app is using an unsupported major version.

+
    +
  • Currently using Svelte version ^{app.svelteVersion}.0.0
  • +
  • Supported major versions: {SVELTE_SUPPORTED_MAJOR_VERSIONS.join(', ')}
  • +
+
+ {:else} +

Svelte DevTools

No Svelte app detected @@ -17,6 +35,7 @@

  • Use Svelte version ^4.0.0?
  • + {/if}