@napi-rs/cli
Version:
Cli tools for napi-rs
354 lines (333 loc) • 10.6 kB
Markdown
# 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)␊
}␊
`