| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 'use strict'let $module/*  let contextProto = this.context;  while (contextProto = Object.getPrototypeOf(contextProto)) {    completionGroups.push(Object.getOwnPropertyNames(contextProto));  }*/function handle (data) {  let idx      = data.idx    , child    = data.child    , method   = data.method    , args     = data.args    , callback = function () {        let _args = Array.prototype.slice.call(arguments)        if (_args[0] instanceof Error) {          let e = _args[0]          _args[0] = {              '$error'  : '$error'            , 'type'    : e.constructor.name            , 'message' : e.message            , 'stack'   : e.stack          }          Object.keys(e).forEach(function(key) {            _args[0][key] = e[key]          })        }        process.send({ owner: 'farm', idx: idx, child: child, args: _args })      }    , exec  if (method == null && typeof $module == 'function')    exec = $module  else if (typeof $module[method] == 'function')    exec = $module[method]  if (!exec)    return console.error('NO SUCH METHOD:', method)  exec.apply(null, args.concat([ callback ]))}process.on('message', function (data) {  if (data.owner !== 'farm') {    return;  }  if (!$module) return $module = require(data.module)  if (data.event == 'die') return process.exit(0)  handle(data)})
 |