@synra/capacitor-electron
v0.0.7
Published
A starter for creating a TypeScript package.
Readme
@synra/capacitor-electron
@synra/capacitor-electron provides a typed bridge foundation for Capacitor + Electron integration.
This package follows a layered design:
api: Promise-based typed plugin API.bridge/preload: singleinvokeentry for renderer to main IPC.bridge/main: method-dispatch gateway with error normalization and timeout guard.host/services: runtime, external link, and file capability services.host/adapters: Electron/Node adapters for shell and filesystem calls.shared: protocol types, error codes, validators, and observability contracts.
Current capability set
runtime.getInfoexternal.openfile.read
Protocol baseline
- Channel:
synra:cap-electron:v1:invoke - Protocol version:
1.0 - Stable error codes:
INVALID_PARAMS,UNAUTHORIZED,NOT_FOUND,TIMEOUT,UNSUPPORTED_OPERATION,INTERNAL_ERROR
Quick usage
Main process registration
import { setupBridgeMainRuntime } from '@synra/capacitor-electron'
setupBridgeMainRuntime(ipcMain, {
allowedFileRoots: [process.cwd()]
})Preload bridge exposure
import { contextBridge, ipcRenderer } from 'electron'
import { createPreloadInvoker, exposePreloadBridge } from '@synra/capacitor-electron'
const invoke = createPreloadInvoker((channel, request) => ipcRenderer.invoke(channel, request))
exposePreloadBridge(invoke)Renderer API usage
import { createElectronBridgePluginFromGlobal } from '@synra/capacitor-electron'
const plugin = createElectronBridgePluginFromGlobal()
const runtimeInfo = await plugin.getRuntimeInfo()Capacitor core platform patch (renderer)
import { Capacitor } from '@capacitor/core'
import { installElectronCapacitor } from '@synra/capacitor-electron/capacitor'
installElectronCapacitor({ capacitor: Capacitor })
console.log(Capacitor.getPlatform()) // "electron" (when preload bridge exists)Development
vp install
vp check
vp test
vp pack