Skip to content

Commit c415cfc

Browse files
committed
feat!: restructure client rpc object, remove clientRpc
1 parent f591b3f commit c415cfc

File tree

16 files changed

+689
-87
lines changed

16 files changed

+689
-87
lines changed

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,6 @@ export async function init(): Promise<void> {
1111
console.log('[VITE DEVTOOLS] Client injected')
1212

1313
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)
2214

2315
const state = useLocalStorage<DockPanelStorage>(
2416
'vite-devtools-dock-state',

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/Dock.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ const panelStyle = computed(() => {
220220
})
221221
222222
onMounted(() => {
223-
bringUp()
223+
if (context.rpc.isTrusted)
224+
bringUp()
224225
recalculateCounter.value++
225226
})
226227
</script>
@@ -268,6 +269,9 @@ onMounted(() => {
268269
class="w-3 h-3 absolute left-1/2 top-1/2 translate-x--1/2 translate-y--1/2 transition-opacity duration-300"
269270
:class="isMinimized ? 'op100' : 'op0'"
270271
/>
272+
<div v-if="!context.rpc.isTrusted" class="p2">
273+
IS NOT TRUSTED
274+
</div>
271275
<DockEntries
272276
:entries="context.docks.entries"
273277
class="transition duration-200 flex items-center w-full h-full justify-center"

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: 8 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,22 @@ 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+
if (!rpc.isTrusted) {
63+
console.warn('[VITE DEVTOOLS] Untrusted client, skipping docks entries update')
64+
return
65+
}
66+
dockEntries.value = (await rpc.call('vite:internal:docks:list'))
6367
.map(entry => Object.freeze(entry))
6468
// eslint-disable-next-line no-console
6569
console.log('[VITE DEVTOOLS] Docks Entries Updated', [...dockEntries.value])
6670
}
67-
rpcReturn.clientRpc.register({
71+
rpc.client.register({
6872
name: 'vite:internal:docks:updated' satisfies keyof DevToolsRpcClientFunctions,
6973
type: 'action',
7074
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) => {

packages/kit/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
".": "./dist/index.mjs",
2323
"./client": "./dist/client.mjs",
2424
"./utils/events": "./dist/utils/events.mjs",
25+
"./utils/nanoid": "./dist/utils/nanoid.mjs",
2526
"./package.json": "./package.json"
2627
},
2728
"main": "./dist/index.mjs",
@@ -44,7 +45,6 @@
4445
"birpc-x": "catalog:deps"
4546
},
4647
"devDependencies": {
47-
"nanoid": "^5.1.6",
4848
"tsdown": "catalog:build",
4949
"vite": "catalog:build"
5050
}

0 commit comments

Comments
 (0)