server-worker-runner.spec.ts — vite Source File
Architecture documentation for server-worker-runner.spec.ts, a typescript file in the vite codebase. 6 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 8cd46fdb_679a_7d1f_531c_774b779345ea["server-worker-runner.spec.ts"] 8377ae20_ffba_2f9c_bded_58742b7f1c3b["index.ts"] 8cd46fdb_679a_7d1f_531c_774b779345ea --> 8377ae20_ffba_2f9c_bded_58742b7f1c3b a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e["index.ts"] 8cd46fdb_679a_7d1f_531c_774b779345ea --> a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e 19009191_26ac_2526_d048_41ac02638e55["createServer"] 8cd46fdb_679a_7d1f_531c_774b779345ea --> 19009191_26ac_2526_d048_41ac02638e55 6dfa768a_efc1_54e5_b2de_25126290d891["node:worker_threads"] 8cd46fdb_679a_7d1f_531c_774b779345ea --> 6dfa768a_efc1_54e5_b2de_25126290d891 a340ba46_b2b7_3048_3bb3_6907a74c8464["vitest"] 8cd46fdb_679a_7d1f_531c_774b779345ea --> a340ba46_b2b7_3048_3bb3_6907a74c8464 54c37fea_4fe7_2693_71cb_1276b77f55f9["vite"] 8cd46fdb_679a_7d1f_531c_774b779345ea --> 54c37fea_4fe7_2693_71cb_1276b77f55f9 style 8cd46fdb_679a_7d1f_531c_774b779345ea fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { BroadcastChannel, Worker } from 'node:worker_threads'
import { describe, expect, it, onTestFinished } from 'vitest'
import type { HotChannel, HotChannelListener, HotPayload } from 'vite'
import { DevEnvironment } from '../../..'
import { createServer } from '../../../server'
const createWorkerTransport = (worker: Worker): HotChannel => {
const handlerToWorkerListener = new WeakMap<
HotChannelListener,
(value: HotPayload) => void
>()
const client = {
send(payload: HotPayload) {
worker.postMessage(payload)
},
}
return {
send: (data) => worker.postMessage(data),
on: (event: string, handler: HotChannelListener) => {
// client is already connected
if (event === 'vite:client:connect') return
if (event === 'vite:client:disconnect') {
const listener = () => {
handler(undefined, client)
}
handlerToWorkerListener.set(handler, listener)
worker.on('exit', listener)
return
}
const listener = (value: HotPayload) => {
if (value.type === 'custom' && value.event === event) {
handler(value.data, client)
}
}
handlerToWorkerListener.set(handler, listener)
worker.on('message', listener)
},
off: (event, handler: HotChannelListener) => {
if (event === 'vite:client:connect') return
if (event === 'vite:client:disconnect') {
const listener = handlerToWorkerListener.get(handler)
if (listener) {
worker.off('exit', listener)
handlerToWorkerListener.delete(handler)
}
return
}
const listener = handlerToWorkerListener.get(handler)
if (listener) {
worker.off('message', listener)
handlerToWorkerListener.delete(handler)
}
},
}
}
describe('running module runner inside a worker', () => {
it('correctly runs ssr code', async () => {
expect.assertions(1)
const worker = new Worker(
new URL('./fixtures/worker.mjs', import.meta.url),
{
stdout: true,
},
)
await new Promise<void>((resolve, reject) => {
worker.on('message', () => resolve())
worker.on('error', reject)
})
const server = await createServer({
root: import.meta.dirname,
logLevel: 'error',
server: {
middlewareMode: true,
watch: null,
hmr: {
port: 9609,
},
},
environments: {
worker: {
dev: {
createEnvironment: (name, config) => {
return new DevEnvironment(name, config, {
hot: false,
transport: createWorkerTransport(worker),
})
},
},
},
},
})
onTestFinished(async () => {
await Promise.allSettled([server.close(), worker.terminate()])
})
const channel = new BroadcastChannel('vite-worker')
return new Promise<void>((resolve, reject) => {
channel.onmessage = (event) => {
try {
expect(event.data).toEqual({
result: 'hello world',
})
} catch (e) {
reject(e)
} finally {
resolve()
}
}
channel.postMessage({ id: './fixtures/default-string.ts' })
})
})
})
Domain
Subdomains
Functions
Dependencies
- createServer
- index.ts
- index.ts
- node:worker_threads
- vite
- vitest
Source
Frequently Asked Questions
What does server-worker-runner.spec.ts do?
server-worker-runner.spec.ts is a source file in the vite codebase, written in typescript. It belongs to the ViteCore domain, ConfigEngine subdomain.
What functions are defined in server-worker-runner.spec.ts?
server-worker-runner.spec.ts defines 1 function(s): createWorkerTransport.
What does server-worker-runner.spec.ts depend on?
server-worker-runner.spec.ts imports 6 module(s): createServer, index.ts, index.ts, node:worker_threads, vite, vitest.
Where is server-worker-runner.spec.ts in the architecture?
server-worker-runner.spec.ts is located at packages/vite/src/node/ssr/runtime/__tests__/server-worker-runner.spec.ts (domain: ViteCore, subdomain: ConfigEngine, 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