@nosana/node 1.0.0-rc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/README.md +92 -0
  2. package/dist/.env +7 -0
  3. package/dist/.env.dev +5 -0
  4. package/dist/.env.prd +4 -0
  5. package/dist/NodeManager/client/index.d.ts +4 -0
  6. package/dist/NodeManager/client/index.js +14 -0
  7. package/dist/NodeManager/configs/NodeConfigs.d.ts +14 -0
  8. package/dist/NodeManager/configs/NodeConfigs.js +32 -0
  9. package/dist/NodeManager/configs/__tests__/NodeConfigs.spec.d.ts +1 -0
  10. package/dist/NodeManager/configs/__tests__/NodeConfigs.spec.js +161 -0
  11. package/dist/NodeManager/configs/configs.d.ts +21 -0
  12. package/dist/NodeManager/configs/configs.js +23 -0
  13. package/dist/NodeManager/db/__tests__/index.spec.d.ts +1 -0
  14. package/dist/NodeManager/db/__tests__/index.spec.js +65 -0
  15. package/dist/NodeManager/db/index.d.ts +50 -0
  16. package/dist/NodeManager/db/index.js +64 -0
  17. package/dist/NodeManager/errors/NodeAlreadyActiveError.d.ts +3 -0
  18. package/dist/NodeManager/errors/NodeAlreadyActiveError.js +6 -0
  19. package/dist/NodeManager/index.d.ts +24 -0
  20. package/dist/NodeManager/index.js +317 -0
  21. package/dist/NodeManager/jobs/index.d.ts +6 -0
  22. package/dist/NodeManager/jobs/index.js +45 -0
  23. package/dist/NodeManager/monitoring/LogMonitoringRegistry.d.ts +9 -0
  24. package/dist/NodeManager/monitoring/LogMonitoringRegistry.js +23 -0
  25. package/dist/NodeManager/monitoring/log/NodeLog.d.ts +56 -0
  26. package/dist/NodeManager/monitoring/log/NodeLog.js +1357 -0
  27. package/dist/NodeManager/monitoring/log/console/ConsoleLogger.d.ts +20 -0
  28. package/dist/NodeManager/monitoring/log/console/ConsoleLogger.js +290 -0
  29. package/dist/NodeManager/monitoring/ping/PingHandler.d.ts +13 -0
  30. package/dist/NodeManager/monitoring/ping/PingHandler.js +68 -0
  31. package/dist/NodeManager/monitoring/proxy/loggingProxy.d.ts +15 -0
  32. package/dist/NodeManager/monitoring/proxy/loggingProxy.js +145 -0
  33. package/dist/NodeManager/monitoring/state/NodeState.d.ts +29 -0
  34. package/dist/NodeManager/monitoring/state/NodeState.js +680 -0
  35. package/dist/NodeManager/monitoring/state/classifyState.d.ts +14 -0
  36. package/dist/NodeManager/monitoring/state/classifyState.js +57 -0
  37. package/dist/NodeManager/monitoring/streaming/LogStreamer.d.ts +14 -0
  38. package/dist/NodeManager/monitoring/streaming/LogStreamer.js +58 -0
  39. package/dist/NodeManager/monitoring/streaming/StateStreamer.d.ts +15 -0
  40. package/dist/NodeManager/monitoring/streaming/StateStreamer.js +59 -0
  41. package/dist/NodeManager/node/Node.d.ts +44 -0
  42. package/dist/NodeManager/node/Node.js +321 -0
  43. package/dist/NodeManager/node/abort/NodeAbortController.d.ts +6 -0
  44. package/dist/NodeManager/node/abort/NodeAbortController.js +12 -0
  45. package/dist/NodeManager/node/abort/abortControllerSelector.d.ts +3 -0
  46. package/dist/NodeManager/node/abort/abortControllerSelector.js +13 -0
  47. package/dist/NodeManager/node/api/ApiEventEmitter.d.ts +8 -0
  48. package/dist/NodeManager/node/api/ApiEventEmitter.js +13 -0
  49. package/dist/NodeManager/node/api/ApiHandler.d.ts +28 -0
  50. package/dist/NodeManager/node/api/ApiHandler.js +193 -0
  51. package/dist/NodeManager/node/api/eventsource/index.d.ts +6 -0
  52. package/dist/NodeManager/node/api/eventsource/index.js +35 -0
  53. package/dist/NodeManager/node/api/middlewares/index.d.ts +5 -0
  54. package/dist/NodeManager/node/api/middlewares/index.js +7 -0
  55. package/dist/NodeManager/node/api/middlewares/rest/verifyBackendSignatureMiddleware.d.ts +3 -0
  56. package/dist/NodeManager/node/api/middlewares/rest/verifyBackendSignatureMiddleware.js +20 -0
  57. package/dist/NodeManager/node/api/middlewares/rest/verifyJobOwnerSignatureMiddleware.d.ts +5 -0
  58. package/dist/NodeManager/node/api/middlewares/rest/verifyJobOwnerSignatureMiddleware.js +28 -0
  59. package/dist/NodeManager/node/api/middlewares/ws/verifyWSJobOwnerSignatureMiddleware.d.ts +6 -0
  60. package/dist/NodeManager/node/api/middlewares/ws/verifyWSJobOwnerSignatureMiddleware.js +30 -0
  61. package/dist/NodeManager/node/api/middlewares/ws/verifyWSMiddleware.d.ts +6 -0
  62. package/dist/NodeManager/node/api/middlewares/ws/verifyWSMiddleware.js +20 -0
  63. package/dist/NodeManager/node/api/middlewares/ws/verifyWSNodeOrJobOwnerSignatureMiddleware.d.ts +6 -0
  64. package/dist/NodeManager/node/api/middlewares/ws/verifyWSNodeOrJobOwnerSignatureMiddleware.js +33 -0
  65. package/dist/NodeManager/node/api/routes/get/index.d.ts +6 -0
  66. package/dist/NodeManager/node/api/routes/get/index.js +6 -0
  67. package/dist/NodeManager/node/api/routes/get/job-definition.d.ts +5 -0
  68. package/dist/NodeManager/node/api/routes/get/job-definition.js +16 -0
  69. package/dist/NodeManager/node/api/routes/get/job-info/buildInfoObject.d.ts +17 -0
  70. package/dist/NodeManager/node/api/routes/get/job-info/buildInfoObject.js +15 -0
  71. package/dist/NodeManager/node/api/routes/get/job-info/job-info.d.ts +5 -0
  72. package/dist/NodeManager/node/api/routes/get/job-info/job-info.js +18 -0
  73. package/dist/NodeManager/node/api/routes/get/job-info/pollActiveJob.d.ts +6 -0
  74. package/dist/NodeManager/node/api/routes/get/job-info/pollActiveJob.js +42 -0
  75. package/dist/NodeManager/node/api/routes/get/job-operation-info.d.ts +28 -0
  76. package/dist/NodeManager/node/api/routes/get/job-operation-info.js +53 -0
  77. package/dist/NodeManager/node/api/routes/get/job-results.d.ts +5 -0
  78. package/dist/NodeManager/node/api/routes/get/job-results.js +15 -0
  79. package/dist/NodeManager/node/api/routes/get/node-info.d.ts +3 -0
  80. package/dist/NodeManager/node/api/routes/get/node-info.js +23 -0
  81. package/dist/NodeManager/node/api/routes/get/service-url.d.ts +5 -0
  82. package/dist/NodeManager/node/api/routes/get/service-url.js +27 -0
  83. package/dist/NodeManager/node/api/routes/index.d.ts +3 -0
  84. package/dist/NodeManager/node/api/routes/index.js +3 -0
  85. package/dist/NodeManager/node/api/routes/post/index.d.ts +4 -0
  86. package/dist/NodeManager/node/api/routes/post/index.js +4 -0
  87. package/dist/NodeManager/node/api/routes/post/job-definition.d.ts +6 -0
  88. package/dist/NodeManager/node/api/routes/post/job-definition.js +15 -0
  89. package/dist/NodeManager/node/api/routes/post/job-operation-actions.d.ts +24 -0
  90. package/dist/NodeManager/node/api/routes/post/job-operation-actions.js +79 -0
  91. package/dist/NodeManager/node/api/routes/post/node-validation.d.ts +4 -0
  92. package/dist/NodeManager/node/api/routes/post/node-validation.js +1783 -0
  93. package/dist/NodeManager/node/api/routes/post/service-stop.d.ts +5 -0
  94. package/dist/NodeManager/node/api/routes/post/service-stop.js +13 -0
  95. package/dist/NodeManager/node/api/routes/wss/index.d.ts +2 -0
  96. package/dist/NodeManager/node/api/routes/wss/index.js +2 -0
  97. package/dist/NodeManager/node/api/routes/wss/log.d.ts +14 -0
  98. package/dist/NodeManager/node/api/routes/wss/log.js +34 -0
  99. package/dist/NodeManager/node/api/routes/wss/status.d.ts +8 -0
  100. package/dist/NodeManager/node/api/routes/wss/status.js +11 -0
  101. package/dist/NodeManager/node/api/types/index.d.ts +12 -0
  102. package/dist/NodeManager/node/api/types/index.js +1 -0
  103. package/dist/NodeManager/node/balance/balanceHandler.d.ts +12 -0
  104. package/dist/NodeManager/node/balance/balanceHandler.js +52 -0
  105. package/dist/NodeManager/node/expiry/expiryHandler.d.ts +24 -0
  106. package/dist/NodeManager/node/expiry/expiryHandler.js +99 -0
  107. package/dist/NodeManager/node/grid/gridHandler.d.ts +19 -0
  108. package/dist/NodeManager/node/grid/gridHandler.js +168 -0
  109. package/dist/NodeManager/node/health/healthHandler.d.ts +16 -0
  110. package/dist/NodeManager/node/health/healthHandler.js +69 -0
  111. package/dist/NodeManager/node/job/JobRegistry.d.ts +14 -0
  112. package/dist/NodeManager/node/job/JobRegistry.js +48 -0
  113. package/dist/NodeManager/node/job/defination/JobDefinitionStrategy.d.ts +13 -0
  114. package/dist/NodeManager/node/job/defination/JobDefinitionStrategy.js +21 -0
  115. package/dist/NodeManager/node/job/defination/strategy/ApiJobDefinitionStrategy.d.ts +8 -0
  116. package/dist/NodeManager/node/job/defination/strategy/ApiJobDefinitionStrategy.js +40 -0
  117. package/dist/NodeManager/node/job/defination/strategy/ApiListenJobDefinitionStrategy.d.ts +9 -0
  118. package/dist/NodeManager/node/job/defination/strategy/ApiListenJobDefinitionStrategy.js +16 -0
  119. package/dist/NodeManager/node/job/defination/strategy/IpfsJobDefinitionStrategy.d.ts +7 -0
  120. package/dist/NodeManager/node/job/defination/strategy/IpfsJobDefinitionStrategy.js +13 -0
  121. package/dist/NodeManager/node/job/jobExternalUtil.d.ts +10 -0
  122. package/dist/NodeManager/node/job/jobExternalUtil.js +82 -0
  123. package/dist/NodeManager/node/job/jobHandler.d.ts +43 -0
  124. package/dist/NodeManager/node/job/jobHandler.js +193 -0
  125. package/dist/NodeManager/node/job/result/ResultReturnStrategy.d.ts +13 -0
  126. package/dist/NodeManager/node/job/result/ResultReturnStrategy.js +21 -0
  127. package/dist/NodeManager/node/job/result/startegy/ApiListenResultReturnStrategy.d.ts +8 -0
  128. package/dist/NodeManager/node/job/result/startegy/ApiListenResultReturnStrategy.js +22 -0
  129. package/dist/NodeManager/node/job/result/startegy/ApiResultReturnStrategy.d.ts +8 -0
  130. package/dist/NodeManager/node/job/result/startegy/ApiResultReturnStrategy.js +42 -0
  131. package/dist/NodeManager/node/key/keyHandler.d.ts +16 -0
  132. package/dist/NodeManager/node/key/keyHandler.js +74 -0
  133. package/dist/NodeManager/node/market/marketHandler.d.ts +30 -0
  134. package/dist/NodeManager/node/market/marketHandler.js +137 -0
  135. package/dist/NodeManager/node/register/index.d.ts +16 -0
  136. package/dist/NodeManager/node/register/index.js +88 -0
  137. package/dist/NodeManager/node/resource/definition/index.d.ts +2 -0
  138. package/dist/NodeManager/node/resource/definition/index.js +2 -0
  139. package/dist/NodeManager/node/resource/helpers/createHFArgs.d.ts +6 -0
  140. package/dist/NodeManager/node/resource/helpers/createHFArgs.js +26 -0
  141. package/dist/NodeManager/node/resource/helpers/createOllamaArgs.d.ts +2 -0
  142. package/dist/NodeManager/node/resource/helpers/createOllamaArgs.js +20 -0
  143. package/dist/NodeManager/node/resource/helpers/createResourceName.d.ts +2 -0
  144. package/dist/NodeManager/node/resource/helpers/createResourceName.js +18 -0
  145. package/dist/NodeManager/node/resource/helpers/createS3Args.d.ts +7 -0
  146. package/dist/NodeManager/node/resource/helpers/createS3Args.js +32 -0
  147. package/dist/NodeManager/node/resource/helpers/hasDockerVolume.d.ts +2 -0
  148. package/dist/NodeManager/node/resource/helpers/hasDockerVolume.js +3 -0
  149. package/dist/NodeManager/node/resource/helpers/hoursSunceDate.d.ts +1 -0
  150. package/dist/NodeManager/node/resource/helpers/hoursSunceDate.js +3 -0
  151. package/dist/NodeManager/node/resource/helpers/repoTagsContainsImage.d.ts +1 -0
  152. package/dist/NodeManager/node/resource/helpers/repoTagsContainsImage.js +13 -0
  153. package/dist/NodeManager/node/resource/image/imageManager.d.ts +13 -0
  154. package/dist/NodeManager/node/resource/image/imageManager.js +66 -0
  155. package/dist/NodeManager/node/resource/resourceManager.d.ts +21 -0
  156. package/dist/NodeManager/node/resource/resourceManager.js +57 -0
  157. package/dist/NodeManager/node/resource/volume/volumeManager.d.ts +20 -0
  158. package/dist/NodeManager/node/resource/volume/volumeManager.js +228 -0
  159. package/dist/NodeManager/node/run/runHandler.d.ts +18 -0
  160. package/dist/NodeManager/node/run/runHandler.js +139 -0
  161. package/dist/NodeManager/node/specs/specsHandler.d.ts +17 -0
  162. package/dist/NodeManager/node/specs/specsHandler.js +135 -0
  163. package/dist/NodeManager/node/specs/type.d.ts +15 -0
  164. package/dist/NodeManager/node/specs/type.js +1 -0
  165. package/dist/NodeManager/node/stake/StakeHandler.d.ts +22 -0
  166. package/dist/NodeManager/node/stake/StakeHandler.js +111 -0
  167. package/dist/NodeManager/node/task/TaskManager.d.ts +267 -0
  168. package/dist/NodeManager/node/task/TaskManager.js +480 -0
  169. package/dist/NodeManager/node/task/TaskManagerRegistry.d.ts +49 -0
  170. package/dist/NodeManager/node/task/TaskManagerRegistry.js +68 -0
  171. package/dist/NodeManager/node/task/executions/createDependencyMap.d.ts +18 -0
  172. package/dist/NodeManager/node/task/executions/createDependencyMap.js +32 -0
  173. package/dist/NodeManager/node/task/executions/createExecutionPlan.d.ts +14 -0
  174. package/dist/NodeManager/node/task/executions/createExecutionPlan.js +36 -0
  175. package/dist/NodeManager/node/task/executions/createOperationMap.d.ts +11 -0
  176. package/dist/NodeManager/node/task/executions/createOperationMap.js +34 -0
  177. package/dist/NodeManager/node/task/executions/validateExecutionPlan.d.ts +12 -0
  178. package/dist/NodeManager/node/task/executions/validateExecutionPlan.js +48 -0
  179. package/dist/NodeManager/node/task/globalStore/finalizeEnv.d.ts +2 -0
  180. package/dist/NodeManager/node/task/globalStore/finalizeEnv.js +30 -0
  181. package/dist/NodeManager/node/task/globalStore/getByPath.d.ts +2 -0
  182. package/dist/NodeManager/node/task/globalStore/getByPath.js +12 -0
  183. package/dist/NodeManager/node/task/globalStore/index.d.ts +9 -0
  184. package/dist/NodeManager/node/task/globalStore/index.js +9 -0
  185. package/dist/NodeManager/node/task/globalStore/interpolate.d.ts +2 -0
  186. package/dist/NodeManager/node/task/globalStore/interpolate.js +16 -0
  187. package/dist/NodeManager/node/task/globalStore/interpolateOperation.d.ts +3 -0
  188. package/dist/NodeManager/node/task/globalStore/interpolateOperation.js +221 -0
  189. package/dist/NodeManager/node/task/globalStore/resolveLiteralsInString.d.ts +2 -0
  190. package/dist/NodeManager/node/task/globalStore/resolveLiteralsInString.js +7 -0
  191. package/dist/NodeManager/node/task/globalStore/setDefaults.d.ts +4 -0
  192. package/dist/NodeManager/node/task/globalStore/setDefaults.js +65 -0
  193. package/dist/NodeManager/node/task/globalStore/setHost.d.ts +2 -0
  194. package/dist/NodeManager/node/task/globalStore/setHost.js +9 -0
  195. package/dist/NodeManager/node/task/globalStore/setResult.d.ts +2 -0
  196. package/dist/NodeManager/node/task/globalStore/setResult.js +10 -0
  197. package/dist/NodeManager/node/task/globalStore/setResults.d.ts +2 -0
  198. package/dist/NodeManager/node/task/globalStore/setResults.js +9 -0
  199. package/dist/NodeManager/node/task/globalStore/stanatizeArrays.d.ts +2 -0
  200. package/dist/NodeManager/node/task/globalStore/stanatizeArrays.js +14 -0
  201. package/dist/NodeManager/node/task/globalStore/transformCollections.d.ts +13 -0
  202. package/dist/NodeManager/node/task/globalStore/transformCollections.js +152 -0
  203. package/dist/NodeManager/node/task/helpers/createDefaultOpState.d.ts +2 -0
  204. package/dist/NodeManager/node/task/helpers/createDefaultOpState.js +20 -0
  205. package/dist/NodeManager/node/task/helpers/createInitialFlow.d.ts +8 -0
  206. package/dist/NodeManager/node/task/helpers/createInitialFlow.js +24 -0
  207. package/dist/NodeManager/node/task/loggers/logManager.d.ts +8 -0
  208. package/dist/NodeManager/node/task/loggers/logManager.js +54 -0
  209. package/dist/NodeManager/node/task/operations/getOperationsInfos.d.ts +6 -0
  210. package/dist/NodeManager/node/task/operations/getOperationsInfos.js +33 -0
  211. package/dist/NodeManager/node/task/operations/moveTaskManagerGroupOperation.d.ts +2 -0
  212. package/dist/NodeManager/node/task/operations/moveTaskManagerGroupOperation.js +65 -0
  213. package/dist/NodeManager/node/task/operations/restartTaskManagerGroupOperation.d.ts +10 -0
  214. package/dist/NodeManager/node/task/operations/restartTaskManagerGroupOperation.js +37 -0
  215. package/dist/NodeManager/node/task/operations/restartTaskManagerOperation.d.ts +14 -0
  216. package/dist/NodeManager/node/task/operations/restartTaskManagerOperation.js +117 -0
  217. package/dist/NodeManager/node/task/operations/runTaskManagerOperation.d.ts +21 -0
  218. package/dist/NodeManager/node/task/operations/runTaskManagerOperation.js +488 -0
  219. package/dist/NodeManager/node/task/operations/stopAllTaskManagerOperations.d.ts +21 -0
  220. package/dist/NodeManager/node/task/operations/stopAllTaskManagerOperations.js +54 -0
  221. package/dist/NodeManager/node/task/operations/stopTaskManagerGroupOperation.d.ts +10 -0
  222. package/dist/NodeManager/node/task/operations/stopTaskManagerGroupOperation.js +43 -0
  223. package/dist/NodeManager/node/task/operations/stopTaskManagerOperation.d.ts +14 -0
  224. package/dist/NodeManager/node/task/operations/stopTaskManagerOperation.js +137 -0
  225. package/dist/NodeManager/node/utils/convertFromBytes.d.ts +4 -0
  226. package/dist/NodeManager/node/utils/convertFromBytes.js +11 -0
  227. package/dist/NodeManager/node/utils/extractLogsAndResultsFromLogBuffer.d.ts +7 -0
  228. package/dist/NodeManager/node/utils/extractLogsAndResultsFromLogBuffer.js +34 -0
  229. package/dist/NodeManager/node/utils/extractResultsFromLogs.d.ts +18 -0
  230. package/dist/NodeManager/node/utils/extractResultsFromLogs.js +37 -0
  231. package/dist/NodeManager/node/utils/generateRandomId.d.ts +1 -0
  232. package/dist/NodeManager/node/utils/generateRandomId.js +3 -0
  233. package/dist/NodeManager/node/utils/multiProgressBarReporter.d.ts +16 -0
  234. package/dist/NodeManager/node/utils/multiProgressBarReporter.js +22 -0
  235. package/dist/NodeManager/node/utils/poll.d.ts +5 -0
  236. package/dist/NodeManager/node/utils/poll.js +25 -0
  237. package/dist/NodeManager/node/utils/progressBarReporter.d.ts +9 -0
  238. package/dist/NodeManager/node/utils/progressBarReporter.js +28 -0
  239. package/dist/NodeManager/provider/ContainerStateManager.d.ts +24 -0
  240. package/dist/NodeManager/provider/ContainerStateManager.js +122 -0
  241. package/dist/NodeManager/provider/ExposedPortHealthCheck.d.ts +29 -0
  242. package/dist/NodeManager/provider/ExposedPortHealthCheck.js +183 -0
  243. package/dist/NodeManager/provider/Provider.d.ts +70 -0
  244. package/dist/NodeManager/provider/Provider.js +457 -0
  245. package/dist/NodeManager/provider/__tests__/Provider.spec.d.ts +1 -0
  246. package/dist/NodeManager/provider/__tests__/Provider.spec.js +337 -0
  247. package/dist/NodeManager/provider/containerOrchestration/docker/dockerExtended/index.d.ts +6 -0
  248. package/dist/NodeManager/provider/containerOrchestration/docker/dockerExtended/index.js +45 -0
  249. package/dist/NodeManager/provider/containerOrchestration/docker/index.d.ts +43 -0
  250. package/dist/NodeManager/provider/containerOrchestration/docker/index.js +366 -0
  251. package/dist/NodeManager/provider/containerOrchestration/docker/utils/createServerObject.d.ts +5 -0
  252. package/dist/NodeManager/provider/containerOrchestration/docker/utils/createServerObject.js +15 -0
  253. package/dist/NodeManager/provider/containerOrchestration/docker/utils/deadline.d.ts +1 -0
  254. package/dist/NodeManager/provider/containerOrchestration/docker/utils/deadline.js +15 -0
  255. package/dist/NodeManager/provider/containerOrchestration/docker/utils/repoTagsContainsImage.d.ts +1 -0
  256. package/dist/NodeManager/provider/containerOrchestration/docker/utils/repoTagsContainsImage.js +13 -0
  257. package/dist/NodeManager/provider/containerOrchestration/interface.d.ts +53 -0
  258. package/dist/NodeManager/provider/containerOrchestration/interface.js +1 -0
  259. package/dist/NodeManager/provider/containerOrchestration/podman/index.d.ts +11 -0
  260. package/dist/NodeManager/provider/containerOrchestration/podman/index.js +69 -0
  261. package/dist/NodeManager/provider/containerOrchestration/podman/utils/createPodmanRunOptions.d.ts +103 -0
  262. package/dist/NodeManager/provider/containerOrchestration/podman/utils/createPodmanRunOptions.js +66 -0
  263. package/dist/NodeManager/provider/containerOrchestration/selectContainerOrchestration.d.ts +2 -0
  264. package/dist/NodeManager/provider/containerOrchestration/selectContainerOrchestration.js +11 -0
  265. package/dist/NodeManager/provider/types.d.ts +18 -0
  266. package/dist/NodeManager/provider/types.js +1 -0
  267. package/dist/NodeManager/provider/utils/parseBuffer.d.ts +4 -0
  268. package/dist/NodeManager/provider/utils/parseBuffer.js +19 -0
  269. package/dist/NodeManager/repository/NodeRepository.d.ts +53 -0
  270. package/dist/NodeManager/repository/NodeRepository.js +153 -0
  271. package/dist/NodeManager/sdk/index.d.ts +9 -0
  272. package/dist/NodeManager/sdk/index.js +146 -0
  273. package/dist/NodeManager/types/index.d.ts +27 -0
  274. package/dist/NodeManager/types/index.js +1 -0
  275. package/dist/NodeManager/utils/convertFromBytes.d.ts +4 -0
  276. package/dist/NodeManager/utils/convertFromBytes.js +11 -0
  277. package/dist/NodeManager/utils/expose-util.d.ts +14 -0
  278. package/dist/NodeManager/utils/expose-util.js +88 -0
  279. package/dist/NodeManager/utils/jobDefinitionParser.d.ts +12 -0
  280. package/dist/NodeManager/utils/jobDefinitionParser.js +31 -0
  281. package/dist/NodeManager/utils/ops-util.d.ts +3 -0
  282. package/dist/NodeManager/utils/ops-util.js +19 -0
  283. package/dist/NodeManager/utils/timeoutPromiseWrapper.d.ts +1 -0
  284. package/dist/NodeManager/utils/timeoutPromiseWrapper.js +27 -0
  285. package/dist/NodeManager/utils/utils.d.ts +39 -0
  286. package/dist/NodeManager/utils/utils.js +107 -0
  287. package/dist/NodeManager/utils/wslCheck.d.ts +14 -0
  288. package/dist/NodeManager/utils/wslCheck.js +54 -0
  289. package/dist/cli/address/__tests__/command.spec.d.ts +1 -0
  290. package/dist/cli/address/__tests__/command.spec.js +33 -0
  291. package/dist/cli/address/action.d.ts +4 -0
  292. package/dist/cli/address/action.js +4 -0
  293. package/dist/cli/address/command.d.ts +2 -0
  294. package/dist/cli/address/command.js +9 -0
  295. package/dist/cli/createNosanaCli.d.ts +2 -0
  296. package/dist/cli/createNosanaCli.js +32 -0
  297. package/dist/cli/index.d.ts +1 -0
  298. package/dist/cli/index.js +16 -0
  299. package/dist/cli/node/__tests__/index.spec.d.ts +1 -0
  300. package/dist/cli/node/__tests__/index.spec.js +10 -0
  301. package/dist/cli/node/index.d.ts +5 -0
  302. package/dist/cli/node/index.js +12 -0
  303. package/dist/cli/node/prune/action.d.ts +4 -0
  304. package/dist/cli/node/prune/action.js +18 -0
  305. package/dist/cli/node/prune/command.d.ts +2 -0
  306. package/dist/cli/node/prune/command.js +10 -0
  307. package/dist/cli/node/run/__tests__/command.spec.d.ts +1 -0
  308. package/dist/cli/node/run/__tests__/command.spec.js +38 -0
  309. package/dist/cli/node/run/action.d.ts +3 -0
  310. package/dist/cli/node/run/action.js +82 -0
  311. package/dist/cli/node/run/command.d.ts +3 -0
  312. package/dist/cli/node/run/command.js +17 -0
  313. package/dist/cli/node/run/generateDeploymentEndpointsTable.d.ts +2 -0
  314. package/dist/cli/node/run/generateDeploymentEndpointsTable.js +45 -0
  315. package/dist/cli/node/start/__tests__/command.spec.d.ts +1 -0
  316. package/dist/cli/node/start/__tests__/command.spec.js +39 -0
  317. package/dist/cli/node/start/action.d.ts +4 -0
  318. package/dist/cli/node/start/action.js +48 -0
  319. package/dist/cli/node/start/command.d.ts +3 -0
  320. package/dist/cli/node/start/command.js +19 -0
  321. package/dist/cli/sharedOptions/--api.d.ts +2 -0
  322. package/dist/cli/sharedOptions/--api.js +2 -0
  323. package/dist/cli/sharedOptions/--format.d.ts +2 -0
  324. package/dist/cli/sharedOptions/--format.js +4 -0
  325. package/dist/cli/sharedOptions/--gpu.d.ts +2 -0
  326. package/dist/cli/sharedOptions/--gpu.js +12 -0
  327. package/dist/cli/sharedOptions/--network.d.ts +2 -0
  328. package/dist/cli/sharedOptions/--network.js +4 -0
  329. package/dist/cli/sharedOptions/--port.d.ts +2 -0
  330. package/dist/cli/sharedOptions/--port.js +2 -0
  331. package/dist/cli/sharedOptions/--rpc.d.ts +2 -0
  332. package/dist/cli/sharedOptions/--rpc.js +2 -0
  333. package/dist/cli/sharedOptions/--timeout.d.ts +2 -0
  334. package/dist/cli/sharedOptions/--timeout.js +12 -0
  335. package/dist/cli/sharedOptions/--verbose.d.ts +2 -0
  336. package/dist/cli/sharedOptions/--verbose.js +2 -0
  337. package/dist/cli/sharedOptions/--wallet.d.ts +2 -0
  338. package/dist/cli/sharedOptions/--wallet.js +2 -0
  339. package/dist/cli/sharedOptions/index.d.ts +7 -0
  340. package/dist/cli/sharedOptions/index.js +8 -0
  341. package/dist/index.d.ts +3 -0
  342. package/dist/index.js +7 -0
  343. package/dist/output-formatter/OutputFormatter.d.ts +61 -0
  344. package/dist/output-formatter/OutputFormatter.js +58 -0
  345. package/dist/output-formatter/OutputFormatterFactory.d.ts +4 -0
  346. package/dist/output-formatter/OutputFormatterFactory.js +18 -0
  347. package/dist/output-formatter/__mocks__/outputEvents.mock.d.ts +42 -0
  348. package/dist/output-formatter/__mocks__/outputEvents.mock.js +45 -0
  349. package/dist/output-formatter/__mocks__/outputFormatter.mock.d.ts +0 -0
  350. package/dist/output-formatter/__mocks__/outputFormatter.mock.js +21 -0
  351. package/dist/output-formatter/__tests__/OutputFormatter.spec.d.ts +1 -0
  352. package/dist/output-formatter/__tests__/OutputFormatter.spec.js +34 -0
  353. package/dist/output-formatter/__tests__/OutputFormatterFactory.spec.d.ts +1 -0
  354. package/dist/output-formatter/__tests__/OutputFormatterFactory.spec.js +26 -0
  355. package/dist/output-formatter/__tests__/outputFormatSelector.spec.d.ts +1 -0
  356. package/dist/output-formatter/__tests__/outputFormatSelector.spec.js +21 -0
  357. package/dist/output-formatter/json/JsonOutputEventHandlers.d.ts +8 -0
  358. package/dist/output-formatter/json/JsonOutputEventHandlers.js +191 -0
  359. package/dist/output-formatter/json/JsonOutputFormatter.d.ts +47 -0
  360. package/dist/output-formatter/json/JsonOutputFormatter.js +12 -0
  361. package/dist/output-formatter/json/__tests__/JsonOutputFormatter.spec.d.ts +1 -0
  362. package/dist/output-formatter/json/__tests__/JsonOutputFormatter.spec.js +36 -0
  363. package/dist/output-formatter/outputEvents.d.ts +213 -0
  364. package/dist/output-formatter/outputEvents.js +63 -0
  365. package/dist/output-formatter/outputFormatArgumentParser.d.ts +1 -0
  366. package/dist/output-formatter/outputFormatArgumentParser.js +10 -0
  367. package/dist/output-formatter/outputFormatSelector.d.ts +15 -0
  368. package/dist/output-formatter/outputFormatSelector.js +23 -0
  369. package/dist/output-formatter/text/TextOutputEventHandlers.d.ts +7 -0
  370. package/dist/output-formatter/text/TextOutputEventHandlers.js +128 -0
  371. package/dist/output-formatter/text/TextOutputFormatter.d.ts +6 -0
  372. package/dist/output-formatter/text/TextOutputFormatter.js +7 -0
  373. package/dist/output-formatter/text/VerboseTextOutputEventHandlers.d.ts +7 -0
  374. package/dist/output-formatter/text/VerboseTextOutputEventHandlers.js +138 -0
  375. package/dist/output-formatter/text/VerboseTextOutputFormatter.d.ts +6 -0
  376. package/dist/output-formatter/text/VerboseTextOutputFormatter.js +7 -0
  377. package/dist/output-formatter/text/__tests__/TextOutputFormatter.spec.d.ts +1 -0
  378. package/dist/output-formatter/text/__tests__/TextOutputFormatter.spec.js +25 -0
  379. package/dist/static/index.d.ts +7 -0
  380. package/dist/static/index.js +12 -0
  381. package/dist/version/index.d.ts +1 -0
  382. package/dist/version/index.js +47 -0
  383. package/npm-shrinkwrap.json +9928 -0
  384. package/package.json +102 -0
@@ -0,0 +1,1357 @@
1
+ import chalk from 'chalk';
2
+ import { logEmitter } from '../proxy/loggingProxy.js';
3
+ import { SECONDS_PER_DAY } from '../../utils/utils.js';
4
+ import { LogMonitoringRegistry } from '../LogMonitoringRegistry.js';
5
+ import { TaskManagerRegistry } from '../../node/task/TaskManagerRegistry.js';
6
+ export const log = (() => {
7
+ let instance = null;
8
+ return () => {
9
+ if (!instance) {
10
+ instance = new NodeLog();
11
+ }
12
+ return instance;
13
+ };
14
+ })();
15
+ class NodeLog {
16
+ constructor() {
17
+ this.observers = [];
18
+ this.shared = {};
19
+ logEmitter.on('log', (data) => this.process(data));
20
+ }
21
+ addObserver(observer) {
22
+ this.observers.push(observer);
23
+ }
24
+ removeObserver(observer) {
25
+ this.observers = this.observers.filter((obs) => obs !== observer);
26
+ }
27
+ notifyObservers(log) {
28
+ for (const observer of this.observers) {
29
+ observer.update(log, observer.isNodeObserver());
30
+ }
31
+ }
32
+ addLog(log) {
33
+ this.notifyObservers(log);
34
+ }
35
+ addFlog(type, timestamp, message) {
36
+ if (!this.job)
37
+ return;
38
+ const task = TaskManagerRegistry.getInstance().get(this.job);
39
+ if (task) {
40
+ task.addlog({
41
+ opId: 'system',
42
+ group: 'system',
43
+ type,
44
+ timestamp,
45
+ message,
46
+ });
47
+ }
48
+ }
49
+ process(data) {
50
+ if (data.class === 'TaskManager') {
51
+ if (data.method === 'start') {
52
+ if (data.type === 'call') {
53
+ this.addLog({
54
+ method: `${data.class}.${data.method}`,
55
+ job: this.job,
56
+ log: '',
57
+ timestamp: Date.now(),
58
+ type: 'process',
59
+ });
60
+ }
61
+ if (data.type === 'return') {
62
+ this.addLog({
63
+ method: `${data.class}.${data.method}`,
64
+ job: this.job,
65
+ log: '',
66
+ timestamp: Date.now(),
67
+ type: 'success',
68
+ });
69
+ }
70
+ }
71
+ }
72
+ if (data.class === 'PodmanContainerOrchestration' ||
73
+ data.class === 'DockerContainerOrchestration') {
74
+ const provider = data.class === 'PodmanContainerOrchestration' ? 'podman' : 'docker';
75
+ if (data.method === 'getConnection' && data.type === 'call') {
76
+ this.addLog({
77
+ method: `${data.class}.${data.method}`,
78
+ job: this.job,
79
+ log: `Provider:\t${chalk.greenBright.bold(provider)}`, // Changed 'g' to 'G', 'b' to 'B'
80
+ timestamp: Date.now(),
81
+ type: 'info',
82
+ pending: { isPending: false, expecting: '' },
83
+ });
84
+ }
85
+ if (data.method === 'healthy') {
86
+ this.handleHealthy(data, provider);
87
+ }
88
+ if (data.method === 'pullImage') {
89
+ this.handlePullImage(data);
90
+ }
91
+ if (data.method === 'createNetwork') {
92
+ this.handleCreateNetwork(data);
93
+ }
94
+ if (data.method === 'runContainer') {
95
+ this.handleRunContainer(data);
96
+ }
97
+ if (data.method === 'runFlowContainer') {
98
+ this.handleRunFlowContainer(data);
99
+ }
100
+ if (data.method === 'check') {
101
+ this.handleContainerCheckHandler(data, provider);
102
+ }
103
+ }
104
+ if (data.class === 'ApiHandler') {
105
+ this.handleApiHandler(data);
106
+ }
107
+ if (data.class === 'MarketHandler') {
108
+ this.handleMarketHandler(data);
109
+ }
110
+ if (data.class === 'BasicNode' && data.method === 'pending') {
111
+ this.handlePending(data);
112
+ }
113
+ if (data.class === 'BasicNode' && data.method === 'stop') {
114
+ this.handleStop(data);
115
+ }
116
+ if (data.class === 'BasicNode' && data.method === 'clean') {
117
+ this.handleClean(data);
118
+ }
119
+ if (data.class === 'BasicNode' && data.method === 'exit') {
120
+ this.handleExit(data);
121
+ }
122
+ if (data.class === 'BasicNode' &&
123
+ (data.method === 'restartDelay' || data.method === 'delay')) {
124
+ this.handleRestart(data);
125
+ }
126
+ if (data.class === 'BasicNode' && data.method === 'specs') {
127
+ this.handleSpecs(data);
128
+ }
129
+ if (data.class === 'BasicNode' && data.method === 'recommend') {
130
+ this.handleRecommend(data);
131
+ }
132
+ if (data.class === 'BasicNode' && data.method === 'register') {
133
+ this.handleRegister(data);
134
+ }
135
+ // if (data.class === 'BasicNode' && data.method === 'queue') {
136
+ // this.handleQueue(data);
137
+ // }
138
+ if (data.class === 'JobHandler') {
139
+ this.handleJobHandler(data);
140
+ }
141
+ if (data.class === 'FlowHandler') {
142
+ this.handleFlowHandler(data);
143
+ }
144
+ if (data.class === 'JobExternalUtil') {
145
+ this.handleJobExternalUtil(data);
146
+ }
147
+ if (data.class === 'NodeRepository') {
148
+ this.handleNodeRepository(data);
149
+ }
150
+ if (data.class === 'Provider') {
151
+ this.handleProvider(data);
152
+ }
153
+ if (data.class === 'HealthHandler') {
154
+ this.handleHealthHandler(data);
155
+ }
156
+ if (data.class === 'StakeHandler') {
157
+ this.handleStakeHandler(data);
158
+ }
159
+ if (data.class === 'MultiProgressBarReporter') {
160
+ if (data.method === 'start' && data.type == 'call') {
161
+ // log that the info of the start
162
+ this.addLog({
163
+ method: `${data.class}.${data.method}`,
164
+ job: this.job,
165
+ log: chalk.cyan(data.arguments[0]),
166
+ timestamp: Date.now(),
167
+ type: 'stop',
168
+ });
169
+ this.addLog({
170
+ method: `${data.class}.${data.method}`,
171
+ job: this.job,
172
+ timestamp: Date.now(),
173
+ type: 'multi-process-bar-start',
174
+ log: '', // Remains empty, no first letter to capitalize
175
+ payload: {
176
+ optProgressBar: data.arguments[1],
177
+ },
178
+ });
179
+ this.addFlog('info', Date.now(), {
180
+ type: 'multi-process-bar-start',
181
+ payload: { optProgressBar: data.arguments[1] },
182
+ });
183
+ }
184
+ if (data.method === 'update' && data.type == 'call') {
185
+ this.addLog({
186
+ method: `${data.class}.${data.method}`,
187
+ job: this.job,
188
+ timestamp: Date.now(),
189
+ type: 'multi-process-bar-update',
190
+ log: '', // Remains empty
191
+ payload: {
192
+ event: data.arguments[0],
193
+ },
194
+ });
195
+ this.addFlog('info', Date.now(), {
196
+ type: 'multi-process-bar-update',
197
+ payload: { event: data.arguments[0] },
198
+ });
199
+ }
200
+ if (data.method === 'stop' && data.type == 'call') {
201
+ this.addLog({
202
+ method: `${data.class}.${data.method}`,
203
+ job: this.job,
204
+ timestamp: Date.now(),
205
+ type: 'multi-process-bar-stop',
206
+ log: '', // Remains empty
207
+ });
208
+ this.addFlog('info', Date.now(), { type: 'multi-process-bar-stop' });
209
+ }
210
+ }
211
+ if (data.class === 'ProgressBarReporter') {
212
+ if (data.method === 'start' && data.type == 'call') {
213
+ // log that the info of the start
214
+ this.addLog({
215
+ method: `${data.class}.${data.method}`,
216
+ job: this.job,
217
+ log: chalk.cyan(data.arguments[0]),
218
+ timestamp: Date.now(),
219
+ type: 'info',
220
+ });
221
+ this.addLog({
222
+ method: `${data.class}.${data.method}`,
223
+ job: this.job,
224
+ timestamp: Date.now(),
225
+ type: 'process-bar-start',
226
+ log: '', // Remains empty
227
+ payload: {
228
+ optProgressBar: data.arguments[1],
229
+ total: data.arguments[2],
230
+ startValue: data.arguments[3],
231
+ payload: data.arguments[4],
232
+ progressBarPreset: data.arguments[5],
233
+ },
234
+ });
235
+ this.addFlog('info', Date.now(), {
236
+ type: 'process-bar-start',
237
+ payload: {
238
+ optProgressBar: data.arguments[1],
239
+ total: data.arguments[2],
240
+ startValue: data.arguments[3],
241
+ payload: data.arguments[4],
242
+ progressBarPreset: data.arguments[5],
243
+ },
244
+ });
245
+ }
246
+ if (data.method === 'update' && data.type == 'call') {
247
+ this.addLog({
248
+ method: `${data.class}.${data.method}`,
249
+ job: this.job,
250
+ timestamp: Date.now(),
251
+ type: 'process-bar-update',
252
+ log: '', // Remains empty
253
+ payload: {
254
+ current: data.arguments[0],
255
+ payload: data.arguments[1],
256
+ },
257
+ });
258
+ this.addFlog('info', Date.now(), {
259
+ type: 'process-bar-update',
260
+ payload: { current: data.arguments[0], payload: data.arguments[1] },
261
+ });
262
+ }
263
+ if (data.method === 'stop' && data.type == 'call') {
264
+ this.addLog({
265
+ method: `${data.class}.${data.method}`,
266
+ job: this.job,
267
+ timestamp: Date.now(),
268
+ type: 'process-bar-stop',
269
+ log: '', // Remains empty
270
+ });
271
+ // log that the info of the start
272
+ this.addLog({
273
+ method: `${data.class}.${data.method}`,
274
+ job: this.job,
275
+ log: chalk.cyan(data.arguments[0]),
276
+ timestamp: Date.now(),
277
+ type: 'info',
278
+ });
279
+ this.addFlog('info', Date.now(), { type: 'process-bar-stop' });
280
+ this.addFlog('info', Date.now(), data.arguments[0]);
281
+ }
282
+ }
283
+ if (data.class === 'ExpiryHandler') {
284
+ this.handleExpiryHandler(data);
285
+ }
286
+ if (data.class === 'ResourceManager') {
287
+ this.handleResourceManager(data);
288
+ }
289
+ }
290
+ handleRecommend(data) {
291
+ if (data.type === 'call') {
292
+ this.addLog({
293
+ method: `${data.class}.${data.method}`,
294
+ job: this.job,
295
+ log: chalk.cyan('Grid is recommending market for node'),
296
+ timestamp: Date.now(),
297
+ type: 'info',
298
+ });
299
+ }
300
+ if (data.type === 'return') {
301
+ this.addLog({
302
+ method: `${data.class}.${data.method}`,
303
+ job: this.job,
304
+ log: chalk.green(`Grid recommended ${chalk.bold(data.result)} market to node successfully`),
305
+ timestamp: Date.now(),
306
+ type: 'success',
307
+ });
308
+ }
309
+ if (data.type === 'error') {
310
+ this.addLog({
311
+ method: `${data.class}.${data.method}`,
312
+ job: this.job,
313
+ log: chalk.red('Error recommended market to node'),
314
+ timestamp: Date.now(),
315
+ type: 'error',
316
+ });
317
+ }
318
+ }
319
+ handleResourceManager(data) {
320
+ if (data.method === 'fetchMarketRequiredResources') {
321
+ if (data.type === 'call') {
322
+ this.addLog({
323
+ method: `${data.class}.${data.method}`,
324
+ job: this.job,
325
+ log: chalk.cyan('Fetching market required resources'),
326
+ timestamp: Date.now(),
327
+ type: 'info',
328
+ });
329
+ }
330
+ if (data.type === 'return') {
331
+ this.addLog({
332
+ method: `${data.class}.${data.method}`,
333
+ job: this.job,
334
+ log: chalk.green('Fetching market required resources successful'),
335
+ timestamp: Date.now(),
336
+ type: 'success',
337
+ });
338
+ }
339
+ if (data.type === 'error') {
340
+ this.addLog({
341
+ method: `${data.class}.${data.method}`,
342
+ job: this.job,
343
+ log: chalk.red('Fetching market required resources failed'),
344
+ timestamp: Date.now(),
345
+ type: 'error',
346
+ });
347
+ }
348
+ }
349
+ if (data.method === 'getResourceVolumes') {
350
+ if (data.type === 'call') {
351
+ let urls = data.arguments[0]
352
+ .map((item) => item.url)
353
+ .filter((url) => url)
354
+ .join(', ');
355
+ this.addLog({
356
+ method: `${data.class}.${data.method}`,
357
+ job: this.job,
358
+ log: chalk.cyan(`Downloading resource ${urls}`),
359
+ timestamp: Date.now(),
360
+ type: 'info',
361
+ });
362
+ }
363
+ if (data.type === 'return') {
364
+ let urls = data.arguments[0]
365
+ .map((item) => item.url)
366
+ .filter((url) => url)
367
+ .join(', ');
368
+ this.addLog({
369
+ method: `${data.class}.${data.method}`,
370
+ job: this.job,
371
+ log: chalk.green(`Downloaded resource ${urls}`),
372
+ timestamp: Date.now(),
373
+ type: 'success',
374
+ });
375
+ }
376
+ if (data.type === 'error') {
377
+ this.addLog({
378
+ method: `${data.class}.${data.method}`,
379
+ job: this.job,
380
+ log: chalk.red(`${data.error}`),
381
+ timestamp: Date.now(),
382
+ type: 'error',
383
+ });
384
+ }
385
+ }
386
+ }
387
+ // private handleQueue(data: LogEntry) {
388
+ // if (data.type === 'call') {
389
+ // this.addLog({
390
+ // method: `${data.class}.${data.method}`,
391
+ // job: this.job,
392
+ // log: chalk.cyan(`Joining market ${data.arguments[0]}`),
393
+ // timestamp: Date.now(),
394
+ // // type: 'info',
395
+ // type: 'process',
396
+ // pending: {
397
+ // isPending: true,
398
+ // expecting: `${data.class}.${data.method}`,
399
+ // },
400
+ // });
401
+ // }
402
+ // }
403
+ handleSpecs(data) {
404
+ if (data.type === 'call') {
405
+ this.addLog({
406
+ method: `${data.class}.${data.method}`,
407
+ job: this.job,
408
+ log: chalk.cyan('Node is checking specs'),
409
+ timestamp: Date.now(),
410
+ // type: 'info',
411
+ type: 'process',
412
+ pending: {
413
+ isPending: true,
414
+ expecting: `${data.class}.${data.method}`,
415
+ },
416
+ });
417
+ }
418
+ if (data.type === 'return') {
419
+ this.addLog({
420
+ method: `${data.class}.${data.method}`,
421
+ job: this.job,
422
+ log: chalk.green('Node specs check completed successfully'),
423
+ timestamp: Date.now(),
424
+ type: 'success',
425
+ });
426
+ }
427
+ if (data.type === 'error') {
428
+ this.addLog({
429
+ method: `${data.class}.${data.method}`,
430
+ job: this.job,
431
+ log: chalk.red('Node specs check failed'),
432
+ timestamp: Date.now(),
433
+ type: 'error',
434
+ });
435
+ }
436
+ }
437
+ handleRegister(data) {
438
+ if (data.type === 'call') {
439
+ this.addLog({
440
+ method: `${data.class}.${data.method}`,
441
+ job: this.job,
442
+ log: chalk.cyan('Node is unregistered, Registering Node..'),
443
+ timestamp: Date.now(),
444
+ type: 'info',
445
+ });
446
+ }
447
+ if (data.type === 'return') {
448
+ this.addLog({
449
+ method: `${data.class}.${data.method}`,
450
+ job: this.job,
451
+ log: chalk.green('Node registered successfully'),
452
+ timestamp: Date.now(),
453
+ type: 'success',
454
+ });
455
+ }
456
+ if (data.type === 'error') {
457
+ this.addLog({
458
+ method: `${data.class}.${data.method}`,
459
+ job: this.job,
460
+ log: chalk.red('Node registeration failed'),
461
+ timestamp: Date.now(),
462
+ type: 'error',
463
+ });
464
+ }
465
+ }
466
+ handleExpiryHandler(data) {
467
+ if (data.method === 'init') {
468
+ if (data.type === 'return') {
469
+ this.shared.expiry = data.result;
470
+ }
471
+ }
472
+ if (data.method === 'waitUntilExpired') {
473
+ if (data.type === 'call') {
474
+ if (this.shared.exposed) {
475
+ const date = new Date(parseInt(this.shared.expiry));
476
+ const dateString = date.toLocaleString('en-GB', {
477
+ year: 'numeric',
478
+ month: '2-digit',
479
+ day: '2-digit',
480
+ hour: '2-digit',
481
+ minute: '2-digit',
482
+ second: '2-digit',
483
+ hour12: false,
484
+ });
485
+ this.addLog({
486
+ method: `${data.class}.${data.method}`,
487
+ job: this.job,
488
+ log: chalk.cyanBright(`Waiting for job ${chalk.bold(this.job)} to finish (${chalk.bold(dateString)})`),
489
+ timestamp: Date.now(),
490
+ type: 'info',
491
+ });
492
+ }
493
+ else {
494
+ this.addLog({
495
+ method: `${data.class}.${data.method}`,
496
+ job: this.job,
497
+ log: chalk.cyanBright(`Waiting for job ${chalk.bold(this.job)} to finish`),
498
+ timestamp: Date.now(),
499
+ type: 'info',
500
+ });
501
+ }
502
+ }
503
+ // if (data.type === 'return' || data.type === 'error') {
504
+ // this.addLog({
505
+ // method: `${data.class}.${data.method}`,
506
+ // job: this.job,
507
+ // log: chalk.green(`Job run time finished`),
508
+ // timestamp: Date.now(),
509
+ // type: data.type == 'return' ? 'success' : 'error',
510
+ // });
511
+ // }
512
+ }
513
+ }
514
+ handleContainerCheckHandler(data, provider) {
515
+ if (data.type == 'return') {
516
+ this.addLog({
517
+ method: `${data.class}.${data.method}`,
518
+ job: this.job,
519
+ log: chalk.green(`${chalk.bold(provider)} is running at ${chalk.bold(data.result)}`),
520
+ timestamp: Date.now(),
521
+ type: 'info',
522
+ });
523
+ }
524
+ }
525
+ handleStakeHandler(data) {
526
+ if (data.method === 'getStakeAccount') {
527
+ if (data.type == 'return') {
528
+ this.addLog({
529
+ method: `${data.class}.${data.method}`,
530
+ job: this.job,
531
+ log: chalk.green(`Stake found with ${chalk.bold(data.result.amount / 1e6)} NOS staked with unstake duration of ${chalk.bold(data.result.duration / SECONDS_PER_DAY)} days`),
532
+ timestamp: Date.now(),
533
+ type: 'info',
534
+ });
535
+ }
536
+ }
537
+ }
538
+ handleHealthHandler(data) {
539
+ if (data.method === 'run') {
540
+ if (data.type === 'call') {
541
+ this.addLog({
542
+ method: `${data.class}.${data.method}`,
543
+ job: this.job,
544
+ log: chalk.cyan('Running health check'),
545
+ timestamp: Date.now(),
546
+ type: 'process',
547
+ pending: {
548
+ isPending: true,
549
+ expecting: `${data.class}.${data.method}`,
550
+ },
551
+ });
552
+ }
553
+ if (data.type === 'return') {
554
+ this.addLog({
555
+ method: `${data.class}.${data.method}`,
556
+ job: this.job,
557
+ log: chalk.green('Health check completed'),
558
+ timestamp: Date.now(),
559
+ type: 'success',
560
+ });
561
+ }
562
+ if (data.type === 'error') {
563
+ this.addLog({
564
+ method: `${data.class}.${data.method}`,
565
+ job: this.job,
566
+ log: chalk.red(`Health check failed: ${data.error}`),
567
+ timestamp: Date.now(),
568
+ type: 'error',
569
+ });
570
+ }
571
+ }
572
+ }
573
+ handleProvider(data) {
574
+ if (data.method === 'runOperation') {
575
+ if (data.type === 'call') {
576
+ this.addLog({
577
+ method: `${data.class}.${data.method}`,
578
+ job: this.job,
579
+ log: chalk.cyan(`Running action ${chalk.bold(data.arguments[0])}, for flow ${chalk.bold(data.arguments[1].id)} operation ${chalk.bold(data.arguments[1].name)}`),
580
+ timestamp: Date.now(),
581
+ type: 'info',
582
+ });
583
+ }
584
+ if (data.type === 'return') {
585
+ if (data.result) {
586
+ this.addLog({
587
+ method: `${data.class}.${data.method}`,
588
+ job: this.job,
589
+ log: chalk.green(`Action ${chalk.bold(data.arguments[0])}, for flow ${chalk.bold(data.arguments[1].id)} operation ${chalk.bold(data.arguments[1].name)} was completed`),
590
+ timestamp: Date.now(),
591
+ type: 'info',
592
+ });
593
+ }
594
+ else {
595
+ this.addLog({
596
+ method: `${data.class}.${data.method}`,
597
+ job: this.job,
598
+ log: chalk.red(`Action ${chalk.bold(data.arguments[0])}, for flow ${chalk.bold(data.arguments[1].id)} operation ${chalk.bold(data.arguments[1].name)} failed`),
599
+ timestamp: Date.now(),
600
+ type: 'info',
601
+ });
602
+ }
603
+ }
604
+ }
605
+ }
606
+ handleNodeRepository(data) {
607
+ if (data.method === 'displayLog') {
608
+ if (data.type === 'call') {
609
+ this.addLog({
610
+ method: `${data.class}.${data.method}`,
611
+ job: this.job,
612
+ log: data.arguments[0],
613
+ timestamp: Date.now(),
614
+ type: 'log',
615
+ });
616
+ }
617
+ }
618
+ }
619
+ handleJobExternalUtil(data) {
620
+ if (data.method === 'validate') {
621
+ if (data.type === 'call') {
622
+ this.addLog({
623
+ method: `${data.class}.${data.method}`,
624
+ job: this.job,
625
+ log: chalk.cyan('Validating job definition'),
626
+ timestamp: Date.now(),
627
+ type: 'process',
628
+ pending: {
629
+ isPending: true,
630
+ expecting: `${data.class}.${data.method}`,
631
+ },
632
+ });
633
+ }
634
+ if (data.type === 'return') {
635
+ if (data.result) {
636
+ this.addLog({
637
+ method: `${data.class}.${data.method}`,
638
+ job: this.job,
639
+ log: chalk.green('Job definition validated successfully'),
640
+ timestamp: Date.now(),
641
+ type: 'success',
642
+ });
643
+ }
644
+ else {
645
+ this.addLog({
646
+ method: `${data.class}.${data.method}`,
647
+ job: this.job,
648
+ log: chalk.red('Job definition validation failed'),
649
+ timestamp: Date.now(),
650
+ type: 'error',
651
+ });
652
+ }
653
+ }
654
+ }
655
+ if (data.method === 'resolveJobDefinition') {
656
+ if (data.type === 'call') {
657
+ this.addLog({
658
+ method: `${data.class}.${data.method}`,
659
+ job: this.job,
660
+ log: chalk.cyan('Resolving job definition'),
661
+ timestamp: Date.now(),
662
+ type: 'process',
663
+ pending: {
664
+ isPending: true,
665
+ expecting: `${data.class}.${data.method}`,
666
+ },
667
+ });
668
+ }
669
+ if (data.type === 'return') {
670
+ this.addLog({
671
+ method: `${data.class}.${data.method}`,
672
+ job: this.job,
673
+ log: chalk.green('Job definition retrived successfully'),
674
+ timestamp: Date.now(),
675
+ type: 'success',
676
+ });
677
+ }
678
+ if (data.type === 'error') {
679
+ this.addLog({
680
+ method: `${data.class}.${data.method}`,
681
+ job: this.job,
682
+ log: chalk.red('Job definition retrival failed'),
683
+ timestamp: Date.now(),
684
+ type: 'error',
685
+ });
686
+ }
687
+ }
688
+ if (data.method === 'resolveResult') {
689
+ if (data.type === 'call') {
690
+ this.addLog({
691
+ method: `${data.class}.${data.method}`,
692
+ job: this.job,
693
+ log: chalk.cyan('Resolving job results'),
694
+ timestamp: Date.now(),
695
+ type: 'process',
696
+ pending: {
697
+ isPending: true,
698
+ expecting: `${data.class}.${data.method}`,
699
+ },
700
+ });
701
+ }
702
+ if (data.type === 'return') {
703
+ this.addLog({
704
+ method: `${data.class}.${data.method}`,
705
+ job: this.job,
706
+ log: chalk.green('Job results resolved successfully'),
707
+ timestamp: Date.now(),
708
+ type: 'success',
709
+ });
710
+ }
711
+ if (data.type === 'error') {
712
+ this.addLog({
713
+ method: `${data.class}.${data.method}`,
714
+ job: this.job,
715
+ log: chalk.red('Resolving job results failed'),
716
+ timestamp: Date.now(),
717
+ type: 'error',
718
+ });
719
+ }
720
+ }
721
+ }
722
+ handleHealthy(data, provider) {
723
+ if (data.type === 'call') {
724
+ this.addLog({
725
+ method: `${data.class}.${data.method}`,
726
+ job: this.job,
727
+ log: chalk.cyan(`Checking if provider is healthy (${chalk.bold(provider)})`),
728
+ timestamp: Date.now(),
729
+ type: 'process',
730
+ pending: { isPending: true, expecting: `${data.class}.${data.method}` },
731
+ });
732
+ }
733
+ if (data.type === 'return') {
734
+ const log = {
735
+ method: `${data.class}.${data.method}`,
736
+ job: this.job,
737
+ log: chalk.cyan(`Checking if provider is healthy (${chalk.bold(provider)})`),
738
+ timestamp: Date.now(),
739
+ type: 'process',
740
+ };
741
+ if (!data.error) {
742
+ log.log = chalk.green(`Provider is healthy (${chalk.bold(provider)})`);
743
+ log.type = 'success';
744
+ }
745
+ else {
746
+ log.log = chalk.red(`Provider is not healthy (${chalk.bold(provider)}): ${data.result.error}`);
747
+ log.type = 'error';
748
+ }
749
+ this.addLog(log);
750
+ }
751
+ }
752
+ handlePullImage(data) {
753
+ if (data.type === 'call') {
754
+ this.addLog({
755
+ method: `${data.class}.${data.method}`,
756
+ job: this.job,
757
+ log: chalk.cyan(`Pulling image ${chalk.bold(data.arguments[0])}`),
758
+ timestamp: Date.now(),
759
+ type: 'process',
760
+ pending: { isPending: true, expecting: `${data.class}.${data.method}` },
761
+ });
762
+ this.addFlog('info', Date.now(), `Pulling image ${data.arguments[0]}`);
763
+ }
764
+ if (data.type === 'return') {
765
+ this.addLog({
766
+ method: `${data.class}.${data.method}`,
767
+ job: this.job,
768
+ timestamp: Date.now(),
769
+ type: !data.error ? 'success' : 'error',
770
+ log: !data.error
771
+ ? chalk.green(`Pulled image ${chalk.bold(data.arguments[0])}`)
772
+ : chalk.red(`Error pulling image ${chalk.bold(data.arguments[0])}`),
773
+ });
774
+ this.addFlog(!data.error ? 'info' : 'error', Date.now(), !data.error
775
+ ? `Pulled image ${data.arguments[0]}`
776
+ : `Error pulling image ${data.arguments[0]}`);
777
+ }
778
+ }
779
+ handleCreateNetwork(data) {
780
+ if (data.type === 'call') {
781
+ this.addLog({
782
+ method: `${data.class}.${data.method}`,
783
+ job: this.job,
784
+ log: chalk.cyan(`Creating network ${chalk.bold(data.arguments[0])}`),
785
+ timestamp: Date.now(),
786
+ type: 'process',
787
+ pending: { isPending: true, expecting: `${data.class}.${data.method}` },
788
+ });
789
+ this.addFlog('info', Date.now(), `Creating network ${data.arguments[0]}`);
790
+ }
791
+ if (data.type === 'return') {
792
+ this.addLog({
793
+ method: `${data.class}.${data.method}`,
794
+ job: this.job,
795
+ timestamp: Date.now(),
796
+ type: !data.error ? 'success' : 'error',
797
+ log: !data.error
798
+ ? chalk.green(`Created network ${chalk.bold(data.arguments[0])}`)
799
+ : chalk.red(`Error creating network ${chalk.bold(data.arguments[0])}`),
800
+ });
801
+ this.addFlog(!data.error ? 'info' : 'error', Date.now(), !data.error
802
+ ? `Created network ${data.arguments[0]}`
803
+ : `Error creating network ${data.arguments[0]}`);
804
+ }
805
+ }
806
+ handleRunContainer(data) {
807
+ if (data.type === 'call') {
808
+ this.addLog({
809
+ method: `${data.class}.${data.method}`,
810
+ job: this.job,
811
+ log: chalk.cyan(`Starting container ${chalk.bold(data.arguments[0].Image)}`),
812
+ timestamp: Date.now(),
813
+ type: 'process',
814
+ pending: { isPending: true, expecting: `${data.class}.${data.method}` },
815
+ });
816
+ this.addFlog('info', Date.now(), `Starting container ${data.arguments[0].Image}`);
817
+ }
818
+ if (data.type === 'return') {
819
+ this.addLog({
820
+ method: `${data.class}.${data.method}`,
821
+ job: this.job,
822
+ timestamp: Date.now(),
823
+ type: !data.error ? 'success' : 'error',
824
+ log: !data.error
825
+ ? chalk.green(`Running container ${chalk.bold(data.arguments[0].Image)}`)
826
+ : chalk.red(`Error starting container ${chalk.bold(data.arguments[0].Image)}`),
827
+ });
828
+ this.addFlog(!data.error ? 'info' : 'error', Date.now(), !data.error
829
+ ? `Running container ${data.arguments[0].Image}`
830
+ : `Error starting container ${data.arguments[0].Image}`);
831
+ }
832
+ }
833
+ handleRunFlowContainer(data) {
834
+ if (data.type === 'call') {
835
+ this.addLog({
836
+ method: `${data.class}.${data.method}`,
837
+ job: this.job,
838
+ log: chalk.cyan(`Starting container ${chalk.bold(data.arguments[0])}`),
839
+ timestamp: Date.now(),
840
+ type: 'process',
841
+ pending: { isPending: true, expecting: `${data.class}.${data.method}` },
842
+ });
843
+ this.addFlog('info', Date.now(), `Starting container ${data.arguments[0]}`);
844
+ }
845
+ if (data.type === 'return') {
846
+ this.addLog({
847
+ method: `${data.class}.${data.method}`,
848
+ job: this.job,
849
+ timestamp: Date.now(),
850
+ type: !data.error ? 'success' : 'error',
851
+ log: !data.error
852
+ ? chalk.green(`Running container ${chalk.bold(data.arguments[0])}`)
853
+ : chalk.red(`Error starting container ${chalk.bold(data.arguments[0])}`),
854
+ });
855
+ this.addFlog(!data.error ? 'info' : 'error', Date.now(), !data.error
856
+ ? `Running container ${data.arguments[0]}`
857
+ : `Error starting container ${data.arguments[0]}`);
858
+ }
859
+ }
860
+ handleApiHandler(data) {
861
+ if (data.method === 'start' && data.type === 'call') {
862
+ this.addLog({
863
+ method: `${data.class}.${data.method}`,
864
+ job: this.job,
865
+ log: chalk.cyan('Starting node api (https & ws)'),
866
+ timestamp: Date.now(),
867
+ type: 'process',
868
+ pending: { isPending: true, expecting: `${data.class}.${data.method}` },
869
+ });
870
+ }
871
+ if (data.method === 'start' && data.type === 'return') {
872
+ this.addLog({
873
+ method: `${data.class}.${data.method}`,
874
+ job: this.job,
875
+ log: chalk.cyan(`Node api (https & ws) running at ${chalk.bold(data.result)}`),
876
+ timestamp: Date.now(),
877
+ type: 'success',
878
+ });
879
+ }
880
+ if (data.method === 'start' && data.type === 'error') {
881
+ this.addLog({
882
+ method: `${data.class}.${data.method}`,
883
+ job: this.job,
884
+ log: chalk.red('Could not start node api (https & ws)'),
885
+ timestamp: Date.now(),
886
+ type: 'error',
887
+ });
888
+ }
889
+ }
890
+ handleMarketHandler(data) {
891
+ if (data.method === 'processMarketQueuePosition' &&
892
+ data.type === 'return') {
893
+ if (data.arguments[1]) {
894
+ this.addLog({
895
+ method: `${data.class}.${data.method}`,
896
+ job: this.job,
897
+ timestamp: Date.now(),
898
+ log: chalk.yellow(`${chalk.bgYellow.bold(' QUEUED ')} In market ${chalk.bold(data.arguments[0].address)} at position ${data.result.position}/${data.result.count}`),
899
+ type: 'process',
900
+ pending: { isPending: true, expecting: `JobHandler.claim` },
901
+ });
902
+ }
903
+ else {
904
+ this.addLog({
905
+ method: `${data.class}.${data.method}`,
906
+ job: this.job,
907
+ timestamp: Date.now(),
908
+ log: chalk.yellow(`${chalk.bgYellow.bold(' QUEUED ')} In market ${chalk.bold(data.arguments[0].address)} at position ${data.result.position}/${data.result.count}`),
909
+ type: 'update',
910
+ });
911
+ }
912
+ }
913
+ if (data.method === 'join' && data.type === 'error') {
914
+ this.addLog({
915
+ method: `${data.class}.${data.method}`,
916
+ job: this.job,
917
+ log: chalk.red.bold('Could not join market'),
918
+ timestamp: Date.now(),
919
+ type: 'error',
920
+ });
921
+ }
922
+ if (data.method === 'check') {
923
+ if (data.type === 'return') {
924
+ this.shared.market = data.arguments[0];
925
+ this.addLog({
926
+ method: `${data.class}.${data.method}`,
927
+ job: this.job,
928
+ log: chalk.green(`Market ${chalk.greenBright.bold(data.arguments[0])} checked successfully`),
929
+ timestamp: Date.now(),
930
+ type: 'info',
931
+ });
932
+ }
933
+ if (data.type === 'error') {
934
+ this.addLog({
935
+ method: `${data.class}.${data.method}`,
936
+ job: this.job,
937
+ log: chalk.red(`Could not retrieve market ${chalk.bold(data.arguments[0])}`),
938
+ timestamp: Date.now(),
939
+ type: 'error',
940
+ });
941
+ }
942
+ }
943
+ }
944
+ handleExit(data) {
945
+ LogMonitoringRegistry.getInstance().setLoggable(true);
946
+ this.job = undefined;
947
+ this.shared = {};
948
+ if (data.type === 'call') {
949
+ this.addLog({
950
+ method: `${data.class}.${data.method}`,
951
+ job: this.job,
952
+ log: chalk.cyan('Shutting down node'),
953
+ timestamp: Date.now(),
954
+ type: 'kill-process',
955
+ });
956
+ }
957
+ }
958
+ handleClean(data) {
959
+ LogMonitoringRegistry.getInstance().setLoggable(true);
960
+ this.job = undefined;
961
+ if (data.type === 'call') {
962
+ this.addLog({
963
+ method: `${data.class}.${data.method}`,
964
+ job: this.job,
965
+ log: chalk.cyan('Cleaning node'),
966
+ timestamp: Date.now(),
967
+ type: 'process',
968
+ pending: { isPending: true, expecting: `${data.class}.${data.method}` },
969
+ });
970
+ }
971
+ if (data.type === 'return') {
972
+ this.addLog({
973
+ method: `${data.class}.${data.method}`,
974
+ job: this.job,
975
+ log: chalk.greenBright('Node cleaning successfully'),
976
+ timestamp: Date.now(),
977
+ type: 'success',
978
+ });
979
+ }
980
+ if (data.type === 'error') {
981
+ this.addLog({
982
+ method: `${data.class}.${data.method}`,
983
+ job: this.job,
984
+ log: chalk.redBright('Node cleaning failed'),
985
+ timestamp: Date.now(),
986
+ type: 'error',
987
+ });
988
+ }
989
+ }
990
+ handleStop(data) {
991
+ LogMonitoringRegistry.getInstance().setLoggable(true);
992
+ // if (data.type === 'call') {
993
+ // this.addLog({
994
+ // method: `${data.class}.${data.method}`,
995
+ // job: this.job,
996
+ // log: chalk.cyan('Shutting down node'),
997
+ // timestamp: Date.now(),
998
+ // type: 'process',
999
+ // pending: { isPending: true, expecting: `${data.class}.${data.method}` },
1000
+ // });
1001
+ // }
1002
+ if (data.type === 'return') {
1003
+ this.addLog({
1004
+ method: `${data.class}.${data.method}`,
1005
+ job: this.job,
1006
+ log: chalk.greenBright('Node shutdown successfully'),
1007
+ timestamp: Date.now(),
1008
+ type: 'kill-success',
1009
+ });
1010
+ }
1011
+ if (data.type === 'error') {
1012
+ this.addLog({
1013
+ method: `${data.class}.${data.method}`,
1014
+ job: this.job,
1015
+ log: chalk.redBright('Node shutdown failed'),
1016
+ timestamp: Date.now(),
1017
+ type: 'kill-error',
1018
+ });
1019
+ }
1020
+ this.job = undefined;
1021
+ }
1022
+ handleRestart(data) {
1023
+ LogMonitoringRegistry.getInstance().setLoggable(true);
1024
+ this.job = undefined;
1025
+ if (data.method === 'restartDelay') {
1026
+ if (data.type === 'call') {
1027
+ this.addLog({
1028
+ method: `${data.class}.${data.method}`,
1029
+ job: this.job,
1030
+ log: chalk.yellow(`${chalk.bgYellow.bold(' RESTARTING ')} In ${chalk.bold(data.arguments[0])} seconds`),
1031
+ timestamp: Date.now(),
1032
+ type: 'process',
1033
+ pending: {
1034
+ isPending: true,
1035
+ expecting: `${data.class}.${data.method}`,
1036
+ },
1037
+ });
1038
+ let count = data.arguments[0];
1039
+ const intervalId = setInterval(() => {
1040
+ this.addLog({
1041
+ method: `${data.class}.${data.method}`,
1042
+ job: this.job,
1043
+ log: chalk.yellow(`${chalk.bgYellow.bold(' RESTARTING ')} In ${chalk.bold(count)} seconds`),
1044
+ timestamp: Date.now(),
1045
+ type: 'update',
1046
+ });
1047
+ count--;
1048
+ if (count === 0) {
1049
+ clearInterval(intervalId);
1050
+ }
1051
+ }, 1000);
1052
+ }
1053
+ if (data.type == 'return') {
1054
+ this.addLog({
1055
+ method: `${data.class}.${data.method}`,
1056
+ job: this.job,
1057
+ log: chalk.yellow('Node has restarted successfully'),
1058
+ timestamp: Date.now(),
1059
+ type: 'success',
1060
+ });
1061
+ }
1062
+ }
1063
+ }
1064
+ handlePending(data) {
1065
+ // No changes needed since no text was present
1066
+ }
1067
+ handleJobHandler(data) {
1068
+ if (data.method === 'exposed') {
1069
+ if (data.type === 'return') {
1070
+ if (data.result) {
1071
+ this.shared.exposed = true;
1072
+ this.addLog({
1073
+ method: `${data.class}.${data.method}`,
1074
+ job: this.job,
1075
+ log: chalk.green(`Job ${chalk.bold(this.job)} is now exposed`),
1076
+ timestamp: Date.now(),
1077
+ type: 'info',
1078
+ });
1079
+ }
1080
+ else {
1081
+ this.shared.exposed = false;
1082
+ }
1083
+ }
1084
+ }
1085
+ if (data.method === 'claim') {
1086
+ if (data.type === 'call') {
1087
+ this.job = data.arguments[0];
1088
+ this.addLog({
1089
+ method: `${data.class}.${data.method}`,
1090
+ job: this.job,
1091
+ timestamp: Date.now(),
1092
+ type: 'stop',
1093
+ log: chalk.green(`Node has found job ${chalk.bold(data.arguments[0])}`),
1094
+ });
1095
+ this.addLog({
1096
+ method: `${data.class}.${data.method}`,
1097
+ job: this.job,
1098
+ log: chalk.cyan(`Node is claiming job ${chalk.bold(data.arguments[0])}`),
1099
+ timestamp: Date.now(),
1100
+ type: 'process',
1101
+ pending: {
1102
+ isPending: true,
1103
+ expecting: `${data.class}.${data.method}`,
1104
+ },
1105
+ });
1106
+ this.addFlog('info', Date.now(), `Node has found job ${data.arguments[0]}`);
1107
+ this.addFlog('info', Date.now(), `Node is claiming job ${data.arguments[0]}`);
1108
+ }
1109
+ if (data.type === 'return') {
1110
+ this.addLog({
1111
+ method: `${data.class}.${data.method}`,
1112
+ job: this.job,
1113
+ log: chalk.green(`Node has claimed job ${chalk.bold(data.arguments[0])}`),
1114
+ timestamp: Date.now(),
1115
+ type: 'success',
1116
+ });
1117
+ this.addFlog('info', Date.now(), `Node has claimed job ${data.arguments[0]}`);
1118
+ LogMonitoringRegistry.getInstance().setLoggable(false);
1119
+ }
1120
+ if (data.type === 'error') {
1121
+ this.addLog({
1122
+ method: `${data.class}.${data.method}`,
1123
+ job: this.job,
1124
+ log: chalk.red(`Error claiming job ${chalk.bold(data.arguments[0])}`),
1125
+ timestamp: Date.now(),
1126
+ type: 'error',
1127
+ });
1128
+ this.addFlog('error', Date.now(), `Error claiming job ${data.arguments[0]}`);
1129
+ }
1130
+ }
1131
+ if (data.method === 'expired') {
1132
+ if (data.type === 'return' && data.result) {
1133
+ this.addLog({
1134
+ method: `${data.class}.${data.method}`,
1135
+ job: this.job,
1136
+ log: chalk.yellow(`Job ${chalk.bold(this.job)} is already expired`),
1137
+ timestamp: Date.now(),
1138
+ type: 'info',
1139
+ });
1140
+ }
1141
+ }
1142
+ if (data.method === 'start') {
1143
+ if (data.type === 'call') {
1144
+ this.addLog({
1145
+ method: `${data.class}.${data.method}`,
1146
+ job: this.job,
1147
+ log: chalk.cyan(`Job ${chalk.bold(this.job)} is starting`),
1148
+ timestamp: Date.now(),
1149
+ type: 'info',
1150
+ });
1151
+ this.addFlog('info', Date.now(), `Job ${this.job} is starting`);
1152
+ }
1153
+ if (data.type === 'return') {
1154
+ this.addLog({
1155
+ method: `${data.class}.${data.method}`,
1156
+ job: this.job,
1157
+ log: chalk.green(`Job ${chalk.bold(this.job)} started successfully`),
1158
+ timestamp: Date.now(),
1159
+ type: 'success',
1160
+ });
1161
+ this.addFlog('info', Date.now(), `Job ${this.job} started successfully`);
1162
+ }
1163
+ if (data.type === 'error') {
1164
+ this.addLog({
1165
+ method: `${data.class}.${data.method}`,
1166
+ job: this.job,
1167
+ log: chalk.red(`Error starting job ${chalk.bold(this.job)}`),
1168
+ timestamp: Date.now(),
1169
+ type: 'error',
1170
+ });
1171
+ this.addFlog('error', Date.now(), `Error starting job ${this.job}`);
1172
+ }
1173
+ }
1174
+ if (data.method === 'finish') {
1175
+ LogMonitoringRegistry.getInstance().setLoggable(false);
1176
+ if (data.type === 'call') {
1177
+ this.addLog({
1178
+ method: `${data.class}.${data.method}`,
1179
+ job: this.job,
1180
+ log: chalk.cyan(`Job ${chalk.bold(this.job)} is finishing`),
1181
+ timestamp: Date.now(),
1182
+ type: 'info',
1183
+ });
1184
+ }
1185
+ if (data.type === 'return') {
1186
+ this.addLog({
1187
+ method: `${data.class}.${data.method}`,
1188
+ job: this.job,
1189
+ log: chalk.green(`Job ${chalk.bold(this.job)} finished successfully`),
1190
+ timestamp: Date.now(),
1191
+ type: 'success',
1192
+ });
1193
+ this.job = undefined;
1194
+ }
1195
+ if (data.type === 'error') {
1196
+ this.addLog({
1197
+ method: `${data.class}.${data.method}`,
1198
+ job: this.job,
1199
+ log: chalk.red(`Error finishing job ${chalk.bold(this.job)}`),
1200
+ timestamp: Date.now(),
1201
+ type: 'error',
1202
+ });
1203
+ this.job = undefined;
1204
+ }
1205
+ }
1206
+ if (data.method === 'runWithErrorHandling') {
1207
+ if (data.type === 'error') {
1208
+ this.addLog({
1209
+ method: `${data.class}.${data.method}`,
1210
+ job: this.job,
1211
+ log: chalk.red(`Error occured running job ${chalk.bold(this.job)}`),
1212
+ timestamp: Date.now(),
1213
+ type: 'error',
1214
+ });
1215
+ this.job = undefined;
1216
+ }
1217
+ }
1218
+ }
1219
+ handleFlowHandler(data) {
1220
+ if (data.method === 'init') {
1221
+ if (data.type === 'call') {
1222
+ this.addLog({
1223
+ method: `${data.class}.${data.method}`,
1224
+ job: this.job,
1225
+ log: chalk.cyan(`Flow ${chalk.bold(data.arguments[0])} is intializing`),
1226
+ timestamp: Date.now(),
1227
+ type: 'process',
1228
+ pending: {
1229
+ isPending: true,
1230
+ expecting: `${data.class}.${data.method}`,
1231
+ },
1232
+ });
1233
+ }
1234
+ if (data.type === 'return') {
1235
+ this.addLog({
1236
+ method: `${data.class}.${data.method}`,
1237
+ job: this.job,
1238
+ log: chalk.green(`Flow ${chalk.bold(data.arguments[0])} is initialized`),
1239
+ timestamp: Date.now(),
1240
+ type: 'success',
1241
+ });
1242
+ }
1243
+ if (data.type === 'error') {
1244
+ this.addLog({
1245
+ method: `${data.class}.${data.method}`,
1246
+ job: this.job,
1247
+ log: chalk.red(`Flow ${chalk.bold(data.arguments[0])} failed to initialized`),
1248
+ timestamp: Date.now(),
1249
+ type: 'error',
1250
+ });
1251
+ }
1252
+ }
1253
+ if (data.method === 'start') {
1254
+ if (data.type === 'call') {
1255
+ this.addLog({
1256
+ method: `${data.class}.${data.method}`,
1257
+ job: this.job,
1258
+ log: chalk.cyan(`Flow ${chalk.bold(data.arguments[0])} is starting`),
1259
+ timestamp: Date.now(),
1260
+ type: 'process',
1261
+ pending: {
1262
+ isPending: true,
1263
+ expecting: `${data.class}.${data.method}`,
1264
+ },
1265
+ });
1266
+ }
1267
+ if (data.type === 'return') {
1268
+ this.addLog({
1269
+ method: `${data.class}.${data.method}`,
1270
+ job: this.job,
1271
+ log: chalk.green(`Flow ${chalk.bold(data.arguments[0])} started`),
1272
+ timestamp: Date.now(),
1273
+ type: 'success',
1274
+ });
1275
+ }
1276
+ if (data.type === 'error') {
1277
+ this.addLog({
1278
+ method: `${data.class}.${data.method}`,
1279
+ job: this.job,
1280
+ log: chalk.red(`Flow ${chalk.bold(data.arguments[0])} failed to start`),
1281
+ timestamp: Date.now(),
1282
+ type: 'error',
1283
+ });
1284
+ }
1285
+ }
1286
+ if (data.method === 'resume') {
1287
+ if (data.type === 'call') {
1288
+ this.addLog({
1289
+ method: `${data.class}.${data.method}`,
1290
+ job: this.job,
1291
+ log: chalk.cyan(`Flow ${chalk.bold(data.arguments[0])} is resuming`),
1292
+ timestamp: Date.now(),
1293
+ type: 'process',
1294
+ pending: {
1295
+ isPending: true,
1296
+ expecting: `${data.class}.${data.method}`,
1297
+ },
1298
+ });
1299
+ }
1300
+ if (data.type === 'return') {
1301
+ this.addLog({
1302
+ method: `${data.class}.${data.method}`,
1303
+ job: this.job,
1304
+ log: chalk.green(`Flow ${chalk.bold(data.arguments[0])} resumed`),
1305
+ timestamp: Date.now(),
1306
+ type: 'success',
1307
+ });
1308
+ }
1309
+ if (data.type === 'error') {
1310
+ this.addLog({
1311
+ method: `${data.class}.${data.method}`,
1312
+ job: this.job,
1313
+ log: chalk.red(`Flow ${chalk.bold(data.arguments[0])} failed to resume`),
1314
+ timestamp: Date.now(),
1315
+ type: 'error',
1316
+ });
1317
+ }
1318
+ }
1319
+ if (data.method === 'run') {
1320
+ if (data.type === 'call') {
1321
+ this.addLog({
1322
+ method: `${data.class}.${data.method}`,
1323
+ job: this.job,
1324
+ log: chalk.cyan(`Flow ${chalk.bold(data.arguments[0])} is running`),
1325
+ timestamp: Date.now(),
1326
+ type: 'info',
1327
+ });
1328
+ }
1329
+ }
1330
+ if (data.method === 'operationExposed') {
1331
+ if (data.type === 'return') {
1332
+ if (data.arguments[1] == null || data.arguments[1]) {
1333
+ this.shared.exposed = true;
1334
+ const healtcheckstring = data.arguments[1]
1335
+ ? '✅ Healthcheck Passed'
1336
+ : '⚠️ No Healthcheck Provided';
1337
+ this.addLog({
1338
+ method: `${data.class}.${data.method}`,
1339
+ job: this.job,
1340
+ log: chalk.green(`[ ${healtcheckstring} ] Job ${chalk.bold(this.job)} (Port ${data.arguments[0].port}) is now exposed (${chalk.bold(data.result)})`),
1341
+ timestamp: Date.now(),
1342
+ type: 'info',
1343
+ });
1344
+ }
1345
+ else {
1346
+ this.addLog({
1347
+ method: `${data.class}.${data.method}`,
1348
+ job: this.job,
1349
+ log: chalk.green(`Job ${chalk.bold(this.job)} (Port${data.arguments[0].port}) failed healthchecks (${chalk.bold(data.result)})`),
1350
+ timestamp: Date.now(),
1351
+ type: 'info',
1352
+ });
1353
+ }
1354
+ }
1355
+ }
1356
+ }
1357
+ }