mirror of
https://github.com/vitest-dev/vitest.git
synced 2026-01-25 16:48:18 +00:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import type { VitestModuleRunner } from 'vitest/internal/module-runner'
|
|
import {
|
|
getWorkerState,
|
|
startVitestModuleRunner,
|
|
VITEST_VM_CONTEXT_SYMBOL,
|
|
VitestModuleEvaluator,
|
|
} from 'vitest/internal/module-runner'
|
|
|
|
export function startWebWorkerModuleRunner(context: Record<string, unknown>): VitestModuleRunner {
|
|
const state = getWorkerState()
|
|
const mocker = (globalThis as any).__vitest_mocker__
|
|
|
|
const compiledFunctionArgumentsNames = Object.keys(context)
|
|
const compiledFunctionArgumentsValues = Object.values(context)
|
|
compiledFunctionArgumentsNames.push('importScripts')
|
|
compiledFunctionArgumentsValues.push(importScripts)
|
|
|
|
const vm = (globalThis as any)[VITEST_VM_CONTEXT_SYMBOL]
|
|
|
|
const evaluator = new VitestModuleEvaluator(vm, {
|
|
interopDefault: state.config.deps.interopDefault,
|
|
moduleExecutionInfo: state.moduleExecutionInfo,
|
|
getCurrentTestFilepath: () => state.filepath,
|
|
compiledFunctionArgumentsNames,
|
|
compiledFunctionArgumentsValues,
|
|
})
|
|
|
|
return startVitestModuleRunner({
|
|
evaluator,
|
|
evaluatedModules: state.evaluatedModules,
|
|
mocker,
|
|
state,
|
|
})
|
|
}
|
|
|
|
function importScripts() {
|
|
throw new Error(
|
|
'[vitest] `importScripts` is not supported in Vite workers. Please, consider using `import` instead.',
|
|
)
|
|
}
|