@solidxai/core 0.1.13-beta.0 → 0.1.13-beta.2

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 (419) hide show
  1. package/dist/controllers/workflow-definition.controller.d.ts +38 -0
  2. package/dist/controllers/workflow-definition.controller.d.ts.map +1 -0
  3. package/dist/controllers/workflow-definition.controller.js +272 -0
  4. package/dist/controllers/workflow-definition.controller.js.map +1 -0
  5. package/dist/controllers/workflow-execution-artifact.controller.d.ts +24 -0
  6. package/dist/controllers/workflow-execution-artifact.controller.d.ts.map +1 -0
  7. package/dist/controllers/workflow-execution-artifact.controller.js +179 -0
  8. package/dist/controllers/workflow-execution-artifact.controller.js.map +1 -0
  9. package/dist/controllers/workflow-execution-log.controller.d.ts +24 -0
  10. package/dist/controllers/workflow-execution-log.controller.d.ts.map +1 -0
  11. package/dist/controllers/workflow-execution-log.controller.js +179 -0
  12. package/dist/controllers/workflow-execution-log.controller.js.map +1 -0
  13. package/dist/controllers/workflow-execution.controller.d.ts +29 -0
  14. package/dist/controllers/workflow-execution.controller.d.ts.map +1 -0
  15. package/dist/controllers/workflow-execution.controller.js +227 -0
  16. package/dist/controllers/workflow-execution.controller.js.map +1 -0
  17. package/dist/controllers/workflow-secret.controller.d.ts +24 -0
  18. package/dist/controllers/workflow-secret.controller.d.ts.map +1 -0
  19. package/dist/controllers/workflow-secret.controller.js +179 -0
  20. package/dist/controllers/workflow-secret.controller.js.map +1 -0
  21. package/dist/controllers/workflow-step-execution.controller.d.ts +24 -0
  22. package/dist/controllers/workflow-step-execution.controller.d.ts.map +1 -0
  23. package/dist/controllers/workflow-step-execution.controller.js +179 -0
  24. package/dist/controllers/workflow-step-execution.controller.js.map +1 -0
  25. package/dist/controllers/workflow-trigger-execution.controller.d.ts +24 -0
  26. package/dist/controllers/workflow-trigger-execution.controller.d.ts.map +1 -0
  27. package/dist/controllers/workflow-trigger-execution.controller.js +179 -0
  28. package/dist/controllers/workflow-trigger-execution.controller.js.map +1 -0
  29. package/dist/decorators/workflow-node-provider.decorator.d.ts +4 -0
  30. package/dist/decorators/workflow-node-provider.decorator.d.ts.map +1 -0
  31. package/dist/decorators/workflow-node-provider.decorator.js +13 -0
  32. package/dist/decorators/workflow-node-provider.decorator.js.map +1 -0
  33. package/dist/dtos/create-workflow-definition.dto.d.ts +14 -0
  34. package/dist/dtos/create-workflow-definition.dto.d.ts.map +1 -0
  35. package/dist/dtos/create-workflow-definition.dto.js +92 -0
  36. package/dist/dtos/create-workflow-definition.dto.js.map +1 -0
  37. package/dist/dtos/create-workflow-execution-artifact.dto.d.ts +22 -0
  38. package/dist/dtos/create-workflow-execution-artifact.dto.d.ts.map +1 -0
  39. package/dist/dtos/create-workflow-execution-artifact.dto.js +139 -0
  40. package/dist/dtos/create-workflow-execution-artifact.dto.js.map +1 -0
  41. package/dist/dtos/create-workflow-execution-log.dto.d.ts +18 -0
  42. package/dist/dtos/create-workflow-execution-log.dto.d.ts.map +1 -0
  43. package/dist/dtos/create-workflow-execution-log.dto.js +116 -0
  44. package/dist/dtos/create-workflow-execution-log.dto.js.map +1 -0
  45. package/dist/dtos/create-workflow-execution.dto.d.ts +33 -0
  46. package/dist/dtos/create-workflow-execution.dto.d.ts.map +1 -0
  47. package/dist/dtos/create-workflow-execution.dto.js +186 -0
  48. package/dist/dtos/create-workflow-execution.dto.js.map +1 -0
  49. package/dist/dtos/create-workflow-secret.dto.d.ts +11 -0
  50. package/dist/dtos/create-workflow-secret.dto.d.ts.map +1 -0
  51. package/dist/dtos/create-workflow-secret.dto.js +74 -0
  52. package/dist/dtos/create-workflow-secret.dto.js.map +1 -0
  53. package/dist/dtos/create-workflow-step-execution.dto.d.ts +27 -0
  54. package/dist/dtos/create-workflow-step-execution.dto.d.ts.map +1 -0
  55. package/dist/dtos/create-workflow-step-execution.dto.js +171 -0
  56. package/dist/dtos/create-workflow-step-execution.dto.js.map +1 -0
  57. package/dist/dtos/create-workflow-trigger-execution.dto.d.ts +25 -0
  58. package/dist/dtos/create-workflow-trigger-execution.dto.d.ts.map +1 -0
  59. package/dist/dtos/create-workflow-trigger-execution.dto.js +158 -0
  60. package/dist/dtos/create-workflow-trigger-execution.dto.js.map +1 -0
  61. package/dist/dtos/execute-workflow.dto.d.ts +7 -0
  62. package/dist/dtos/execute-workflow.dto.d.ts.map +1 -0
  63. package/dist/dtos/execute-workflow.dto.js +11 -0
  64. package/dist/dtos/execute-workflow.dto.js.map +1 -0
  65. package/dist/dtos/update-workflow-definition.dto.d.ts +15 -0
  66. package/dist/dtos/update-workflow-definition.dto.d.ts.map +1 -0
  67. package/dist/dtos/update-workflow-definition.dto.js +97 -0
  68. package/dist/dtos/update-workflow-definition.dto.js.map +1 -0
  69. package/dist/dtos/update-workflow-execution-artifact.dto.d.ts +23 -0
  70. package/dist/dtos/update-workflow-execution-artifact.dto.d.ts.map +1 -0
  71. package/dist/dtos/update-workflow-execution-artifact.dto.js +143 -0
  72. package/dist/dtos/update-workflow-execution-artifact.dto.js.map +1 -0
  73. package/dist/dtos/update-workflow-execution-log.dto.d.ts +19 -0
  74. package/dist/dtos/update-workflow-execution-log.dto.d.ts.map +1 -0
  75. package/dist/dtos/update-workflow-execution-log.dto.js +121 -0
  76. package/dist/dtos/update-workflow-execution-log.dto.js.map +1 -0
  77. package/dist/dtos/update-workflow-execution.dto.d.ts +34 -0
  78. package/dist/dtos/update-workflow-execution.dto.d.ts.map +1 -0
  79. package/dist/dtos/update-workflow-execution.dto.js +190 -0
  80. package/dist/dtos/update-workflow-execution.dto.js.map +1 -0
  81. package/dist/dtos/update-workflow-secret.dto.d.ts +12 -0
  82. package/dist/dtos/update-workflow-secret.dto.d.ts.map +1 -0
  83. package/dist/dtos/update-workflow-secret.dto.js +80 -0
  84. package/dist/dtos/update-workflow-secret.dto.js.map +1 -0
  85. package/dist/dtos/update-workflow-step-execution.dto.d.ts +28 -0
  86. package/dist/dtos/update-workflow-step-execution.dto.d.ts.map +1 -0
  87. package/dist/dtos/update-workflow-step-execution.dto.js +175 -0
  88. package/dist/dtos/update-workflow-step-execution.dto.js.map +1 -0
  89. package/dist/dtos/update-workflow-trigger-execution.dto.d.ts +26 -0
  90. package/dist/dtos/update-workflow-trigger-execution.dto.d.ts.map +1 -0
  91. package/dist/dtos/update-workflow-trigger-execution.dto.js +163 -0
  92. package/dist/dtos/update-workflow-trigger-execution.dto.js.map +1 -0
  93. package/dist/dtos/validate-workflow-definition.dto.d.ts +4 -0
  94. package/dist/dtos/validate-workflow-definition.dto.d.ts.map +1 -0
  95. package/dist/dtos/validate-workflow-definition.dto.js +11 -0
  96. package/dist/dtos/validate-workflow-definition.dto.js.map +1 -0
  97. package/dist/entities/saved-filters.entity.js +3 -3
  98. package/dist/entities/saved-filters.entity.js.map +1 -1
  99. package/dist/entities/workflow-definition.entity.d.ts +15 -0
  100. package/dist/entities/workflow-definition.entity.d.ts.map +1 -0
  101. package/dist/entities/workflow-definition.entity.js +77 -0
  102. package/dist/entities/workflow-definition.entity.js.map +1 -0
  103. package/dist/entities/workflow-execution-artifact.entity.d.ts +23 -0
  104. package/dist/entities/workflow-execution-artifact.entity.d.ts.map +1 -0
  105. package/dist/entities/workflow-execution-artifact.entity.js +113 -0
  106. package/dist/entities/workflow-execution-artifact.entity.js.map +1 -0
  107. package/dist/entities/workflow-execution-log.entity.d.ts +19 -0
  108. package/dist/entities/workflow-execution-log.entity.d.ts.map +1 -0
  109. package/dist/entities/workflow-execution-log.entity.js +95 -0
  110. package/dist/entities/workflow-execution-log.entity.js.map +1 -0
  111. package/dist/entities/workflow-execution.entity.d.ts +28 -0
  112. package/dist/entities/workflow-execution.entity.d.ts.map +1 -0
  113. package/dist/entities/workflow-execution.entity.js +124 -0
  114. package/dist/entities/workflow-execution.entity.js.map +1 -0
  115. package/dist/entities/workflow-secret.entity.d.ts +12 -0
  116. package/dist/entities/workflow-secret.entity.d.ts.map +1 -0
  117. package/dist/entities/workflow-secret.entity.js +66 -0
  118. package/dist/entities/workflow-secret.entity.js.map +1 -0
  119. package/dist/entities/workflow-step-execution.entity.d.ts +28 -0
  120. package/dist/entities/workflow-step-execution.entity.d.ts.map +1 -0
  121. package/dist/entities/workflow-step-execution.entity.js +138 -0
  122. package/dist/entities/workflow-step-execution.entity.js.map +1 -0
  123. package/dist/entities/workflow-trigger-execution.entity.d.ts +26 -0
  124. package/dist/entities/workflow-trigger-execution.entity.d.ts.map +1 -0
  125. package/dist/entities/workflow-trigger-execution.entity.js +127 -0
  126. package/dist/entities/workflow-trigger-execution.entity.js.map +1 -0
  127. package/dist/factories/sms.factory.d.ts.map +1 -1
  128. package/dist/factories/sms.factory.js +4 -1
  129. package/dist/factories/sms.factory.js.map +1 -1
  130. package/dist/index.d.ts +54 -0
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +54 -0
  133. package/dist/index.js.map +1 -1
  134. package/dist/interfaces/workflow-node-handler.interface.d.ts +5 -0
  135. package/dist/interfaces/workflow-node-handler.interface.d.ts.map +1 -0
  136. package/dist/interfaces/workflow-node-handler.interface.js +3 -0
  137. package/dist/interfaces/workflow-node-handler.interface.js.map +1 -0
  138. package/dist/jobs/database/workflow-execution-publisher-database.service.d.ts +12 -0
  139. package/dist/jobs/database/workflow-execution-publisher-database.service.d.ts.map +1 -0
  140. package/dist/jobs/database/workflow-execution-publisher-database.service.js +39 -0
  141. package/dist/jobs/database/workflow-execution-publisher-database.service.js.map +1 -0
  142. package/dist/jobs/database/workflow-execution-queue-options-database.d.ts +8 -0
  143. package/dist/jobs/database/workflow-execution-queue-options-database.d.ts.map +1 -0
  144. package/dist/jobs/database/workflow-execution-queue-options-database.js +10 -0
  145. package/dist/jobs/database/workflow-execution-queue-options-database.js.map +1 -0
  146. package/dist/jobs/database/workflow-execution-subscriber-database.service.d.ts +19 -0
  147. package/dist/jobs/database/workflow-execution-subscriber-database.service.d.ts.map +1 -0
  148. package/dist/jobs/database/workflow-execution-subscriber-database.service.js +55 -0
  149. package/dist/jobs/database/workflow-execution-subscriber-database.service.js.map +1 -0
  150. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.d.ts +12 -0
  151. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.d.ts.map +1 -0
  152. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.js +39 -0
  153. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.js.map +1 -0
  154. package/dist/jobs/rabbitmq/workflow-execution-queue-options.d.ts +8 -0
  155. package/dist/jobs/rabbitmq/workflow-execution-queue-options.d.ts.map +1 -0
  156. package/dist/jobs/rabbitmq/workflow-execution-queue-options.js +10 -0
  157. package/dist/jobs/rabbitmq/workflow-execution-queue-options.js.map +1 -0
  158. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.d.ts +17 -0
  159. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.d.ts.map +1 -0
  160. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.js +52 -0
  161. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.js.map +1 -0
  162. package/dist/jobs/redis/workflow-execution-publisher-redis.service.d.ts +12 -0
  163. package/dist/jobs/redis/workflow-execution-publisher-redis.service.d.ts.map +1 -0
  164. package/dist/jobs/redis/workflow-execution-publisher-redis.service.js +39 -0
  165. package/dist/jobs/redis/workflow-execution-publisher-redis.service.js.map +1 -0
  166. package/dist/jobs/redis/workflow-execution-queue-options-redis.d.ts +8 -0
  167. package/dist/jobs/redis/workflow-execution-queue-options-redis.d.ts.map +1 -0
  168. package/dist/jobs/redis/workflow-execution-queue-options-redis.js +10 -0
  169. package/dist/jobs/redis/workflow-execution-queue-options-redis.js.map +1 -0
  170. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.d.ts +17 -0
  171. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.d.ts.map +1 -0
  172. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.js +52 -0
  173. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.js.map +1 -0
  174. package/dist/repository/workflow-definition.repository.d.ts +12 -0
  175. package/dist/repository/workflow-definition.repository.d.ts.map +1 -0
  176. package/dist/repository/workflow-definition.repository.js +39 -0
  177. package/dist/repository/workflow-definition.repository.js.map +1 -0
  178. package/dist/repository/workflow-execution-artifact.repository.d.ts +12 -0
  179. package/dist/repository/workflow-execution-artifact.repository.d.ts.map +1 -0
  180. package/dist/repository/workflow-execution-artifact.repository.js +39 -0
  181. package/dist/repository/workflow-execution-artifact.repository.js.map +1 -0
  182. package/dist/repository/workflow-execution-log.repository.d.ts +12 -0
  183. package/dist/repository/workflow-execution-log.repository.d.ts.map +1 -0
  184. package/dist/repository/workflow-execution-log.repository.js +39 -0
  185. package/dist/repository/workflow-execution-log.repository.js.map +1 -0
  186. package/dist/repository/workflow-execution.repository.d.ts +12 -0
  187. package/dist/repository/workflow-execution.repository.d.ts.map +1 -0
  188. package/dist/repository/workflow-execution.repository.js +39 -0
  189. package/dist/repository/workflow-execution.repository.js.map +1 -0
  190. package/dist/repository/workflow-secret.repository.d.ts +12 -0
  191. package/dist/repository/workflow-secret.repository.d.ts.map +1 -0
  192. package/dist/repository/workflow-secret.repository.js +39 -0
  193. package/dist/repository/workflow-secret.repository.js.map +1 -0
  194. package/dist/repository/workflow-step-execution.repository.d.ts +12 -0
  195. package/dist/repository/workflow-step-execution.repository.d.ts.map +1 -0
  196. package/dist/repository/workflow-step-execution.repository.js +39 -0
  197. package/dist/repository/workflow-step-execution.repository.js.map +1 -0
  198. package/dist/repository/workflow-trigger-execution.repository.d.ts +12 -0
  199. package/dist/repository/workflow-trigger-execution.repository.d.ts.map +1 -0
  200. package/dist/repository/workflow-trigger-execution.repository.js +39 -0
  201. package/dist/repository/workflow-trigger-execution.repository.js.map +1 -0
  202. package/dist/seeders/module-metadata-seeder.service.d.ts +6 -0
  203. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  204. package/dist/seeders/module-metadata-seeder.service.js +141 -0
  205. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  206. package/dist/seeders/seed-data/solid-core-metadata.json +11437 -5567
  207. package/dist/services/workflow/nodes/for-each.node.d.ts +6 -0
  208. package/dist/services/workflow/nodes/for-each.node.d.ts.map +1 -0
  209. package/dist/services/workflow/nodes/for-each.node.js +95 -0
  210. package/dist/services/workflow/nodes/for-each.node.js.map +1 -0
  211. package/dist/services/workflow/nodes/http-request.node.d.ts +13 -0
  212. package/dist/services/workflow/nodes/http-request.node.d.ts.map +1 -0
  213. package/dist/services/workflow/nodes/http-request.node.js +549 -0
  214. package/dist/services/workflow/nodes/http-request.node.js.map +1 -0
  215. package/dist/services/workflow/nodes/if.node.d.ts +6 -0
  216. package/dist/services/workflow/nodes/if.node.d.ts.map +1 -0
  217. package/dist/services/workflow/nodes/if.node.js +93 -0
  218. package/dist/services/workflow/nodes/if.node.js.map +1 -0
  219. package/dist/services/workflow/nodes/log-write.node.d.ts +6 -0
  220. package/dist/services/workflow/nodes/log-write.node.d.ts.map +1 -0
  221. package/dist/services/workflow/nodes/log-write.node.js +229 -0
  222. package/dist/services/workflow/nodes/log-write.node.js.map +1 -0
  223. package/dist/services/workflow/nodes/parallel.node.d.ts +6 -0
  224. package/dist/services/workflow/nodes/parallel.node.d.ts.map +1 -0
  225. package/dist/services/workflow/nodes/parallel.node.js +76 -0
  226. package/dist/services/workflow/nodes/parallel.node.js.map +1 -0
  227. package/dist/services/workflow/nodes/runtime-python.node.d.ts +13 -0
  228. package/dist/services/workflow/nodes/runtime-python.node.d.ts.map +1 -0
  229. package/dist/services/workflow/nodes/runtime-python.node.js +522 -0
  230. package/dist/services/workflow/nodes/runtime-python.node.js.map +1 -0
  231. package/dist/services/workflow/nodes/sequential.node.d.ts +6 -0
  232. package/dist/services/workflow/nodes/sequential.node.d.ts.map +1 -0
  233. package/dist/services/workflow/nodes/sequential.node.js +61 -0
  234. package/dist/services/workflow/nodes/sequential.node.js.map +1 -0
  235. package/dist/services/workflow/nodes/solidx-api.helpers.d.ts +25 -0
  236. package/dist/services/workflow/nodes/solidx-api.helpers.d.ts.map +1 -0
  237. package/dist/services/workflow/nodes/solidx-api.helpers.js +143 -0
  238. package/dist/services/workflow/nodes/solidx-api.helpers.js.map +1 -0
  239. package/dist/services/workflow/nodes/solidx-crud.nodes.d.ts +48 -0
  240. package/dist/services/workflow/nodes/solidx-crud.nodes.d.ts.map +1 -0
  241. package/dist/services/workflow/nodes/solidx-crud.nodes.js +475 -0
  242. package/dist/services/workflow/nodes/solidx-crud.nodes.js.map +1 -0
  243. package/dist/services/workflow/nodes/solidx-login.node.d.ts +6 -0
  244. package/dist/services/workflow/nodes/solidx-login.node.d.ts.map +1 -0
  245. package/dist/services/workflow/nodes/solidx-login.node.js +208 -0
  246. package/dist/services/workflow/nodes/solidx-login.node.js.map +1 -0
  247. package/dist/services/workflow/nodes/solidx-send-email.node.d.ts +11 -0
  248. package/dist/services/workflow/nodes/solidx-send-email.node.d.ts.map +1 -0
  249. package/dist/services/workflow/nodes/solidx-send-email.node.js +437 -0
  250. package/dist/services/workflow/nodes/solidx-send-email.node.js.map +1 -0
  251. package/dist/services/workflow/nodes/solidx-send-sms.node.d.ts +10 -0
  252. package/dist/services/workflow/nodes/solidx-send-sms.node.d.ts.map +1 -0
  253. package/dist/services/workflow/nodes/solidx-send-sms.node.js +347 -0
  254. package/dist/services/workflow/nodes/solidx-send-sms.node.js.map +1 -0
  255. package/dist/services/workflow/nodes/switch.node.d.ts +7 -0
  256. package/dist/services/workflow/nodes/switch.node.d.ts.map +1 -0
  257. package/dist/services/workflow/nodes/switch.node.js +113 -0
  258. package/dist/services/workflow/nodes/switch.node.js.map +1 -0
  259. package/dist/services/workflow/workflow-definition-metadata-sync.service.d.ts +19 -0
  260. package/dist/services/workflow/workflow-definition-metadata-sync.service.d.ts.map +1 -0
  261. package/dist/services/workflow/workflow-definition-metadata-sync.service.js +187 -0
  262. package/dist/services/workflow/workflow-definition-metadata-sync.service.js.map +1 -0
  263. package/dist/services/workflow/workflow-definition-validator.service.d.ts +13 -0
  264. package/dist/services/workflow/workflow-definition-validator.service.d.ts.map +1 -0
  265. package/dist/services/workflow/workflow-definition-validator.service.js +163 -0
  266. package/dist/services/workflow/workflow-definition-validator.service.js.map +1 -0
  267. package/dist/services/workflow/workflow-execution-writer.service.d.ts +26 -0
  268. package/dist/services/workflow/workflow-execution-writer.service.d.ts.map +1 -0
  269. package/dist/services/workflow/workflow-execution-writer.service.js +191 -0
  270. package/dist/services/workflow/workflow-execution-writer.service.js.map +1 -0
  271. package/dist/services/workflow/workflow-expression.service.d.ts +14 -0
  272. package/dist/services/workflow/workflow-expression.service.d.ts.map +1 -0
  273. package/dist/services/workflow/workflow-expression.service.js +152 -0
  274. package/dist/services/workflow/workflow-expression.service.js.map +1 -0
  275. package/dist/services/workflow/workflow-invocation.service.d.ts +11 -0
  276. package/dist/services/workflow/workflow-invocation.service.d.ts.map +1 -0
  277. package/dist/services/workflow/workflow-invocation.service.js +37 -0
  278. package/dist/services/workflow/workflow-invocation.service.js.map +1 -0
  279. package/dist/services/workflow/workflow-node-registry.service.d.ts +18 -0
  280. package/dist/services/workflow/workflow-node-registry.service.d.ts.map +1 -0
  281. package/dist/services/workflow/workflow-node-registry.service.js +110 -0
  282. package/dist/services/workflow/workflow-node-registry.service.js.map +1 -0
  283. package/dist/services/workflow/workflow-runtime.service.d.ts +53 -0
  284. package/dist/services/workflow/workflow-runtime.service.d.ts.map +1 -0
  285. package/dist/services/workflow/workflow-runtime.service.js +541 -0
  286. package/dist/services/workflow/workflow-runtime.service.js.map +1 -0
  287. package/dist/services/workflow/workflow-scheduled-trigger.job.d.ts +10 -0
  288. package/dist/services/workflow/workflow-scheduled-trigger.job.d.ts.map +1 -0
  289. package/dist/services/workflow/workflow-scheduled-trigger.job.js +37 -0
  290. package/dist/services/workflow/workflow-scheduled-trigger.job.js.map +1 -0
  291. package/dist/services/workflow-definition.service.d.ts +52 -0
  292. package/dist/services/workflow-definition.service.d.ts.map +1 -0
  293. package/dist/services/workflow-definition.service.js +251 -0
  294. package/dist/services/workflow-definition.service.js.map +1 -0
  295. package/dist/services/workflow-execution-artifact.service.d.ts +12 -0
  296. package/dist/services/workflow-execution-artifact.service.d.ts.map +1 -0
  297. package/dist/services/workflow-execution-artifact.service.js +38 -0
  298. package/dist/services/workflow-execution-artifact.service.js.map +1 -0
  299. package/dist/services/workflow-execution-log.service.d.ts +12 -0
  300. package/dist/services/workflow-execution-log.service.d.ts.map +1 -0
  301. package/dist/services/workflow-execution-log.service.js +38 -0
  302. package/dist/services/workflow-execution-log.service.js.map +1 -0
  303. package/dist/services/workflow-execution.service.d.ts +12 -0
  304. package/dist/services/workflow-execution.service.d.ts.map +1 -0
  305. package/dist/services/workflow-execution.service.js +38 -0
  306. package/dist/services/workflow-execution.service.js.map +1 -0
  307. package/dist/services/workflow-secret.service.d.ts +25 -0
  308. package/dist/services/workflow-secret.service.d.ts.map +1 -0
  309. package/dist/services/workflow-secret.service.js +152 -0
  310. package/dist/services/workflow-secret.service.js.map +1 -0
  311. package/dist/services/workflow-step-execution.service.d.ts +12 -0
  312. package/dist/services/workflow-step-execution.service.d.ts.map +1 -0
  313. package/dist/services/workflow-step-execution.service.js +38 -0
  314. package/dist/services/workflow-step-execution.service.js.map +1 -0
  315. package/dist/services/workflow-trigger-execution.service.d.ts +12 -0
  316. package/dist/services/workflow-trigger-execution.service.d.ts.map +1 -0
  317. package/dist/services/workflow-trigger-execution.service.js +38 -0
  318. package/dist/services/workflow-trigger-execution.service.js.map +1 -0
  319. package/dist/solid-core.module.d.ts.map +1 -1
  320. package/dist/solid-core.module.js +117 -0
  321. package/dist/solid-core.module.js.map +1 -1
  322. package/dist/transformers/empty-string-to-null-transformer.d.ts +4 -0
  323. package/dist/transformers/empty-string-to-null-transformer.d.ts.map +1 -0
  324. package/dist/transformers/empty-string-to-null-transformer.js +12 -0
  325. package/dist/transformers/empty-string-to-null-transformer.js.map +1 -0
  326. package/dist/types/workflow-dsl.types.d.ts +277 -0
  327. package/dist/types/workflow-dsl.types.d.ts.map +1 -0
  328. package/dist/types/workflow-dsl.types.js +3 -0
  329. package/dist/types/workflow-dsl.types.js.map +1 -0
  330. package/dist/types/workflow-execution-queue.types.d.ts +4 -0
  331. package/dist/types/workflow-execution-queue.types.d.ts.map +1 -0
  332. package/dist/types/workflow-execution-queue.types.js +3 -0
  333. package/dist/types/workflow-execution-queue.types.js.map +1 -0
  334. package/package.json +3 -2
  335. package/src/controllers/workflow-definition.controller.ts +141 -0
  336. package/src/controllers/workflow-execution-artifact.controller.ts +93 -0
  337. package/src/controllers/workflow-execution-log.controller.ts +93 -0
  338. package/src/controllers/workflow-execution.controller.ts +126 -0
  339. package/src/controllers/workflow-secret.controller.ts +90 -0
  340. package/src/controllers/workflow-step-execution.controller.ts +93 -0
  341. package/src/controllers/workflow-trigger-execution.controller.ts +93 -0
  342. package/src/decorators/workflow-node-provider.decorator.ts +14 -0
  343. package/src/dtos/create-workflow-definition.dto.ts +60 -0
  344. package/src/dtos/create-workflow-execution-artifact.dto.ts +99 -0
  345. package/src/dtos/create-workflow-execution-log.dto.ts +80 -0
  346. package/src/dtos/create-workflow-execution.dto.ts +137 -0
  347. package/src/dtos/create-workflow-secret.dto.ts +44 -0
  348. package/src/dtos/create-workflow-step-execution.dto.ts +123 -0
  349. package/src/dtos/create-workflow-trigger-execution.dto.ts +114 -0
  350. package/src/dtos/execute-workflow.dto.ts +6 -0
  351. package/src/dtos/update-workflow-definition.dto.ts +67 -0
  352. package/src/dtos/update-workflow-execution-artifact.dto.ts +105 -0
  353. package/src/dtos/update-workflow-execution-log.dto.ts +87 -0
  354. package/src/dtos/update-workflow-execution.dto.ts +144 -0
  355. package/src/dtos/update-workflow-secret.dto.ts +53 -0
  356. package/src/dtos/update-workflow-step-execution.dto.ts +132 -0
  357. package/src/dtos/update-workflow-trigger-execution.dto.ts +122 -0
  358. package/src/dtos/validate-workflow-definition.dto.ts +3 -0
  359. package/src/entities/saved-filters.entity.ts +3 -3
  360. package/src/entities/workflow-definition.entity.ts +43 -0
  361. package/src/entities/workflow-execution-artifact.entity.ts +72 -0
  362. package/src/entities/workflow-execution-log.entity.ts +58 -0
  363. package/src/entities/workflow-execution.entity.ts +82 -0
  364. package/src/entities/workflow-secret.entity.ts +33 -0
  365. package/src/entities/workflow-step-execution.entity.ts +88 -0
  366. package/src/entities/workflow-trigger-execution.entity.ts +82 -0
  367. package/src/factories/sms.factory.ts +4 -1
  368. package/src/index.ts +54 -0
  369. package/src/interfaces/workflow-node-handler.interface.ts +10 -0
  370. package/src/jobs/database/workflow-execution-publisher-database.service.ts +24 -0
  371. package/src/jobs/database/workflow-execution-queue-options-database.ts +9 -0
  372. package/src/jobs/database/workflow-execution-subscriber-database.service.ts +44 -0
  373. package/src/jobs/rabbitmq/workflow-execution-publisher.service.ts +24 -0
  374. package/src/jobs/rabbitmq/workflow-execution-queue-options.ts +9 -0
  375. package/src/jobs/rabbitmq/workflow-execution-subscriber.service.ts +42 -0
  376. package/src/jobs/redis/workflow-execution-publisher-redis.service.ts +24 -0
  377. package/src/jobs/redis/workflow-execution-queue-options-redis.ts +9 -0
  378. package/src/jobs/redis/workflow-execution-subscriber-redis.service.ts +42 -0
  379. package/src/repository/workflow-definition.repository.ts +19 -0
  380. package/src/repository/workflow-execution-artifact.repository.ts +19 -0
  381. package/src/repository/workflow-execution-log.repository.ts +19 -0
  382. package/src/repository/workflow-execution.repository.ts +19 -0
  383. package/src/repository/workflow-secret.repository.ts +19 -0
  384. package/src/repository/workflow-step-execution.repository.ts +19 -0
  385. package/src/repository/workflow-trigger-execution.repository.ts +19 -0
  386. package/src/seeders/module-metadata-seeder.service.ts +166 -4
  387. package/src/seeders/seed-data/solid-core-metadata.json +11437 -5567
  388. package/src/services/workflow/nodes/for-each.node.ts +97 -0
  389. package/src/services/workflow/nodes/http-request.node.ts +624 -0
  390. package/src/services/workflow/nodes/if.node.ts +93 -0
  391. package/src/services/workflow/nodes/log-write.node.ts +232 -0
  392. package/src/services/workflow/nodes/parallel.node.ts +81 -0
  393. package/src/services/workflow/nodes/runtime-python.node.ts +571 -0
  394. package/src/services/workflow/nodes/sequential.node.ts +58 -0
  395. package/src/services/workflow/nodes/solidx-api.helpers.ts +205 -0
  396. package/src/services/workflow/nodes/solidx-crud.nodes.ts +511 -0
  397. package/src/services/workflow/nodes/solidx-login.node.ts +222 -0
  398. package/src/services/workflow/nodes/solidx-send-email.node.ts +489 -0
  399. package/src/services/workflow/nodes/solidx-send-sms.node.ts +377 -0
  400. package/src/services/workflow/nodes/switch.node.ts +125 -0
  401. package/src/services/workflow/workflow-definition-metadata-sync.service.ts +196 -0
  402. package/src/services/workflow/workflow-definition-validator.service.ts +223 -0
  403. package/src/services/workflow/workflow-execution-writer.service.ts +244 -0
  404. package/src/services/workflow/workflow-expression.service.ts +175 -0
  405. package/src/services/workflow/workflow-invocation.service.ts +39 -0
  406. package/src/services/workflow/workflow-node-registry.service.ts +141 -0
  407. package/src/services/workflow/workflow-runtime.service.ts +699 -0
  408. package/src/services/workflow/workflow-scheduled-trigger.job.ts +33 -0
  409. package/src/services/workflow-definition.service.ts +293 -0
  410. package/src/services/workflow-execution-artifact.service.ts +20 -0
  411. package/src/services/workflow-execution-log.service.ts +20 -0
  412. package/src/services/workflow-execution.service.ts +20 -0
  413. package/src/services/workflow-secret.service.ts +161 -0
  414. package/src/services/workflow-step-execution.service.ts +20 -0
  415. package/src/services/workflow-trigger-execution.service.ts +20 -0
  416. package/src/solid-core.module.ts +124 -0
  417. package/src/transformers/empty-string-to-null-transformer.ts +11 -0
  418. package/src/types/workflow-dsl.types.ts +987 -0
  419. package/src/types/workflow-execution-queue.types.ts +3 -0
