@venturialstd/workflow 0.1.1 → 0.1.3

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 (258) hide show
  1. package/dist/constants/workflow.constant.d.ts +2 -1
  2. package/dist/constants/workflow.constant.d.ts.map +1 -1
  3. package/dist/constants/workflow.constant.js +1 -0
  4. package/dist/constants/workflow.constant.js.map +1 -1
  5. package/dist/dtos/create-workflow-webhook.dto.d.ts +9 -0
  6. package/dist/dtos/create-workflow-webhook.dto.d.ts.map +1 -0
  7. package/dist/dtos/create-workflow-webhook.dto.js +48 -0
  8. package/dist/dtos/create-workflow-webhook.dto.js.map +1 -0
  9. package/dist/dtos/index.d.ts +1 -0
  10. package/dist/dtos/index.d.ts.map +1 -1
  11. package/dist/dtos/index.js +1 -0
  12. package/dist/dtos/index.js.map +1 -1
  13. package/dist/entities/workflow-webhook.entity.d.ts +22 -0
  14. package/dist/entities/workflow-webhook.entity.d.ts.map +1 -0
  15. package/dist/entities/workflow-webhook.entity.js +103 -0
  16. package/dist/entities/workflow-webhook.entity.js.map +1 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/modules/conditional/services/evaluate-condition.service.d.ts.map +1 -1
  22. package/dist/modules/conditional/services/evaluate-condition.service.js +39 -23
  23. package/dist/modules/conditional/services/evaluate-condition.service.js.map +1 -1
  24. package/dist/modules/index.d.ts +1 -0
  25. package/dist/modules/index.d.ts.map +1 -1
  26. package/dist/modules/index.js +5 -1
  27. package/dist/modules/index.js.map +1 -1
  28. package/dist/modules/twilio/actions/cancel-verification.action.d.ts +3 -0
  29. package/dist/modules/twilio/actions/cancel-verification.action.d.ts.map +1 -0
  30. package/dist/modules/twilio/actions/cancel-verification.action.js +56 -0
  31. package/dist/modules/twilio/actions/cancel-verification.action.js.map +1 -0
  32. package/dist/modules/twilio/actions/create-conversation.action.d.ts +3 -0
  33. package/dist/modules/twilio/actions/create-conversation.action.d.ts.map +1 -0
  34. package/dist/modules/twilio/actions/create-conversation.action.js +79 -0
  35. package/dist/modules/twilio/actions/create-conversation.action.js.map +1 -0
  36. package/dist/modules/twilio/actions/create-video-room.action.d.ts +3 -0
  37. package/dist/modules/twilio/actions/create-video-room.action.d.ts.map +1 -0
  38. package/dist/modules/twilio/actions/create-video-room.action.js +89 -0
  39. package/dist/modules/twilio/actions/create-video-room.action.js.map +1 -0
  40. package/dist/modules/twilio/actions/delete-call.action.d.ts +3 -0
  41. package/dist/modules/twilio/actions/delete-call.action.d.ts.map +1 -0
  42. package/dist/modules/twilio/actions/delete-call.action.js +40 -0
  43. package/dist/modules/twilio/actions/delete-call.action.js.map +1 -0
  44. package/dist/modules/twilio/actions/delete-message.action.d.ts +3 -0
  45. package/dist/modules/twilio/actions/delete-message.action.d.ts.map +1 -0
  46. package/dist/modules/twilio/actions/delete-message.action.js +40 -0
  47. package/dist/modules/twilio/actions/delete-message.action.js.map +1 -0
  48. package/dist/modules/twilio/actions/fetch-call-recordings.action.d.ts +3 -0
  49. package/dist/modules/twilio/actions/fetch-call-recordings.action.d.ts.map +1 -0
  50. package/dist/modules/twilio/actions/fetch-call-recordings.action.js +46 -0
  51. package/dist/modules/twilio/actions/fetch-call-recordings.action.js.map +1 -0
  52. package/dist/modules/twilio/actions/fetch-call.action.d.ts +3 -0
  53. package/dist/modules/twilio/actions/fetch-call.action.d.ts.map +1 -0
  54. package/dist/modules/twilio/actions/fetch-call.action.js +52 -0
  55. package/dist/modules/twilio/actions/fetch-call.action.js.map +1 -0
  56. package/dist/modules/twilio/actions/fetch-message.action.d.ts +3 -0
  57. package/dist/modules/twilio/actions/fetch-message.action.d.ts.map +1 -0
  58. package/dist/modules/twilio/actions/fetch-message.action.js +58 -0
  59. package/dist/modules/twilio/actions/fetch-message.action.js.map +1 -0
  60. package/dist/modules/twilio/actions/fetch-verification.action.d.ts +3 -0
  61. package/dist/modules/twilio/actions/fetch-verification.action.d.ts.map +1 -0
  62. package/dist/modules/twilio/actions/fetch-verification.action.js +62 -0
  63. package/dist/modules/twilio/actions/fetch-verification.action.js.map +1 -0
  64. package/dist/modules/twilio/actions/generate-twiml-dial.action.d.ts +3 -0
  65. package/dist/modules/twilio/actions/generate-twiml-dial.action.d.ts.map +1 -0
  66. package/dist/modules/twilio/actions/generate-twiml-dial.action.js +72 -0
  67. package/dist/modules/twilio/actions/generate-twiml-dial.action.js.map +1 -0
  68. package/dist/modules/twilio/actions/generate-twiml-say.action.d.ts +3 -0
  69. package/dist/modules/twilio/actions/generate-twiml-say.action.d.ts.map +1 -0
  70. package/dist/modules/twilio/actions/generate-twiml-say.action.js +68 -0
  71. package/dist/modules/twilio/actions/generate-twiml-say.action.js.map +1 -0
  72. package/dist/modules/twilio/actions/index.d.ts +20 -0
  73. package/dist/modules/twilio/actions/index.d.ts.map +1 -1
  74. package/dist/modules/twilio/actions/index.js +20 -0
  75. package/dist/modules/twilio/actions/index.js.map +1 -1
  76. package/dist/modules/twilio/actions/list-calls.action.d.ts +3 -0
  77. package/dist/modules/twilio/actions/list-calls.action.d.ts.map +1 -0
  78. package/dist/modules/twilio/actions/list-calls.action.js +80 -0
  79. package/dist/modules/twilio/actions/list-calls.action.js.map +1 -0
  80. package/dist/modules/twilio/actions/list-messages.action.d.ts +3 -0
  81. package/dist/modules/twilio/actions/list-messages.action.d.ts.map +1 -0
  82. package/dist/modules/twilio/actions/list-messages.action.js +89 -0
  83. package/dist/modules/twilio/actions/list-messages.action.js.map +1 -0
  84. package/dist/modules/twilio/actions/lookup-phone-number.action.d.ts +3 -0
  85. package/dist/modules/twilio/actions/lookup-phone-number.action.d.ts.map +1 -0
  86. package/dist/modules/twilio/actions/lookup-phone-number.action.js +79 -0
  87. package/dist/modules/twilio/actions/lookup-phone-number.action.js.map +1 -0
  88. package/dist/modules/twilio/actions/make-call.action.d.ts +3 -0
  89. package/dist/modules/twilio/actions/make-call.action.d.ts.map +1 -0
  90. package/dist/modules/twilio/actions/make-call.action.js +109 -0
  91. package/dist/modules/twilio/actions/make-call.action.js.map +1 -0
  92. package/dist/modules/twilio/actions/send-conversation-message.action.d.ts +3 -0
  93. package/dist/modules/twilio/actions/send-conversation-message.action.d.ts.map +1 -0
  94. package/dist/modules/twilio/actions/send-conversation-message.action.js +72 -0
  95. package/dist/modules/twilio/actions/send-conversation-message.action.js.map +1 -0
  96. package/dist/modules/twilio/actions/send-sms.action.d.ts.map +1 -1
  97. package/dist/modules/twilio/actions/send-sms.action.js.map +1 -1
  98. package/dist/modules/twilio/actions/send-verification.action.d.ts +3 -0
  99. package/dist/modules/twilio/actions/send-verification.action.d.ts.map +1 -0
  100. package/dist/modules/twilio/actions/send-verification.action.js +99 -0
  101. package/dist/modules/twilio/actions/send-verification.action.js.map +1 -0
  102. package/dist/modules/twilio/actions/update-call.action.d.ts +3 -0
  103. package/dist/modules/twilio/actions/update-call.action.d.ts.map +1 -0
  104. package/dist/modules/twilio/actions/update-call.action.js +72 -0
  105. package/dist/modules/twilio/actions/update-call.action.js.map +1 -0
  106. package/dist/modules/twilio/actions/update-message.action.d.ts +3 -0
  107. package/dist/modules/twilio/actions/update-message.action.d.ts.map +1 -0
  108. package/dist/modules/twilio/actions/update-message.action.js +57 -0
  109. package/dist/modules/twilio/actions/update-message.action.js.map +1 -0
  110. package/dist/modules/twilio/actions/verify-code.action.d.ts +3 -0
  111. package/dist/modules/twilio/actions/verify-code.action.d.ts.map +1 -0
  112. package/dist/modules/twilio/actions/verify-code.action.js +72 -0
  113. package/dist/modules/twilio/actions/verify-code.action.js.map +1 -0
  114. package/dist/modules/twilio/services/cancel-verification.service.d.ts +8 -0
  115. package/dist/modules/twilio/services/cancel-verification.service.d.ts.map +1 -0
  116. package/dist/modules/twilio/services/cancel-verification.service.js +53 -0
  117. package/dist/modules/twilio/services/cancel-verification.service.js.map +1 -0
  118. package/dist/modules/twilio/services/create-conversation.service.d.ts +8 -0
  119. package/dist/modules/twilio/services/create-conversation.service.d.ts.map +1 -0
  120. package/dist/modules/twilio/services/create-conversation.service.js +56 -0
  121. package/dist/modules/twilio/services/create-conversation.service.js.map +1 -0
  122. package/dist/modules/twilio/services/create-video-room.service.d.ts +8 -0
  123. package/dist/modules/twilio/services/create-video-room.service.d.ts.map +1 -0
  124. package/dist/modules/twilio/services/create-video-room.service.js +57 -0
  125. package/dist/modules/twilio/services/create-video-room.service.js.map +1 -0
  126. package/dist/modules/twilio/services/delete-call.service.d.ts +8 -0
  127. package/dist/modules/twilio/services/delete-call.service.d.ts.map +1 -0
  128. package/dist/modules/twilio/services/delete-call.service.js +48 -0
  129. package/dist/modules/twilio/services/delete-call.service.js.map +1 -0
  130. package/dist/modules/twilio/services/delete-message.service.d.ts +8 -0
  131. package/dist/modules/twilio/services/delete-message.service.d.ts.map +1 -0
  132. package/dist/modules/twilio/services/delete-message.service.js +43 -0
  133. package/dist/modules/twilio/services/delete-message.service.js.map +1 -0
  134. package/dist/modules/twilio/services/fetch-call-recordings.service.d.ts +8 -0
  135. package/dist/modules/twilio/services/fetch-call-recordings.service.d.ts.map +1 -0
  136. package/dist/modules/twilio/services/fetch-call-recordings.service.js +56 -0
  137. package/dist/modules/twilio/services/fetch-call-recordings.service.js.map +1 -0
  138. package/dist/modules/twilio/services/fetch-call.service.d.ts +8 -0
  139. package/dist/modules/twilio/services/fetch-call.service.d.ts.map +1 -0
  140. package/dist/modules/twilio/services/fetch-call.service.js +52 -0
  141. package/dist/modules/twilio/services/fetch-call.service.js.map +1 -0
  142. package/dist/modules/twilio/services/fetch-message.service.d.ts +8 -0
  143. package/dist/modules/twilio/services/fetch-message.service.d.ts.map +1 -0
  144. package/dist/modules/twilio/services/fetch-message.service.js +60 -0
  145. package/dist/modules/twilio/services/fetch-message.service.js.map +1 -0
  146. package/dist/modules/twilio/services/fetch-verification.service.d.ts +8 -0
  147. package/dist/modules/twilio/services/fetch-verification.service.d.ts.map +1 -0
  148. package/dist/modules/twilio/services/fetch-verification.service.js +58 -0
  149. package/dist/modules/twilio/services/fetch-verification.service.js.map +1 -0
  150. package/dist/modules/twilio/services/generate-twiml-dial.service.d.ts +8 -0
  151. package/dist/modules/twilio/services/generate-twiml-dial.service.d.ts.map +1 -0
  152. package/dist/modules/twilio/services/generate-twiml-dial.service.js +43 -0
  153. package/dist/modules/twilio/services/generate-twiml-dial.service.js.map +1 -0
  154. package/dist/modules/twilio/services/generate-twiml-say.service.d.ts +8 -0
  155. package/dist/modules/twilio/services/generate-twiml-say.service.d.ts.map +1 -0
  156. package/dist/modules/twilio/services/generate-twiml-say.service.js +41 -0
  157. package/dist/modules/twilio/services/generate-twiml-say.service.js.map +1 -0
  158. package/dist/modules/twilio/services/index.d.ts +20 -0
  159. package/dist/modules/twilio/services/index.d.ts.map +1 -1
  160. package/dist/modules/twilio/services/index.js +20 -0
  161. package/dist/modules/twilio/services/index.js.map +1 -1
  162. package/dist/modules/twilio/services/list-calls.service.d.ts +8 -0
  163. package/dist/modules/twilio/services/list-calls.service.d.ts.map +1 -0
  164. package/dist/modules/twilio/services/list-calls.service.js +62 -0
  165. package/dist/modules/twilio/services/list-calls.service.js.map +1 -0
  166. package/dist/modules/twilio/services/list-messages.service.d.ts +8 -0
  167. package/dist/modules/twilio/services/list-messages.service.d.ts.map +1 -0
  168. package/dist/modules/twilio/services/list-messages.service.js +65 -0
  169. package/dist/modules/twilio/services/list-messages.service.js.map +1 -0
  170. package/dist/modules/twilio/services/lookup-phone-number.service.d.ts +8 -0
  171. package/dist/modules/twilio/services/lookup-phone-number.service.d.ts.map +1 -0
  172. package/dist/modules/twilio/services/lookup-phone-number.service.js +61 -0
  173. package/dist/modules/twilio/services/lookup-phone-number.service.js.map +1 -0
  174. package/dist/modules/twilio/services/make-call.service.d.ts +8 -0
  175. package/dist/modules/twilio/services/make-call.service.d.ts.map +1 -0
  176. package/dist/modules/twilio/services/make-call.service.js +80 -0
  177. package/dist/modules/twilio/services/make-call.service.js.map +1 -0
  178. package/dist/modules/twilio/services/send-conversation-message.service.d.ts +8 -0
  179. package/dist/modules/twilio/services/send-conversation-message.service.d.ts.map +1 -0
  180. package/dist/modules/twilio/services/send-conversation-message.service.js +61 -0
  181. package/dist/modules/twilio/services/send-conversation-message.service.js.map +1 -0
  182. package/dist/modules/twilio/services/send-sms.service.d.ts.map +1 -1
  183. package/dist/modules/twilio/services/send-verification.service.d.ts +8 -0
  184. package/dist/modules/twilio/services/send-verification.service.d.ts.map +1 -0
  185. package/dist/modules/twilio/services/send-verification.service.js +64 -0
  186. package/dist/modules/twilio/services/send-verification.service.js.map +1 -0
  187. package/dist/modules/twilio/services/update-call.service.d.ts +8 -0
  188. package/dist/modules/twilio/services/update-call.service.d.ts.map +1 -0
  189. package/dist/modules/twilio/services/update-call.service.js +62 -0
  190. package/dist/modules/twilio/services/update-call.service.js.map +1 -0
  191. package/dist/modules/twilio/services/update-message.service.d.ts +8 -0
  192. package/dist/modules/twilio/services/update-message.service.d.ts.map +1 -0
  193. package/dist/modules/twilio/services/update-message.service.js +54 -0
  194. package/dist/modules/twilio/services/update-message.service.js.map +1 -0
  195. package/dist/modules/twilio/services/verify-code.service.d.ts +8 -0
  196. package/dist/modules/twilio/services/verify-code.service.d.ts.map +1 -0
  197. package/dist/modules/twilio/services/verify-code.service.js +62 -0
  198. package/dist/modules/twilio/services/verify-code.service.js.map +1 -0
  199. package/dist/modules/twilio/twilio-nest.module.d.ts.map +1 -1
  200. package/dist/modules/twilio/twilio-nest.module.js +51 -3
  201. package/dist/modules/twilio/twilio-nest.module.js.map +1 -1
  202. package/dist/modules/twilio/twilio.module.d.ts.map +1 -1
  203. package/dist/modules/twilio/twilio.module.js +24 -2
  204. package/dist/modules/twilio/twilio.module.js.map +1 -1
  205. package/dist/modules/types.d.ts +3 -1
  206. package/dist/modules/types.d.ts.map +1 -1
  207. package/dist/modules/types.js.map +1 -1
  208. package/dist/modules/webhook/controllers/index.d.ts +2 -0
  209. package/dist/modules/webhook/controllers/index.d.ts.map +1 -0
  210. package/dist/modules/webhook/controllers/index.js +18 -0
  211. package/dist/modules/webhook/controllers/index.js.map +1 -0
  212. package/dist/modules/webhook/controllers/webhook-receiver.controller.d.ts +12 -0
  213. package/dist/modules/webhook/controllers/webhook-receiver.controller.d.ts.map +1 -0
  214. package/dist/modules/webhook/controllers/webhook-receiver.controller.js +122 -0
  215. package/dist/modules/webhook/controllers/webhook-receiver.controller.js.map +1 -0
  216. package/dist/modules/webhook/credentials.d.ts +3 -0
  217. package/dist/modules/webhook/credentials.d.ts.map +1 -0
  218. package/dist/modules/webhook/credentials.js +5 -0
  219. package/dist/modules/webhook/credentials.js.map +1 -0
  220. package/dist/modules/webhook/services/index.d.ts +2 -0
  221. package/dist/modules/webhook/services/index.d.ts.map +1 -0
  222. package/dist/modules/webhook/services/index.js +18 -0
  223. package/dist/modules/webhook/services/index.js.map +1 -0
  224. package/dist/modules/webhook/services/webhook-received.service.d.ts +10 -0
  225. package/dist/modules/webhook/services/webhook-received.service.d.ts.map +1 -0
  226. package/dist/modules/webhook/services/webhook-received.service.js +94 -0
  227. package/dist/modules/webhook/services/webhook-received.service.js.map +1 -0
  228. package/dist/modules/webhook/triggers/index.d.ts +2 -0
  229. package/dist/modules/webhook/triggers/index.d.ts.map +1 -0
  230. package/dist/modules/webhook/triggers/index.js +18 -0
  231. package/dist/modules/webhook/triggers/index.js.map +1 -0
  232. package/dist/modules/webhook/triggers/webhook-received.trigger.d.ts +3 -0
  233. package/dist/modules/webhook/triggers/webhook-received.trigger.d.ts.map +1 -0
  234. package/dist/modules/webhook/triggers/webhook-received.trigger.js +78 -0
  235. package/dist/modules/webhook/triggers/webhook-received.trigger.js.map +1 -0
  236. package/dist/modules/webhook/webhook-nest.module.d.ts +3 -0
  237. package/dist/modules/webhook/webhook-nest.module.d.ts.map +1 -0
  238. package/dist/modules/webhook/webhook-nest.module.js +32 -0
  239. package/dist/modules/webhook/webhook-nest.module.js.map +1 -0
  240. package/dist/modules/webhook/webhook.module.d.ts +3 -0
  241. package/dist/modules/webhook/webhook.module.d.ts.map +1 -0
  242. package/dist/modules/webhook/webhook.module.js +16 -0
  243. package/dist/modules/webhook/webhook.module.js.map +1 -0
  244. package/dist/services/workflow-execution.service.d.ts +14 -1
  245. package/dist/services/workflow-execution.service.d.ts.map +1 -1
  246. package/dist/services/workflow-execution.service.js +319 -2
  247. package/dist/services/workflow-execution.service.js.map +1 -1
  248. package/dist/services/workflow-webhook.service.d.ts +13 -0
  249. package/dist/services/workflow-webhook.service.d.ts.map +1 -0
  250. package/dist/services/workflow-webhook.service.js +72 -0
  251. package/dist/services/workflow-webhook.service.js.map +1 -0
  252. package/dist/workflow-core.module.d.ts.map +1 -1
  253. package/dist/workflow-core.module.js +5 -0
  254. package/dist/workflow-core.module.js.map +1 -1
  255. package/dist/workflow.module.d.ts.map +1 -1
  256. package/dist/workflow.module.js +3 -0
  257. package/dist/workflow.module.js.map +1 -1
  258. package/package.json +2 -2
