@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,17 @@
1
+ import { Argument, Command, Option } from 'commander';
2
+ import { runJob } from './action.js';
3
+ import { gpuOption, verboseOption, walletOption } from '../../sharedOptions/index.js';
4
+ export * from './action.js';
5
+ export const runNodeCommand = new Command('run')
6
+ .description('Run Job Definition File')
7
+ .addArgument(new Argument('<job-definition-file>', 'Job Definition File').argOptional())
8
+ .addOption(new Option('--provider <provider>', 'provider used to run the job definition')
9
+ .choices(['docker', 'podman'])
10
+ .default('podman'))
11
+ .addOption(new Option('--url <url>', 'Url path for the JSON flow'))
12
+ .addOption(new Option('-c, --config <path>', 'Config path (to store the flows database and other config)').default('~/.nosana/'))
13
+ .addOption(new Option('--docker, --podman <URI>', 'Podman/Docker connection URI').default('~/.nosana/podman/podman.sock'))
14
+ .addOption(walletOption)
15
+ .addOption(gpuOption)
16
+ .addOption(verboseOption)
17
+ .action(runJob);
@@ -0,0 +1,2 @@
1
+ import { JobDefinition } from '@nosana/sdk';
2
+ export declare function generateDeploymentEndpointsTable(jobDefinition: JobDefinition): void;
@@ -0,0 +1,45 @@
1
+ import { Table } from 'console-table-printer';
2
+ import { isOperator, isSpreadMarker, } from '@nosana/sdk';
3
+ import { generateExposeId } from '../../../NodeManager/utils/expose-util.js';
4
+ import { configs } from '../../../NodeManager/configs/configs.js';
5
+ export function generateDeploymentEndpointsTable(jobDefinition) {
6
+ const table = new Table({
7
+ title: `🚀 Deployment Endpoints 🚀`,
8
+ defaultColumnOptions: {
9
+ alignment: 'left',
10
+ color: 'green',
11
+ },
12
+ });
13
+ for (const op of jobDefinition.ops) {
14
+ if (op.type === 'container/run') {
15
+ const { expose } = op.args;
16
+ if (expose) {
17
+ if (typeof expose === 'number' ||
18
+ (typeof expose === 'string' && !isOperator(expose))) {
19
+ const generatedId = generateExposeId(jobDefinition.deployment_id, op.id, 0, false);
20
+ table.addRow({
21
+ OpId: op.id,
22
+ Port: expose,
23
+ Url: `https://${generatedId}.${configs().frp.serverAddr}`,
24
+ });
25
+ }
26
+ if (Array.isArray(expose)) {
27
+ expose.forEach((port) => {
28
+ if (isSpreadMarker(port))
29
+ return; // skip dynamic
30
+ if (typeof port === 'string' && isOperator(port))
31
+ return; // skip dynamic
32
+ const p = typeof port === 'object' ? port.port : port;
33
+ const generatedId = generateExposeId(jobDefinition.deployment_id, op.id, 0, false);
34
+ table.addRow({
35
+ OpId: op.id,
36
+ Port: p,
37
+ Url: `https://${generatedId}.${configs().frp.serverAddr}`,
38
+ });
39
+ });
40
+ }
41
+ }
42
+ }
43
+ }
44
+ table.printTable();
45
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ import { startNodeCommand } from '../command';
2
+ import { startNode } from '../action';
3
+ vi.mock('../action', () => ({
4
+ startNode: vi.fn(),
5
+ }));
6
+ describe('startNodeCommand', () => {
7
+ const mock_start_node_action = vi.fn();
8
+ const parseArgs = ['node', 'start', 'market address'];
9
+ beforeEach(() => {
10
+ mock_start_node_action.mockReset();
11
+ startNode.mockImplementation(mock_start_node_action);
12
+ });
13
+ it('should call startNode action', () => {
14
+ startNodeCommand.parse(parseArgs);
15
+ expect(mock_start_node_action).toHaveBeenCalledTimes(1);
16
+ });
17
+ it('should set start node args', () => {
18
+ startNodeCommand.parse(parseArgs);
19
+ expect(startNodeCommand.args[0]).toBe('market address');
20
+ });
21
+ it('should have 9 options', () => {
22
+ expect(startNodeCommand.options.length).toBe(9);
23
+ });
24
+ it.each([
25
+ ['--network', '-n', 'mainnet'],
26
+ ['--rpc', undefined, undefined],
27
+ ['--wallet', '-w', '~/.nosana/nosana_key.json'],
28
+ ['--provider', undefined, 'podman'],
29
+ ['--config', '-c', '~/.nosana/'],
30
+ ['--port', '-p', 5001],
31
+ ['--podman', '--docker', '~/.nosana/podman/podman.sock'],
32
+ ['--gpu', undefined, 'all'],
33
+ ])('should have %s option', (long, short, defaultValue) => {
34
+ const option = startNodeCommand.options.find((i) => i.long === long);
35
+ expect(option?.long).toBe(long);
36
+ expect(option?.short).toBe(short);
37
+ expect(option?.defaultValue).toBe(defaultValue);
38
+ });
39
+ });
@@ -0,0 +1,4 @@
1
+ import 'rpc-websockets/dist/lib/client.js';
2
+ export declare function startNode(market: string, options: {
3
+ [key: string]: any;
4
+ }): Promise<void>;
@@ -0,0 +1,48 @@
1
+ import 'rpc-websockets/dist/lib/client.js';
2
+ import NodeManager from '../../../NodeManager/index.js';
3
+ export async function startNode(market, options) {
4
+ const nodeManager = new NodeManager(options);
5
+ while (true) {
6
+ try {
7
+ await nodeManager.init();
8
+ await nodeManager.start(market);
9
+ }
10
+ catch (error) {
11
+ if (error.name === 'WSLBlockedError') {
12
+ await nodeManager.stop();
13
+ process.exit(1);
14
+ }
15
+ const formattedError = `
16
+ ========== ERROR ==========
17
+ Timestamp: ${new Date().toISOString()}
18
+ Error Name: ${error.name || 'Unknown Error'}
19
+ Message: ${error.message || 'No message available'}${options.verbose
20
+ ? `
21
+ Trace: ${error.stack ?? error.trace}`
22
+ : ''}
23
+ ============================
24
+ `;
25
+ console.error(formattedError);
26
+ console.error('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
27
+ console.error('Get support in our Discord Server. Join:');
28
+ console.error('https://nosana.com/discord');
29
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
30
+ if (error.name == 'NodeAlreadyActiveError') {
31
+ process.exit();
32
+ }
33
+ if (nodeManager.inJobLoop) {
34
+ try {
35
+ await nodeManager.clean();
36
+ }
37
+ catch (error) { }
38
+ await nodeManager.delay(60);
39
+ continue;
40
+ }
41
+ else {
42
+ await nodeManager.error();
43
+ await nodeManager.stop();
44
+ process.exit();
45
+ }
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export * from './action.js';
3
+ export declare const startNodeCommand: Command;
@@ -0,0 +1,19 @@
1
+ import { Command, Option } from 'commander';
2
+ import { startNode } from './action.js';
3
+ import { networkOption, portOption, rpcOption, walletOption, verboseOption, gpuOption } from '../../sharedOptions/index.js';
4
+ export * from './action.js';
5
+ export const startNodeCommand = new Command('start')
6
+ .description('Start Nosana Node')
7
+ .argument('[market]', 'market address')
8
+ .addOption(networkOption)
9
+ .addOption(rpcOption)
10
+ .addOption(walletOption)
11
+ .addOption(new Option('--provider <provider>', 'provider used to run the job')
12
+ .choices(['docker', 'podman'])
13
+ .default('podman'))
14
+ .addOption(new Option('--docker, --podman <URI>', 'Podman/Docker connection URI').default('~/.nosana/podman/podman.sock'))
15
+ .addOption(new Option('-c, --config <path>', 'Config path (to store the flows database and other config)').default('~/.nosana/'))
16
+ .addOption(gpuOption)
17
+ .addOption(portOption)
18
+ .addOption(verboseOption)
19
+ .action(startNode);
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const apiOption: Option;
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export const apiOption = new Option('--api <api key>', 'set api key');
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const formatOption: Option;
@@ -0,0 +1,4 @@
1
+ import { Option } from 'commander';
2
+ export const formatOption = new Option('--format <type>', 'show result in the specified format')
3
+ .choices(['text', 'json'])
4
+ .default('text');
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const gpuOption: Option;
@@ -0,0 +1,12 @@
1
+ import chalk from 'chalk';
2
+ import { InvalidOptionArgumentError, Option } from 'commander';
3
+ function validateGPUOption(value) {
4
+ if (!value.match(new RegExp(/^\d+(,\d+)*$/)) && value !== 'all') {
5
+ throw new InvalidOptionArgumentError('Expected a comma seperated number list or "all"');
6
+ }
7
+ console.warn(chalk.yellow(`Setting GPU device ${value}, please ensure your nvidia-ctk is correctly configured to generate using device index naming strategy to avoid errors.`));
8
+ return value;
9
+ }
10
+ export const gpuOption = new Option('--gpu <gpus>', 'set gpu devices')
11
+ .argParser(validateGPUOption)
12
+ .default('all');
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const networkOption: Option;
@@ -0,0 +1,4 @@
1
+ import { Option } from 'commander';
2
+ export const networkOption = new Option('-n, --network <network>', 'network to run on')
3
+ .default('mainnet')
4
+ .choices(['devnet', 'mainnet']);
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const portOption: Option;
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export const portOption = new Option('-p, --port <api-port>', 'api port to run on').default(5001);
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const rpcOption: Option;
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export const rpcOption = new Option('--rpc <url>', 'RPC node to use');
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const timeoutOption: Option;
@@ -0,0 +1,12 @@
1
+ import { Option } from 'commander';
2
+ export const timeoutOption = new Option('-t, --timeout <timeout>', 'the duration you want to add to the job (in minutes)')
3
+ .makeOptionMandatory(true)
4
+ .argParser((value) => {
5
+ const timeout = parseInt(value, 10);
6
+ if (isNaN(timeout) || timeout <= 0) {
7
+ throw new Error('Invalid timeout value. Please provide a positive integer.');
8
+ }
9
+ // Convert minutes to seconds
10
+ const timeoutInSeconds = timeout * 60;
11
+ return timeoutInSeconds;
12
+ });
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const verboseOption: Option;
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export const verboseOption = new Option('--verbose', 'show more detailed result').conflicts(['format']);
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export declare const walletOption: Option;
@@ -0,0 +1,2 @@
1
+ import { Option } from 'commander';
2
+ export const walletOption = new Option('-w, --wallet <wallet>', 'path to wallet private key').default('~/.nosana/nosana_key.json');
@@ -0,0 +1,7 @@
1
+ export * from './--network.js';
2
+ export * from './--rpc.js';
3
+ export * from './--wallet.js';
4
+ export * from './--format.js';
5
+ export * from './--port.js';
6
+ export * from './--gpu.js';
7
+ export * from './--verbose.js';
@@ -0,0 +1,8 @@
1
+ // istanbul ignore file
2
+ export * from './--network.js';
3
+ export * from './--rpc.js';
4
+ export * from './--wallet.js';
5
+ export * from './--format.js';
6
+ export * from './--port.js';
7
+ export * from './--gpu.js';
8
+ export * from './--verbose.js';
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env -S node --no-warnings
2
+ /// <reference path="../src/global.d.ts" />
3
+ export * from './cli/node/index.js';
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env -S node --no-warnings
2
+ /// <reference path="./global.d.ts" />
3
+ import { pkg } from './static/index.js';
4
+ import { startCLI } from './cli/index.js';
5
+ const VERSION = pkg.version;
6
+ startCLI(VERSION);
7
+ export * from './cli/node/index.js';
@@ -0,0 +1,61 @@
1
+ import { OutputEvent, OutputEventParams } from './outputEvents.js';
2
+ /**
3
+ * Interface defining the structure for output formatter adapters.
4
+ * Adapters implementing this interface should provide implementations
5
+ * for handling various output events and finalizing the output.
6
+ */
7
+ export interface OutputFormatterAdapter {
8
+ finalize(): void;
9
+ output<T extends keyof OutputEventParams>(event: T, param: OutputEventParams[T]): void;
10
+ }
11
+ /**
12
+ * Class responsible for formatting output based on the provided adapter.
13
+ * The adapter can be either a JSON formatter or a Text formatter (and more can be added),
14
+ * depending on the user's choice.
15
+ */
16
+ export declare class OutputFormatter {
17
+ private format;
18
+ constructor(format: OutputFormatterAdapter);
19
+ /**
20
+ * Outputs an event using the selected format.
21
+ * @param {OutputEvent} event - The event type to be output.
22
+ * @param {T} param - The parameters associated with the event.
23
+ *
24
+ * Usage:
25
+ *
26
+ * ```typescript
27
+ * // To get a JSON formatter
28
+ * const formatter = outputFormatSelector('json');
29
+ *
30
+ * // To output an event
31
+ * formatter.output(OUTPUT_EVENTS.EXAMPLE_OUTPUT, { log: { log: 'Job started\n' } });
32
+ * ```
33
+ */
34
+ output<T extends OutputEvent>(event: T, param: OutputEventParams[T]): void;
35
+ /**
36
+ * Throws an event using the selected format, typically used for error handling.
37
+ * Note: This method works similarly to `output`, but it indicates that an error has occurred.
38
+ * After every throw event, an actual error is thrown.
39
+ * @param {OutputEvent} event - The event type to be thrown.
40
+ * @param {T} param - The parameters associated with the event.
41
+ *
42
+ * Usage:
43
+ *
44
+ * ```typescript
45
+ * // To throw an event (usually for error handling)
46
+ * formatter.throw(OUTPUT_EVENTS.EXAMPLE_OUTPUT, { error: 'Invalid job definition' });
47
+ * ```
48
+ */
49
+ throw<T extends OutputEvent>(event: T, param: OutputEventParams[T]): void;
50
+ /**
51
+ * Finalizes the output, performing any necessary cleanup or final steps.
52
+ *
53
+ * Usage:
54
+ *
55
+ * ```typescript
56
+ * // Finalize the output (if needed)
57
+ * formatter.finalize();
58
+ * ```
59
+ */
60
+ finalize(): void;
61
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Class responsible for formatting output based on the provided adapter.
3
+ * The adapter can be either a JSON formatter or a Text formatter (and more can be added),
4
+ * depending on the user's choice.
5
+ */
6
+ export class OutputFormatter {
7
+ constructor(format) {
8
+ this.format = format;
9
+ }
10
+ /**
11
+ * Outputs an event using the selected format.
12
+ * @param {OutputEvent} event - The event type to be output.
13
+ * @param {T} param - The parameters associated with the event.
14
+ *
15
+ * Usage:
16
+ *
17
+ * ```typescript
18
+ * // To get a JSON formatter
19
+ * const formatter = outputFormatSelector('json');
20
+ *
21
+ * // To output an event
22
+ * formatter.output(OUTPUT_EVENTS.EXAMPLE_OUTPUT, { log: { log: 'Job started\n' } });
23
+ * ```
24
+ */
25
+ output(event, param) {
26
+ this.format.output(event, param);
27
+ }
28
+ /**
29
+ * Throws an event using the selected format, typically used for error handling.
30
+ * Note: This method works similarly to `output`, but it indicates that an error has occurred.
31
+ * After every throw event, an actual error is thrown.
32
+ * @param {OutputEvent} event - The event type to be thrown.
33
+ * @param {T} param - The parameters associated with the event.
34
+ *
35
+ * Usage:
36
+ *
37
+ * ```typescript
38
+ * // To throw an event (usually for error handling)
39
+ * formatter.throw(OUTPUT_EVENTS.EXAMPLE_OUTPUT, { error: 'Invalid job definition' });
40
+ * ```
41
+ */
42
+ throw(event, param) {
43
+ this.format.output(event, param);
44
+ }
45
+ /**
46
+ * Finalizes the output, performing any necessary cleanup or final steps.
47
+ *
48
+ * Usage:
49
+ *
50
+ * ```typescript
51
+ * // Finalize the output (if needed)
52
+ * formatter.finalize();
53
+ * ```
54
+ */
55
+ finalize() {
56
+ this.format.finalize();
57
+ }
58
+ }
@@ -0,0 +1,4 @@
1
+ import { OutputFormatter } from './OutputFormatter.js';
2
+ export declare class OutputFormatterFactory {
3
+ static createFormatter(format: string): OutputFormatter;
4
+ }
@@ -0,0 +1,18 @@
1
+ import { JsonOutputFormatter } from './json/JsonOutputFormatter.js';
2
+ import { OutputFormatter } from './OutputFormatter.js';
3
+ import { TextOutputFormatter } from './text/TextOutputFormatter.js';
4
+ import { VerboseTextOutputFormatter } from './text/VerboseTextOutputFormatter.js';
5
+ export class OutputFormatterFactory {
6
+ static createFormatter(format) {
7
+ switch (format?.toLowerCase() ?? '') {
8
+ // add more formats here
9
+ case 'json':
10
+ return new OutputFormatter(new JsonOutputFormatter());
11
+ case 'verbose:text':
12
+ return new OutputFormatter(new VerboseTextOutputFormatter());
13
+ case 'text':
14
+ default:
15
+ return new OutputFormatter(new TextOutputFormatter());
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,42 @@
1
+ declare const outputEventsMock: {
2
+ READ_KEYFILE: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
3
+ EMPTY_KEYFILE: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
4
+ CREATE_KEYFILE: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
5
+ OUTPUT_BALANCES: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
6
+ OUTPUT_NETWORK: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
7
+ OUTPUT_WALLET: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
8
+ OUTPUT_IPFS_UPLOADED: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
9
+ OUTPUT_SERVICE_URL: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
10
+ OUTPUT_PRIVATE_URL_MESSAGE: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
11
+ OUTPUT_JOB_URL: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
12
+ OUTPUT_JSON_FLOW_URL: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
13
+ OUTPUT_MARKET_URL: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
14
+ OUTPUT_JOB_PRICE: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
15
+ OUTPUT_TOTAL_COST: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
16
+ OUTPUT_JOB_STATUS: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
17
+ OUTPUT_JOB_POSTING: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
18
+ OUTPUT_JOB_POSTED_TX: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
19
+ OUTPUT_JOB_VALIDATION_ERROR: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
20
+ OUTPUT_JOB_POSTED_ERROR: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
21
+ OUTPUT_SOL_BALANCE_LOW_ERROR: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
22
+ OUTPUT_NOS_BALANCE_LOW_ERROR: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
23
+ OUTPUT_AIRDROP_REQUEST_FAILED_ERROR: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
24
+ OUTPUT_JOB_NOT_FOUND: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
25
+ OUTPUT_CANNOT_LOG_RESULT: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
26
+ OUTPUT_ARTIFACT_SUPPORT_INCOMING_ERROR: import("@vitest/spy").Mock<(param: any) => never>;
27
+ OUTPUT_JSON_FLOW_TYPE_NOT_SUPPORTED_ERROR: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
28
+ OUTPUT_NODE_URL: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
29
+ OUTPUT_DURATION: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
30
+ OUTPUT_START_TIME: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
31
+ OUTPUT_RESULT_URL: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
32
+ OUTPUT_JOB_EXECUTION: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
33
+ OUTPUT_RETRIVE_JOB_COMMAND: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
34
+ OUTPUT_FAILED_TO_FETCH_MARKETS_ERROR: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
35
+ OUTPUT_HEADER_LOGO: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
36
+ OUTPUT_JOB_URL_ERROR: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
37
+ OUTPUT_JOB_URL_EXPIRED: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
38
+ OUTPUT_JOB_URL_NOT_READY: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
39
+ OUTPUT_JOB_INVALID: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
40
+ OUTPUT_JOB_SERVICE_URL: import("@vitest/spy").Mock<import("@vitest/spy").Procedure>;
41
+ };
42
+ export default outputEventsMock;
@@ -0,0 +1,45 @@
1
+ import { OUTPUT_EVENTS } from '../outputEvents.js';
2
+ const outputEventsMock = {
3
+ [OUTPUT_EVENTS.READ_KEYFILE]: vi.fn(),
4
+ [OUTPUT_EVENTS.EMPTY_KEYFILE]: vi.fn(),
5
+ [OUTPUT_EVENTS.CREATE_KEYFILE]: vi.fn(),
6
+ [OUTPUT_EVENTS.OUTPUT_BALANCES]: vi.fn(),
7
+ [OUTPUT_EVENTS.OUTPUT_NETWORK]: vi.fn(),
8
+ [OUTPUT_EVENTS.OUTPUT_WALLET]: vi.fn(),
9
+ [OUTPUT_EVENTS.OUTPUT_IPFS_UPLOADED]: vi.fn(),
10
+ [OUTPUT_EVENTS.OUTPUT_SERVICE_URL]: vi.fn(),
11
+ [OUTPUT_EVENTS.OUTPUT_PRIVATE_URL_MESSAGE]: vi.fn(),
12
+ [OUTPUT_EVENTS.OUTPUT_JOB_URL]: vi.fn(),
13
+ [OUTPUT_EVENTS.OUTPUT_JSON_FLOW_URL]: vi.fn(),
14
+ [OUTPUT_EVENTS.OUTPUT_MARKET_URL]: vi.fn(),
15
+ [OUTPUT_EVENTS.OUTPUT_JOB_PRICE]: vi.fn(),
16
+ [OUTPUT_EVENTS.OUTPUT_TOTAL_COST]: vi.fn(),
17
+ [OUTPUT_EVENTS.OUTPUT_JOB_STATUS]: vi.fn(),
18
+ [OUTPUT_EVENTS.OUTPUT_JOB_POSTING]: vi.fn(),
19
+ [OUTPUT_EVENTS.OUTPUT_JOB_POSTED_TX]: vi.fn(),
20
+ [OUTPUT_EVENTS.OUTPUT_JOB_VALIDATION_ERROR]: vi.fn(),
21
+ [OUTPUT_EVENTS.OUTPUT_JOB_POSTED_ERROR]: vi.fn(),
22
+ [OUTPUT_EVENTS.OUTPUT_SOL_BALANCE_LOW_ERROR]: vi.fn(),
23
+ [OUTPUT_EVENTS.OUTPUT_NOS_BALANCE_LOW_ERROR]: vi.fn(),
24
+ [OUTPUT_EVENTS.OUTPUT_AIRDROP_REQUEST_FAILED_ERROR]: vi.fn(),
25
+ [OUTPUT_EVENTS.OUTPUT_JOB_NOT_FOUND]: vi.fn(),
26
+ [OUTPUT_EVENTS.OUTPUT_CANNOT_LOG_RESULT]: vi.fn(),
27
+ [OUTPUT_EVENTS.OUTPUT_ARTIFACT_SUPPORT_INCOMING_ERROR]: vi.fn((param) => {
28
+ throw param.error;
29
+ }),
30
+ [OUTPUT_EVENTS.OUTPUT_JSON_FLOW_TYPE_NOT_SUPPORTED_ERROR]: vi.fn(),
31
+ [OUTPUT_EVENTS.OUTPUT_NODE_URL]: vi.fn(),
32
+ [OUTPUT_EVENTS.OUTPUT_DURATION]: vi.fn(),
33
+ [OUTPUT_EVENTS.OUTPUT_START_TIME]: vi.fn(),
34
+ [OUTPUT_EVENTS.OUTPUT_RESULT_URL]: vi.fn(),
35
+ [OUTPUT_EVENTS.OUTPUT_JOB_EXECUTION]: vi.fn(),
36
+ [OUTPUT_EVENTS.OUTPUT_RETRIVE_JOB_COMMAND]: vi.fn(),
37
+ [OUTPUT_EVENTS.OUTPUT_FAILED_TO_FETCH_MARKETS_ERROR]: vi.fn(),
38
+ [OUTPUT_EVENTS.OUTPUT_HEADER_LOGO]: vi.fn(),
39
+ [OUTPUT_EVENTS.OUTPUT_JOB_URL_ERROR]: vi.fn(),
40
+ [OUTPUT_EVENTS.OUTPUT_JOB_URL_EXPIRED]: vi.fn(),
41
+ [OUTPUT_EVENTS.OUTPUT_JOB_URL_NOT_READY]: vi.fn(),
42
+ [OUTPUT_EVENTS.OUTPUT_JOB_INVALID]: vi.fn(),
43
+ [OUTPUT_EVENTS.OUTPUT_JOB_SERVICE_URL]: vi.fn(),
44
+ };
45
+ export default outputEventsMock;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ vi.mock('../json/JsonOutputFormatter', () => {
3
+ return {
4
+ JsonOutputFormatter: vi.fn().mockImplementation(() => {
5
+ return {
6
+ finalize: vi.fn(),
7
+ output: vi.fn(),
8
+ };
9
+ }),
10
+ };
11
+ });
12
+ vi.mock('../text/TextOutputFormatter', () => {
13
+ return {
14
+ TextOutputFormatter: vi.fn().mockImplementation(() => {
15
+ return {
16
+ finalize: vi.fn(),
17
+ output: vi.fn(),
18
+ };
19
+ }),
20
+ };
21
+ });
@@ -0,0 +1,34 @@
1
+ import { OutputFormatter } from '../OutputFormatter.js';
2
+ import { OUTPUT_EVENTS } from '../outputEvents.js';
3
+ class MockOutputFormatterAdapter {
4
+ constructor() {
5
+ this.finalize = vi.fn();
6
+ this.output = vi.fn();
7
+ }
8
+ }
9
+ describe('OutputFormatter', () => {
10
+ let formatter;
11
+ let mockAdapter;
12
+ beforeEach(() => {
13
+ mockAdapter = new MockOutputFormatterAdapter();
14
+ formatter = new OutputFormatter(mockAdapter);
15
+ });
16
+ it('should call the appropriate event handler', () => {
17
+ const param = {
18
+ job_url: 'http://example.com',
19
+ };
20
+ formatter.output(OUTPUT_EVENTS.OUTPUT_JOB_URL, param);
21
+ expect(mockAdapter.output).toHaveBeenCalledWith(OUTPUT_EVENTS.OUTPUT_JOB_URL, param);
22
+ });
23
+ it('should call the appropriate event handler for throw and throw error', () => {
24
+ const param = {
25
+ error: new Error('ARTIFACT NOT SUPPORT'),
26
+ };
27
+ formatter.throw(OUTPUT_EVENTS.OUTPUT_ARTIFACT_SUPPORT_INCOMING_ERROR, param);
28
+ expect(mockAdapter.output).toHaveBeenCalledWith(OUTPUT_EVENTS.OUTPUT_ARTIFACT_SUPPORT_INCOMING_ERROR, param);
29
+ });
30
+ it('should call finalize on the adapter', () => {
31
+ formatter.finalize();
32
+ expect(mockAdapter.finalize).toHaveBeenCalled();
33
+ });
34
+ });
@@ -0,0 +1 @@
1
+ import '../__mocks__/outputFormatter.mock.js';