Socket
Socket
Sign inDemoInstall

comlink-electron-adapter

Package Overview
Dependencies
1
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    comlink-electron-adapter

[![Build Status](https://travis-ci.com/kwonoj/comlink-electron-adapter.svg)](https://travis-ci.com/kwonoj/comlink-electron-adapter) [![Build status](https://ci.appveyor.com/api/projects/status/51vn1y7yygjfcl98/branch/master?svg=true)](https://ci.appveyor.


Version published
Weekly downloads
23
increased by2200%
Maintainers
1
Created
Weekly downloads
 

Changelog

Source

0.0.1 (2019-06-02)

Features

  • endpoint: initial implementation (1bf37da)

Readme

Source

Build Status Build status codecov npm node

Comlink provides way to interface between worker-like endpoint via ES proxy. This module allows to create custom endpoints around Electron's IPC (https://electronjs.org/docs/api/ipc-main) for proxy object across Electron's processes.

Install

This has a peer dependencies of comlink@4, which will have to be installed as well

npm install comlink-electron-adapter

Usage

There are separate endpoint creation method per object's origin.

Expose main process's object to renderer project

// main process
import { ipcMain } from 'electron';
import { expose } from 'comlink';
import { mainProcObjectEndpoint } from 'comlink-electron-adapter';

const mainProcessObject = {...};
expose(mainProcessObject, mainProcObjectEndpoint(ipcMain));

// renderer process
import { wrap } from 'comlink';
import { ipcRenderer } from 'electron';

// `proxied` is proxy object to `mainProcessObject` in main process
const proxied = wrap(mainProcObjectEndpoint(ipcRenderer));

Expose renderer process's object to main process

It is also possible to access renderer process's object in main process.

// renderer process
import { expose } from 'comlink';
import { ipcRenderer } from 'electron';
import { rendererProcObjectEndpoint } from 'comlink-electron-adapter';

const rendererProcessObject = {...};
expose(rendererProcessObject, rendererProcObjectEndpoint(ipcRenderer));

// main process
import { wrap } from 'comlink';
import { ipcMain } from 'electron';
import { rendererProcObjectEndpoint } from 'comlink-electron-adapter';

const rendererProcessWindow = new BrowserWindow();
rendererProcessWindow.loadFile('.../renderer.js');

const proxied = wrap(requestRendererProcessEndpoint(ipcMain, rendererProcessWindow.webContents));

Unlike renderer process main process does not aware target renderer process to send message and target webContents should be specified. Also main process should wait call proxy object until renderer process expose its object.

Note

Due to Electron IPC's design comlink-electron-adapter do not support transferable. Using Comlink.transfer will raise not supported exception.

Building / Testing

Few npm scripts are supported for build / test code.

  • build: Transpiles code to ES5 commonjs to dist.
  • test: Run test cases.
  • lint: Run lint over all codebases
  • lint:staged: Run lint only for staged changes. This'll be executed automatically with precommit hook.
  • commit: Commit wizard to write commit message

License

MIT

FAQs

Last updated on 02 Jun 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc