assetexec.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. let percent = 0
  14. function assignListeners(){
  15. tracker.on('validate', (data) => {
  16. process.send({context: 'validate', data})
  17. })
  18. tracker.on('progress', (data, acc, total) => {
  19. const currPercent = parseInt((acc/total) * 100)
  20. if (currPercent !== percent) {
  21. percent = currPercent
  22. process.send({context: 'progress', data, value: acc, total, percent})
  23. }
  24. })
  25. tracker.on('complete', (data, ...args) => {
  26. process.send({context: 'complete', data, args})
  27. })
  28. tracker.on('error', (data, error) => {
  29. process.send({context: 'error', data, error})
  30. })
  31. }
  32. assignListeners()
  33. process.on('message', (msg) => {
  34. if(msg.task === 'execute'){
  35. const func = msg.function
  36. let nS = tracker[func] // Nonstatic context
  37. let iS = target[func] // Static context
  38. if(typeof nS === 'function' || typeof iS === 'function'){
  39. const f = typeof nS === 'function' ? nS : iS
  40. const res = f.apply(f === nS ? tracker : null, msg.argsArr)
  41. if(res instanceof Promise){
  42. res.then((v) => {
  43. process.send({result: v, context: func})
  44. }).catch((err) => {
  45. process.send({result: err.message || err, context: func})
  46. })
  47. } else {
  48. process.send({result: res, context: func})
  49. }
  50. } else {
  51. process.send({context: 'error', data: null, error: `Function ${func} not found on ${process.argv[2]}`})
  52. }
  53. } else if(msg.task === 'changeContext'){
  54. target = require('./assetguard')[msg.class]
  55. if(target == null){
  56. process.send({context: 'error', data: null, error: `Invalid class ${msg.class}`})
  57. } else {
  58. tracker = new target(...(msg.args))
  59. assignListeners()
  60. }
  61. }
  62. })
  63. process.on('disconnect', () => {
  64. console.log('AssetExec Disconnected')
  65. process.exit(0)
  66. })