# Snapshot report for `src/api/__tests__/templates.spec.ts`

The actual snapshot is saved in `templates.spec.ts.snap`.

Generated by [AVA](https://avajs.dev).

## createWasiBrowserBinding default

> Snapshot 1

    `import {␊
      createOnMessage as __wasmCreateOnMessageForFsProxy,␊
      getDefaultContext as __emnapiGetDefaultContext,␊
      instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync,␊
      WASI as __WASI,␊
    } from '@napi-rs/wasm-runtime'␊
    ␊
    ␊
    ␊
    const __wasi = new __WASI({␊
      version: 'preview1',␊
    })␊
    ␊
    const __wasmUrl = new URL('./test-wasi.wasm', import.meta.url).href␊
    const __emnapiContext = __emnapiGetDefaultContext()␊
    ␊
    ␊
    const __sharedMemory = new WebAssembly.Memory({␊
      initial: 4000,␊
      maximum: 65536,␊
      shared: true,␊
    })␊
    ␊
    const __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer())␊
    ␊
    const {␊
      instance: __napiInstance,␊
      module: __wasiModule,␊
      napiModule: __napiModule,␊
    } = __emnapiInstantiateNapiModuleSync(__wasmFile, {␊
      context: __emnapiContext,␊
      asyncWorkPoolSize: 4,␊
      wasi: __wasi,␊
      onCreateWorker() {␊
        const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), {␊
          type: 'module',␊
        })␊
    ␊
    ␊
        return worker␊
      },␊
      overwriteImports(importObject) {␊
        importObject.env = {␊
          ...importObject.env,␊
          ...importObject.napi,␊
          ...importObject.emnapi,␊
          memory: __sharedMemory,␊
        }␊
        return importObject␊
      },␊
      beforeInit({ instance }) {␊
        for (const name of Object.keys(instance.exports)) {␊
          if (name.startsWith('__napi_register__')) {␊
            instance.exports[name]()␊
          }␊
        }␊
      },␊
    })␊
    `

## createWasiBrowserBinding with errorEvent

> Snapshot 1

    `import {␊
      createOnMessage as __wasmCreateOnMessageForFsProxy,␊
      getDefaultContext as __emnapiGetDefaultContext,␊
      instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync,␊
      WASI as __WASI,␊
    } from '@napi-rs/wasm-runtime'␊
    ␊
    ␊
    ␊
    const __wasi = new __WASI({␊
      version: 'preview1',␊
    })␊
    ␊
    const __wasmUrl = new URL('./test-wasi.wasm', import.meta.url).href␊
    const __emnapiContext = __emnapiGetDefaultContext()␊
    ␊
    ␊
    const __sharedMemory = new WebAssembly.Memory({␊
      initial: 4000,␊
      maximum: 65536,␊
      shared: true,␊
    })␊
    ␊
    const __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer())␊
    ␊
    const {␊
      instance: __napiInstance,␊
      module: __wasiModule,␊
      napiModule: __napiModule,␊
    } = __emnapiInstantiateNapiModuleSync(__wasmFile, {␊
      context: __emnapiContext,␊
      asyncWorkPoolSize: 4,␊
      wasi: __wasi,␊
      onCreateWorker() {␊
        const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), {␊
          type: 'module',␊
        })␊
    ␊
        worker.addEventListener('message', (event) => {␊
          if (event.data && typeof event.data === 'object' && event.data.type === 'error') {␊
            window.dispatchEvent(new CustomEvent('napi-rs-worker-error', { detail: event.data }))␊
          }␊
        })␊
    ␊
        return worker␊
      },␊
      overwriteImports(importObject) {␊
        importObject.env = {␊
          ...importObject.env,␊
          ...importObject.napi,␊
          ...importObject.emnapi,␊
          memory: __sharedMemory,␊
        }␊
        return importObject␊
      },␊
      beforeInit({ instance }) {␊
        for (const name of Object.keys(instance.exports)) {␊
          if (name.startsWith('__napi_register__')) {␊
            instance.exports[name]()␊
          }␊
        }␊
      },␊
    })␊
    `

## createWasiBrowserBinding with errorEvent and fs

> Snapshot 1

    `import {␊
      createOnMessage as __wasmCreateOnMessageForFsProxy,␊
      getDefaultContext as __emnapiGetDefaultContext,␊
      instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync,␊
      WASI as __WASI,␊
    } from '@napi-rs/wasm-runtime'␊
    import { memfs } from '@napi-rs/wasm-runtime/fs'␊
    ␊
    ␊
    export const { fs: __fs, vol: __volume } = memfs()␊
    ␊
    const __wasi = new __WASI({␊
      version: 'preview1',␊
      fs: __fs,␊
      preopens: {␊
        '/': '/',␊
      },␊
    })␊
    ␊
    const __wasmUrl = new URL('./test-wasi.wasm', import.meta.url).href␊
    const __emnapiContext = __emnapiGetDefaultContext()␊
    ␊
    ␊
    const __sharedMemory = new WebAssembly.Memory({␊
      initial: 4000,␊
      maximum: 65536,␊
      shared: true,␊
    })␊
    ␊
    const __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer())␊
    ␊
    const {␊
      instance: __napiInstance,␊
      module: __wasiModule,␊
      napiModule: __napiModule,␊
    } = __emnapiInstantiateNapiModuleSync(__wasmFile, {␊
      context: __emnapiContext,␊
      asyncWorkPoolSize: 4,␊
      wasi: __wasi,␊
      onCreateWorker() {␊
        const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), {␊
          type: 'module',␊
        })␊
        worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))␊
    ␊
        worker.addEventListener('message', (event) => {␊
          if (event.data && typeof event.data === 'object' && event.data.type === 'error') {␊
            window.dispatchEvent(new CustomEvent('napi-rs-worker-error', { detail: event.data }))␊
          }␊
        })␊
    ␊
        return worker␊
      },␊
      overwriteImports(importObject) {␊
        importObject.env = {␊
          ...importObject.env,␊
          ...importObject.napi,␊
          ...importObject.emnapi,␊
          memory: __sharedMemory,␊
        }␊
        return importObject␊
      },␊
      beforeInit({ instance }) {␊
        for (const name of Object.keys(instance.exports)) {␊
          if (name.startsWith('__napi_register__')) {␊
            instance.exports[name]()␊
          }␊
        }␊
      },␊
    })␊
    `

## createWasiBrowserWorkerBinding default

> Snapshot 1

    `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'␊
    ␊
    const handler = new MessageHandler({␊
      onLoad({ wasmModule, wasmMemory }) {␊
        const wasi = new WASI({␊
          print: function () {␊
            // eslint-disable-next-line no-console␊
            console.log.apply(console, arguments)␊
          },␊
          printErr: function() {␊
            // eslint-disable-next-line no-console␊
            console.error.apply(console, arguments)␊
            ␊
          },␊
        })␊
        return instantiateNapiModuleSync(wasmModule, {␊
          childThread: true,␊
          wasi,␊
          overwriteImports(importObject) {␊
            importObject.env = {␊
              ...importObject.env,␊
              ...importObject.napi,␊
              ...importObject.emnapi,␊
              memory: wasmMemory,␊
            }␊
          },␊
        })␊
      },␊
      ␊
    })␊
    ␊
    globalThis.onmessage = function (e) {␊
      handler.handle(e)␊
    }␊
    `

## createWasiBrowserWorkerBinding with errorEvent

> Snapshot 1

    `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'␊
    ␊
    const errorOutputs = []␊
    ␊
    const handler = new MessageHandler({␊
      onLoad({ wasmModule, wasmMemory }) {␊
        const wasi = new WASI({␊
          print: function () {␊
            // eslint-disable-next-line no-console␊
            console.log.apply(console, arguments)␊
          },␊
          printErr: function() {␊
            // eslint-disable-next-line no-console␊
            console.error.apply(console, arguments)␊
            ␊
            errorOutputs.push([...arguments])␊
          },␊
        })␊
        return instantiateNapiModuleSync(wasmModule, {␊
          childThread: true,␊
          wasi,␊
          overwriteImports(importObject) {␊
            importObject.env = {␊
              ...importObject.env,␊
              ...importObject.napi,␊
              ...importObject.emnapi,␊
              memory: wasmMemory,␊
            }␊
          },␊
        })␊
      },␊
      onError(error) {␊
        postMessage({ type: 'error', error, errorOutputs })␊
        errorOutputs.length = 0␊
      }␊
    })␊
    ␊
    globalThis.onmessage = function (e) {␊
      handler.handle(e)␊
    }␊
    `

## createWasiBrowserWorkerBinding with errorEvent and fs

> Snapshot 1

    `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime'␊
    import { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs'␊
    ␊
    const fs = createFsProxy(__memfsExported)␊
    ␊
    const errorOutputs = []␊
    ␊
    const handler = new MessageHandler({␊
      onLoad({ wasmModule, wasmMemory }) {␊
        const wasi = new WASI({␊
          fs,␊
          preopens: {␊
            '/': '/',␊
          },␊
          print: function () {␊
            // eslint-disable-next-line no-console␊
            console.log.apply(console, arguments)␊
          },␊
          printErr: function() {␊
            // eslint-disable-next-line no-console␊
            console.error.apply(console, arguments)␊
            ␊
            errorOutputs.push([...arguments])␊
          },␊
        })␊
        return instantiateNapiModuleSync(wasmModule, {␊
          childThread: true,␊
          wasi,␊
          overwriteImports(importObject) {␊
            importObject.env = {␊
              ...importObject.env,␊
              ...importObject.napi,␊
              ...importObject.emnapi,␊
              memory: wasmMemory,␊
            }␊
          },␊
        })␊
      },␊
      onError(error) {␊
        postMessage({ type: 'error', error, errorOutputs })␊
        errorOutputs.length = 0␊
      }␊
    })␊
    ␊
    globalThis.onmessage = function (e) {␊
      handler.handle(e)␊
    }␊
    `
