@orbytautomation/engine 0.1.0

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 (582) hide show
  1. package/README.md +0 -0
  2. package/dist/adapters/AdapterRegistry.d.ts +129 -0
  3. package/dist/adapters/AdapterRegistry.d.ts.map +1 -0
  4. package/dist/adapters/AdapterRegistry.js +236 -0
  5. package/dist/adapters/AdapterRegistry.js.map +1 -0
  6. package/dist/adapters/StepAdapter.d.ts +2 -0
  7. package/dist/adapters/StepAdapter.d.ts.map +1 -0
  8. package/dist/adapters/StepAdapter.js +2 -0
  9. package/dist/adapters/StepAdapter.js.map +1 -0
  10. package/dist/adapters/WorkflowAdapter.d.ts +2 -0
  11. package/dist/adapters/WorkflowAdapter.d.ts.map +1 -0
  12. package/dist/adapters/WorkflowAdapter.js +2 -0
  13. package/dist/adapters/WorkflowAdapter.js.map +1 -0
  14. package/dist/adapters/builtins/CLIAdapter.d.ts +38 -0
  15. package/dist/adapters/builtins/CLIAdapter.d.ts.map +1 -0
  16. package/dist/adapters/builtins/CLIAdapter.js +173 -0
  17. package/dist/adapters/builtins/CLIAdapter.js.map +1 -0
  18. package/dist/adapters/builtins/CLICommandResolver.d.ts +49 -0
  19. package/dist/adapters/builtins/CLICommandResolver.d.ts.map +1 -0
  20. package/dist/adapters/builtins/CLICommandResolver.js +63 -0
  21. package/dist/adapters/builtins/CLICommandResolver.js.map +1 -0
  22. package/dist/adapters/builtins/CLIResultParser.d.ts +61 -0
  23. package/dist/adapters/builtins/CLIResultParser.d.ts.map +1 -0
  24. package/dist/adapters/builtins/CLIResultParser.js +113 -0
  25. package/dist/adapters/builtins/CLIResultParser.js.map +1 -0
  26. package/dist/adapters/builtins/ConnectionManager.d.ts +106 -0
  27. package/dist/adapters/builtins/ConnectionManager.d.ts.map +1 -0
  28. package/dist/adapters/builtins/ConnectionManager.js +162 -0
  29. package/dist/adapters/builtins/ConnectionManager.js.map +1 -0
  30. package/dist/adapters/builtins/Consumer.d.ts +110 -0
  31. package/dist/adapters/builtins/Consumer.d.ts.map +1 -0
  32. package/dist/adapters/builtins/Consumer.js +113 -0
  33. package/dist/adapters/builtins/Consumer.js.map +1 -0
  34. package/dist/adapters/builtins/DBAdapter.d.ts +79 -0
  35. package/dist/adapters/builtins/DBAdapter.d.ts.map +1 -0
  36. package/dist/adapters/builtins/DBAdapter.js +259 -0
  37. package/dist/adapters/builtins/DBAdapter.js.map +1 -0
  38. package/dist/adapters/builtins/EnvResolver.d.ts +66 -0
  39. package/dist/adapters/builtins/EnvResolver.d.ts.map +1 -0
  40. package/dist/adapters/builtins/EnvResolver.js +121 -0
  41. package/dist/adapters/builtins/EnvResolver.js.map +1 -0
  42. package/dist/adapters/builtins/FSAdapter.d.ts +50 -0
  43. package/dist/adapters/builtins/FSAdapter.d.ts.map +1 -0
  44. package/dist/adapters/builtins/FSAdapter.js +282 -0
  45. package/dist/adapters/builtins/FSAdapter.js.map +1 -0
  46. package/dist/adapters/builtins/FileResolver.d.ts +50 -0
  47. package/dist/adapters/builtins/FileResolver.d.ts.map +1 -0
  48. package/dist/adapters/builtins/FileResolver.js +77 -0
  49. package/dist/adapters/builtins/FileResolver.js.map +1 -0
  50. package/dist/adapters/builtins/HTTPAdapter.d.ts +58 -0
  51. package/dist/adapters/builtins/HTTPAdapter.d.ts.map +1 -0
  52. package/dist/adapters/builtins/HTTPAdapter.js +213 -0
  53. package/dist/adapters/builtins/HTTPAdapter.js.map +1 -0
  54. package/dist/adapters/builtins/HTTPRequestBuilder.d.ts +95 -0
  55. package/dist/adapters/builtins/HTTPRequestBuilder.d.ts.map +1 -0
  56. package/dist/adapters/builtins/HTTPRequestBuilder.js +159 -0
  57. package/dist/adapters/builtins/HTTPRequestBuilder.js.map +1 -0
  58. package/dist/adapters/builtins/HTTPResponseParser.d.ts +74 -0
  59. package/dist/adapters/builtins/HTTPResponseParser.d.ts.map +1 -0
  60. package/dist/adapters/builtins/HTTPResponseParser.js +144 -0
  61. package/dist/adapters/builtins/HTTPResponseParser.js.map +1 -0
  62. package/dist/adapters/builtins/PathSecurityPolicy.d.ts +38 -0
  63. package/dist/adapters/builtins/PathSecurityPolicy.d.ts.map +1 -0
  64. package/dist/adapters/builtins/PathSecurityPolicy.js +125 -0
  65. package/dist/adapters/builtins/PathSecurityPolicy.js.map +1 -0
  66. package/dist/adapters/builtins/Producer.d.ts +99 -0
  67. package/dist/adapters/builtins/Producer.d.ts.map +1 -0
  68. package/dist/adapters/builtins/Producer.js +59 -0
  69. package/dist/adapters/builtins/Producer.js.map +1 -0
  70. package/dist/adapters/builtins/QueryExecutor.d.ts +102 -0
  71. package/dist/adapters/builtins/QueryExecutor.d.ts.map +1 -0
  72. package/dist/adapters/builtins/QueryExecutor.js +90 -0
  73. package/dist/adapters/builtins/QueryExecutor.js.map +1 -0
  74. package/dist/adapters/builtins/QueueAdapter.d.ts +72 -0
  75. package/dist/adapters/builtins/QueueAdapter.d.ts.map +1 -0
  76. package/dist/adapters/builtins/QueueAdapter.js +209 -0
  77. package/dist/adapters/builtins/QueueAdapter.js.map +1 -0
  78. package/dist/adapters/builtins/SecretProvider.d.ts +69 -0
  79. package/dist/adapters/builtins/SecretProvider.d.ts.map +1 -0
  80. package/dist/adapters/builtins/SecretProvider.js +71 -0
  81. package/dist/adapters/builtins/SecretProvider.js.map +1 -0
  82. package/dist/adapters/builtins/SecretsAdapter.d.ts +48 -0
  83. package/dist/adapters/builtins/SecretsAdapter.d.ts.map +1 -0
  84. package/dist/adapters/builtins/SecretsAdapter.js +154 -0
  85. package/dist/adapters/builtins/SecretsAdapter.js.map +1 -0
  86. package/dist/adapters/builtins/ShellAdapter.d.ts +46 -0
  87. package/dist/adapters/builtins/ShellAdapter.d.ts.map +1 -0
  88. package/dist/adapters/builtins/ShellAdapter.js +200 -0
  89. package/dist/adapters/builtins/ShellAdapter.js.map +1 -0
  90. package/dist/adapters/builtins/ShellExecutor.d.ts +72 -0
  91. package/dist/adapters/builtins/ShellExecutor.d.ts.map +1 -0
  92. package/dist/adapters/builtins/ShellExecutor.js +94 -0
  93. package/dist/adapters/builtins/ShellExecutor.js.map +1 -0
  94. package/dist/adapters/builtins/ShellSecurityPolicy.d.ts +58 -0
  95. package/dist/adapters/builtins/ShellSecurityPolicy.d.ts.map +1 -0
  96. package/dist/adapters/builtins/ShellSecurityPolicy.js +135 -0
  97. package/dist/adapters/builtins/ShellSecurityPolicy.js.map +1 -0
  98. package/dist/adapters/builtins/index.d.ts +27 -0
  99. package/dist/adapters/builtins/index.d.ts.map +1 -0
  100. package/dist/adapters/builtins/index.js +35 -0
  101. package/dist/adapters/builtins/index.js.map +1 -0
  102. package/dist/adapters/index.d.ts +5 -0
  103. package/dist/adapters/index.d.ts.map +1 -0
  104. package/dist/adapters/index.js +6 -0
  105. package/dist/adapters/index.js.map +1 -0
  106. package/dist/automation/BackoffStrategy.d.ts +106 -0
  107. package/dist/automation/BackoffStrategy.d.ts.map +1 -0
  108. package/dist/automation/BackoffStrategy.js +168 -0
  109. package/dist/automation/BackoffStrategy.js.map +1 -0
  110. package/dist/automation/FailureStrategy.d.ts +141 -0
  111. package/dist/automation/FailureStrategy.d.ts.map +1 -0
  112. package/dist/automation/FailureStrategy.js +246 -0
  113. package/dist/automation/FailureStrategy.js.map +1 -0
  114. package/dist/automation/RetryPolicy.d.ts +132 -0
  115. package/dist/automation/RetryPolicy.d.ts.map +1 -0
  116. package/dist/automation/RetryPolicy.js +241 -0
  117. package/dist/automation/RetryPolicy.js.map +1 -0
  118. package/dist/automation/TimeoutManager.d.ts +145 -0
  119. package/dist/automation/TimeoutManager.d.ts.map +1 -0
  120. package/dist/automation/TimeoutManager.js +241 -0
  121. package/dist/automation/TimeoutManager.js.map +1 -0
  122. package/dist/automation/index.d.ts +16 -0
  123. package/dist/automation/index.d.ts.map +1 -0
  124. package/dist/automation/index.js +16 -0
  125. package/dist/automation/index.js.map +1 -0
  126. package/dist/automation/runtime/BackoffTimer.d.ts +74 -0
  127. package/dist/automation/runtime/BackoffTimer.d.ts.map +1 -0
  128. package/dist/automation/runtime/BackoffTimer.js +139 -0
  129. package/dist/automation/runtime/BackoffTimer.js.map +1 -0
  130. package/dist/automation/runtime/FailureHandler.d.ts +138 -0
  131. package/dist/automation/runtime/FailureHandler.d.ts.map +1 -0
  132. package/dist/automation/runtime/FailureHandler.js +197 -0
  133. package/dist/automation/runtime/FailureHandler.js.map +1 -0
  134. package/dist/automation/runtime/RetryExecutor.d.ts +104 -0
  135. package/dist/automation/runtime/RetryExecutor.d.ts.map +1 -0
  136. package/dist/automation/runtime/RetryExecutor.js +173 -0
  137. package/dist/automation/runtime/RetryExecutor.js.map +1 -0
  138. package/dist/automation/runtime/index.d.ts +13 -0
  139. package/dist/automation/runtime/index.d.ts.map +1 -0
  140. package/dist/automation/runtime/index.js +13 -0
  141. package/dist/automation/runtime/index.js.map +1 -0
  142. package/dist/context/ContextStore.d.ts +185 -0
  143. package/dist/context/ContextStore.d.ts.map +1 -0
  144. package/dist/context/ContextStore.js +228 -0
  145. package/dist/context/ContextStore.js.map +1 -0
  146. package/dist/context/VariableResolver.d.ts +184 -0
  147. package/dist/context/VariableResolver.d.ts.map +1 -0
  148. package/dist/context/VariableResolver.js +368 -0
  149. package/dist/context/VariableResolver.js.map +1 -0
  150. package/dist/context/index.d.ts +17 -0
  151. package/dist/context/index.d.ts.map +1 -0
  152. package/dist/context/index.js +17 -0
  153. package/dist/context/index.js.map +1 -0
  154. package/dist/core/EngineConfig.d.ts +156 -0
  155. package/dist/core/EngineConfig.d.ts.map +1 -0
  156. package/dist/core/EngineConfig.js +61 -0
  157. package/dist/core/EngineConfig.js.map +1 -0
  158. package/dist/core/EngineContext.d.ts +94 -0
  159. package/dist/core/EngineContext.d.ts.map +1 -0
  160. package/dist/core/EngineContext.js +29 -0
  161. package/dist/core/EngineContext.js.map +1 -0
  162. package/dist/core/OrbytEngine.d.ts +234 -0
  163. package/dist/core/OrbytEngine.d.ts.map +1 -0
  164. package/dist/core/OrbytEngine.js +421 -0
  165. package/dist/core/OrbytEngine.js.map +1 -0
  166. package/dist/core/index.d.ts +4 -0
  167. package/dist/core/index.d.ts.map +1 -0
  168. package/dist/core/index.js +4 -0
  169. package/dist/core/index.js.map +1 -0
  170. package/dist/errors/ErrorCodes.d.ts +71 -0
  171. package/dist/errors/ErrorCodes.d.ts.map +1 -0
  172. package/dist/errors/ErrorCodes.js +95 -0
  173. package/dist/errors/ErrorCodes.js.map +1 -0
  174. package/dist/errors/ErrorFormatter.d.ts +34 -0
  175. package/dist/errors/ErrorFormatter.d.ts.map +1 -0
  176. package/dist/errors/ErrorFormatter.js +140 -0
  177. package/dist/errors/ErrorFormatter.js.map +1 -0
  178. package/dist/errors/FieldRegistry.d.ts +83 -0
  179. package/dist/errors/FieldRegistry.d.ts.map +1 -0
  180. package/dist/errors/FieldRegistry.js +217 -0
  181. package/dist/errors/FieldRegistry.js.map +1 -0
  182. package/dist/errors/OrbytError.d.ts +59 -0
  183. package/dist/errors/OrbytError.d.ts.map +1 -0
  184. package/dist/errors/OrbytError.js +78 -0
  185. package/dist/errors/OrbytError.js.map +1 -0
  186. package/dist/errors/SchedulerError.d.ts +2 -0
  187. package/dist/errors/SchedulerError.d.ts.map +1 -0
  188. package/dist/errors/SchedulerError.js +2 -0
  189. package/dist/errors/SchedulerError.js.map +1 -0
  190. package/dist/errors/StepError.d.ts +2 -0
  191. package/dist/errors/StepError.d.ts.map +1 -0
  192. package/dist/errors/StepError.js +2 -0
  193. package/dist/errors/StepError.js.map +1 -0
  194. package/dist/errors/TypoDetector.d.ts +36 -0
  195. package/dist/errors/TypoDetector.d.ts.map +1 -0
  196. package/dist/errors/TypoDetector.js +109 -0
  197. package/dist/errors/TypoDetector.js.map +1 -0
  198. package/dist/errors/WorkflowError.d.ts +54 -0
  199. package/dist/errors/WorkflowError.d.ts.map +1 -0
  200. package/dist/errors/WorkflowError.js +129 -0
  201. package/dist/errors/WorkflowError.js.map +1 -0
  202. package/dist/errors/index.d.ts +14 -0
  203. package/dist/errors/index.d.ts.map +1 -0
  204. package/dist/errors/index.js +17 -0
  205. package/dist/errors/index.js.map +1 -0
  206. package/dist/events/EngineEvents.d.ts +143 -0
  207. package/dist/events/EngineEvents.d.ts.map +1 -0
  208. package/dist/events/EngineEvents.js +60 -0
  209. package/dist/events/EngineEvents.js.map +1 -0
  210. package/dist/events/EventBus.d.ts +112 -0
  211. package/dist/events/EventBus.d.ts.map +1 -0
  212. package/dist/events/EventBus.js +177 -0
  213. package/dist/events/EventBus.js.map +1 -0
  214. package/dist/events/index.d.ts +3 -0
  215. package/dist/events/index.d.ts.map +1 -0
  216. package/dist/events/index.js +3 -0
  217. package/dist/events/index.js.map +1 -0
  218. package/dist/execution/ExecutionEngine.d.ts +220 -0
  219. package/dist/execution/ExecutionEngine.d.ts.map +1 -0
  220. package/dist/execution/ExecutionEngine.js +442 -0
  221. package/dist/execution/ExecutionEngine.js.map +1 -0
  222. package/dist/execution/ExecutionNode.d.ts +114 -0
  223. package/dist/execution/ExecutionNode.d.ts.map +1 -0
  224. package/dist/execution/ExecutionNode.js +99 -0
  225. package/dist/execution/ExecutionNode.js.map +1 -0
  226. package/dist/execution/ExecutionPlan.d.ts +133 -0
  227. package/dist/execution/ExecutionPlan.d.ts.map +1 -0
  228. package/dist/execution/ExecutionPlan.js +207 -0
  229. package/dist/execution/ExecutionPlan.js.map +1 -0
  230. package/dist/execution/StepExecutor.d.ts +204 -0
  231. package/dist/execution/StepExecutor.d.ts.map +1 -0
  232. package/dist/execution/StepExecutor.js +604 -0
  233. package/dist/execution/StepExecutor.js.map +1 -0
  234. package/dist/execution/WorkflowExecutor.d.ts +129 -0
  235. package/dist/execution/WorkflowExecutor.d.ts.map +1 -0
  236. package/dist/execution/WorkflowExecutor.js +347 -0
  237. package/dist/execution/WorkflowExecutor.js.map +1 -0
  238. package/dist/execution/drivers/AdapterDriver.d.ts +34 -0
  239. package/dist/execution/drivers/AdapterDriver.d.ts.map +1 -0
  240. package/dist/execution/drivers/AdapterDriver.js +63 -0
  241. package/dist/execution/drivers/AdapterDriver.js.map +1 -0
  242. package/dist/execution/drivers/DriverResolver.d.ts +91 -0
  243. package/dist/execution/drivers/DriverResolver.d.ts.map +1 -0
  244. package/dist/execution/drivers/DriverResolver.js +172 -0
  245. package/dist/execution/drivers/DriverResolver.js.map +1 -0
  246. package/dist/execution/drivers/ExecutionDriver.d.ts +127 -0
  247. package/dist/execution/drivers/ExecutionDriver.d.ts.map +1 -0
  248. package/dist/execution/drivers/ExecutionDriver.js +50 -0
  249. package/dist/execution/drivers/ExecutionDriver.js.map +1 -0
  250. package/dist/execution/drivers/index.d.ts +11 -0
  251. package/dist/execution/drivers/index.d.ts.map +1 -0
  252. package/dist/execution/drivers/index.js +11 -0
  253. package/dist/execution/drivers/index.js.map +1 -0
  254. package/dist/execution/index.d.ts +18 -0
  255. package/dist/execution/index.d.ts.map +1 -0
  256. package/dist/execution/index.js +19 -0
  257. package/dist/execution/index.js.map +1 -0
  258. package/dist/graph/CycleDetector.d.ts +90 -0
  259. package/dist/graph/CycleDetector.d.ts.map +1 -0
  260. package/dist/graph/CycleDetector.js +210 -0
  261. package/dist/graph/CycleDetector.js.map +1 -0
  262. package/dist/graph/DependencyGraph.d.ts +16 -0
  263. package/dist/graph/DependencyGraph.d.ts.map +1 -0
  264. package/dist/graph/DependencyGraph.js +16 -0
  265. package/dist/graph/DependencyGraph.js.map +1 -0
  266. package/dist/graph/DependencyResolver.d.ts +90 -0
  267. package/dist/graph/DependencyResolver.d.ts.map +1 -0
  268. package/dist/graph/DependencyResolver.js +159 -0
  269. package/dist/graph/DependencyResolver.js.map +1 -0
  270. package/dist/graph/TopologicalSorter.d.ts +104 -0
  271. package/dist/graph/TopologicalSorter.d.ts.map +1 -0
  272. package/dist/graph/TopologicalSorter.js +213 -0
  273. package/dist/graph/TopologicalSorter.js.map +1 -0
  274. package/dist/graph/index.d.ts +15 -0
  275. package/dist/graph/index.d.ts.map +1 -0
  276. package/dist/graph/index.js +15 -0
  277. package/dist/graph/index.js.map +1 -0
  278. package/dist/guards/ResourceGuard.d.ts +90 -0
  279. package/dist/guards/ResourceGuard.d.ts.map +1 -0
  280. package/dist/guards/ResourceGuard.js +177 -0
  281. package/dist/guards/ResourceGuard.js.map +1 -0
  282. package/dist/guards/StepGuard.d.ts +96 -0
  283. package/dist/guards/StepGuard.d.ts.map +1 -0
  284. package/dist/guards/StepGuard.js +184 -0
  285. package/dist/guards/StepGuard.js.map +1 -0
  286. package/dist/guards/WorkflowGuard.d.ts +71 -0
  287. package/dist/guards/WorkflowGuard.d.ts.map +1 -0
  288. package/dist/guards/WorkflowGuard.js +187 -0
  289. package/dist/guards/WorkflowGuard.js.map +1 -0
  290. package/dist/guards/index.d.ts +9 -0
  291. package/dist/guards/index.d.ts.map +1 -0
  292. package/dist/guards/index.js +9 -0
  293. package/dist/guards/index.js.map +1 -0
  294. package/dist/hooks/HookManager.d.ts +114 -0
  295. package/dist/hooks/HookManager.d.ts.map +1 -0
  296. package/dist/hooks/HookManager.js +187 -0
  297. package/dist/hooks/HookManager.js.map +1 -0
  298. package/dist/hooks/LifecycleHooks.d.ts +126 -0
  299. package/dist/hooks/LifecycleHooks.d.ts.map +1 -0
  300. package/dist/hooks/LifecycleHooks.js +23 -0
  301. package/dist/hooks/LifecycleHooks.js.map +1 -0
  302. package/dist/hooks/index.d.ts +3 -0
  303. package/dist/hooks/index.d.ts.map +1 -0
  304. package/dist/hooks/index.js +3 -0
  305. package/dist/hooks/index.js.map +1 -0
  306. package/dist/index.d.ts +30 -0
  307. package/dist/index.d.ts.map +1 -0
  308. package/dist/index.js +39 -0
  309. package/dist/index.js.map +1 -0
  310. package/dist/lifecycle/EngineLifecycle.d.ts +121 -0
  311. package/dist/lifecycle/EngineLifecycle.d.ts.map +1 -0
  312. package/dist/lifecycle/EngineLifecycle.js +209 -0
  313. package/dist/lifecycle/EngineLifecycle.js.map +1 -0
  314. package/dist/lifecycle/ShutdownManager.d.ts +44 -0
  315. package/dist/lifecycle/ShutdownManager.d.ts.map +1 -0
  316. package/dist/lifecycle/ShutdownManager.js +105 -0
  317. package/dist/lifecycle/ShutdownManager.js.map +1 -0
  318. package/dist/lifecycle/StartupManager.d.ts +45 -0
  319. package/dist/lifecycle/StartupManager.d.ts.map +1 -0
  320. package/dist/lifecycle/StartupManager.js +97 -0
  321. package/dist/lifecycle/StartupManager.js.map +1 -0
  322. package/dist/lifecycle/index.d.ts +9 -0
  323. package/dist/lifecycle/index.d.ts.map +1 -0
  324. package/dist/lifecycle/index.js +9 -0
  325. package/dist/lifecycle/index.js.map +1 -0
  326. package/dist/logging/LogLevel.d.ts +2 -0
  327. package/dist/logging/LogLevel.d.ts.map +1 -0
  328. package/dist/logging/LogLevel.js +2 -0
  329. package/dist/logging/LogLevel.js.map +1 -0
  330. package/dist/logging/Logger.d.ts +2 -0
  331. package/dist/logging/Logger.d.ts.map +1 -0
  332. package/dist/logging/Logger.js +2 -0
  333. package/dist/logging/Logger.js.map +1 -0
  334. package/dist/logging/index.d.ts +2 -0
  335. package/dist/logging/index.d.ts.map +1 -0
  336. package/dist/logging/index.js +4 -0
  337. package/dist/logging/index.js.map +1 -0
  338. package/dist/marketplace/PluginInstaller.d.ts +81 -0
  339. package/dist/marketplace/PluginInstaller.d.ts.map +1 -0
  340. package/dist/marketplace/PluginInstaller.js +89 -0
  341. package/dist/marketplace/PluginInstaller.js.map +1 -0
  342. package/dist/marketplace/PluginManifest.d.ts +74 -0
  343. package/dist/marketplace/PluginManifest.d.ts.map +1 -0
  344. package/dist/marketplace/PluginManifest.js +67 -0
  345. package/dist/marketplace/PluginManifest.js.map +1 -0
  346. package/dist/marketplace/PluginVerifier.d.ts +58 -0
  347. package/dist/marketplace/PluginVerifier.d.ts.map +1 -0
  348. package/dist/marketplace/PluginVerifier.js +93 -0
  349. package/dist/marketplace/PluginVerifier.js.map +1 -0
  350. package/dist/marketplace/index.d.ts +11 -0
  351. package/dist/marketplace/index.d.ts.map +1 -0
  352. package/dist/marketplace/index.js +11 -0
  353. package/dist/marketplace/index.js.map +1 -0
  354. package/dist/metrics/MetricsCollector.d.ts +2 -0
  355. package/dist/metrics/MetricsCollector.d.ts.map +1 -0
  356. package/dist/metrics/MetricsCollector.js +2 -0
  357. package/dist/metrics/MetricsCollector.js.map +1 -0
  358. package/dist/metrics/PerformanceTracker.d.ts +2 -0
  359. package/dist/metrics/PerformanceTracker.d.ts.map +1 -0
  360. package/dist/metrics/PerformanceTracker.js +2 -0
  361. package/dist/metrics/PerformanceTracker.js.map +1 -0
  362. package/dist/metrics/index.d.ts +2 -0
  363. package/dist/metrics/index.d.ts.map +1 -0
  364. package/dist/metrics/index.js +4 -0
  365. package/dist/metrics/index.js.map +1 -0
  366. package/dist/parser/SchemaValidator.d.ts +63 -0
  367. package/dist/parser/SchemaValidator.d.ts.map +1 -0
  368. package/dist/parser/SchemaValidator.js +212 -0
  369. package/dist/parser/SchemaValidator.js.map +1 -0
  370. package/dist/parser/StepParser.d.ts +124 -0
  371. package/dist/parser/StepParser.d.ts.map +1 -0
  372. package/dist/parser/StepParser.js +330 -0
  373. package/dist/parser/StepParser.js.map +1 -0
  374. package/dist/parser/WorkflowParser.d.ts +124 -0
  375. package/dist/parser/WorkflowParser.d.ts.map +1 -0
  376. package/dist/parser/WorkflowParser.js +141 -0
  377. package/dist/parser/WorkflowParser.js.map +1 -0
  378. package/dist/parser/index.d.ts +4 -0
  379. package/dist/parser/index.d.ts.map +1 -0
  380. package/dist/parser/index.js +4 -0
  381. package/dist/parser/index.js.map +1 -0
  382. package/dist/queue/InMemoryQueue.d.ts +97 -0
  383. package/dist/queue/InMemoryQueue.d.ts.map +1 -0
  384. package/dist/queue/InMemoryQueue.js +268 -0
  385. package/dist/queue/InMemoryQueue.js.map +1 -0
  386. package/dist/queue/JobQueue.d.ts +214 -0
  387. package/dist/queue/JobQueue.d.ts.map +1 -0
  388. package/dist/queue/JobQueue.js +46 -0
  389. package/dist/queue/JobQueue.js.map +1 -0
  390. package/dist/queue/index.d.ts +10 -0
  391. package/dist/queue/index.d.ts.map +1 -0
  392. package/dist/queue/index.js +10 -0
  393. package/dist/queue/index.js.map +1 -0
  394. package/dist/resolution/ActionRegistry.d.ts +2 -0
  395. package/dist/resolution/ActionRegistry.d.ts.map +1 -0
  396. package/dist/resolution/ActionRegistry.js +2 -0
  397. package/dist/resolution/ActionRegistry.js.map +1 -0
  398. package/dist/resolution/AdapterResolver.d.ts +2 -0
  399. package/dist/resolution/AdapterResolver.d.ts.map +1 -0
  400. package/dist/resolution/AdapterResolver.js +2 -0
  401. package/dist/resolution/AdapterResolver.js.map +1 -0
  402. package/dist/resolution/StepResolver.d.ts +2 -0
  403. package/dist/resolution/StepResolver.d.ts.map +1 -0
  404. package/dist/resolution/StepResolver.js +2 -0
  405. package/dist/resolution/StepResolver.js.map +1 -0
  406. package/dist/resolution/index.d.ts +2 -0
  407. package/dist/resolution/index.d.ts.map +1 -0
  408. package/dist/resolution/index.js +2 -0
  409. package/dist/resolution/index.js.map +1 -0
  410. package/dist/scheduling/CronScheduler.d.ts +143 -0
  411. package/dist/scheduling/CronScheduler.d.ts.map +1 -0
  412. package/dist/scheduling/CronScheduler.js +370 -0
  413. package/dist/scheduling/CronScheduler.js.map +1 -0
  414. package/dist/scheduling/JobScheduler.d.ts +82 -0
  415. package/dist/scheduling/JobScheduler.d.ts.map +1 -0
  416. package/dist/scheduling/JobScheduler.js +231 -0
  417. package/dist/scheduling/JobScheduler.js.map +1 -0
  418. package/dist/scheduling/ScheduleParser.d.ts +117 -0
  419. package/dist/scheduling/ScheduleParser.d.ts.map +1 -0
  420. package/dist/scheduling/ScheduleParser.js +257 -0
  421. package/dist/scheduling/ScheduleParser.js.map +1 -0
  422. package/dist/scheduling/ScheduleTypes.d.ts +153 -0
  423. package/dist/scheduling/ScheduleTypes.d.ts.map +1 -0
  424. package/dist/scheduling/ScheduleTypes.js +81 -0
  425. package/dist/scheduling/ScheduleTypes.js.map +1 -0
  426. package/dist/scheduling/Scheduler.d.ts +154 -0
  427. package/dist/scheduling/Scheduler.d.ts.map +1 -0
  428. package/dist/scheduling/Scheduler.js +304 -0
  429. package/dist/scheduling/Scheduler.js.map +1 -0
  430. package/dist/scheduling/index.d.ts +6 -0
  431. package/dist/scheduling/index.d.ts.map +1 -0
  432. package/dist/scheduling/index.js +6 -0
  433. package/dist/scheduling/index.js.map +1 -0
  434. package/dist/security/PermissionPolicy.d.ts +72 -0
  435. package/dist/security/PermissionPolicy.d.ts.map +1 -0
  436. package/dist/security/PermissionPolicy.js +87 -0
  437. package/dist/security/PermissionPolicy.js.map +1 -0
  438. package/dist/security/SandboxManager.d.ts +72 -0
  439. package/dist/security/SandboxManager.d.ts.map +1 -0
  440. package/dist/security/SandboxManager.js +78 -0
  441. package/dist/security/SandboxManager.js.map +1 -0
  442. package/dist/security/index.d.ts +10 -0
  443. package/dist/security/index.d.ts.map +1 -0
  444. package/dist/security/index.js +10 -0
  445. package/dist/security/index.js.map +1 -0
  446. package/dist/state/ExecutionState.d.ts +211 -0
  447. package/dist/state/ExecutionState.d.ts.map +1 -0
  448. package/dist/state/ExecutionState.js +256 -0
  449. package/dist/state/ExecutionState.js.map +1 -0
  450. package/dist/state/StateMachine.d.ts +120 -0
  451. package/dist/state/StateMachine.d.ts.map +1 -0
  452. package/dist/state/StateMachine.js +230 -0
  453. package/dist/state/StateMachine.js.map +1 -0
  454. package/dist/state/index.d.ts +16 -0
  455. package/dist/state/index.d.ts.map +1 -0
  456. package/dist/state/index.js +16 -0
  457. package/dist/state/index.js.map +1 -0
  458. package/dist/storage/ExecutionStore.d.ts +2 -0
  459. package/dist/storage/ExecutionStore.d.ts.map +1 -0
  460. package/dist/storage/ExecutionStore.js +2 -0
  461. package/dist/storage/ExecutionStore.js.map +1 -0
  462. package/dist/storage/ScheduleStore.d.ts +2 -0
  463. package/dist/storage/ScheduleStore.d.ts.map +1 -0
  464. package/dist/storage/ScheduleStore.js +2 -0
  465. package/dist/storage/ScheduleStore.js.map +1 -0
  466. package/dist/storage/WorkflowStore.d.ts +2 -0
  467. package/dist/storage/WorkflowStore.d.ts.map +1 -0
  468. package/dist/storage/WorkflowStore.js +2 -0
  469. package/dist/storage/WorkflowStore.js.map +1 -0
  470. package/dist/storage/index.d.ts +2 -0
  471. package/dist/storage/index.d.ts.map +1 -0
  472. package/dist/storage/index.js +5 -0
  473. package/dist/storage/index.js.map +1 -0
  474. package/dist/testing/EngineTestHarness.d.ts +117 -0
  475. package/dist/testing/EngineTestHarness.d.ts.map +1 -0
  476. package/dist/testing/EngineTestHarness.js +132 -0
  477. package/dist/testing/EngineTestHarness.js.map +1 -0
  478. package/dist/testing/MockAdapter.d.ts +93 -0
  479. package/dist/testing/MockAdapter.d.ts.map +1 -0
  480. package/dist/testing/MockAdapter.js +124 -0
  481. package/dist/testing/MockAdapter.js.map +1 -0
  482. package/dist/testing/index.d.ts +10 -0
  483. package/dist/testing/index.d.ts.map +1 -0
  484. package/dist/testing/index.js +10 -0
  485. package/dist/testing/index.js.map +1 -0
  486. package/dist/triggers/CronTrigger.d.ts +2 -0
  487. package/dist/triggers/CronTrigger.d.ts.map +1 -0
  488. package/dist/triggers/CronTrigger.js +2 -0
  489. package/dist/triggers/CronTrigger.js.map +1 -0
  490. package/dist/triggers/EventTrigger.d.ts +2 -0
  491. package/dist/triggers/EventTrigger.d.ts.map +1 -0
  492. package/dist/triggers/EventTrigger.js +2 -0
  493. package/dist/triggers/EventTrigger.js.map +1 -0
  494. package/dist/triggers/ManualTrigger.d.ts +2 -0
  495. package/dist/triggers/ManualTrigger.d.ts.map +1 -0
  496. package/dist/triggers/ManualTrigger.js +2 -0
  497. package/dist/triggers/ManualTrigger.js.map +1 -0
  498. package/dist/triggers/Trigger.d.ts +2 -0
  499. package/dist/triggers/Trigger.d.ts.map +1 -0
  500. package/dist/triggers/Trigger.js +2 -0
  501. package/dist/triggers/Trigger.js.map +1 -0
  502. package/dist/triggers/index.d.ts +2 -0
  503. package/dist/triggers/index.d.ts.map +1 -0
  504. package/dist/triggers/index.js +6 -0
  505. package/dist/triggers/index.js.map +1 -0
  506. package/dist/triggers/sources/FileWatcherTrigger.d.ts +2 -0
  507. package/dist/triggers/sources/FileWatcherTrigger.d.ts.map +1 -0
  508. package/dist/triggers/sources/FileWatcherTrigger.js +2 -0
  509. package/dist/triggers/sources/FileWatcherTrigger.js.map +1 -0
  510. package/dist/triggers/sources/MessageTrigger.d.ts +2 -0
  511. package/dist/triggers/sources/MessageTrigger.d.ts.map +1 -0
  512. package/dist/triggers/sources/MessageTrigger.js +2 -0
  513. package/dist/triggers/sources/MessageTrigger.js.map +1 -0
  514. package/dist/triggers/sources/WebhookListener.d.ts +2 -0
  515. package/dist/triggers/sources/WebhookListener.d.ts.map +1 -0
  516. package/dist/triggers/sources/WebhookListener.js +2 -0
  517. package/dist/triggers/sources/WebhookListener.js.map +1 -0
  518. package/dist/triggers/sources/index.d.ts +2 -0
  519. package/dist/triggers/sources/index.d.ts.map +1 -0
  520. package/dist/triggers/sources/index.js +2 -0
  521. package/dist/triggers/sources/index.js.map +1 -0
  522. package/dist/utils/deepMerge.d.ts +2 -0
  523. package/dist/utils/deepMerge.d.ts.map +1 -0
  524. package/dist/utils/deepMerge.js +2 -0
  525. package/dist/utils/deepMerge.js.map +1 -0
  526. package/dist/utils/id.d.ts +2 -0
  527. package/dist/utils/id.d.ts.map +1 -0
  528. package/dist/utils/id.js +2 -0
  529. package/dist/utils/id.js.map +1 -0
  530. package/dist/utils/index.d.ts +2 -0
  531. package/dist/utils/index.d.ts.map +1 -0
  532. package/dist/utils/index.js +6 -0
  533. package/dist/utils/index.js.map +1 -0
  534. package/dist/utils/safeExec.d.ts +2 -0
  535. package/dist/utils/safeExec.d.ts.map +1 -0
  536. package/dist/utils/safeExec.js +2 -0
  537. package/dist/utils/safeExec.js.map +1 -0
  538. package/dist/utils/time.d.ts +2 -0
  539. package/dist/utils/time.d.ts.map +1 -0
  540. package/dist/utils/time.js +2 -0
  541. package/dist/utils/time.js.map +1 -0
  542. package/dist/visualization/ExecutionGraphBuilder.d.ts +2 -0
  543. package/dist/visualization/ExecutionGraphBuilder.d.ts.map +1 -0
  544. package/dist/visualization/ExecutionGraphBuilder.js +2 -0
  545. package/dist/visualization/ExecutionGraphBuilder.js.map +1 -0
  546. package/dist/visualization/ExecutionTraceFormatter.d.ts +2 -0
  547. package/dist/visualization/ExecutionTraceFormatter.d.ts.map +1 -0
  548. package/dist/visualization/ExecutionTraceFormatter.js +2 -0
  549. package/dist/visualization/ExecutionTraceFormatter.js.map +1 -0
  550. package/dist/visualization/index.d.ts +2 -0
  551. package/dist/visualization/index.d.ts.map +1 -0
  552. package/dist/visualization/index.js +2 -0
  553. package/dist/visualization/index.js.map +1 -0
  554. package/dist/workflow/Step.d.ts +2 -0
  555. package/dist/workflow/Step.d.ts.map +1 -0
  556. package/dist/workflow/Step.js +2 -0
  557. package/dist/workflow/Step.js.map +1 -0
  558. package/dist/workflow/StepContext.d.ts +2 -0
  559. package/dist/workflow/StepContext.d.ts.map +1 -0
  560. package/dist/workflow/StepContext.js +2 -0
  561. package/dist/workflow/StepContext.js.map +1 -0
  562. package/dist/workflow/StepResult.d.ts +2 -0
  563. package/dist/workflow/StepResult.d.ts.map +1 -0
  564. package/dist/workflow/StepResult.js +2 -0
  565. package/dist/workflow/StepResult.js.map +1 -0
  566. package/dist/workflow/Workflow.d.ts +2 -0
  567. package/dist/workflow/Workflow.d.ts.map +1 -0
  568. package/dist/workflow/Workflow.js +2 -0
  569. package/dist/workflow/Workflow.js.map +1 -0
  570. package/dist/workflow/WorkflowRegistry.d.ts +2 -0
  571. package/dist/workflow/WorkflowRegistry.d.ts.map +1 -0
  572. package/dist/workflow/WorkflowRegistry.js +2 -0
  573. package/dist/workflow/WorkflowRegistry.js.map +1 -0
  574. package/dist/workflow/WorkflowState.d.ts +2 -0
  575. package/dist/workflow/WorkflowState.d.ts.map +1 -0
  576. package/dist/workflow/WorkflowState.js +2 -0
  577. package/dist/workflow/WorkflowState.js.map +1 -0
  578. package/dist/workflow/index.d.ts +2 -0
  579. package/dist/workflow/index.d.ts.map +1 -0
  580. package/dist/workflow/index.js +8 -0
  581. package/dist/workflow/index.js.map +1 -0
  582. package/package.json +47 -0
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Job Scheduler
3
+ *
4
+ * Worker-based job execution system using Node.js worker_threads.
5
+ * Handles parallel job processing with configurable worker pool.
6
+ *
7
+ * @module scheduling
8
+ */
9
+ import { Worker } from 'worker_threads';
10
+ import path from 'path';
11
+ import { fileURLToPath } from 'url';
12
+ import { JobPriority, createJob } from '../queue/JobQueue.js';
13
+ /**
14
+ * Job Scheduler
15
+ * Manages worker pool and job execution
16
+ */
17
+ export class JobScheduler {
18
+ workers = [];
19
+ jobQueue;
20
+ running = false;
21
+ processingInterval;
22
+ config;
23
+ constructor(jobQueue, config = {}) {
24
+ this.jobQueue = jobQueue;
25
+ this.config = {
26
+ workerCount: config.workerCount ?? 4,
27
+ maxConcurrent: config.maxConcurrent ?? 10,
28
+ workerScriptPath: config.workerScriptPath ?? this.getDefaultWorkerPath(),
29
+ };
30
+ }
31
+ /**
32
+ * Get default worker script path
33
+ */
34
+ getDefaultWorkerPath() {
35
+ // This will be the path to the default worker implementation
36
+ const __filename = fileURLToPath(import.meta.url);
37
+ const __dirname = path.dirname(__filename);
38
+ return path.join(__dirname, 'workers', 'workflow-worker.js');
39
+ }
40
+ /**
41
+ * Start the job scheduler
42
+ */
43
+ async start() {
44
+ if (this.running) {
45
+ throw new Error('JobScheduler is already running');
46
+ }
47
+ this.running = true;
48
+ // Initialize worker pool
49
+ for (let i = 0; i < this.config.workerCount; i++) {
50
+ this.createWorker(`worker_${i}`);
51
+ }
52
+ // Start processing loop
53
+ this.processingInterval = setInterval(() => this.processJobs(), 100 // Check every 100ms
54
+ );
55
+ }
56
+ /**
57
+ * Stop the job scheduler
58
+ */
59
+ async stop() {
60
+ if (!this.running) {
61
+ return;
62
+ }
63
+ this.running = false;
64
+ // Stop processing interval
65
+ if (this.processingInterval) {
66
+ clearInterval(this.processingInterval);
67
+ this.processingInterval = undefined;
68
+ }
69
+ // Terminate all workers
70
+ await Promise.all(this.workers.map(async (workerState) => {
71
+ await workerState.worker.terminate();
72
+ }));
73
+ this.workers = [];
74
+ }
75
+ /**
76
+ * Create a worker
77
+ */
78
+ createWorker(workerId) {
79
+ try {
80
+ const worker = new Worker(this.config.workerScriptPath, {
81
+ workerData: { workerId },
82
+ });
83
+ const workerState = {
84
+ id: workerId,
85
+ worker,
86
+ busy: false,
87
+ };
88
+ // Handle worker messages
89
+ worker.on('message', (message) => {
90
+ this.handleWorkerMessage(workerState, message);
91
+ });
92
+ // Handle worker errors
93
+ worker.on('error', (error) => {
94
+ console.error(`Worker ${workerId} error:`, error);
95
+ workerState.busy = false;
96
+ // Mark job as failed if there was one
97
+ if (workerState.currentJobId) {
98
+ this.jobQueue.markFailed(workerState.currentJobId, error);
99
+ workerState.currentJobId = undefined;
100
+ }
101
+ });
102
+ // Handle worker exit
103
+ worker.on('exit', (code) => {
104
+ if (code !== 0) {
105
+ console.error(`Worker ${workerId} exited with code ${code}`);
106
+ }
107
+ // Remove from workers array
108
+ const index = this.workers.findIndex(w => w.id === workerId);
109
+ if (index !== -1) {
110
+ this.workers.splice(index, 1);
111
+ }
112
+ // Recreate worker if scheduler is still running
113
+ if (this.running && this.workers.length < this.config.workerCount) {
114
+ this.createWorker(`worker_${Date.now()}`);
115
+ }
116
+ });
117
+ this.workers.push(workerState);
118
+ }
119
+ catch (error) {
120
+ console.error(`Failed to create worker ${workerId}:`, error);
121
+ }
122
+ }
123
+ /**
124
+ * Handle message from worker
125
+ */
126
+ handleWorkerMessage(workerState, message) {
127
+ switch (message.type) {
128
+ case 'ready':
129
+ workerState.busy = false;
130
+ workerState.currentJobId = undefined;
131
+ break;
132
+ case 'completed':
133
+ if (workerState.currentJobId) {
134
+ this.jobQueue.markCompleted(workerState.currentJobId, message.result);
135
+ }
136
+ workerState.busy = false;
137
+ workerState.currentJobId = undefined;
138
+ break;
139
+ case 'failed':
140
+ if (workerState.currentJobId) {
141
+ const error = new Error(message.error || 'Job execution failed');
142
+ this.jobQueue.markFailed(workerState.currentJobId, error);
143
+ }
144
+ workerState.busy = false;
145
+ workerState.currentJobId = undefined;
146
+ break;
147
+ case 'progress':
148
+ // Handle progress updates if needed
149
+ console.log(`Job ${workerState.currentJobId} progress:`, message.progress);
150
+ break;
151
+ default:
152
+ console.warn(`Unknown message type from worker: ${message.type}`);
153
+ }
154
+ }
155
+ /**
156
+ * Process pending jobs
157
+ */
158
+ async processJobs() {
159
+ if (!this.running) {
160
+ return;
161
+ }
162
+ // Find available workers
163
+ const availableWorkers = this.workers.filter(w => !w.busy);
164
+ if (availableWorkers.length === 0) {
165
+ return;
166
+ }
167
+ // Dequeue and assign jobs to available workers
168
+ for (const workerState of availableWorkers) {
169
+ const job = await this.jobQueue.dequeue();
170
+ if (!job) {
171
+ break; // No more jobs
172
+ }
173
+ // Assign job to worker
174
+ workerState.busy = true;
175
+ workerState.currentJobId = job.id;
176
+ // Send job to worker
177
+ workerState.worker.postMessage({
178
+ type: 'execute',
179
+ job: {
180
+ id: job.id,
181
+ workflowId: job.workflowId,
182
+ payload: job.payload,
183
+ metadata: job.metadata,
184
+ },
185
+ });
186
+ }
187
+ }
188
+ /**
189
+ * Enqueue a job for execution
190
+ */
191
+ async enqueueJob(workflowId, input, priority = JobPriority.NORMAL) {
192
+ const jobId = `job_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
193
+ const job = createJob({
194
+ id: jobId,
195
+ workflowId,
196
+ type: 'workflow',
197
+ payload: input || {},
198
+ priority,
199
+ });
200
+ await this.jobQueue.enqueue(job);
201
+ return jobId;
202
+ }
203
+ /**
204
+ * Get job status
205
+ */
206
+ async getJobStatus(jobId) {
207
+ return await this.jobQueue.getJob(jobId);
208
+ }
209
+ /**
210
+ * Get scheduler statistics
211
+ */
212
+ getStats() {
213
+ const queueStats = this.jobQueue.getStats();
214
+ return {
215
+ running: this.running,
216
+ workers: {
217
+ total: this.workers.length,
218
+ busy: this.workers.filter(w => w.busy).length,
219
+ idle: this.workers.filter(w => !w.busy).length,
220
+ },
221
+ queue: queueStats,
222
+ };
223
+ }
224
+ /**
225
+ * Check if scheduler is running
226
+ */
227
+ isRunning() {
228
+ return this.running;
229
+ }
230
+ }
231
+ //# sourceMappingURL=JobScheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobScheduler.js","sourceRoot":"","sources":["../../src/scheduling/JobScheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Schedule Parser
3
+ *
4
+ * Parses cron expressions and calculates next execution times.
5
+ * Uses node-cron package for robust cron expression handling.
6
+ *
7
+ * Format: ┌─────────────── second (optional, 0-59)
8
+ * │ ┌───────────── minute (0 - 59)
9
+ * │ │ ┌─────────── hour (0 - 23)
10
+ * │ │ │ ┌─────────── day of month (1 - 31)
11
+ * │ │ │ │ ┌───────── month (1 - 12)
12
+ * │ │ │ │ │ ┌─────── day of week (0 - 6) (Sunday = 0)
13
+ * * * * * * *
14
+ *
15
+ * @module scheduling
16
+ */
17
+ import type { ScheduledTask } from 'node-cron';
18
+ /**
19
+ * Schedule parser for cron expressions
20
+ */
21
+ export declare class ScheduleParser {
22
+ /**
23
+ * Validate cron expression using node-cron
24
+ *
25
+ * @param cronExpression - Cron expression to validate
26
+ * @returns True if valid
27
+ */
28
+ static isValidCron(cronExpression: string): boolean;
29
+ /**
30
+ * Calculate next run time from cron expression
31
+ * Uses a simple algorithm since node-cron doesn't provide getNextRunTime
32
+ *
33
+ * @param cronExpression - Cron expression
34
+ * @param from - Start time (default: now)
35
+ * @returns Next run time
36
+ */
37
+ static getNextRunTime(cronExpression: string, from?: Date): Date;
38
+ /**
39
+ * Find next matching time for cron fields
40
+ */
41
+ private static findNextMatch;
42
+ /**
43
+ * Check if value matches cron field
44
+ */
45
+ private static matchesField;
46
+ /**
47
+ * Get multiple future run times
48
+ *
49
+ * @param cronExpression - Cron expression
50
+ * @param count - Number of future times to get
51
+ * @param from - Start time
52
+ * @returns Array of future run times
53
+ */
54
+ static getNextRunTimes(cronExpression: string, count: number, from?: Date): Date[];
55
+ /**
56
+ * Parse interval string to milliseconds
57
+ * Supports: "5s", "10m", "2h", "1d"
58
+ *
59
+ * @param interval - Interval string
60
+ * @returns Milliseconds
61
+ */
62
+ static parseInterval(interval: string): number;
63
+ /**
64
+ * Calculate next run time for interval-based schedule
65
+ *
66
+ * @param intervalMs - Interval in milliseconds
67
+ * @param lastRun - Last run time
68
+ * @returns Next run time
69
+ */
70
+ static getNextIntervalTime(intervalMs: number, lastRun?: Date): Date;
71
+ /**
72
+ * Describe cron expression in human-readable format
73
+ *
74
+ * @param cronExpression - Cron expression
75
+ * @returns Human-readable description
76
+ */
77
+ static describeCron(cronExpression: string): string;
78
+ /**
79
+ * Create a scheduled task using node-cron
80
+ * Returns a scheduled task that can be started/stopped
81
+ *
82
+ * @param cronExpression - Cron expression
83
+ * @param callback - Function to call on schedule
84
+ * @param options - Cron task options
85
+ * @returns Scheduled task
86
+ */
87
+ static createScheduledTask(cronExpression: string, callback: () => void | Promise<void>, options?: {
88
+ timezone?: string;
89
+ name?: string;
90
+ noOverlap?: boolean;
91
+ maxExecutions?: number;
92
+ }): ScheduledTask;
93
+ }
94
+ /**
95
+ * Common cron expressions
96
+ */
97
+ export declare const CommonCronExpressions: {
98
+ /** Every minute */
99
+ readonly EVERY_MINUTE: "* * * * *";
100
+ /** Every 5 minutes */
101
+ readonly EVERY_5_MINUTES: "*/5 * * * *";
102
+ /** Every 15 minutes */
103
+ readonly EVERY_15_MINUTES: "*/15 * * * *";
104
+ /** Every 30 minutes */
105
+ readonly EVERY_30_MINUTES: "*/30 * * * *";
106
+ /** Every hour */
107
+ readonly EVERY_HOUR: "0 * * * *";
108
+ /** Every day at midnight */
109
+ readonly DAILY: "0 0 * * *";
110
+ /** Every day at noon */
111
+ readonly DAILY_NOON: "0 12 * * *";
112
+ /** Every week on Sunday at midnight */
113
+ readonly WEEKLY: "0 0 * * 0";
114
+ /** Every month on the 1st at midnight */
115
+ readonly MONTHLY: "0 0 1 * *";
116
+ };
117
+ //# sourceMappingURL=ScheduleParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleParser.d.ts","sourceRoot":"","sources":["../../src/scheduling/ScheduleParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;GAEG;AACH,qBAAa,cAAc;IACzB;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAInD;;;;;;;OAOG;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI;IAmB5E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAwC5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IA6C3B;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CACpB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,IAAiB,GACtB,IAAI,EAAE;IAYT;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IA4B9C;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI;IAKpE;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAyBnD;;;;;;;;OAQG;IACH,MAAM,CAAC,mBAAmB,CACxB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACpC,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GACA,aAAa;CASjB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,mBAAmB;;IAGnB,sBAAsB;;IAGtB,uBAAuB;;IAGvB,uBAAuB;;IAGvB,iBAAiB;;IAGjB,4BAA4B;;IAG5B,wBAAwB;;IAGxB,uCAAuC;;IAGvC,yCAAyC;;CAEjC,CAAC"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Schedule Parser
3
+ *
4
+ * Parses cron expressions and calculates next execution times.
5
+ * Uses node-cron package for robust cron expression handling.
6
+ *
7
+ * Format: ┌─────────────── second (optional, 0-59)
8
+ * │ ┌───────────── minute (0 - 59)
9
+ * │ │ ┌─────────── hour (0 - 23)
10
+ * │ │ │ ┌─────────── day of month (1 - 31)
11
+ * │ │ │ │ ┌───────── month (1 - 12)
12
+ * │ │ │ │ │ ┌─────── day of week (0 - 6) (Sunday = 0)
13
+ * * * * * * *
14
+ *
15
+ * @module scheduling
16
+ */
17
+ import cron from 'node-cron';
18
+ /**
19
+ * Schedule parser for cron expressions
20
+ */
21
+ export class ScheduleParser {
22
+ /**
23
+ * Validate cron expression using node-cron
24
+ *
25
+ * @param cronExpression - Cron expression to validate
26
+ * @returns True if valid
27
+ */
28
+ static isValidCron(cronExpression) {
29
+ return cron.validate(cronExpression);
30
+ }
31
+ /**
32
+ * Calculate next run time from cron expression
33
+ * Uses a simple algorithm since node-cron doesn't provide getNextRunTime
34
+ *
35
+ * @param cronExpression - Cron expression
36
+ * @param from - Start time (default: now)
37
+ * @returns Next run time
38
+ */
39
+ static getNextRunTime(cronExpression, from = new Date()) {
40
+ if (!this.isValidCron(cronExpression)) {
41
+ throw new Error(`Invalid cron expression: "${cronExpression}"`);
42
+ }
43
+ // Parse cron expression (minute hour day month weekday)
44
+ const parts = cronExpression.trim().split(/\s+/);
45
+ // node-cron supports both 5-field and 6-field (with seconds) formats
46
+ // Normalize to 5 fields for our calculation
47
+ const fields = parts.length === 6 ? parts.slice(1) : parts;
48
+ if (fields.length !== 5) {
49
+ throw new Error(`Invalid cron expression format: "${cronExpression}"`);
50
+ }
51
+ return this.findNextMatch(fields, from);
52
+ }
53
+ /**
54
+ * Find next matching time for cron fields
55
+ */
56
+ static findNextMatch(fields, from) {
57
+ const [minuteField, hourField, dayField, monthField, weekdayField] = fields;
58
+ // Start from the next minute
59
+ const next = new Date(from);
60
+ next.setSeconds(0);
61
+ next.setMilliseconds(0);
62
+ next.setMinutes(next.getMinutes() + 1);
63
+ // Maximum iterations to prevent infinite loop
64
+ const maxIterations = 366 * 24 * 60; // 1 year in minutes
65
+ let iterations = 0;
66
+ while (iterations < maxIterations) {
67
+ iterations++;
68
+ const minute = next.getMinutes();
69
+ const hour = next.getHours();
70
+ const dayOfMonth = next.getDate();
71
+ const month = next.getMonth() + 1; // JS months are 0-indexed
72
+ const dayOfWeek = next.getDay();
73
+ // Check if current time matches all fields
74
+ if (this.matchesField(minute, minuteField, 0, 59) &&
75
+ this.matchesField(hour, hourField, 0, 23) &&
76
+ this.matchesField(dayOfMonth, dayField, 1, 31) &&
77
+ this.matchesField(month, monthField, 1, 12) &&
78
+ this.matchesField(dayOfWeek, weekdayField, 0, 6)) {
79
+ return next;
80
+ }
81
+ // Advance to next minute
82
+ next.setMinutes(next.getMinutes() + 1);
83
+ }
84
+ throw new Error('Could not find next run time (searched 1 year ahead)');
85
+ }
86
+ /**
87
+ * Check if value matches cron field
88
+ */
89
+ static matchesField(value, field, min, _max) {
90
+ // Wildcard matches everything
91
+ if (field === '*') {
92
+ return true;
93
+ }
94
+ // Split by comma for multiple values
95
+ const parts = field.split(',');
96
+ for (const part of parts) {
97
+ // Handle range (e.g., "1-5")
98
+ if (part.includes('-') && !part.includes('/')) {
99
+ const [start, end] = part.split('-').map(Number);
100
+ if (value >= start && value <= end) {
101
+ return true;
102
+ }
103
+ }
104
+ // Handle step (e.g., "*/5" or "10-20/2")
105
+ else if (part.includes('/')) {
106
+ const [range, step] = part.split('/');
107
+ const stepNum = Number(step);
108
+ if (range === '*') {
109
+ if ((value - min) % stepNum === 0) {
110
+ return true;
111
+ }
112
+ }
113
+ else if (range.includes('-')) {
114
+ const [start, end] = range.split('-').map(Number);
115
+ if (value >= start && value <= end && (value - start) % stepNum === 0) {
116
+ return true;
117
+ }
118
+ }
119
+ }
120
+ // Handle single value
121
+ else {
122
+ const fieldValue = Number(part);
123
+ if (value === fieldValue) {
124
+ return true;
125
+ }
126
+ }
127
+ }
128
+ return false;
129
+ }
130
+ /**
131
+ * Get multiple future run times
132
+ *
133
+ * @param cronExpression - Cron expression
134
+ * @param count - Number of future times to get
135
+ * @param from - Start time
136
+ * @returns Array of future run times
137
+ */
138
+ static getNextRunTimes(cronExpression, count, from = new Date()) {
139
+ const times = [];
140
+ let current = from;
141
+ for (let i = 0; i < count; i++) {
142
+ current = this.getNextRunTime(cronExpression, current);
143
+ times.push(new Date(current));
144
+ }
145
+ return times;
146
+ }
147
+ /**
148
+ * Parse interval string to milliseconds
149
+ * Supports: "5s", "10m", "2h", "1d"
150
+ *
151
+ * @param interval - Interval string
152
+ * @returns Milliseconds
153
+ */
154
+ static parseInterval(interval) {
155
+ const match = /^(\d+)(ms|s|m|h|d)$/.exec(interval.trim());
156
+ if (!match) {
157
+ throw new Error(`Invalid interval format: "${interval}". Expected: "5s", "10m", "2h", "1d"`);
158
+ }
159
+ const value = parseInt(match[1], 10);
160
+ const unit = match[2];
161
+ switch (unit) {
162
+ case 'ms':
163
+ return value;
164
+ case 's':
165
+ return value * 1000;
166
+ case 'm':
167
+ return value * 60 * 1000;
168
+ case 'h':
169
+ return value * 60 * 60 * 1000;
170
+ case 'd':
171
+ return value * 24 * 60 * 60 * 1000;
172
+ default:
173
+ throw new Error(`Unknown time unit: ${unit}`);
174
+ }
175
+ }
176
+ /**
177
+ * Calculate next run time for interval-based schedule
178
+ *
179
+ * @param intervalMs - Interval in milliseconds
180
+ * @param lastRun - Last run time
181
+ * @returns Next run time
182
+ */
183
+ static getNextIntervalTime(intervalMs, lastRun) {
184
+ const base = lastRun || new Date();
185
+ return new Date(base.getTime() + intervalMs);
186
+ }
187
+ /**
188
+ * Describe cron expression in human-readable format
189
+ *
190
+ * @param cronExpression - Cron expression
191
+ * @returns Human-readable description
192
+ */
193
+ static describeCron(cronExpression) {
194
+ if (!this.isValidCron(cronExpression)) {
195
+ return 'Invalid cron expression';
196
+ }
197
+ // Handle common patterns
198
+ if (cronExpression === '* * * * *') {
199
+ return 'Every minute';
200
+ }
201
+ if (cronExpression === '0 * * * *') {
202
+ return 'Every hour';
203
+ }
204
+ if (cronExpression === '0 0 * * *') {
205
+ return 'Every day at midnight';
206
+ }
207
+ if (cronExpression === '0 0 * * 0') {
208
+ return 'Every Sunday at midnight';
209
+ }
210
+ if (cronExpression === '0 0 1 * *') {
211
+ return 'Monthly on the 1st at midnight';
212
+ }
213
+ return `Cron schedule: ${cronExpression}`;
214
+ }
215
+ /**
216
+ * Create a scheduled task using node-cron
217
+ * Returns a scheduled task that can be started/stopped
218
+ *
219
+ * @param cronExpression - Cron expression
220
+ * @param callback - Function to call on schedule
221
+ * @param options - Cron task options
222
+ * @returns Scheduled task
223
+ */
224
+ static createScheduledTask(cronExpression, callback, options) {
225
+ const task = cron.schedule(cronExpression, callback, {
226
+ timezone: options?.timezone,
227
+ name: options?.name,
228
+ noOverlap: options?.noOverlap,
229
+ maxExecutions: options?.maxExecutions,
230
+ });
231
+ return task;
232
+ }
233
+ }
234
+ /**
235
+ * Common cron expressions
236
+ */
237
+ export const CommonCronExpressions = {
238
+ /** Every minute */
239
+ EVERY_MINUTE: '* * * * *',
240
+ /** Every 5 minutes */
241
+ EVERY_5_MINUTES: '*/5 * * * *',
242
+ /** Every 15 minutes */
243
+ EVERY_15_MINUTES: '*/15 * * * *',
244
+ /** Every 30 minutes */
245
+ EVERY_30_MINUTES: '*/30 * * * *',
246
+ /** Every hour */
247
+ EVERY_HOUR: '0 * * * *',
248
+ /** Every day at midnight */
249
+ DAILY: '0 0 * * *',
250
+ /** Every day at noon */
251
+ DAILY_NOON: '0 12 * * *',
252
+ /** Every week on Sunday at midnight */
253
+ WEEKLY: '0 0 * * 0',
254
+ /** Every month on the 1st at midnight */
255
+ MONTHLY: '0 0 1 * *',
256
+ };
257
+ //# sourceMappingURL=ScheduleParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleParser.js","sourceRoot":"","sources":["../../src/scheduling/ScheduleParser.ts"],"names":[],"mappings":"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"}