22 lines
594 B
TypeScript
22 lines
594 B
TypeScript
|
import crypto from 'crypto'
|
||
|
|
||
|
export type WasmBinding = {
|
||
|
filePath: string
|
||
|
name: string
|
||
|
}
|
||
|
|
||
|
export default function MiddlewareWasmLoader(this: any, source: Buffer) {
|
||
|
const name = `wasm_${sha1(source)}`
|
||
|
const filePath = `server/middleware-chunks/${name}.wasm`
|
||
|
const binding: WasmBinding = { filePath, name }
|
||
|
this._module.buildInfo.nextWasmMiddlewareBinding = binding
|
||
|
this.emitFile(`/${filePath}`, source, null)
|
||
|
return `module.exports = ${name};`
|
||
|
}
|
||
|
|
||
|
export const raw = true
|
||
|
|
||
|
function sha1(source: string | Buffer) {
|
||
|
return crypto.createHash('sha1').update(source).digest('hex')
|
||
|
}
|