assetexec.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. let target = require('./assetguard')[process.argv[2]]
  2. if(target == null){
  3. process.send({context: 'error', data: null, error: 'Invalid class name'})
  4. console.error('Invalid class name passed to argv[2], cannot continue.')
  5. process.exit(1)
  6. }
  7. let tracker = new target(...(process.argv.splice(3)))
  8. process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'
  9. //const tracker = new AssetGuard(process.argv[2], process.argv[3])
  10. console.log('AssetExec Started')
  11. // Temporary for debug purposes.
  12. process.on('unhandledRejection', r => console.log(r))
  13. function assignListeners(){
  14. tracker.on('validate', (data) => {
  15. process.send({context: 'validate', data})
  16. })
  17. tracker.on('progress', (data, acc, total) => {
  18. process.send({context: 'progress', data, value: acc, total, percent: parseInt((acc/total)*100)})
  19. })
  20. tracker.on('complete', (data, ...args) => {
  21. process.send({context: 'complete', data, args})
  22. })
  23. tracker.on('error', (data, error) => {
  24. process.send({context: 'error', data, error})
  25. })
  26. }
  27. assignListeners()
  28. process.on('message', (msg) => {
  29. if(msg.task === 'execute'){
  30. const func = msg.function
  31. let nS = tracker[func] // Nonstatic context
  32. let iS = target[func] // Static context
  33. if(typeof nS === 'function' || typeof iS === 'function'){
  34. const f = typeof nS === 'function' ? nS : iS
  35. const res = f.apply(f === nS ? tracker : null, msg.argsArr)
  36. if(res instanceof Promise){
  37. res.then((v) => {
  38. process.send({result: v, context: func})
  39. }).catch((err) => {
  40. process.send({result: err.message || err, context: func})
  41. })
  42. } else {
  43. process.send({result: res, context: func})
  44. }
  45. } else {
  46. process.send({context: 'error', data: null, error: `Function ${func} not found on ${process.argv[2]}`})
  47. }
  48. } else if(msg.task === 'changeContext'){
  49. target = require('./assetguard')[msg.class]
  50. if(target == null){
  51. process.send({context: 'error', data: null, error: `Invalid class ${msg.class}`})
  52. } else {
  53. tracker = new target(...(msg.args))
  54. assignListeners()
  55. }
  56. }
  57. })
  58. process.on('disconnect', () => {
  59. console.log('AssetExec Disconnected')
  60. process.exit(0)
  61. })