mirror of
https://github.com/extism/extism.git
synced 2026-04-23 03:00:11 -04:00
- Adds `ExtismContext` instead of global `PLUGINS` registry - Adds `extism_context_new`, `extism_context_free` and `extism_context_reset` - Requires updating nearly every SDK function to add context parameter - Renames some SDK functions to follow better naming conventions - `extism_plugin_register` -> `extism_plugin_new` - `extism_output_get` -> `extism_plugin_output_data` - `extism_output_length` -> `extism_plugin_output_length` - `extism_call` -> `extism_plugin_call` - Updates `extism_error` to return the context error when -1 issued for the plug-in ID - Adds `extism_plugin_free` to remove an existing plugin - Updates SDKs to include these functions - Updates SDK examples and comments Co-authored-by: Steve Manuel <steve@dylib.so>
22 lines
680 B
JavaScript
22 lines
680 B
JavaScript
import { withContext, Context } from './index.js';
|
|
import { readFileSync } from 'fs';
|
|
|
|
withContext(async function (context) {
|
|
let wasm = readFileSync('../wasm/code.wasm');
|
|
let p = context.plugin(wasm);
|
|
|
|
if (!p.functionExists('count_vowels')) {
|
|
console.log("no function 'count_vowels' in wasm");
|
|
process.exit(1);
|
|
}
|
|
|
|
let buf = await p.call('count_vowels', process.argv[2] || 'this is a test');
|
|
console.log(JSON.parse(buf.toString())['count']);
|
|
p.free();
|
|
});
|
|
|
|
// or, use a context like this:
|
|
let ctx = new Context();
|
|
let wasm = readFileSync('../wasm/code.wasm');
|
|
let p = ctx.plugin(wasm);
|
|
// ... where the context can be passed around to various functions etc.
|