@lockerpm/desktop-service
v1.1.2
Published
## Installation
Downloads
27
Readme
Locker Desktop Service Supporter for Desktop app
Installation
Install from npm:
npm install -S @lockerpm/desktop-service
Install from yarn:
yarn add @lockerpm/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 '@lockerpm/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',
'...'
]