1.0.2 • Published 3 years ago

duck-worker v1.0.2

Weekly downloads
5
License
MIT
Repository
github
Last release
3 years ago

Installation

$ npm i duck-worker --save
# or
$ yarn add duck-worker

Features

duck worker client success

const client = await new DuckWorkerClient()
t.is(await client.workerA('some payload'), 'received: some payload')

duck worker client fail

const client = await new DuckWorkerClient()
await t.throwsAsync(() => client.workerB('some error'), {
  instanceOf: Error,
  message: 'some error'
})

duck worker provides ipc interface

ipc.connectTo('worker')
return new Promise((resolve) => {
  ipc.of['worker'].on('pong', () => {
    t.pass()
    resolve()
  })
  ipc.of['worker'].emit('ping')
})

loads workers from folder

await t.throwsAsync(() => client.taskA('something'), {
  message: 'got: something'
})

t.like(await client.taskB({ name: 'Olivia' }), {
  output: 'name is: Olivia'
})


const r = await client.nameSpace.taskC('what is love?')

t.like(r.errorsThrown[0], {
  payload: 'what is love?'
})

DuckWorkerClient

new DuckWorkerClient(appSpace, clientId, workerId)

ParamTypeDefaultDescription
appSpaceStringdefault to local package.json->name
clientIdStringclient
workerIdStringworker

Returns: Promise.<{Object}> - the proxy to communicate with the worker

duckWorkerIpc(workers, appName, id) ⇒ Promise.<ipc.server>

ParamTypeDefaultDescription
workersObjectworkers object mapping to functions
appNameString<package.json->name>the appName (defaults to project's package.json name)
idStringworkerworker id

duckWorker(workerDir, appName, id) ⇒ exports.<void>

ParamTypeDescription
workerDirStringthe worker dir
appNameStringipc appname
idStringipc id

License

MIT

© 2020-present Martin Rafael Gonzalez tin@devtin.io