Skip to content

Commit 8bc611e

Browse files
authored
feat!(core): restructure client side rpc object (#146)
1 parent 135f89d commit 8bc611e

40 files changed

+209
-174
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
"@jridgewell/sourcemap-codec": "catalog:resolutions",
7070
"@nuxt/devtools": "catalog:devtools",
7171
"@nuxt/kit": "catalog:build",
72+
"@nuxt/vite-builder": "catalog:build",
7273
"@rolldown/debug": "catalog:deps",
7374
"chokidar": "catalog:resolutions",
7475
"esbuild": "catalog:build",

packages/core/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
"ws": "catalog:deps"
7171
},
7272
"devDependencies": {
73+
"@clack/prompts": "catalog:inlined",
7374
"@vitejs/devtools": "workspace:*",
7475
"@vitejs/devtools-vite": "workspace:*",
7576
"@vitejs/plugin-vue": "catalog:build",

packages/core/src/client/inject/index.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,7 @@ export async function init(): Promise<void> {
1010
// eslint-disable-next-line no-console
1111
console.log('[VITE DEVTOOLS] Client injected')
1212

13-
const rpcReturn = await getDevToolsRpcClient()
14-
const { rpc } = rpcReturn
15-
16-
// eslint-disable-next-line no-console
17-
console.log('[VITE DEVTOOLS] RPC', rpc)
18-
19-
const rpcFunctions = await rpc.$call('vite:internal:rpc:server:list')
20-
// eslint-disable-next-line no-console
21-
console.log('[VITE DEVTOOLS] RPC Functions', rpcFunctions)
13+
const rpc = await getDevToolsRpcClient()
2214

2315
const state = useLocalStorage<DockPanelStorage>(
2416
'vite-devtools-dock-state',
@@ -36,7 +28,7 @@ export async function init(): Promise<void> {
3628

3729
const context = await createDocksContext(
3830
'embedded',
39-
rpcReturn,
31+
rpc,
4032
state,
4133
)
4234

packages/core/src/client/standalone/App.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ import ViewEntry from '../webcomponents/components/ViewEntry.vue'
88
import { createDocksContext } from '../webcomponents/state/context'
99
import { PersistedDomViewsManager } from '../webcomponents/utils/PersistedDomViewsManager'
1010
11-
const rpcReturn = await getDevToolsRpcClient()
12-
const { rpc } = rpcReturn
11+
const rpc = await getDevToolsRpcClient()
1312
1413
// eslint-disable-next-line no-console
1514
console.log('[VITE DEVTOOLS] RPC', rpc)
@@ -19,7 +18,7 @@ const persistedDoms = markRaw(new PersistedDomViewsManager(viewsContainer))
1918
2019
const context: DocksContext = await createDocksContext(
2120
'standalone',
22-
rpcReturn,
21+
rpc,
2322
)
2423
2524
context.docks.selectedId ||= context.docks.entries[0]?.id ?? null

packages/core/src/client/webcomponents/.generated/css.ts

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

packages/core/src/client/webcomponents/components/ViewBuiltinTerminalPanel.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ onMounted(async () => {
3737
props.terminal.terminal = term
3838
3939
if (props.terminal.buffer == null) {
40-
const { buffer } = await props.context.rpc.$call('vite:internal:terminals:read', props.terminal.info.id)
40+
const { buffer } = await props.context.rpc.call('vite:internal:terminals:read', props.terminal.info.id)
4141
props.terminal.buffer = markRaw(buffer)
4242
}
4343

packages/core/src/client/webcomponents/components/ViewLauncher.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const props = defineProps<{
1010
}>()
1111
1212
function onLaunch() {
13-
props.context.rpc.$call('vite:internal:docks:on-launch', props.entry.id)
13+
props.context.rpc.call('vite:internal:docks:on-launch', props.entry.id)
1414
}
1515
1616
const status = computed(() => props.entry.launcher.status || 'idle')

packages/core/src/client/webcomponents/state/context.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ClientRpcReturn, DockClientScriptContext, DockEntryState, DockPanelStorage, DocksContext } from '@vitejs/devtools-kit/client'
1+
import type { DevToolsRpcClient, DockClientScriptContext, DockEntryState, DockPanelStorage, DocksContext } from '@vitejs/devtools-kit/client'
22
import type { Ref } from 'vue'
33
import { computed, markRaw, reactive, ref, toRefs, watchEffect } from 'vue'
44
import { createDockEntryState, DEFAULT_DOCK_PANEL_STORE, useDocksEntries } from './docks'
@@ -7,15 +7,15 @@ import { executeSetupScript } from './setup-script'
77
let _docksContext: DocksContext | undefined
88
export async function createDocksContext(
99
clientType: 'embedded' | 'standalone',
10-
rpcReturn: ClientRpcReturn,
10+
rpc: DevToolsRpcClient,
1111
panelStore?: Ref<DockPanelStorage>,
1212
): Promise<DocksContext> {
1313
if (_docksContext) {
1414
return _docksContext
1515
}
1616

1717
const selectedId = ref<string | null>(null)
18-
const dockEntries = await useDocksEntries(rpcReturn)
18+
const dockEntries = await useDocksEntries(rpc)
1919
const selected = computed(() => dockEntries.value.find(entry => entry.id === selectedId.value) ?? null)
2020

2121
const dockEntryStateMap: Map<string, DockEntryState> = reactive(new Map())
@@ -76,8 +76,7 @@ export async function createDocksContext(
7676
return true
7777
},
7878
},
79-
rpc: rpcReturn.rpc,
80-
clientRpc: rpcReturn.clientRpc,
79+
rpc,
8180
clientType,
8281
})
8382

packages/core/src/client/webcomponents/state/docks.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { DevToolsDockEntry, DevToolsRpcClientFunctions } from '@vitejs/devtools-kit'
2-
import type { ClientRpcReturn, DockEntryState, DockEntryStateEvents, DockPanelStorage } from '@vitejs/devtools-kit/client'
2+
import type { DevToolsRpcClient, DockEntryState, DockEntryStateEvents, DockPanelStorage } from '@vitejs/devtools-kit/client'
33
import type { Ref, ShallowRef } from 'vue'
44
import { createEventEmitter } from '@vitejs/devtools-kit/utils/events'
55
import { markRaw, reactive, shallowRef, watch } from 'vue'
@@ -53,18 +53,18 @@ export function createDockEntryState(
5353
}
5454

5555
let _docksEntriesRef: ShallowRef<DevToolsDockEntry[]> | undefined
56-
export async function useDocksEntries(rpcReturn: ClientRpcReturn): Promise<Ref<DevToolsDockEntry[]>> {
56+
export async function useDocksEntries(rpc: DevToolsRpcClient): Promise<Ref<DevToolsDockEntry[]>> {
5757
if (_docksEntriesRef) {
5858
return _docksEntriesRef
5959
}
6060
const dockEntries = _docksEntriesRef = shallowRef<DevToolsDockEntry[]>([])
6161
async function updateDocksEntries() {
62-
dockEntries.value = (await rpcReturn.rpc.$call('vite:internal:docks:list'))
62+
dockEntries.value = (await rpc.call('vite:internal:docks:list'))
6363
.map(entry => Object.freeze(entry))
6464
// eslint-disable-next-line no-console
6565
console.log('[VITE DEVTOOLS] Docks Entries Updated', [...dockEntries.value])
6666
}
67-
rpcReturn.clientRpc.register({
67+
rpc.client.register({
6868
name: 'vite:internal:docks:updated' satisfies keyof DevToolsRpcClientFunctions,
6969
type: 'action',
7070
handler: () => updateDocksEntries(),

packages/core/src/client/webcomponents/state/terminals.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export function useTerminals(context: DocksContext): Reactive<Map<string, Termin
1717
}
1818
const map: Reactive<Map<string, TerminalState>> = _terminalsMap = reactive(new Map())
1919
async function updateTerminals() {
20-
const terminals = await context.rpc.$call('vite:internal:terminals:list')
20+
const terminals = await context.rpc.call('vite:internal:terminals:list')
2121

2222
for (const terminal of terminals) {
2323
if (map.has(terminal.id)) {
@@ -34,12 +34,12 @@ export function useTerminals(context: DocksContext): Reactive<Map<string, Termin
3434
// eslint-disable-next-line no-console
3535
console.log('[VITE DEVTOOLS] Terminals Updated', [...map.values()])
3636
}
37-
context.clientRpc.register({
37+
context.rpc.client.register({
3838
name: 'vite:internal:terminals:updated' satisfies keyof DevToolsRpcClientFunctions,
3939
type: 'action',
4040
handler: () => updateTerminals(),
4141
})
42-
context.clientRpc.register({
42+
context.rpc.client.register({
4343
name: 'vite:internal:terminals:stream-chunk' satisfies keyof DevToolsRpcClientFunctions,
4444
type: 'action',
4545
handler: (data: DevToolsTerminalSessionStreamChunkEvent) => {

0 commit comments

Comments
 (0)