node-workers 0.8.0

A pool of long-lived nodejs workers
Documentation
const { bridge } = require('../dist/bridge');

function fib(n) {
  if (n <= 1) {
    return 1;
  }
  return fib(n - 1) + fib(n - 2);
}

const { Project } = require('ts-morph');
function getInterfaces(filePath) {
  const project = new Project();
  const source = project.addSourceFileAtPath(filePath);
  const interfaces = source.getInterfaces();
  const results = [];
  for (const interface of interfaces) {
    const members = interface.getMembers();
    const props = [];
    for (const member of members) {
      const key = member.compilerNode.name.text;
      const type = member.compilerNode.type?.getText();
      props.push({ key, type });
    }
    results.push({
      name: interface.getName(),
      props,
    });
  }
  return results;
}

bridge({
  fib: (payload) => {
    console.log(`fib ${payload} task start`);
    const val = fib(payload);
    console.log(`fib ${payload} task end: `, val);
  },
  fib2: (payload) => {
    return fib(payload);
  },
  ping: () => {
    console.log(`pong at ${new Date()}`);
  },
  getUser: () => {
    return {
      name: 'Foo',
      age: 50,
      phones: ['a', 'b']
    };
  },
  error: () => {
    throw new Error('task failed');
  },
  getInterfaces
});