@@ -15,15 +15,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.WorkflowExecutionService = void 0;
16
16
  const crud_typeorm_1 = require("@dataui/crud-typeorm");
17
17
  const common_1 = require("@nestjs/common");
18
+ const core_1 = require("@nestjs/core");
18
19
  const typeorm_1 = require("@nestjs/typeorm");
19
20
  const typeorm_2 = require("typeorm");
20
21
  const workflow_constant_1 = require("../constants/workflow.constant");
21
22
  const workflow_execution_entity_1 = require("../entities/workflow-execution.entity");
23
+ const types_1 = require("../modules/types");
24
+ const workflow_edge_service_1 = require("./workflow-edge.service");
25
+ const workflow_module_credential_service_1 = require("./workflow-module-credential.service");
26
+ const workflow_module_service_1 = require("./workflow-module.service");
27
+ const workflow_node_service_1 = require("./workflow-node.service");
28
+ const workflow_session_service_1 = require("./workflow-session.service");
22
29
  let WorkflowExecutionService = class WorkflowExecutionService extends crud_typeorm_1.TypeOrmCrudService {
23
30
  repo;
24
- constructor(repo) {
31
+ workflowNodeService;
32
+ workflowEdgeService;
33
+ workflowModuleService;
34
+ workflowModuleCredentialService;
35
+ workflowSessionService;
36
+ moduleRef;
37
+ constructor(repo, workflowNodeService, workflowEdgeService, workflowModuleService, workflowModuleCredentialService, workflowSessionService, moduleRef) {
25
38
  super(repo);
26
39
  this.repo = repo;
40
+ this.workflowNodeService = workflowNodeService;
41
+ this.workflowEdgeService = workflowEdgeService;
42
+ this.workflowModuleService = workflowModuleService;
43
+ this.workflowModuleCredentialService = workflowModuleCredentialService;
44
+ this.workflowSessionService = workflowSessionService;
45
+ this.moduleRef = moduleRef;
27
46
  }
28
47
  async getExecutionsByWorkflowId(workflowId) {
29
48
  return this.repo.find({
@@ -86,11 +105,309 @@ let WorkflowExecutionService = class WorkflowExecutionService extends crud_typeo
86
105
  execution.currentNodeId = currentNodeId;
87
106
  return this.repo.save(execution);
88
107
  }
108
+ async executeNextNode(executionId, maxIterations = 1000) {
109
+ let iterations = 0;
110
+ while (iterations < maxIterations) {
111
+ iterations++;
112
+ const execution = await this.repo.findOne({ where: { id: executionId } });
113
+ if (!execution) {
114
+ throw new common_1.NotFoundException(`Execution with id "${executionId}" not found`);
115
+ }
116
+ if (execution.status !== workflow_constant_1.EXECUTION_STATUS.RUNNING) {
117
+ return execution;
118
+ }
119
+ let currentNode = null;
120
+ if (execution.currentNodeId) {
121
+ currentNode = await this.workflowNodeService.repo.findOne({
122
+ where: { workflowId: execution.workflowId, nodeId: execution.currentNodeId },
123
+ });
124
+ }
125
+ if (!currentNode) {
126
+ const allNodes = await this.workflowNodeService.getNodesByWorkflowId(execution.workflowId);
127
+ const triggerNodes = allNodes.filter((node) => {
128
+ const moduleDefinition = types_1.workflowModuleRegistry.get(node.type);
129
+ if (!moduleDefinition)
130
+ return false;
131
+ const trigger = [...moduleDefinition.actions, ...moduleDefinition.triggers].find((t) => t.key === node.actionType);
132
+ return trigger?.category === types_1.NODE_CATEGORY.TRIGGER;
133
+ });
134
+ if (triggerNodes.length === 0) {
135
+ throw new common_1.BadRequestException('No trigger node found in workflow');
136
+ }
137
+ currentNode = triggerNodes[0];
138
+ execution.currentNodeId = currentNode.nodeId;
139
+ await this.repo.save(execution);
140
+ }
141
+ let edges = await this.workflowEdgeService.getEdgesBySourceNode(execution.workflowId, currentNode.nodeId);
142
+ if (edges.length === 0) {
143
+ return this.completeExecution(executionId, execution.outputData);
144
+ }
145
+ const isConditionalNode = currentNode.type === 'conditional' && currentNode.actionType === 'evaluate-condition';
146
+ let conditionalResult = null;
147
+ let selectedEdge = null;
148
+ if (isConditionalNode) {
149
+ const moduleDefinition = types_1.workflowModuleRegistry.get(currentNode.type);
150
+ if (moduleDefinition) {
151
+ const actionOrTrigger = [...moduleDefinition.actions, ...moduleDefinition.triggers].find((item) => item.key === currentNode.actionType);
152
+ if (actionOrTrigger?.serviceClass) {
153
+ try {
154
+ let credentials;
155
+ const credentialId = currentNode.properties?.credentialId;
156
+ if (credentialId) {
157
+ const credential = await this.workflowModuleCredentialService.findOne({
158
+ where: { id: credentialId },
159
+ });
160
+ if (credential) {
161
+ credentials = credential.credentials;
162
+ }
163
+ }
164
+ let sessionContext = {};
165
+ let sessionData = {};
166
+ let session = null;
167
+ if (execution.sessionId) {
168
+ session = await this.workflowSessionService.findOne({
169
+ where: { id: execution.sessionId },
170
+ });
171
+ if (session) {
172
+ sessionContext = session.context || {};
173
+ sessionData = {
174
+ userId: session.userId,
175
+ externalId: session.externalId,
176
+ currentNodeId: session.currentNodeId,
177
+ history: session.history,
178
+ isActive: session.isActive,
179
+ lastActivityAt: session.lastActivityAt,
180
+ };
181
+ }
182
+ }
183
+ const inputs = {};
184
+ if (actionOrTrigger.inputs) {
185
+ for (const input of actionOrTrigger.inputs) {
186
+ const value = currentNode.properties[input.id];
187
+ if (value !== undefined) {
188
+ inputs[input.id] = value;
189
+ }
190
+ else if (input.defaultValue !== undefined) {
191
+ inputs[input.id] = input.defaultValue;
192
+ }
193
+ }
194
+ }
195
+ if (isConditionalNode && currentNode.properties.routes) {
196
+ inputs.routes = currentNode.properties.routes;
197
+ }
198
+ const context = {
199
+ workflowId: execution.workflowId,
200
+ executionId: execution.id,
201
+ sessionId: execution.sessionId,
202
+ credentials,
203
+ context: {
204
+ ...(execution.inputData || {}),
205
+ ...sessionContext,
206
+ session: sessionData,
207
+ },
208
+ previousOutputs: execution.outputData || {},
209
+ };
210
+ let actionService;
211
+ try {
212
+ actionService = this.moduleRef.get(actionOrTrigger.serviceClass, { strict: false });
213
+ }
214
+ catch {
215
+ actionService = new actionOrTrigger.serviceClass();
216
+ }
217
+ conditionalResult = await actionService.perform(inputs, context);
218
+ execution.outputData = {
219
+ ...execution.outputData,
220
+ [currentNode.nodeId]: conditionalResult,
221
+ };
222
+ if (execution.sessionId && session) {
223
+ await this.workflowSessionService.addToSessionHistory(execution.sessionId, currentNode.nodeId, conditionalResult);
224
+ if (conditionalResult._context && typeof conditionalResult._context === 'object') {
225
+ await this.workflowSessionService.updateSessionContext(execution.sessionId, conditionalResult._context);
226
+ }
227
+ }
228
+ const routeId = conditionalResult.routeId;
229
+ const result = conditionalResult.result;
230
+ if (routeId) {
231
+ selectedEdge =
232
+ edges.find((e) => e.sourceHandle === routeId) ||
233
+ edges.find((e) => e.sourceHandle === `route_${routeId}`) ||
234
+ edges.find((e) => e.data?.routeId === routeId) ||
235
+ null;
236
+ }
237
+ if (!selectedEdge && (result === false || !routeId)) {
238
+ selectedEdge =
239
+ edges.find((e) => e.sourceHandle === 'default') ||
240
+ edges.find((e) => e.data?.isDefault === true) ||
241
+ null;
242
+ }
243
+ if (!selectedEdge) {
244
+ selectedEdge = edges[0];
245
+ }
246
+ edges = selectedEdge ? [selectedEdge] : [];
247
+ if (selectedEdge) {
248
+ execution.currentNodeId = selectedEdge.target;
249
+ await this.repo.save(execution);
250
+ if (execution.sessionId && session) {
251
+ session.currentNodeId = selectedEdge.target;
252
+ session.lastActivityAt = new Date();
253
+ await this.workflowSessionService.repo.save(session);
254
+ }
255
+ }
256
+ }
257
+ catch (error) {
258
+ return this.failExecution(executionId, error instanceof Error ? error.message : 'Unknown error occurred', {
259
+ nodeId: currentNode.nodeId,
260
+ nodeType: currentNode.type,
261
+ actionType: currentNode.actionType,
262
+ error: error instanceof Error ? error.stack : undefined,
263
+ });
264
+ }
265
+ }
266
+ }
267
+ }
268
+ let hasExecutedAction = false;
269
+ for (const edge of edges) {
270
+ const nextNode = await this.workflowNodeService.repo.findOne({
271
+ where: { workflowId: execution.workflowId, nodeId: edge.target },
272
+ });
273
+ if (!nextNode) {
274
+ continue;
275
+ }
276
+ const moduleDefinition = types_1.workflowModuleRegistry.get(nextNode.type);
277
+ if (!moduleDefinition) {
278
+ continue;
279
+ }
280
+ const actionOrTrigger = [...moduleDefinition.actions, ...moduleDefinition.triggers].find((item) => item.key === nextNode.actionType);
281
+ if (!actionOrTrigger) {
282
+ continue;
283
+ }
284
+ if (actionOrTrigger.category !== types_1.NODE_CATEGORY.ACTION) {
285
+ execution.currentNodeId = nextNode.nodeId;
286
+ await this.repo.save(execution);
287
+ hasExecutedAction = true;
288
+ break;
289
+ }
290
+ if (!actionOrTrigger.serviceClass) {
291
+ throw new common_1.BadRequestException(`Action "${nextNode.actionType}" does not have a service class and cannot be executed`);
292
+ }
293
+ let credentials;
294
+ const credentialId = nextNode.properties?.credentialId;
295
+ if (credentialId) {
296
+ const credential = await this.workflowModuleCredentialService.findOne({
297
+ where: { id: credentialId },
298
+ });
299
+ if (credential) {
300
+ credentials = credential.credentials;
301
+ }
302
+ }
303
+ try {
304
+ let actionService;
305
+ try {
306
+ actionService = this.moduleRef.get(actionOrTrigger.serviceClass, { strict: false });
307
+ }
308
+ catch {
309
+ actionService = new actionOrTrigger.serviceClass();
310
+ }
311
+ const inputs = {};
312
+ if (actionOrTrigger.inputs) {
313
+ for (const input of actionOrTrigger.inputs) {
314
+ const value = nextNode.properties[input.id];
315
+ if (value !== undefined) {
316
+ inputs[input.id] = value;
317
+ }
318
+ else if (input.defaultValue !== undefined) {
319
+ inputs[input.id] = input.defaultValue;
320
+ }
321
+ }
322
+ }
323
+ let sessionContext = {};
324
+ let sessionData = {};
325
+ let session = null;
326
+ if (execution.sessionId) {
327
+ session = await this.workflowSessionService.findOne({
328
+ where: { id: execution.sessionId },
329
+ });
330
+ if (session) {
331
+ sessionContext = session.context || {};
332
+ sessionData = {
333
+ userId: session.userId,
334
+ externalId: session.externalId,
335
+ currentNodeId: session.currentNodeId,
336
+ history: session.history,
337
+ isActive: session.isActive,
338
+ lastActivityAt: session.lastActivityAt,
339
+ };
340
+ }
341
+ }
342
+ const context = {
343
+ workflowId: execution.workflowId,
344
+ executionId: execution.id,
345
+ sessionId: execution.sessionId,
346
+ credentials,
347
+ context: {
348
+ ...(execution.inputData || {}),
349
+ ...sessionContext,
350
+ session: sessionData,
351
+ },
352
+ previousOutputs: execution.outputData || {},
353
+ };
354
+ const result = await actionService.perform(inputs, context);
355
+ execution.outputData = {
356
+ ...execution.outputData,
357
+ [nextNode.nodeId]: result,
358
+ };
359
+ if (execution.sessionId && session) {
360
+ await this.workflowSessionService.addToSessionHistory(execution.sessionId, nextNode.nodeId, result);
361
+ if (result._context && typeof result._context === 'object') {
362
+ await this.workflowSessionService.updateSessionContext(execution.sessionId, result._context);
363
+ }
364
+ }
365
+ execution.currentNodeId = nextNode.nodeId;
366
+ await this.repo.save(execution);
367
+ if (execution.sessionId && session) {
368
+ session.currentNodeId = nextNode.nodeId;
369
+ session.lastActivityAt = new Date();
370
+ await this.workflowSessionService.repo.save(session);
371
+ }
372
+ hasExecutedAction = true;
373
+ break;
374
+ }
375
+ catch (error) {
376
+ return this.failExecution(executionId, error instanceof Error ? error.message : 'Unknown error occurred', {
377
+ nodeId: nextNode.nodeId,
378
+ nodeType: nextNode.type,
379
+ actionType: nextNode.actionType,
380
+ error: error instanceof Error ? error.stack : undefined,
381
+ });
382
+ }
383
+ }
384
+ if (!hasExecutedAction) {
385
+ return this.completeExecution(executionId, execution.outputData);
386
+ }
387
+ }
388
+ if (iterations >= maxIterations) {
389
+ return this.failExecution(executionId, `Workflow execution exceeded maximum iterations (${maxIterations}). Possible infinite loop detected.`, {
390
+ iterations,
391
+ maxIterations,
392
+ });
393
+ }
394
+ const finalExecution = await this.repo.findOne({ where: { id: executionId } });
395
+ if (!finalExecution) {
396
+ throw new common_1.NotFoundException(`Execution with id "${executionId}" not found`);
397
+ }
398
+ return finalExecution;
399
+ }
89
400
  };
90
401
  exports.WorkflowExecutionService = WorkflowExecutionService;
91
402
  exports.WorkflowExecutionService = WorkflowExecutionService = __decorate([
92
403
  (0, common_1.Injectable)(),
93
404
  __param(0, (0, typeorm_1.InjectRepository)(workflow_execution_entity_1.WorkflowExecution)),
94
- __metadata("design:paramtypes", [typeorm_2.Repository])
405
+ __metadata("design:paramtypes", [typeorm_2.Repository,
406
+ workflow_node_service_1.WorkflowNodeService,
407
+ workflow_edge_service_1.WorkflowEdgeService,
408
+ workflow_module_service_1.WorkflowModuleService,
409
+ workflow_module_credential_service_1.WorkflowModuleCredentialService,
410
+ workflow_session_service_1.WorkflowSessionService,
411
+ core_1.ModuleRef])
95
412
  ], WorkflowExecutionService);
96
413
  //# sourceMappingURL=workflow-execution.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-execution.service.js","sourceRoot":"","sources":["../../src/services/workflow-execution.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-execution.service.js","sourceRoot":"","sources":["../../src/services/workflow-execution.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { TypeOrmCrudService } from '@dataui/crud-typeorm';
2
+ import { Repository } from 'typeorm';
3
+ import { HTTP_METHOD, WorkflowWebhook } from '../entities/workflow-webhook.entity';
4
+ export declare class WorkflowWebhookService extends TypeOrmCrudService<WorkflowWebhook> {
5
+ readonly repo: Repository<WorkflowWebhook>;
6
+ constructor(repo: Repository<WorkflowWebhook>);
7
+ findByPathAndMethod(webhookPath: string, httpMethod: HTTP_METHOD): Promise<WorkflowWebhook | null>;
8
+ findByWorkflowId(workflowId: string): Promise<WorkflowWebhook[]>;
9
+ findByNodeId(nodeId: string): Promise<WorkflowWebhook | null>;
10
+ activate(id: string): Promise<WorkflowWebhook>;
11
+ deactivate(id: string): Promise<WorkflowWebhook>;
12
+ }
13
+ //# sourceMappingURL=workflow-webhook.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-webhook.service.d.ts","sourceRoot":"","sources":["../../src/services/workflow-webhook.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAEnF,qBACa,sBAAuB,SAAQ,kBAAkB,CAAC,eAAe,CAAC;aAG3D,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC;gBAAjC,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC;IAK7C,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,WAAW,GACtB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAW5B,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAO7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAS9C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAQvD"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.WorkflowWebhookService = void 0;
16
+ const crud_typeorm_1 = require("@dataui/crud-typeorm");
17
+ const common_1 = require("@nestjs/common");
18
+ const typeorm_1 = require("@nestjs/typeorm");
19
+ const typeorm_2 = require("typeorm");
20
+ const workflow_webhook_entity_1 = require("../entities/workflow-webhook.entity");
21
+ let WorkflowWebhookService = class WorkflowWebhookService extends crud_typeorm_1.TypeOrmCrudService {
22
+ repo;
23
+ constructor(repo) {
24
+ super(repo);
25
+ this.repo = repo;
26
+ }
27
+ async findByPathAndMethod(webhookPath, httpMethod) {
28
+ return this.repo.findOne({
29
+ where: {
30
+ webhookPath,
31
+ httpMethod,
32
+ isActive: true,
33
+ },
34
+ relations: ['node', 'workflow'],
35
+ });
36
+ }
37
+ async findByWorkflowId(workflowId) {
38
+ return this.repo.find({
39
+ where: { workflowId },
40
+ relations: ['node'],
41
+ });
42
+ }
43
+ async findByNodeId(nodeId) {
44
+ return this.repo.findOne({
45
+ where: { nodeId },
46
+ relations: ['node', 'workflow'],
47
+ });
48
+ }
49
+ async activate(id) {
50
+ const webhook = await this.repo.findOne({ where: { id } });
51
+ if (!webhook) {
52
+ throw new common_1.NotFoundException(`Webhook with id "${id}" not found`);
53
+ }
54
+ webhook.isActive = true;
55
+ return this.repo.save(webhook);
56
+ }
57
+ async deactivate(id) {
58
+ const webhook = await this.repo.findOne({ where: { id } });
59
+ if (!webhook) {
60
+ throw new common_1.NotFoundException(`Webhook with id "${id}" not found`);
61
+ }
62
+ webhook.isActive = false;
63
+ return this.repo.save(webhook);
64
+ }
65
+ };
66
+ exports.WorkflowWebhookService = WorkflowWebhookService;
67
+ exports.WorkflowWebhookService = WorkflowWebhookService = __decorate([
68
+ (0, common_1.Injectable)(),
69
+ __param(0, (0, typeorm_1.InjectRepository)(workflow_webhook_entity_1.WorkflowWebhook)),
70
+ __metadata("design:paramtypes", [typeorm_2.Repository])
71
+ ], WorkflowWebhookService);
72
+ //# sourceMappingURL=workflow-webhook.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-webhook.service.js","sourceRoot":"","sources":["../../src/services/workflow-webhook.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAA0D;AAC1D,2CAA+D;AAC/D,6CAAmD;AACnD,qCAAqC;AAErC,iFAAmF;AAG5E,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,iCAAmC;IAG3D;IAFlB,YAEkB,IAAiC;QAEjD,KAAK,CAAC,IAAI,CAAC,CAAC;QAFI,SAAI,GAAJ,IAAI,CAA6B;IAGnD,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,WAAmB,EACnB,UAAuB;QAEvB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,KAAK,EAAE;gBACL,WAAW;gBACX,UAAU;gBACV,QAAQ,EAAE,IAAI;aACf;YACD,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,KAAK,EAAE,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,CAAC,MAAM,CAAC;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,KAAK,EAAE,EAAE,MAAM,EAAE;YACjB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,0BAAiB,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,0BAAiB,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACF,CAAA;AArDY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,yCAAe,CAAC,CAAA;qCACZ,oBAAU;GAHvB,sBAAsB,CAqDlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-core.module.d.ts","sourceRoot":"","sources":["../src/workflow-core.module.ts"],"names":[],"mappings":"AAkBA,qBA+Ba,kBAAkB;CAAG"}
1
+ {"version":3,"file":"workflow-core.module.d.ts","sourceRoot":"","sources":["../src/workflow-core.module.ts"],"names":[],"mappings":"AAoBA,qBAkCa,kBAAkB;CAAG"}
@@ -16,6 +16,7 @@ const workflow_module_entity_1 = require("./entities/workflow-module.entity");
16
16
  const workflow_module_credential_entity_1 = require("./entities/workflow-module-credential.entity");
17
17
  const workflow_node_entity_1 = require("./entities/workflow-node.entity");
18
18
  const workflow_session_entity_1 = require("./entities/workflow-session.entity");
19
+ const workflow_webhook_entity_1 = require("./entities/workflow-webhook.entity");
19
20
  const workflow_service_1 = require("./services/workflow.service");
20
21
  const workflow_edge_service_1 = require("./services/workflow-edge.service");
21
22
  const workflow_execution_service_1 = require("./services/workflow-execution.service");
@@ -23,6 +24,7 @@ const workflow_module_service_1 = require("./services/workflow-module.service");
23
24
  const workflow_module_credential_service_1 = require("./services/workflow-module-credential.service");
24
25
  const workflow_node_service_1 = require("./services/workflow-node.service");
25
26
  const workflow_session_service_1 = require("./services/workflow-session.service");
27
+ const workflow_webhook_service_1 = require("./services/workflow-webhook.service");
26
28
  let WorkflowCoreModule = class WorkflowCoreModule {
27
29
  };
28
30
  exports.WorkflowCoreModule = WorkflowCoreModule;
@@ -37,6 +39,7 @@ exports.WorkflowCoreModule = WorkflowCoreModule = __decorate([
37
39
  workflow_session_entity_1.WorkflowSession,
38
40
  workflow_module_credential_entity_1.WorkflowModuleCredential,
39
41
  workflow_module_entity_1.WorkflowModule,
42
+ workflow_webhook_entity_1.WorkflowWebhook,
40
43
  ]),
41
44
  ],
42
45
  providers: [
@@ -47,6 +50,7 @@ exports.WorkflowCoreModule = WorkflowCoreModule = __decorate([
47
50
  workflow_session_service_1.WorkflowSessionService,
48
51
  workflow_module_credential_service_1.WorkflowModuleCredentialService,
49
52
  workflow_module_service_1.WorkflowModuleService,
53
+ workflow_webhook_service_1.WorkflowWebhookService,
50
54
  ],
51
55
  exports: [
52
56
  workflow_service_1.WorkflowService,
@@ -56,6 +60,7 @@ exports.WorkflowCoreModule = WorkflowCoreModule = __decorate([
56
60
  workflow_session_service_1.WorkflowSessionService,
57
61
  workflow_module_credential_service_1.WorkflowModuleCredentialService,
58
62
  workflow_module_service_1.WorkflowModuleService,
63
+ workflow_webhook_service_1.WorkflowWebhookService,
59
64
  ],
60
65
  })
61
66
  ], WorkflowCoreModule);
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-core.module.js","sourceRoot":"","sources":["../src/workflow-core.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAEhD,gEAAsD;AACtD,0EAA+D;AAC/D,oFAAyE;AACzE,8EAA2F;AAC3F,oGAAwF;AACxF,0EAA+D;AAC/D,gFAAqE;AACrE,kEAA8D;AAC9D,4EAAuE;AACvE,sFAAiF;AACjF,gFAA2E;AAC3E,sGAAgG;AAChG,4EAAuE;AACvE,kFAA6E;AAiCtE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IA/B9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC;gBACvB,0BAAQ;gBACR,mCAAY;gBACZ,mCAAY;gBACZ,6CAAiB;gBACjB,yCAAe;gBACf,4DAAwB;gBACxB,uCAAoB;aACrB,CAAC;SACH;QACD,SAAS,EAAE;YACT,kCAAe;YACf,2CAAmB;YACnB,2CAAmB;YACnB,qDAAwB;YACxB,iDAAsB;YACtB,oEAA+B;YAC/B,+CAAqB;SACtB;QACD,OAAO,EAAE;YACP,kCAAe;YACf,2CAAmB;YACnB,2CAAmB;YACnB,qDAAwB;YACxB,iDAAsB;YACtB,oEAA+B;YAC/B,+CAAqB;SACtB;KACF,CAAC;GACW,kBAAkB,CAAG"}
1
+ {"version":3,"file":"workflow-core.module.js","sourceRoot":"","sources":["../src/workflow-core.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAEhD,gEAAsD;AACtD,0EAA+D;AAC/D,oFAAyE;AACzE,8EAA2F;AAC3F,oGAAwF;AACxF,0EAA+D;AAC/D,gFAAqE;AACrE,gFAAqE;AACrE,kEAA8D;AAC9D,4EAAuE;AACvE,sFAAiF;AACjF,gFAA2E;AAC3E,sGAAgG;AAChG,4EAAuE;AACvE,kFAA6E;AAC7E,kFAA6E;AAoCtE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAlC9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC;gBACvB,0BAAQ;gBACR,mCAAY;gBACZ,mCAAY;gBACZ,6CAAiB;gBACjB,yCAAe;gBACf,4DAAwB;gBACxB,uCAAoB;gBACpB,yCAAe;aAChB,CAAC;SACH;QACD,SAAS,EAAE;YACT,kCAAe;YACf,2CAAmB;YACnB,2CAAmB;YACnB,qDAAwB;YACxB,iDAAsB;YACtB,oEAA+B;YAC/B,+CAAqB;YACrB,iDAAsB;SACvB;QACD,OAAO,EAAE;YACP,kCAAe;YACf,2CAAmB;YACnB,2CAAmB;YACnB,qDAAwB;YACxB,iDAAsB;YACtB,oEAA+B;YAC/B,+CAAqB;YACrB,iDAAsB;SACvB;KACF,CAAC;GACW,kBAAkB,CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.module.d.ts","sourceRoot":"","sources":["../src/workflow.module.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,CAAC;AAWnB,qBAiBa,cAAc;CAAG"}
1
+ {"version":3,"file":"workflow.module.d.ts","sourceRoot":"","sources":["../src/workflow.module.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,CAAC;AAYnB,qBAmBa,cAAc;CAAG"}
@@ -14,6 +14,7 @@ const ai_nest_module_1 = require("./modules/ai/ai-nest.module");
14
14
  const chatbot_nest_module_1 = require("./modules/chatbot/chatbot-nest.module");
15
15
  const conditional_nest_module_1 = require("./modules/conditional/conditional-nest.module");
16
16
  const twilio_nest_module_1 = require("./modules/twilio/twilio-nest.module");
17
+ const webhook_nest_module_1 = require("./modules/webhook/webhook-nest.module");
17
18
  const workflow_core_module_1 = require("./workflow-core.module");
18
19
  let WorkflowModule = class WorkflowModule {
19
20
  };
@@ -27,6 +28,7 @@ exports.WorkflowModule = WorkflowModule = __decorate([
27
28
  chatbot_nest_module_1.ChatbotNestModule,
28
29
  conditional_nest_module_1.ConditionalNestModule,
29
30
  twilio_nest_module_1.TwilioNestModule,
31
+ webhook_nest_module_1.WebhookNestModule,
30
32
  ],
31
33
  exports: [
32
34
  workflow_core_module_1.WorkflowCoreModule,
@@ -34,6 +36,7 @@ exports.WorkflowModule = WorkflowModule = __decorate([
34
36
  chatbot_nest_module_1.ChatbotNestModule,
35
37
  conditional_nest_module_1.ConditionalNestModule,
36
38
  twilio_nest_module_1.TwilioNestModule,
39
+ webhook_nest_module_1.WebhookNestModule,
37
40
  ],
38
41
  })
39
42
  ], WorkflowModule);
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.module.js","sourceRoot":"","sources":["../src/workflow.module.ts"],"names":[],"mappings":";;;;;;;;;AACA,qBAAmB;AAEnB,2CAAwC;AACxC,6CAAkD;AAElD,gEAA2D;AAC3D,+EAA0E;AAC1E,2FAAsF;AACtF,4EAAuE;AACvE,iEAA4D;AAmBrD,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAjB1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,mBAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,yCAAkB;YAClB,6BAAY;YACZ,uCAAiB;YACjB,+CAAqB;YACrB,qCAAgB;SACjB;QACD,OAAO,EAAE;YACP,yCAAkB;YAClB,6BAAY;YACZ,uCAAiB;YACjB,+CAAqB;YACrB,qCAAgB;SACjB;KACF,CAAC;GACW,cAAc,CAAG"}
1
+ {"version":3,"file":"workflow.module.js","sourceRoot":"","sources":["../src/workflow.module.ts"],"names":[],"mappings":";;;;;;;;;AACA,qBAAmB;AAEnB,2CAAwC;AACxC,6CAAkD;AAElD,gEAA2D;AAC3D,+EAA0E;AAC1E,2FAAsF;AACtF,4EAAuE;AACvE,+EAA0E;AAC1E,iEAA4D;AAqBrD,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAnB1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,mBAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,yCAAkB;YAClB,6BAAY;YACZ,uCAAiB;YACjB,+CAAqB;YACrB,qCAAgB;YAChB,uCAAiB;SAClB;QACD,OAAO,EAAE;YACP,yCAAkB;YAClB,6BAAY;YACZ,uCAAiB;YACjB,+CAAqB;YACrB,qCAAgB;YAChB,uCAAiB;SAClB;KACF,CAAC;GACW,cAAc,CAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venturialstd/workflow",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Workflow Module for Venturial",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -74,7 +74,7 @@
74
74
  "@nestjs/swagger": "^11.0.3",
75
75
  "@nestjs/typeorm": "^11.0.0",
76
76
  "@venturialstd/core": "^1.0.16",
77
- "@venturialstd/twilio": "^0.0.2",
77
+ "@venturialstd/twilio": "^0.0.3",
78
78
  "bcrypt": "^5.1.1",
79
79
  "cache-manager": "^6.4.0",
80
80
  "class-transformer": "^0.5.1",