UNPKG

@napi-rs/wasm-runtime

Version:

Runtime and polyfill for wasm targets

40 lines (37 loc) 1.54 kB
const { MessageHandler, instantiateNapiModuleSync, instantiateNapiModule, } = require('@emnapi/core') // Single-threaded (non-shared-memory) WASI builds link an emnapi archive // without the C async-work and threadsafe-function implementations (they are // unconditional `napi_generic_failure` stubs without threads), so the // generated loaders provide the JavaScript implementations through these // plugins instead. Raw `instantiateNapiModule(Sync)` callers instantiating a // single-threaded napi-rs wasm must pass them too: // `plugins: [emnapiAsyncWorkPlugin, emnapiTSFNPlugin]` — without them // instantiation fails with a LinkError naming the missing import. Threaded // (shared-memory) builds link the C implementations and need no plugins; // this mirrors the upstream @emnapi/core v2 plugin split (v1 bundled these // implementations in the core runtime). The plugins are bundled into this // package so loading the runtime with @emnapi/core v1 does not resolve the // v2-only `@emnapi/core/plugins` package export. const { emnapiAsyncWorkPlugin, emnapiTSFNPlugin, } = require('./dist/emnapi-plugins.cjs') const { createContext, getDefaultContext } = require('@emnapi/runtime') const { WASI } = require('@tybys/wasm-util') const { createFsProxy, createOnMessage } = require('./dist/fs-proxy.cjs') module.exports = { MessageHandler, createContext, emnapiAsyncWorkPlugin, emnapiTSFNPlugin, instantiateNapiModule, instantiateNapiModuleSync, getDefaultContext, WASI, createFsProxy, createOnMessage, }