server-worker-runner.invoke.spec.ts — vite Source File
Architecture documentation for server-worker-runner.invoke.spec.ts, a typescript file in the vite codebase. 6 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 7f6f7505_2626_1c12_7217_33d6682b658c["server-worker-runner.invoke.spec.ts"] 8377ae20_ffba_2f9c_bded_58742b7f1c3b["index.ts"] 7f6f7505_2626_1c12_7217_33d6682b658c --> 8377ae20_ffba_2f9c_bded_58742b7f1c3b a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e["index.ts"] 7f6f7505_2626_1c12_7217_33d6682b658c --> a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e 19009191_26ac_2526_d048_41ac02638e55["createServer"] 7f6f7505_2626_1c12_7217_33d6682b658c --> 19009191_26ac_2526_d048_41ac02638e55 6dfa768a_efc1_54e5_b2de_25126290d891["node:worker_threads"] 7f6f7505_2626_1c12_7217_33d6682b658c --> 6dfa768a_efc1_54e5_b2de_25126290d891 a340ba46_b2b7_3048_3bb3_6907a74c8464["vitest"] 7f6f7505_2626_1c12_7217_33d6682b658c --> a340ba46_b2b7_3048_3bb3_6907a74c8464 30cf8c63_cbf8_e8bc_f0b6_84fb7d391fd1["birpc"] 7f6f7505_2626_1c12_7217_33d6682b658c --> 30cf8c63_cbf8_e8bc_f0b6_84fb7d391fd1 style 7f6f7505_2626_1c12_7217_33d6682b658c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { BroadcastChannel, Worker } from 'node:worker_threads'
import { afterAll, beforeAll, describe, expect, it } from 'vitest'
import type { BirpcReturn } from 'birpc'
import { createBirpc } from 'birpc'
import { DevEnvironment } from '../../..'
import { type ViteDevServer, createServer } from '../../../server'
describe('running module runner inside a worker and using the ModuleRunnerTransport#invoke API', () => {
let worker: Worker
let server: ViteDevServer
let rpc: BirpcReturn<
unknown,
{ invoke: (data: any) => Promise<{ result: any } | { error: any }> }
>
let handleInvoke: (data: any) => Promise<{ result: any } | { error: any }>
beforeAll(async () => {
worker = new Worker(
new URL('./fixtures/worker.invoke.mjs', import.meta.url),
{
stdout: true,
},
)
await new Promise<void>((resolve, reject) => {
worker.on('message', () => resolve())
worker.on('error', reject)
})
server = await createServer({
root: import.meta.dirname,
logLevel: 'error',
server: {
middlewareMode: true,
watch: null,
hmr: {
port: 9610,
},
},
environments: {
worker: {
dev: {
createEnvironment: (name, config) => {
return new DevEnvironment(name, config, {
hot: false,
})
},
},
},
},
})
handleInvoke = (data: any) => server.environments.ssr.hot.handleInvoke(data)
rpc = createBirpc(
{
invoke: (data: any) => handleInvoke(data),
},
{
post: (data) => worker.postMessage(data),
on: (data) => worker.on('message', data),
},
)
})
afterAll(async () => {
await Promise.allSettled([server.close(), worker.terminate()])
rpc.$close()
})
async function run(id: string) {
const channel = new BroadcastChannel('vite-worker:invoke')
return new Promise<any>((resolve, reject) => {
channel.onmessage = (event) => {
try {
resolve(event.data)
} catch (e) {
reject(e)
}
}
channel.postMessage({ id })
})
}
it('correctly runs ssr code', async () => {
const output = await run('./fixtures/default-string.ts')
expect(output).toStrictEqual({
result: 'hello world',
})
})
it('triggers an error', async () => {
handleInvoke = async () => ({ error: new Error('This is an Invoke Error') })
const output = await run('dummy')
expect(output).not.toHaveProperty('result')
expect(output.error).toContain('Error: This is an Invoke Error')
})
it('triggers an unknown error', async () => {
handleInvoke = async () => ({ error: 'a string instead of an error' })
const output = await run('dummy')
expect(output).not.toHaveProperty('result')
expect(output.error).toContain('Error: Unknown invoke error')
})
it('resolves builtin module without server round-trip', async () => {
handleInvoke = (data: any) => server.environments.ssr.hot.handleInvoke(data)
const output = await run('./fixtures/builtin-import.ts')
expect(output).toHaveProperty('result')
expect(output.result).toBe('baz.txt')
expect(output.error).toBeUndefined()
})
})
Domain
Dependencies
- birpc
- createServer
- index.ts
- index.ts
- node:worker_threads
- vitest
Source
Frequently Asked Questions
What does server-worker-runner.invoke.spec.ts do?
server-worker-runner.invoke.spec.ts is a source file in the vite codebase, written in typescript. It belongs to the ViteCore domain.
What does server-worker-runner.invoke.spec.ts depend on?
server-worker-runner.invoke.spec.ts imports 6 module(s): birpc, createServer, index.ts, index.ts, node:worker_threads, vitest.
Where is server-worker-runner.invoke.spec.ts in the architecture?
server-worker-runner.invoke.spec.ts is located at packages/vite/src/node/ssr/runtime/__tests__/server-worker-runner.invoke.spec.ts (domain: ViteCore, directory: packages/vite/src/node/ssr/runtime/__tests__).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free