electron-ipc-helper.adapter.assemblyscript 0.1.0

dotnet add package electron-ipc-helper.adapter.assemblyscript --version 0.1.0
                    
NuGet\Install-Package electron-ipc-helper.adapter.assemblyscript -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="electron-ipc-helper.adapter.assemblyscript" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="electron-ipc-helper.adapter.assemblyscript" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="electron-ipc-helper.adapter.assemblyscript" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add electron-ipc-helper.adapter.assemblyscript --version 0.1.0
                    
#r "nuget: electron-ipc-helper.adapter.assemblyscript, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package electron-ipc-helper.adapter.assemblyscript@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=electron-ipc-helper.adapter.assemblyscript&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=electron-ipc-helper.adapter.assemblyscript&version=0.1.0
                    
Install as a Cake Tool

@electron-ipc-helper/adapter-assemblyscript

Optional AssemblyScript / WebAssembly adapter for electron-ipc-helper.

Bridges AssemblyScript WASM module exports into typed IPC handlers that slot directly into the existing defineIpcApi / exposeApiToRenderer pipeline — with zero mandatory runtime dependencies.


Why a separate package?

The core electron-ipc-helper is intentionally lean. AssemblyScript support is an advanced, optional use-case; keeping it separate:

  • Keeps the core bundle small for users who don't need WASM.
  • Allows the adapter to evolve independently.
  • Makes the optional dependency on @assemblyscript/loader explicit.

Installation

npm install @electron-ipc-helper/adapter-assemblyscript
# peer deps (if not already installed)
npm install electron-ipc-helper electron

Quick start

// main.ts
import { createAssemblyScriptAdapter, asc } from '@electron-ipc-helper/adapter-assemblyscript';
import { defineIpcApi } from 'electron-ipc-helper';
import { exposeApiToRenderer } from 'electron-ipc-helper/preload';

// 1. Define the schema (mirrors your AssemblyScript exports)
const schema = {
  add:   asc.fn(['i32', 'i32'], 'i32'),
  greet: asc.fn(['string'], 'string'),
};

// 2. Load the WASM module and create typed handlers
const adapter = await createAssemblyScriptAdapter('./math.wasm', schema);

// 3. Register IPC handlers on ipcMain
const api = defineIpcApi(adapter.handlers);

// 4. Expose to renderer via contextBridge (in preload.ts)
exposeApiToRenderer(api);
// renderer.ts
const result = await window.api.add(3, 4);        // => 7
const msg   = await window.api.greet('World');    // => 'Hello, World!'

API reference

createAssemblyScriptAdapter(source, schema, options?)

Loads a WASM module and returns typed async handlers.

Parameter Type Description
source string \| Buffer \| ArrayBuffer \| WebAssembly.Module \| WebAssembly.Instance Path to .wasm file, raw bytes, pre-compiled module, or existing instance
schema AscSchema Descriptor map of function signatures
options AssemblyScriptAdapterOptions Optional: imports, logger, warnOnMissingRuntime

Returns Promise<AssemblyScriptAdapter<S>>:

interface AssemblyScriptAdapter<S> {
  handlers: InferAscHandlers<S>;   // Pass to defineIpcApi()
  instance: WebAssembly.Instance;  // The raw WASM instance
  runtime: AscRuntimeExports | null;
  dispose(): void;
}

AssemblyScriptPlugin

Lifecycle-managed plugin for use with PluginHost:

import { PluginHost } from 'electron-ipc-helper/plugins';
import { AssemblyScriptPlugin } from '@electron-ipc-helper/adapter-assemblyscript';

const host = new PluginHost();
host.register(new AssemblyScriptPlugin({
  name: 'math',
  source: './math.wasm',
  schema: { add: asc.fn(['i32', 'i32'], 'i32') },
  onReady: (api) => { /* store api reference */ },
}));

await host.init();   // loads WASM, registers IPC handlers
await host.start();
// on shutdown:
await host.stop();
await host.dispose();

wrapLoaderInstance(loaderExports)

Compatibility shim for @assemblyscript/loader:

import { instantiate } from '@assemblyscript/loader';
import { wrapLoaderInstance, createAssemblyScriptAdapter } from '@electron-ipc-helper/adapter-assemblyscript';

const { exports } = await instantiate(fs.readFileSync('./math.wasm'));
const adapter = await createAssemblyScriptAdapter(
  wrapLoaderInstance(exports),
  schema,
  { warnOnMissingRuntime: false },
);

Supported types

Schema type JS type Notes
i32, u32, f32, f64 number Direct numeric mapping
i64, u64 bigint Requires BigInt support
bool boolean Encoded as 0/1 on the WASM side
string string Requires AssemblyScript runtime (--runtime full)
bytes Uint8Array Requires AssemblyScript runtime
void undefined Return-only

Migrating from the old import path

In electron-ipc-helper@0.1.x a compatibility shim re-exports this package from electron-ipc-helper/adapters/assemblyscript. That shim is deprecated and will be removed in the next major release.

Update your imports:

// ❌ Old (deprecated)
import { createAssemblyScriptAdapter } from 'electron-ipc-helper/adapters/assemblyscript';

// ✅ New
import { createAssemblyScriptAdapter } from '@electron-ipc-helper/adapter-assemblyscript';

License

MIT

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 231 4/9/2026