rsnext/packages/next/build/webpack/loaders/next-middleware-wasm-loader.ts

22 lines
594 B
TypeScript
Raw Normal View History

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')
}