MCPcopy
hub / github.com/vitest-dev/vitest / mockerPlugin

Function mockerPlugin

packages/mocker/src/node/mockerPlugin.ts:21–85  ·  view source on GitHub ↗
(options: MockerPluginOptions = {})

Source from the content-addressed store, hash-verified

19// vitest doesn't use this plugin directly
20
21export function mockerPlugin(options: MockerPluginOptions = {}): Plugin[] {
22 let server: ViteDevServer
23 const registerPath = resolve(fileURLToPath(new URL('./register.js', import.meta.url)))
24 return [
25 {
26 name: 'vitest:mocker:ws-rpc',
27 config(_, { command }) {
28 if (command !== 'serve') {
29 return
30 }
31 return {
32 server: {
33 // don't pre-transform request because they might be mocked at runtime
34 preTransformRequests: false,
35 },
36 optimizeDeps: {
37 exclude: ['@vitest/mocker/register', '@vitest/mocker/browser'],
38 },
39 }
40 },
41 configureServer(server_) {
42 server = server_
43 const mockResolver = new ServerMockResolver(server)
44 server.ws.on('vitest:mocks:resolveId', async ({ id, importer }: { id: string; importer: string }) => {
45 const resolved = await mockResolver.resolveId(id, importer)
46 server.ws.send('vitest:mocks:resolvedId:result', resolved)
47 })
48 server.ws.on('vitest:mocks:resolveMock', async ({ id, importer, options }: { id: string; importer: string; options: any }) => {
49 const resolved = await mockResolver.resolveMock(id, importer, options)
50 server.ws.send('vitest:mocks:resolveMock:result', resolved)
51 })
52 server.ws.on('vitest:mocks:invalidate', async ({ ids }: { ids: string[] }) => {
53 mockResolver.invalidate(ids)
54 server.ws.send('vitest:mocks:invalidate:result')
55 })
56 },
57 async load(id) {
58 if (id !== registerPath) {
59 return
60 }
61
62 if (!server) {
63 // mocker doesn't work during build
64 return 'export {}'
65 }
66
67 const content = await readFile(registerPath, 'utf-8')
68 const result = content
69 .replace(
70 /__VITEST_GLOBAL_THIS_ACCESSOR__/g,
71 options.globalThisAccessor ?? '"__vitest_mocker__"',
72 )
73 .replace(
74 '__VITEST_MOCKER_ROOT__',
75 JSON.stringify(server.config.root),
76 )
77 return result
78 },

Callers 1

createTestServerFunction · 0.90

Calls 5

hoistMocksPluginFunction · 0.90
interceptorPluginFunction · 0.90
automockPluginFunction · 0.90
dynamicImportPluginFunction · 0.90
resolveFunction · 0.50

Tested by 1

createTestServerFunction · 0.72