MCPcopy
hub / github.com/vitejs/vite / wasmHelperPlugin

Function wasmHelperPlugin

packages/vite/src/node/plugins/wasm.ts:77–180  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

75const instantiateFromFileCode = instantiateFromFile.toString()
76
77export const wasmHelperPlugin = (): Plugin => {
78 return perEnvironmentPlugin('vite:wasm-helper', (env) => {
79 return {
80 name: 'vite:wasm-helper',
81
82 resolveId: {
83 filter: { id: exactRegex(wasmHelperId) },
84 handler(id) {
85 return id
86 },
87 },
88
89 load: {
90 filter: { id: [exactRegex(wasmHelperId), wasmInitRE, wasmDirectRE] },
91 async handler(id) {
92 const ssr = this.environment.config.consumer === 'server'
93
94 if (id === wasmHelperId) {
95 return `
96const instantiateFromUrl = ${ssr ? instantiateFromFileCode : instantiateFromUrlCode}
97export default ${wasmHelperCode}
98`
99 }
100
101 const isInit = wasmInitRE.test(id)
102 const cleanedId = id.split('?')[0]
103 let url = await fileToUrl(this, cleanedId, ssr)
104 assetUrlRE.lastIndex = 0
105 if (ssr && assetUrlRE.test(url)) {
106 url = url.replace('__VITE_ASSET__', '__VITE_WASM_INIT__')
107 }
108
109 if (isInit) {
110 return `
111 import initWasm from "${wasmHelperId}"
112 export default opts => initWasm(opts, ${JSON.stringify(url)})
113 `
114 }
115
116 // Direct .wasm import (WASM ESM Integration)
117 const wasmInfo = await parseWasm(cleanedId)
118 const glueCode = generateGlueCode(wasmInfo, {
119 initWasm: '__vite__initWasm',
120 wasmUrl: '__vite__wasmUrl',
121 })
122
123 return `
124import __vite__initWasm from "${wasmHelperId}"
125const __vite__wasmUrl = ${JSON.stringify(url)}
126${glueCode}
127`
128 },
129 },
130
131 renderChunk:
132 env.config.consumer === 'server'
133 ? {
134 filter: { code: wasmInitUrlRE },

Callers 1

resolvePluginsFunction · 0.90

Calls 1

perEnvironmentPluginFunction · 0.90

Tested by

no test coverage detected