@lockerpm/desktop-service
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

Locker Desktop Service Supporter for Desktop app

Installation

Install from npm:

npm install -S locker-desktop-service

Install from yarn:

yarn add locker-desktop-service

Usages

This supporter service requires Node.js to work -> If you use this service in Electron, it must be running in main process and calling method through ipcMain.handle() and ipcRenderer.invoke()

import { DesktopService, StorageService } from 'locker-desktop-service'
import fs from 'fs'
import path from 'path'
import Store from 'electron-store'

// Storing data secure data using electron-store, you can use others secure storage
// or simply keep data in memory only
class MockStorageService implements StorageService {
  storage: Store
  constructor() {
    this.storage = new Store()
  }
  getSecure(key: string) {
    return Promise.resolve(this.storage.get(key) || null)
  }
  setSecure(key: string, data: any) {
    this.storage.set(key, data)
    return Promise.resolve()
  }
  deleteSecure(key: string) {
    this.storage.delete(key)
    return Promise.resolve()
  }
}
const storageService = new MockStorageService()

// TLS cert is required to comunicate with the background service
const rootCert = fs.readFileSync(path.resolve(process.resourcesPath, 'cert', 'ca-cert.pem'))

// TLS cert to host WSS
const cert = fs.readFileSync(path.resolve(process.resourcesPath, 'cert', 'server-cert.pem'))
const key = fs.readFileSync(path.resolve(process.resourcesPath, 'cert', 'server-key.pem'))

// Init service
export const service = new DesktopService({
  baseApiUrl: process.env.BASE_API_URL,
  storageService,
  ssl: {
    rootCert,
  },
  socketSsl: {
    cert,
    key,
  },
  logLevel: 1,  // 1 is error, 2 is debug
  unsafe: true, // set to false to enable checksum validation
  serviceAlias: '' // optional, used to compare with service alias from background service
})

// Setup listners
service.on('<event-name>', callback)

Development

Install required packages.

npm install

Run tests

Create a .env file with required access keys (refer to .env.example)

To run all tests, use:

npm test

Run some tests only, please update mocharc.js:

ignore: [
  // './tests/index.spec.ts', // Comment the file you want to test
  './tests/crypto.spec.ts',
  '...'
]

Readme

Keywords

none

Package Sidebar

Install

npm i @lockerpm/desktop-service

Weekly Downloads

0

Version

1.0.0

License

ISC

Unpacked Size

1.44 MB

Total Files

158

Last publish

Collaborators

  • cystackapp
  • everping