@@ -0,0 +1,9 @@
1
+ import { BrokerType } from '../../interfaces';
2
+
3
+ const QUEUE_NAME = 'solid_workflow_execution_queue_redis';
4
+
5
+ export default {
6
+ name: QUEUE_NAME,
7
+ type: BrokerType.Redis,
8
+ queueName: QUEUE_NAME,
9
+ };
@@ -0,0 +1,42 @@
1
+ import { Injectable, Logger } from '@nestjs/common';
2
+
3
+ import { QueueMessage } from '../../interfaces/mq';
4
+ import { QueuesModuleOptions } from '../../interfaces';
5
+ import { WorkflowExecutionQueuePayload } from '../../types/workflow-execution-queue.types';
6
+ import { MqMessageQueueService } from '../../services/mq-message-queue.service';
7
+ import { MqMessageService } from '../../services/mq-message.service';
8
+ import { RedisSubscriber } from '../../services/queues/redis-subscriber.service';
9
+ import { WorkflowRuntimeService } from '../../services/workflow/workflow-runtime.service';
10
+ import workflowExecutionQueueOptions from './workflow-execution-queue-options-redis';
11
+
12
+ @Injectable()
13
+ export class WorkflowExecutionSubscriberRedis extends RedisSubscriber<WorkflowExecutionQueuePayload> {
14
+ private readonly workflowExecutionLogger = new Logger(WorkflowExecutionSubscriberRedis.name);
15
+
16
+ constructor(
17
+ readonly mqMessageService: MqMessageService,
18
+ readonly mqMessageQueueService: MqMessageQueueService,
19
+ private readonly workflowRuntimeService: WorkflowRuntimeService,
20
+ ) {
21
+ super(mqMessageService, mqMessageQueueService);
22
+ }
23
+
24
+ options(): QueuesModuleOptions {
25
+ return {
26
+ ...workflowExecutionQueueOptions,
27
+ };
28
+ }
29
+
30
+ async subscribe(message: QueueMessage<WorkflowExecutionQueuePayload>) {
31
+ const payload = message.payload;
32
+ this.workflowExecutionLogger.log(
33
+ `Processing queued workflow execution message ${message.messageId ?? '<unknown>'}.`,
34
+ );
35
+
36
+ if (payload.executionId !== undefined && payload.executionId !== null) {
37
+ return this.workflowRuntimeService.executeEnqueuedExecution(payload.executionId);
38
+ }
39
+
40
+ throw new Error('Workflow execution queue payload must include executionId.');
41
+ }
42
+ }
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { SecurityRuleRepository } from './security-rule.repository';
3
+ import { SolidBaseRepository } from './solid-base.repository';
4
+ import { RequestContextService } from 'src/services/request-context.service';
5
+ import { DataSource } from 'typeorm';
6
+ import { InjectDataSource } from '@nestjs/typeorm';
7
+ import { WorkflowDefinition } from '../entities/workflow-definition.entity';
8
+
9
+ @Injectable()
10
+ export class WorkflowDefinitionRepository extends SolidBaseRepository<WorkflowDefinition> {
11
+ constructor(
12
+ @InjectDataSource("default")
13
+ readonly dataSource: DataSource,
14
+ readonly requestContextService: RequestContextService,
15
+ readonly securityRuleRepository: SecurityRuleRepository,
16
+ ) {
17
+ super(WorkflowDefinition, dataSource, requestContextService, securityRuleRepository);
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { SecurityRuleRepository } from './security-rule.repository';
3
+ import { SolidBaseRepository } from './solid-base.repository';
4
+ import { RequestContextService } from 'src/services/request-context.service';
5
+ import { DataSource } from 'typeorm';
6
+ import { InjectDataSource } from '@nestjs/typeorm';
7
+ import { WorkflowExecutionArtifact } from '../entities/workflow-execution-artifact.entity';
8
+
9
+ @Injectable()
10
+ export class WorkflowExecutionArtifactRepository extends SolidBaseRepository<WorkflowExecutionArtifact> {
11
+ constructor(
12
+ @InjectDataSource("default")
13
+ readonly dataSource: DataSource,
14
+ readonly requestContextService: RequestContextService,
15
+ readonly securityRuleRepository: SecurityRuleRepository,
16
+ ) {
17
+ super(WorkflowExecutionArtifact, dataSource, requestContextService, securityRuleRepository);
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { SecurityRuleRepository } from './security-rule.repository';
3
+ import { SolidBaseRepository } from './solid-base.repository';
4
+ import { RequestContextService } from 'src/services/request-context.service';
5
+ import { DataSource } from 'typeorm';
6
+ import { InjectDataSource } from '@nestjs/typeorm';
7
+ import { WorkflowExecutionLog } from '../entities/workflow-execution-log.entity';
8
+
9
+ @Injectable()
10
+ export class WorkflowExecutionLogRepository extends SolidBaseRepository<WorkflowExecutionLog> {
11
+ constructor(
12
+ @InjectDataSource("default")
13
+ readonly dataSource: DataSource,
14
+ readonly requestContextService: RequestContextService,
15
+ readonly securityRuleRepository: SecurityRuleRepository,
16
+ ) {
17
+ super(WorkflowExecutionLog, dataSource, requestContextService, securityRuleRepository);
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { SecurityRuleRepository } from './security-rule.repository';
3
+ import { SolidBaseRepository } from './solid-base.repository';
4
+ import { RequestContextService } from 'src/services/request-context.service';
5
+ import { DataSource } from 'typeorm';
6
+ import { InjectDataSource } from '@nestjs/typeorm';
7
+ import { WorkflowExecution } from '../entities/workflow-execution.entity';
8
+
9
+ @Injectable()
10
+ export class WorkflowExecutionRepository extends SolidBaseRepository<WorkflowExecution> {
11
+ constructor(
12
+ @InjectDataSource("default")
13
+ readonly dataSource: DataSource,
14
+ readonly requestContextService: RequestContextService,
15
+ readonly securityRuleRepository: SecurityRuleRepository,
16
+ ) {
17
+ super(WorkflowExecution, dataSource, requestContextService, securityRuleRepository);
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { SecurityRuleRepository } from './security-rule.repository';
3
+ import { SolidBaseRepository } from './solid-base.repository';
4
+ import { RequestContextService } from 'src/services/request-context.service';
5
+ import { DataSource } from 'typeorm';
6
+ import { InjectDataSource } from '@nestjs/typeorm';
7
+ import { WorkflowSecret } from '../entities/workflow-secret.entity';
8
+
9
+ @Injectable()
10
+ export class WorkflowSecretRepository extends SolidBaseRepository<WorkflowSecret> {
11
+ constructor(
12
+ @InjectDataSource("default")
13
+ readonly dataSource: DataSource,
14
+ readonly requestContextService: RequestContextService,
15
+ readonly securityRuleRepository: SecurityRuleRepository,
16
+ ) {
17
+ super(WorkflowSecret, dataSource, requestContextService, securityRuleRepository);
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { SecurityRuleRepository } from './security-rule.repository';
3
+ import { SolidBaseRepository } from './solid-base.repository';
4
+ import { RequestContextService } from 'src/services/request-context.service';
5
+ import { DataSource } from 'typeorm';
6
+ import { InjectDataSource } from '@nestjs/typeorm';
7
+ import { WorkflowStepExecution } from '../entities/workflow-step-execution.entity';
8
+
9
+ @Injectable()
10
+ export class WorkflowStepExecutionRepository extends SolidBaseRepository<WorkflowStepExecution> {
11
+ constructor(
12
+ @InjectDataSource("default")
13
+ readonly dataSource: DataSource,
14
+ readonly requestContextService: RequestContextService,
15
+ readonly securityRuleRepository: SecurityRuleRepository,
16
+ ) {
17
+ super(WorkflowStepExecution, dataSource, requestContextService, securityRuleRepository);
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { SecurityRuleRepository } from './security-rule.repository';
3
+ import { SolidBaseRepository } from './solid-base.repository';
4
+ import { RequestContextService } from 'src/services/request-context.service';
5
+ import { DataSource } from 'typeorm';
6
+ import { InjectDataSource } from '@nestjs/typeorm';
7
+ import { WorkflowTriggerExecution } from '../entities/workflow-trigger-execution.entity';
8
+
9
+ @Injectable()
10
+ export class WorkflowTriggerExecutionRepository extends SolidBaseRepository<WorkflowTriggerExecution> {
11
+ constructor(
12
+ @InjectDataSource("default")
13
+ readonly dataSource: DataSource,
14
+ readonly requestContextService: RequestContextService,
15
+ readonly securityRuleRepository: SecurityRuleRepository,
16
+ ) {
17
+ super(WorkflowTriggerExecution, dataSource, requestContextService, securityRuleRepository);
18
+ }
19
+ }
@@ -3,6 +3,7 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
3
3
  import * as fs from 'fs';
4
4
  import * as os from 'os';
5
5
  import * as path from 'path';
6
+ import { createHash } from 'crypto';
6
7
  import { v4 as uuidv4 } from 'uuid';
7
8
 
8
9
  import { CreateEmailTemplateDto } from 'src/dtos/create-email-template.dto';
@@ -66,6 +67,7 @@ import { FieldMetadata } from 'src/entities/field-metadata.entity';
66
67
  import { ModelMetadata } from 'src/entities/model-metadata.entity';
67
68
  import { PermissionMetadata } from 'src/entities/permission-metadata.entity';
68
69
  import { ViewMetadata } from 'src/entities/view-metadata.entity';
70
+ import { WorkflowDefinition } from 'src/entities/workflow-definition.entity';
69
71
  import { EventDetails, EventType, ModuleMetadataSeederEventPayload } from 'src/interfaces';
70
72
 
71
73
  /**
@@ -236,10 +238,15 @@ export class ModuleMetadataSeederService {
236
238
  const moduleModelFieldCounts = await this.timeOperation('seed-module-model-fields', () => this.seedModuleModelFields(moduleMetadata), { moduleName: moduleMetadata.name, component: 'module-model-fields' });
237
239
  console.log(`${this.formatSeedResult(moduleMetadata.name, 'Module/Model/Fields', moduleModelFieldCounts)}`);
238
240
 
239
- currentStep = 'seedLocales';
240
- this.logger.log(`Seeding Locales`);
241
- const localeCounts = await this.seedLocales(overallMetadata);
242
- console.log(`${this.formatSeedResult(moduleMetadata.name, 'Locales', localeCounts)}`);
241
+ currentStep = 'seedWorkflowDefinitions';
242
+ this.logger.log(`Seeding Workflow Definitions`);
243
+ const workflowDefinitionCounts = await this.timeOperation('seed-workflow-definitions', () => this.seedWorkflowDefinitions(moduleMetadata, overallMetadata), { moduleName: moduleMetadata.name, component: 'workflow-definitions' });
244
+ console.log(`${this.formatSeedResult(moduleMetadata.name, 'Workflow Definitions', workflowDefinitionCounts)}`);
245
+
246
+ currentStep = 'seedLocales';
247
+ this.logger.log(`Seeding Locales`);
248
+ const localeCounts = await this.seedLocales(overallMetadata);
249
+ console.log(`${this.formatSeedResult(moduleMetadata.name, 'Locales', localeCounts)}`);
243
250
 
244
251
  currentStep = 'seedPermissions';
245
252
  this.logger.log(`Seeding Permissions`);
@@ -550,6 +557,28 @@ export class ModuleMetadataSeederService {
550
557
  return { pruned, upserted: savedFilters.length };
551
558
  }
552
559
 
560
+ private async seedWorkflowDefinitions(moduleMetadata: CreateModuleMetadataDto, overallMetadata: any): Promise<{ pruned: number; upserted: number }> {
561
+ const workflowDefinitions = this.getSeedArray<any>(overallMetadata?.workflowDefinitions)
562
+ .map((definition) => ({
563
+ ...definition,
564
+ moduleUserKey: definition.moduleUserKey ?? moduleMetadata.name,
565
+ definitionYaml: this.resolveSeedFileBackedWorkflowDefinitionYaml(definition.definitionYaml, overallMetadata?.__seedFilePath),
566
+ }));
567
+ const pruned = this.enablePruning ? await this.timeOperation('prune-workflow-definitions', () => this.pruneWorkflowDefinitions(workflowDefinitions, moduleMetadata.name), {
568
+ moduleName: moduleMetadata.name,
569
+ component: 'workflow-definitions',
570
+ serviceCall: 'pruneWorkflowDefinitions',
571
+ }) : 0;
572
+ if (workflowDefinitions.length > 0) {
573
+ await this.timeOperation('handle-workflow-definitions', () => this.handleSeedWorkflowDefinitions(workflowDefinitions), {
574
+ moduleName: moduleMetadata.name,
575
+ component: 'workflow-definitions',
576
+ serviceCall: 'handleSeedWorkflowDefinitions',
577
+ });
578
+ }
579
+ return { pruned, upserted: workflowDefinitions.length };
580
+ }
581
+
553
582
  private async seedListOfValues(moduleMetadata: CreateModuleMetadataDto, overallMetadata: any): Promise<{ pruned: number; upserted: number }> {
554
583
  const listOfValues = this.getSeedArray<CreateListOfValuesDto>(overallMetadata?.listOfValues);
555
584
  const pruned = this.enablePruning ? await this.timeOperation('prune-list-of-values', () => this.pruneListOfValues(listOfValues, moduleMetadata.name), {
@@ -785,6 +814,7 @@ export class ModuleMetadataSeederService {
785
814
 
786
815
  if (fs.existsSync(fullPath)) {
787
816
  const overallMetadata = JSON.parse(fs.readFileSync(fullPath, 'utf-8'));
817
+ overallMetadata.__seedFilePath = fullPath;
788
818
  seedDataFiles.push(overallMetadata);
789
819
  }
790
820
  }
@@ -792,6 +822,28 @@ export class ModuleMetadataSeederService {
792
822
  return seedDataFiles;
793
823
  }
794
824
 
825
+ private resolveSeedFileBackedWorkflowDefinitionYaml(definitionYaml: string, seedFilePath?: string): string {
826
+ if (typeof definitionYaml !== 'string' || !definitionYaml.startsWith('file:')) {
827
+ return definitionYaml;
828
+ }
829
+
830
+ if (!seedFilePath) {
831
+ throw new Error(`Cannot resolve workflow definition YAML file reference "${definitionYaml}" because the seed file path is unavailable.`);
832
+ }
833
+
834
+ const relativePath = definitionYaml.slice('file:'.length).trim();
835
+ if (!relativePath) {
836
+ throw new Error(`Cannot resolve workflow definition YAML file reference "${definitionYaml}" because no relative path was provided.`);
837
+ }
838
+
839
+ const resolvedPath = path.resolve(path.dirname(seedFilePath), relativePath);
840
+ if (!fs.existsSync(resolvedPath)) {
841
+ throw new Error(`Workflow definition YAML file "${resolvedPath}" referenced from "${seedFilePath}" does not exist.`);
842
+ }
843
+
844
+ return fs.readFileSync(resolvedPath, 'utf-8');
845
+ }
846
+
795
847
  // OK
796
848
  private async seedGlobalMetadata() {
797
849
  this.logger.log(`Seeding Permissions`);
@@ -2147,6 +2199,52 @@ export class ModuleMetadataSeederService {
2147
2199
  }
2148
2200
  }
2149
2201
 
2202
+ private async handleSeedWorkflowDefinitions(workflowDefinitions: any[]) {
2203
+ if (!workflowDefinitions || workflowDefinitions.length === 0) {
2204
+ this.logger.debug(`No workflow definitions found to seed`);
2205
+ return;
2206
+ }
2207
+
2208
+ const repo = this.dataSource.getRepository(WorkflowDefinition);
2209
+ for (const definition of workflowDefinitions) {
2210
+ const moduleMetadata = await this.getModuleByUserKeyCached(definition.moduleUserKey, {
2211
+ moduleName: definition.moduleUserKey,
2212
+ component: 'workflow-definitions',
2213
+ details: `module=${definition.moduleUserKey}`,
2214
+ });
2215
+
2216
+ if (!moduleMetadata) {
2217
+ throw new Error(`Cannot seed workflow definition "${definition.key}": module metadata "${definition.moduleUserKey}" was not found.`);
2218
+ }
2219
+
2220
+ const existing = await repo.findOne({
2221
+ where: {
2222
+ key: definition.key,
2223
+ } as any,
2224
+ });
2225
+ const payload = repo.create({
2226
+ ...existing,
2227
+ key: definition.key,
2228
+ moduleMetadata,
2229
+ displayName: definition.displayName,
2230
+ namespace: definition.namespace,
2231
+ description: definition.description,
2232
+ status: definition.status ?? 'active',
2233
+ definitionVersion: definition.definitionVersion,
2234
+ definitionChecksum: this.workflowDefinitionChecksum(definition.definitionYaml),
2235
+ definitionYaml: definition.definitionYaml,
2236
+ tags: definition.tags,
2237
+ });
2238
+
2239
+ await this.timeOperation('workflow-definition-save', () => repo.save(payload), {
2240
+ moduleName: definition.moduleUserKey,
2241
+ component: 'workflow-definitions',
2242
+ serviceCall: 'workflowDefinitionRepository.save',
2243
+ details: `workflow=${definition.key}`,
2244
+ });
2245
+ }
2246
+ }
2247
+
2150
2248
  private async handleSeedLocales(localesDto: CreateLocaleDto[]) {
2151
2249
  if (!localesDto || localesDto.length === 0) {
2152
2250
  this.logger.debug(`No locales found to seed`);
@@ -2396,6 +2494,49 @@ export class ModuleMetadataSeederService {
2396
2494
  return 0;
2397
2495
  }
2398
2496
 
2497
+ private async pruneWorkflowDefinitions(workflowDefinitionsDto: any[] | undefined, moduleName?: string): Promise<number> {
2498
+ if (!moduleName) {
2499
+ this.logger.warn(`Skipping workflow definition prune: missing module name in metadata.`);
2500
+ return 0;
2501
+ }
2502
+ const workflowDefinitions = workflowDefinitionsDto ?? [];
2503
+
2504
+ const module = await this.getModuleByUserKeyCached(moduleName, {
2505
+ moduleName,
2506
+ component: 'workflow-definitions',
2507
+ details: `module=${moduleName}`,
2508
+ });
2509
+ if (!module) {
2510
+ this.logger.warn(`Skipping workflow definition prune: module not found for ${moduleName}.`);
2511
+ return 0;
2512
+ }
2513
+
2514
+ const workflowKeys = [...new Set(workflowDefinitions.map(dto => dto.key).filter(Boolean))];
2515
+ const repo = this.dataSource.getRepository(WorkflowDefinition);
2516
+ const idsToDeleteQuery = repo
2517
+ .createQueryBuilder('workflowDefinition')
2518
+ .select('workflowDefinition.id', 'id')
2519
+ .innerJoin('workflowDefinition.moduleMetadata', 'moduleMetadata')
2520
+ .where('moduleMetadata.id = :moduleId', { moduleId: module.id });
2521
+
2522
+ if (workflowKeys.length > 0) {
2523
+ idsToDeleteQuery.andWhere('workflowDefinition.key NOT IN (:...workflowKeys)', { workflowKeys });
2524
+ }
2525
+
2526
+ const rows = await idsToDeleteQuery.getRawMany();
2527
+ const ids = rows.map((row) => row.id);
2528
+ if (ids.length > 0) {
2529
+ const result = await repo
2530
+ .createQueryBuilder()
2531
+ .delete()
2532
+ .from(WorkflowDefinition)
2533
+ .whereInIds(ids)
2534
+ .execute();
2535
+ return result.affected ?? 0;
2536
+ }
2537
+ return 0;
2538
+ }
2539
+
2399
2540
  private async pruneListOfValues(listOfValuesDto: CreateListOfValuesDto[] | undefined, moduleName?: string): Promise<number> {
2400
2541
  if (!moduleName) {
2401
2542
  this.logger.warn(`Skipping list of values prune: missing module name in metadata.`);
@@ -2824,4 +2965,25 @@ export class ModuleMetadataSeederService {
2824
2965
  return `✔ [${moduleName}] ${label} seeded (upserted ${counts.upserted})`;
2825
2966
  }
2826
2967
 
2968
+ private workflowDefinitionChecksum(value: any): string {
2969
+ return createHash('sha256')
2970
+ .update(typeof value === 'string' ? value : this.stableStringify(value))
2971
+ .digest('hex');
2972
+ }
2973
+
2974
+ private stableStringify(value: any): string {
2975
+ if (Array.isArray(value)) {
2976
+ return `[${value.map((entry) => this.stableStringify(entry)).join(',')}]`;
2977
+ }
2978
+
2979
+ if (value && typeof value === 'object') {
2980
+ return `{${Object.keys(value)
2981
+ .sort()
2982
+ .map((key) => `${JSON.stringify(key)}:${this.stableStringify(value[key])}`)
2983
+ .join(',')}}`;
2984
+ }
2985
+
2986
+ return JSON.stringify(value);
2987
+ }
2988
+
2827
2989
  }