createInvokeableTransport() — vite Function Reference
Architecture documentation for the createInvokeableTransport() function in moduleRunnerTransport.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD 9eeb38dd_72eb_bc2e_d762_af3b2d96d316["createInvokeableTransport()"] a469d907_868c_e1c2_3f7a_7aaf42cc6a7a["moduleRunnerTransport.ts"] 9eeb38dd_72eb_bc2e_d762_af3b2d96d316 -->|defined in| a469d907_868c_e1c2_3f7a_7aaf42cc6a7a f9bbebfe_9cba_07d9_a804_95e8776eaea9["normalizeModuleRunnerTransport()"] f9bbebfe_9cba_07d9_a804_95e8776eaea9 -->|calls| 9eeb38dd_72eb_bc2e_d762_af3b2d96d316 9ae531a9_6ee6_b0c4_a90a_22ecf638ca87["reviveInvokeError()"] 9eeb38dd_72eb_bc2e_d762_af3b2d96d316 -->|calls| 9ae531a9_6ee6_b0c4_a90a_22ecf638ca87 style 9eeb38dd_72eb_bc2e_d762_af3b2d96d316 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/shared/moduleRunnerTransport.ts lines 43–175
const createInvokeableTransport = (
transport: ModuleRunnerTransport,
): InvokeableModuleRunnerTransport => {
if (transport.invoke) {
return {
...transport,
async invoke(name, data) {
const result = await transport.invoke!({
type: 'custom',
event: 'vite:invoke',
data: {
id: 'send',
name,
data,
} satisfies InvokeSendData,
} satisfies CustomPayload)
if ('error' in result) {
throw reviveInvokeError(result.error)
}
return result.result
},
}
}
if (!transport.send || !transport.connect) {
throw new Error(
'transport must implement send and connect when invoke is not implemented',
)
}
const rpcPromises = new Map<
string,
{
resolve: (data: any) => void
reject: (data: any) => void
name: string
timeoutId?: ReturnType<typeof setTimeout>
}
>()
return {
...transport,
connect({ onMessage, onDisconnection }) {
return transport.connect!({
onMessage(payload) {
if (payload.type === 'custom' && payload.event === 'vite:invoke') {
const data = payload.data as InvokeResponseData
if (data.id.startsWith('response:')) {
const invokeId = data.id.slice('response:'.length)
const promise = rpcPromises.get(invokeId)
if (!promise) return
if (promise.timeoutId) clearTimeout(promise.timeoutId)
rpcPromises.delete(invokeId)
const { error, result } = data.data
if (error) {
promise.reject(error)
} else {
promise.resolve(result)
}
return
}
}
onMessage(payload)
},
onDisconnection,
})
},
disconnect() {
rpcPromises.forEach((promise) => {
promise.reject(
new Error(
`transport was disconnected, cannot call ${JSON.stringify(promise.name)}`,
),
)
})
rpcPromises.clear()
return transport.disconnect?.()
},
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does createInvokeableTransport() do?
createInvokeableTransport() is a function in the vite codebase, defined in packages/vite/src/shared/moduleRunnerTransport.ts.
Where is createInvokeableTransport() defined?
createInvokeableTransport() is defined in packages/vite/src/shared/moduleRunnerTransport.ts at line 43.
What does createInvokeableTransport() call?
createInvokeableTransport() calls 1 function(s): reviveInvokeError.
What calls createInvokeableTransport()?
createInvokeableTransport() is called by 1 function(s): normalizeModuleRunnerTransport.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free