@contember/engine-actions 2.1.0-alpha.3 → 2.1.0-alpha.35

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 (506) hide show
  1. package/graphql.codegen.yml +2 -2
  2. package/package.json +27 -22
  3. package/src/ActionsExecutionContainerHookFactory.ts +23 -11
  4. package/src/authorization/ActionsAuthorizationActions.ts +2 -0
  5. package/src/dispatch/DispatchWorkerSupervisor.ts +17 -16
  6. package/src/dispatch/EventDispatcher.ts +0 -2
  7. package/src/dispatch/EventsRepository.ts +63 -43
  8. package/src/dispatch/ProjectDispatcher.ts +6 -11
  9. package/src/dispatch/WebhookTargetHandler.ts +18 -9
  10. package/src/dispatch/types.ts +1 -2
  11. package/src/graphql/http/ActionsApiMiddlewareFactory.ts +7 -5
  12. package/src/graphql/http/ActionsContextResolver.ts +1 -2
  13. package/src/graphql/http/ActionsGraphQLHandlerFactory.ts +0 -1
  14. package/src/graphql/http/ActionsWebsocketControllerFactory.ts +7 -5
  15. package/src/graphql/resolvers/ActionsContext.ts +1 -0
  16. package/src/graphql/resolvers/ResolversFactory.ts +9 -2
  17. package/src/graphql/resolvers/mutation/RetryEventMutationResolver.ts +22 -0
  18. package/src/graphql/resolvers/mutation/SetVariablesMutationResolver.ts +0 -1
  19. package/src/graphql/resolvers/mutation/StopEventMutationResolver.ts +19 -0
  20. package/src/graphql/resolvers/mutation/index.ts +2 -0
  21. package/src/graphql/resolvers/query/EventsQueryResolver.ts +15 -8
  22. package/src/graphql/resolvers/query/VariablesQueryResolver.ts +0 -1
  23. package/src/graphql/schema/actions.graphql.ts +18 -4
  24. package/src/graphql/schema/index.ts +84 -30
  25. package/src/index.ts +55 -30
  26. package/src/migrations/2023-03-10-145000-actions-variables.ts +1 -1
  27. package/src/migrations/2025-05-28-160000-action-event-user.ts +16 -0
  28. package/src/migrations/index.ts +2 -0
  29. package/src/migrations/snapshot.ts +6 -3
  30. package/src/model/EventByIdQuery.ts +21 -0
  31. package/src/model/EventsToProcessSpecification.ts +9 -8
  32. package/src/model/SetVariableCommand.ts +0 -1
  33. package/src/model/types.ts +3 -0
  34. package/src/triggers/TriggerHandler.ts +16 -15
  35. package/src/triggers/TriggerIndirectChangesFetcher.ts +62 -3
  36. package/src/triggers/TriggerListeners.ts +1 -8
  37. package/src/triggers/TriggerListenersBuilder.ts +3 -6
  38. package/src/triggers/TriggerListenersStore.ts +2 -2
  39. package/src/triggers/TriggerPayloadBuilder.ts +43 -13
  40. package/src/triggers/TriggerPayloadManager.ts +2 -4
  41. package/src/triggers/TriggerPayloadPersister.ts +8 -3
  42. package/src/utils/notifyChannel.ts +6 -0
  43. package/tests/cases/unit/generator.test.ts +133 -136
  44. package/tests/cases/unit/webhookHandler.test.ts +47 -35
  45. package/dist/development/index.cjs +0 -94
  46. package/dist/development/index.cjs.map +0 -1
  47. package/dist/development/index.js +0 -94
  48. package/dist/development/index.js.map +0 -1
  49. package/dist/development/src/ActionsExecutionContainerHookFactory.cjs +0 -30
  50. package/dist/development/src/ActionsExecutionContainerHookFactory.cjs.map +0 -1
  51. package/dist/development/src/ActionsExecutionContainerHookFactory.js +0 -30
  52. package/dist/development/src/ActionsExecutionContainerHookFactory.js.map +0 -1
  53. package/dist/development/src/ImplementationException.cjs +0 -6
  54. package/dist/development/src/ImplementationException.cjs.map +0 -1
  55. package/dist/development/src/ImplementationException.js +0 -6
  56. package/dist/development/src/ImplementationException.js.map +0 -1
  57. package/dist/development/src/ListenerStoreProvider.cjs +0 -25
  58. package/dist/development/src/ListenerStoreProvider.cjs.map +0 -1
  59. package/dist/development/src/ListenerStoreProvider.js +0 -25
  60. package/dist/development/src/ListenerStoreProvider.js.map +0 -1
  61. package/dist/development/src/authorization/ActionsAuthorizationActions.cjs +0 -15
  62. package/dist/development/src/authorization/ActionsAuthorizationActions.cjs.map +0 -1
  63. package/dist/development/src/authorization/ActionsAuthorizationActions.js +0 -16
  64. package/dist/development/src/authorization/ActionsAuthorizationActions.js.map +0 -1
  65. package/dist/development/src/authorization/ActionsPermissionsFactory.cjs +0 -16
  66. package/dist/development/src/authorization/ActionsPermissionsFactory.cjs.map +0 -1
  67. package/dist/development/src/authorization/ActionsPermissionsFactory.js +0 -16
  68. package/dist/development/src/authorization/ActionsPermissionsFactory.js.map +0 -1
  69. package/dist/development/src/dispatch/DispatchWorkerSupervisor.cjs +0 -125
  70. package/dist/development/src/dispatch/DispatchWorkerSupervisor.cjs.map +0 -1
  71. package/dist/development/src/dispatch/DispatchWorkerSupervisor.js +0 -125
  72. package/dist/development/src/dispatch/DispatchWorkerSupervisor.js.map +0 -1
  73. package/dist/development/src/dispatch/EventDispatcher.cjs +0 -43
  74. package/dist/development/src/dispatch/EventDispatcher.cjs.map +0 -1
  75. package/dist/development/src/dispatch/EventDispatcher.js +0 -43
  76. package/dist/development/src/dispatch/EventDispatcher.js.map +0 -1
  77. package/dist/development/src/dispatch/EventsRepository.cjs +0 -104
  78. package/dist/development/src/dispatch/EventsRepository.cjs.map +0 -1
  79. package/dist/development/src/dispatch/EventsRepository.js +0 -104
  80. package/dist/development/src/dispatch/EventsRepository.js.map +0 -1
  81. package/dist/development/src/dispatch/ProjectDispatcher.cjs +0 -99
  82. package/dist/development/src/dispatch/ProjectDispatcher.cjs.map +0 -1
  83. package/dist/development/src/dispatch/ProjectDispatcher.js +0 -99
  84. package/dist/development/src/dispatch/ProjectDispatcher.js.map +0 -1
  85. package/dist/development/src/dispatch/TargetHandlerResolver.cjs +0 -16
  86. package/dist/development/src/dispatch/TargetHandlerResolver.cjs.map +0 -1
  87. package/dist/development/src/dispatch/TargetHandlerResolver.js +0 -16
  88. package/dist/development/src/dispatch/TargetHandlerResolver.js.map +0 -1
  89. package/dist/development/src/dispatch/WebhookFetcher.cjs +0 -16
  90. package/dist/development/src/dispatch/WebhookFetcher.cjs.map +0 -1
  91. package/dist/development/src/dispatch/WebhookFetcher.js +0 -16
  92. package/dist/development/src/dispatch/WebhookFetcher.js.map +0 -1
  93. package/dist/development/src/dispatch/WebhookTargetHandler.cjs +0 -193
  94. package/dist/development/src/dispatch/WebhookTargetHandler.cjs.map +0 -1
  95. package/dist/development/src/dispatch/WebhookTargetHandler.js +0 -176
  96. package/dist/development/src/dispatch/WebhookTargetHandler.js.map +0 -1
  97. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs +0 -38
  98. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +0 -1
  99. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js +0 -38
  100. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js.map +0 -1
  101. package/dist/development/src/graphql/http/ActionsContextResolver.cjs +0 -39
  102. package/dist/development/src/graphql/http/ActionsContextResolver.cjs.map +0 -1
  103. package/dist/development/src/graphql/http/ActionsContextResolver.js +0 -39
  104. package/dist/development/src/graphql/http/ActionsContextResolver.js.map +0 -1
  105. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.cjs +0 -20
  106. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +0 -1
  107. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.js +0 -20
  108. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +0 -1
  109. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.cjs +0 -149
  110. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +0 -1
  111. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.js +0 -132
  112. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.js.map +0 -1
  113. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs +0 -31
  114. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs.map +0 -1
  115. package/dist/development/src/graphql/resolvers/ResolversFactory.js +0 -31
  116. package/dist/development/src/graphql/resolvers/ResolversFactory.js.map +0 -1
  117. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs +0 -19
  118. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +0 -1
  119. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js +0 -19
  120. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +0 -1
  121. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs +0 -19
  122. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +0 -1
  123. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js +0 -19
  124. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +0 -1
  125. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs +0 -48
  126. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +0 -1
  127. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js +0 -48
  128. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js.map +0 -1
  129. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.cjs +0 -19
  130. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +0 -1
  131. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.js +0 -19
  132. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.js.map +0 -1
  133. package/dist/development/src/graphql/schema/actions.graphql.cjs +0 -93
  134. package/dist/development/src/graphql/schema/actions.graphql.cjs.map +0 -1
  135. package/dist/development/src/graphql/schema/actions.graphql.js +0 -93
  136. package/dist/development/src/graphql/schema/actions.graphql.js.map +0 -1
  137. package/dist/development/src/migrations/2023-03-10-145000-actions-variables.cjs +0 -16
  138. package/dist/development/src/migrations/2023-03-10-145000-actions-variables.cjs.map +0 -1
  139. package/dist/development/src/migrations/2023-03-10-145000-actions-variables.js +0 -17
  140. package/dist/development/src/migrations/2023-03-10-145000-actions-variables.js.map +0 -1
  141. package/dist/development/src/migrations/index.cjs +0 -10
  142. package/dist/development/src/migrations/index.cjs.map +0 -1
  143. package/dist/development/src/migrations/index.js +0 -10
  144. package/dist/development/src/migrations/index.js.map +0 -1
  145. package/dist/development/src/migrations/snapshot.cjs +0 -48
  146. package/dist/development/src/migrations/snapshot.cjs.map +0 -1
  147. package/dist/development/src/migrations/snapshot.js +0 -49
  148. package/dist/development/src/migrations/snapshot.js.map +0 -1
  149. package/dist/development/src/model/EventsInProcessingQuery.cjs +0 -14
  150. package/dist/development/src/model/EventsInProcessingQuery.cjs.map +0 -1
  151. package/dist/development/src/model/EventsInProcessingQuery.js +0 -14
  152. package/dist/development/src/model/EventsInProcessingQuery.js.map +0 -1
  153. package/dist/development/src/model/EventsToProcessQuery.cjs +0 -15
  154. package/dist/development/src/model/EventsToProcessQuery.cjs.map +0 -1
  155. package/dist/development/src/model/EventsToProcessQuery.js +0 -15
  156. package/dist/development/src/model/EventsToProcessQuery.js.map +0 -1
  157. package/dist/development/src/model/EventsToProcessSpecification.cjs +0 -8
  158. package/dist/development/src/model/EventsToProcessSpecification.cjs.map +0 -1
  159. package/dist/development/src/model/EventsToProcessSpecification.js +0 -8
  160. package/dist/development/src/model/EventsToProcessSpecification.js.map +0 -1
  161. package/dist/development/src/model/FailedEventsQuery.cjs +0 -14
  162. package/dist/development/src/model/FailedEventsQuery.cjs.map +0 -1
  163. package/dist/development/src/model/FailedEventsQuery.js +0 -14
  164. package/dist/development/src/model/FailedEventsQuery.js.map +0 -1
  165. package/dist/development/src/model/SetVariableCommand.cjs +0 -21
  166. package/dist/development/src/model/SetVariableCommand.cjs.map +0 -1
  167. package/dist/development/src/model/SetVariableCommand.js +0 -21
  168. package/dist/development/src/model/SetVariableCommand.js.map +0 -1
  169. package/dist/development/src/model/VariablesManager.cjs +0 -41
  170. package/dist/development/src/model/VariablesManager.cjs.map +0 -1
  171. package/dist/development/src/model/VariablesManager.js +0 -41
  172. package/dist/development/src/model/VariablesManager.js.map +0 -1
  173. package/dist/development/src/model/VariablesQuery.cjs +0 -10
  174. package/dist/development/src/model/VariablesQuery.cjs.map +0 -1
  175. package/dist/development/src/model/VariablesQuery.js +0 -10
  176. package/dist/development/src/model/VariablesQuery.js.map +0 -1
  177. package/dist/development/src/triggers/TriggerHandler.cjs +0 -126
  178. package/dist/development/src/triggers/TriggerHandler.cjs.map +0 -1
  179. package/dist/development/src/triggers/TriggerHandler.js +0 -126
  180. package/dist/development/src/triggers/TriggerHandler.js.map +0 -1
  181. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.cjs +0 -21
  182. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.cjs.map +0 -1
  183. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.js +0 -21
  184. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.js.map +0 -1
  185. package/dist/development/src/triggers/TriggerListenersBuilder.cjs +0 -169
  186. package/dist/development/src/triggers/TriggerListenersBuilder.cjs.map +0 -1
  187. package/dist/development/src/triggers/TriggerListenersBuilder.js +0 -169
  188. package/dist/development/src/triggers/TriggerListenersBuilder.js.map +0 -1
  189. package/dist/development/src/triggers/TriggerListenersFactory.cjs +0 -17
  190. package/dist/development/src/triggers/TriggerListenersFactory.cjs.map +0 -1
  191. package/dist/development/src/triggers/TriggerListenersFactory.js +0 -17
  192. package/dist/development/src/triggers/TriggerListenersFactory.js.map +0 -1
  193. package/dist/development/src/triggers/TriggerListenersStore.cjs +0 -24
  194. package/dist/development/src/triggers/TriggerListenersStore.cjs.map +0 -1
  195. package/dist/development/src/triggers/TriggerListenersStore.js +0 -24
  196. package/dist/development/src/triggers/TriggerListenersStore.js.map +0 -1
  197. package/dist/development/src/triggers/TriggerPayloadBuilder.cjs +0 -134
  198. package/dist/development/src/triggers/TriggerPayloadBuilder.cjs.map +0 -1
  199. package/dist/development/src/triggers/TriggerPayloadBuilder.js +0 -134
  200. package/dist/development/src/triggers/TriggerPayloadBuilder.js.map +0 -1
  201. package/dist/development/src/triggers/TriggerPayloadManager.cjs +0 -27
  202. package/dist/development/src/triggers/TriggerPayloadManager.cjs.map +0 -1
  203. package/dist/development/src/triggers/TriggerPayloadManager.js +0 -27
  204. package/dist/development/src/triggers/TriggerPayloadManager.js.map +0 -1
  205. package/dist/development/src/triggers/TriggerPayloadPersister.cjs +0 -43
  206. package/dist/development/src/triggers/TriggerPayloadPersister.cjs.map +0 -1
  207. package/dist/development/src/triggers/TriggerPayloadPersister.js +0 -43
  208. package/dist/development/src/triggers/TriggerPayloadPersister.js.map +0 -1
  209. package/dist/development/src/utils/assertNever.cjs +0 -7
  210. package/dist/development/src/utils/assertNever.cjs.map +0 -1
  211. package/dist/development/src/utils/assertNever.js +0 -7
  212. package/dist/development/src/utils/assertNever.js.map +0 -1
  213. package/dist/development/src/utils/map.cjs +0 -13
  214. package/dist/development/src/utils/map.cjs.map +0 -1
  215. package/dist/development/src/utils/map.js +0 -13
  216. package/dist/development/src/utils/map.js.map +0 -1
  217. package/dist/production/index.cjs +0 -94
  218. package/dist/production/index.cjs.map +0 -1
  219. package/dist/production/index.js +0 -94
  220. package/dist/production/index.js.map +0 -1
  221. package/dist/production/src/ActionsExecutionContainerHookFactory.cjs +0 -30
  222. package/dist/production/src/ActionsExecutionContainerHookFactory.cjs.map +0 -1
  223. package/dist/production/src/ActionsExecutionContainerHookFactory.js +0 -30
  224. package/dist/production/src/ActionsExecutionContainerHookFactory.js.map +0 -1
  225. package/dist/production/src/ImplementationException.cjs +0 -6
  226. package/dist/production/src/ImplementationException.cjs.map +0 -1
  227. package/dist/production/src/ImplementationException.js +0 -6
  228. package/dist/production/src/ImplementationException.js.map +0 -1
  229. package/dist/production/src/ListenerStoreProvider.cjs +0 -25
  230. package/dist/production/src/ListenerStoreProvider.cjs.map +0 -1
  231. package/dist/production/src/ListenerStoreProvider.js +0 -25
  232. package/dist/production/src/ListenerStoreProvider.js.map +0 -1
  233. package/dist/production/src/authorization/ActionsAuthorizationActions.cjs +0 -15
  234. package/dist/production/src/authorization/ActionsAuthorizationActions.cjs.map +0 -1
  235. package/dist/production/src/authorization/ActionsAuthorizationActions.js +0 -16
  236. package/dist/production/src/authorization/ActionsAuthorizationActions.js.map +0 -1
  237. package/dist/production/src/authorization/ActionsPermissionsFactory.cjs +0 -16
  238. package/dist/production/src/authorization/ActionsPermissionsFactory.cjs.map +0 -1
  239. package/dist/production/src/authorization/ActionsPermissionsFactory.js +0 -16
  240. package/dist/production/src/authorization/ActionsPermissionsFactory.js.map +0 -1
  241. package/dist/production/src/dispatch/DispatchWorkerSupervisor.cjs +0 -125
  242. package/dist/production/src/dispatch/DispatchWorkerSupervisor.cjs.map +0 -1
  243. package/dist/production/src/dispatch/DispatchWorkerSupervisor.js +0 -125
  244. package/dist/production/src/dispatch/DispatchWorkerSupervisor.js.map +0 -1
  245. package/dist/production/src/dispatch/EventDispatcher.cjs +0 -43
  246. package/dist/production/src/dispatch/EventDispatcher.cjs.map +0 -1
  247. package/dist/production/src/dispatch/EventDispatcher.js +0 -43
  248. package/dist/production/src/dispatch/EventDispatcher.js.map +0 -1
  249. package/dist/production/src/dispatch/EventsRepository.cjs +0 -104
  250. package/dist/production/src/dispatch/EventsRepository.cjs.map +0 -1
  251. package/dist/production/src/dispatch/EventsRepository.js +0 -104
  252. package/dist/production/src/dispatch/EventsRepository.js.map +0 -1
  253. package/dist/production/src/dispatch/ProjectDispatcher.cjs +0 -99
  254. package/dist/production/src/dispatch/ProjectDispatcher.cjs.map +0 -1
  255. package/dist/production/src/dispatch/ProjectDispatcher.js +0 -99
  256. package/dist/production/src/dispatch/ProjectDispatcher.js.map +0 -1
  257. package/dist/production/src/dispatch/TargetHandlerResolver.cjs +0 -16
  258. package/dist/production/src/dispatch/TargetHandlerResolver.cjs.map +0 -1
  259. package/dist/production/src/dispatch/TargetHandlerResolver.js +0 -16
  260. package/dist/production/src/dispatch/TargetHandlerResolver.js.map +0 -1
  261. package/dist/production/src/dispatch/WebhookFetcher.cjs +0 -16
  262. package/dist/production/src/dispatch/WebhookFetcher.cjs.map +0 -1
  263. package/dist/production/src/dispatch/WebhookFetcher.js +0 -16
  264. package/dist/production/src/dispatch/WebhookFetcher.js.map +0 -1
  265. package/dist/production/src/dispatch/WebhookTargetHandler.cjs +0 -193
  266. package/dist/production/src/dispatch/WebhookTargetHandler.cjs.map +0 -1
  267. package/dist/production/src/dispatch/WebhookTargetHandler.js +0 -176
  268. package/dist/production/src/dispatch/WebhookTargetHandler.js.map +0 -1
  269. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs +0 -38
  270. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +0 -1
  271. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js +0 -38
  272. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js.map +0 -1
  273. package/dist/production/src/graphql/http/ActionsContextResolver.cjs +0 -39
  274. package/dist/production/src/graphql/http/ActionsContextResolver.cjs.map +0 -1
  275. package/dist/production/src/graphql/http/ActionsContextResolver.js +0 -39
  276. package/dist/production/src/graphql/http/ActionsContextResolver.js.map +0 -1
  277. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.cjs +0 -20
  278. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +0 -1
  279. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.js +0 -20
  280. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +0 -1
  281. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.cjs +0 -149
  282. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +0 -1
  283. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.js +0 -132
  284. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.js.map +0 -1
  285. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs +0 -31
  286. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs.map +0 -1
  287. package/dist/production/src/graphql/resolvers/ResolversFactory.js +0 -31
  288. package/dist/production/src/graphql/resolvers/ResolversFactory.js.map +0 -1
  289. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs +0 -19
  290. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +0 -1
  291. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js +0 -19
  292. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +0 -1
  293. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs +0 -19
  294. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +0 -1
  295. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js +0 -19
  296. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +0 -1
  297. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs +0 -48
  298. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +0 -1
  299. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js +0 -48
  300. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js.map +0 -1
  301. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.cjs +0 -19
  302. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +0 -1
  303. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.js +0 -19
  304. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.js.map +0 -1
  305. package/dist/production/src/graphql/schema/actions.graphql.cjs +0 -93
  306. package/dist/production/src/graphql/schema/actions.graphql.cjs.map +0 -1
  307. package/dist/production/src/graphql/schema/actions.graphql.js +0 -93
  308. package/dist/production/src/graphql/schema/actions.graphql.js.map +0 -1
  309. package/dist/production/src/migrations/2023-03-10-145000-actions-variables.cjs +0 -16
  310. package/dist/production/src/migrations/2023-03-10-145000-actions-variables.cjs.map +0 -1
  311. package/dist/production/src/migrations/2023-03-10-145000-actions-variables.js +0 -17
  312. package/dist/production/src/migrations/2023-03-10-145000-actions-variables.js.map +0 -1
  313. package/dist/production/src/migrations/index.cjs +0 -10
  314. package/dist/production/src/migrations/index.cjs.map +0 -1
  315. package/dist/production/src/migrations/index.js +0 -10
  316. package/dist/production/src/migrations/index.js.map +0 -1
  317. package/dist/production/src/migrations/snapshot.cjs +0 -48
  318. package/dist/production/src/migrations/snapshot.cjs.map +0 -1
  319. package/dist/production/src/migrations/snapshot.js +0 -49
  320. package/dist/production/src/migrations/snapshot.js.map +0 -1
  321. package/dist/production/src/model/EventsInProcessingQuery.cjs +0 -14
  322. package/dist/production/src/model/EventsInProcessingQuery.cjs.map +0 -1
  323. package/dist/production/src/model/EventsInProcessingQuery.js +0 -14
  324. package/dist/production/src/model/EventsInProcessingQuery.js.map +0 -1
  325. package/dist/production/src/model/EventsToProcessQuery.cjs +0 -15
  326. package/dist/production/src/model/EventsToProcessQuery.cjs.map +0 -1
  327. package/dist/production/src/model/EventsToProcessQuery.js +0 -15
  328. package/dist/production/src/model/EventsToProcessQuery.js.map +0 -1
  329. package/dist/production/src/model/EventsToProcessSpecification.cjs +0 -8
  330. package/dist/production/src/model/EventsToProcessSpecification.cjs.map +0 -1
  331. package/dist/production/src/model/EventsToProcessSpecification.js +0 -8
  332. package/dist/production/src/model/EventsToProcessSpecification.js.map +0 -1
  333. package/dist/production/src/model/FailedEventsQuery.cjs +0 -14
  334. package/dist/production/src/model/FailedEventsQuery.cjs.map +0 -1
  335. package/dist/production/src/model/FailedEventsQuery.js +0 -14
  336. package/dist/production/src/model/FailedEventsQuery.js.map +0 -1
  337. package/dist/production/src/model/SetVariableCommand.cjs +0 -21
  338. package/dist/production/src/model/SetVariableCommand.cjs.map +0 -1
  339. package/dist/production/src/model/SetVariableCommand.js +0 -21
  340. package/dist/production/src/model/SetVariableCommand.js.map +0 -1
  341. package/dist/production/src/model/VariablesManager.cjs +0 -41
  342. package/dist/production/src/model/VariablesManager.cjs.map +0 -1
  343. package/dist/production/src/model/VariablesManager.js +0 -41
  344. package/dist/production/src/model/VariablesManager.js.map +0 -1
  345. package/dist/production/src/model/VariablesQuery.cjs +0 -10
  346. package/dist/production/src/model/VariablesQuery.cjs.map +0 -1
  347. package/dist/production/src/model/VariablesQuery.js +0 -10
  348. package/dist/production/src/model/VariablesQuery.js.map +0 -1
  349. package/dist/production/src/triggers/TriggerHandler.cjs +0 -126
  350. package/dist/production/src/triggers/TriggerHandler.cjs.map +0 -1
  351. package/dist/production/src/triggers/TriggerHandler.js +0 -126
  352. package/dist/production/src/triggers/TriggerHandler.js.map +0 -1
  353. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.cjs +0 -21
  354. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.cjs.map +0 -1
  355. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.js +0 -21
  356. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.js.map +0 -1
  357. package/dist/production/src/triggers/TriggerListenersBuilder.cjs +0 -169
  358. package/dist/production/src/triggers/TriggerListenersBuilder.cjs.map +0 -1
  359. package/dist/production/src/triggers/TriggerListenersBuilder.js +0 -169
  360. package/dist/production/src/triggers/TriggerListenersBuilder.js.map +0 -1
  361. package/dist/production/src/triggers/TriggerListenersFactory.cjs +0 -17
  362. package/dist/production/src/triggers/TriggerListenersFactory.cjs.map +0 -1
  363. package/dist/production/src/triggers/TriggerListenersFactory.js +0 -17
  364. package/dist/production/src/triggers/TriggerListenersFactory.js.map +0 -1
  365. package/dist/production/src/triggers/TriggerListenersStore.cjs +0 -24
  366. package/dist/production/src/triggers/TriggerListenersStore.cjs.map +0 -1
  367. package/dist/production/src/triggers/TriggerListenersStore.js +0 -24
  368. package/dist/production/src/triggers/TriggerListenersStore.js.map +0 -1
  369. package/dist/production/src/triggers/TriggerPayloadBuilder.cjs +0 -134
  370. package/dist/production/src/triggers/TriggerPayloadBuilder.cjs.map +0 -1
  371. package/dist/production/src/triggers/TriggerPayloadBuilder.js +0 -134
  372. package/dist/production/src/triggers/TriggerPayloadBuilder.js.map +0 -1
  373. package/dist/production/src/triggers/TriggerPayloadManager.cjs +0 -27
  374. package/dist/production/src/triggers/TriggerPayloadManager.cjs.map +0 -1
  375. package/dist/production/src/triggers/TriggerPayloadManager.js +0 -27
  376. package/dist/production/src/triggers/TriggerPayloadManager.js.map +0 -1
  377. package/dist/production/src/triggers/TriggerPayloadPersister.cjs +0 -43
  378. package/dist/production/src/triggers/TriggerPayloadPersister.cjs.map +0 -1
  379. package/dist/production/src/triggers/TriggerPayloadPersister.js +0 -43
  380. package/dist/production/src/triggers/TriggerPayloadPersister.js.map +0 -1
  381. package/dist/production/src/utils/assertNever.cjs +0 -7
  382. package/dist/production/src/utils/assertNever.cjs.map +0 -1
  383. package/dist/production/src/utils/assertNever.js +0 -7
  384. package/dist/production/src/utils/assertNever.js.map +0 -1
  385. package/dist/production/src/utils/map.cjs +0 -13
  386. package/dist/production/src/utils/map.cjs.map +0 -1
  387. package/dist/production/src/utils/map.js +0 -13
  388. package/dist/production/src/utils/map.js.map +0 -1
  389. package/dist/tests/cases/unit/generator.test.d.ts +0 -2
  390. package/dist/tests/cases/unit/generator.test.d.ts.map +0 -1
  391. package/dist/tests/cases/unit/webhookHandler.test.d.ts +0 -2
  392. package/dist/tests/cases/unit/webhookHandler.test.d.ts.map +0 -1
  393. package/dist/tests/src/gql.d.ts +0 -2
  394. package/dist/tests/src/gql.d.ts.map +0 -1
  395. package/dist/tests/src/uuid.d.ts +0 -3
  396. package/dist/tests/src/uuid.d.ts.map +0 -1
  397. package/dist/tests/tsconfig.tsbuildinfo +0 -1
  398. package/dist/types/ActionsExecutionContainerHookFactory.d.ts +0 -8
  399. package/dist/types/ActionsExecutionContainerHookFactory.d.ts.map +0 -1
  400. package/dist/types/ImplementationException.d.ts +0 -3
  401. package/dist/types/ImplementationException.d.ts.map +0 -1
  402. package/dist/types/ListenerStoreProvider.d.ts +0 -7
  403. package/dist/types/ListenerStoreProvider.d.ts.map +0 -1
  404. package/dist/types/authorization/ActionsAuthorizationActions.d.ts +0 -28
  405. package/dist/types/authorization/ActionsAuthorizationActions.d.ts.map +0 -1
  406. package/dist/types/authorization/ActionsPermissionsFactory.d.ts +0 -5
  407. package/dist/types/authorization/ActionsPermissionsFactory.d.ts.map +0 -1
  408. package/dist/types/authorization/Identity.d.ts +0 -5
  409. package/dist/types/authorization/Identity.d.ts.map +0 -1
  410. package/dist/types/authorization/index.d.ts +0 -4
  411. package/dist/types/authorization/index.d.ts.map +0 -1
  412. package/dist/types/dispatch/DispatchWorkerSupervisor.d.ts +0 -17
  413. package/dist/types/dispatch/DispatchWorkerSupervisor.d.ts.map +0 -1
  414. package/dist/types/dispatch/EventDispatcher.d.ts +0 -25
  415. package/dist/types/dispatch/EventDispatcher.d.ts.map +0 -1
  416. package/dist/types/dispatch/EventsRepository.d.ts +0 -22
  417. package/dist/types/dispatch/EventsRepository.d.ts.map +0 -1
  418. package/dist/types/dispatch/ProjectDispatcher.d.ts +0 -22
  419. package/dist/types/dispatch/ProjectDispatcher.d.ts.map +0 -1
  420. package/dist/types/dispatch/TargetHandlerResolver.d.ts +0 -9
  421. package/dist/types/dispatch/TargetHandlerResolver.d.ts.map +0 -1
  422. package/dist/types/dispatch/WebhookFetcher.d.ts +0 -14
  423. package/dist/types/dispatch/WebhookFetcher.d.ts.map +0 -1
  424. package/dist/types/dispatch/WebhookTargetHandler.d.ts +0 -16
  425. package/dist/types/dispatch/WebhookTargetHandler.d.ts.map +0 -1
  426. package/dist/types/dispatch/types.d.ts +0 -27
  427. package/dist/types/dispatch/types.d.ts.map +0 -1
  428. package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts +0 -13
  429. package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts.map +0 -1
  430. package/dist/types/graphql/http/ActionsContextResolver.d.ts +0 -14
  431. package/dist/types/graphql/http/ActionsContextResolver.d.ts.map +0 -1
  432. package/dist/types/graphql/http/ActionsGraphQLHandlerFactory.d.ts +0 -8
  433. package/dist/types/graphql/http/ActionsGraphQLHandlerFactory.d.ts.map +0 -1
  434. package/dist/types/graphql/http/ActionsWebsocketControllerFactory.d.ts +0 -11
  435. package/dist/types/graphql/http/ActionsWebsocketControllerFactory.d.ts.map +0 -1
  436. package/dist/types/graphql/resolvers/ActionsContext.d.ts +0 -11
  437. package/dist/types/graphql/resolvers/ActionsContext.d.ts.map +0 -1
  438. package/dist/types/graphql/resolvers/ResolversFactory.d.ts +0 -13
  439. package/dist/types/graphql/resolvers/ResolversFactory.d.ts.map +0 -1
  440. package/dist/types/graphql/resolvers/index.d.ts +0 -3
  441. package/dist/types/graphql/resolvers/index.d.ts.map +0 -1
  442. package/dist/types/graphql/resolvers/mutation/ProcessBatchMutationResolver.d.ts +0 -11
  443. package/dist/types/graphql/resolvers/mutation/ProcessBatchMutationResolver.d.ts.map +0 -1
  444. package/dist/types/graphql/resolvers/mutation/SetVariablesMutationResolver.d.ts +0 -11
  445. package/dist/types/graphql/resolvers/mutation/SetVariablesMutationResolver.d.ts.map +0 -1
  446. package/dist/types/graphql/resolvers/mutation/index.d.ts +0 -3
  447. package/dist/types/graphql/resolvers/mutation/index.d.ts.map +0 -1
  448. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts +0 -11
  449. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts.map +0 -1
  450. package/dist/types/graphql/resolvers/query/VariablesQueryResolver.d.ts +0 -12
  451. package/dist/types/graphql/resolvers/query/VariablesQueryResolver.d.ts.map +0 -1
  452. package/dist/types/graphql/resolvers/query/index.d.ts +0 -2
  453. package/dist/types/graphql/resolvers/query/index.d.ts.map +0 -1
  454. package/dist/types/graphql/schema/actions.graphql.d.ts +0 -3
  455. package/dist/types/graphql/schema/actions.graphql.d.ts.map +0 -1
  456. package/dist/types/graphql/schema/index.d.ts +0 -256
  457. package/dist/types/graphql/schema/index.d.ts.map +0 -1
  458. package/dist/types/index.d.ts +0 -13
  459. package/dist/types/index.d.ts.map +0 -1
  460. package/dist/types/migrations/2023-03-10-145000-actions-variables.d.ts +0 -3
  461. package/dist/types/migrations/2023-03-10-145000-actions-variables.d.ts.map +0 -1
  462. package/dist/types/migrations/index.d.ts +0 -3
  463. package/dist/types/migrations/index.d.ts.map +0 -1
  464. package/dist/types/migrations/snapshot.d.ts +0 -3
  465. package/dist/types/migrations/snapshot.d.ts.map +0 -1
  466. package/dist/types/model/EventsInProcessingQuery.d.ts +0 -9
  467. package/dist/types/model/EventsInProcessingQuery.d.ts.map +0 -1
  468. package/dist/types/model/EventsToProcessQuery.d.ts +0 -9
  469. package/dist/types/model/EventsToProcessQuery.d.ts.map +0 -1
  470. package/dist/types/model/EventsToProcessSpecification.d.ts +0 -4
  471. package/dist/types/model/EventsToProcessSpecification.d.ts.map +0 -1
  472. package/dist/types/model/FailedEventsQuery.d.ts +0 -9
  473. package/dist/types/model/FailedEventsQuery.d.ts.map +0 -1
  474. package/dist/types/model/SetVariableCommand.d.ts +0 -8
  475. package/dist/types/model/SetVariableCommand.d.ts.map +0 -1
  476. package/dist/types/model/VariablesManager.d.ts +0 -8
  477. package/dist/types/model/VariablesManager.d.ts.map +0 -1
  478. package/dist/types/model/VariablesQuery.d.ts +0 -12
  479. package/dist/types/model/VariablesQuery.d.ts.map +0 -1
  480. package/dist/types/model/types.d.ts +0 -19
  481. package/dist/types/model/types.d.ts.map +0 -1
  482. package/dist/types/triggers/TriggerHandler.d.ts +0 -26
  483. package/dist/types/triggers/TriggerHandler.d.ts.map +0 -1
  484. package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts +0 -11
  485. package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts.map +0 -1
  486. package/dist/types/triggers/TriggerListeners.d.ts +0 -9
  487. package/dist/types/triggers/TriggerListeners.d.ts.map +0 -1
  488. package/dist/types/triggers/TriggerListenersBuilder.d.ts +0 -15
  489. package/dist/types/triggers/TriggerListenersBuilder.d.ts.map +0 -1
  490. package/dist/types/triggers/TriggerListenersFactory.d.ts +0 -8
  491. package/dist/types/triggers/TriggerListenersFactory.d.ts.map +0 -1
  492. package/dist/types/triggers/TriggerListenersStore.d.ts +0 -48
  493. package/dist/types/triggers/TriggerListenersStore.d.ts.map +0 -1
  494. package/dist/types/triggers/TriggerPayloadBuilder.d.ts +0 -14
  495. package/dist/types/triggers/TriggerPayloadBuilder.d.ts.map +0 -1
  496. package/dist/types/triggers/TriggerPayloadManager.d.ts +0 -21
  497. package/dist/types/triggers/TriggerPayloadManager.d.ts.map +0 -1
  498. package/dist/types/triggers/TriggerPayloadPersister.d.ts +0 -17
  499. package/dist/types/triggers/TriggerPayloadPersister.d.ts.map +0 -1
  500. package/dist/types/triggers/index.d.ts +0 -8
  501. package/dist/types/triggers/index.d.ts.map +0 -1
  502. package/dist/types/tsconfig.tsbuildinfo +0 -1
  503. package/dist/types/utils/assertNever.d.ts +0 -2
  504. package/dist/types/utils/assertNever.d.ts.map +0 -1
  505. package/dist/types/utils/map.d.ts +0 -2
  506. package/dist/types/utils/map.d.ts.map +0 -1
@@ -10,7 +10,7 @@ generates:
10
10
  enumsAsTypes: "1"
11
11
  scalars:
12
12
  DateTime: Date
13
- Uuid: String
13
+ Uuid: string
14
14
  Json: any
15
15
  plugins:
16
16
  - "typescript"
@@ -18,4 +18,4 @@ generates:
18
18
  - "typescript-resolvers"
19
19
  hooks:
20
20
  afterAllFileWrite:
21
- - yarn run -T eslint --fix
21
+ - bunx biome lint --write
package/package.json CHANGED
@@ -22,32 +22,37 @@
22
22
  }
23
23
  },
24
24
  "dependencies": {
25
- "@contember/authorization": "2.1.0-alpha.3",
26
- "@contember/database": "2.1.0-alpha.3",
27
- "@contember/database-migrations": "2.1.0-alpha.3",
28
- "@contember/engine-common": "2.1.0-alpha.3",
29
- "@contember/engine-content-api": "2.1.0-alpha.3",
30
- "@contember/engine-http": "2.1.0-alpha.3",
31
- "@contember/engine-plugins": "2.1.0-alpha.3",
32
- "@contember/engine-system-api": "2.1.0-alpha.3",
33
- "@contember/engine-tenant-api": "2.1.0-alpha.3",
34
- "@contember/graphql-utils": "2.1.0-alpha.3",
35
- "@contember/logger": "2.1.0-alpha.3",
36
- "@contember/schema": "2.1.0-alpha.3",
37
- "@contember/schema-utils": "2.1.0-alpha.3",
38
- "@contember/typesafe": "2.1.0-alpha.3",
39
- "@graphql-tools/schema": "^10.0.7",
40
- "graphql-tag": "^2.12.6"
25
+ "@contember/authorization": "workspace:*",
26
+ "@contember/database": "workspace:*",
27
+ "@contember/database-migrations": "workspace:*",
28
+ "@contember/engine-common": "workspace:*",
29
+ "@contember/engine-content-api": "workspace:*",
30
+ "@contember/engine-http": "workspace:*",
31
+ "@contember/engine-plugins": "workspace:*",
32
+ "@contember/engine-system-api": "workspace:*",
33
+ "@contember/engine-tenant-api": "workspace:*",
34
+ "@contember/graphql-utils": "workspace:*",
35
+ "@contember/logger": "workspace:*",
36
+ "@contember/schema": "workspace:*",
37
+ "@contember/schema-utils": "workspace:*",
38
+ "@contember/typesafe": "workspace:*",
39
+ "@graphql-tools/schema": "catalog:",
40
+ "graphql-tag": "catalog:"
41
41
  },
42
42
  "devDependencies": {
43
- "@types/bun": "^1.1.10",
44
- "@types/ws": "^8.5.12",
45
- "graphql": "^16.9.0"
43
+ "@types/bun": "catalog:",
44
+ "@types/ws": "catalog:",
45
+ "graphql": "catalog:"
46
46
  },
47
47
  "peerDependencies": {
48
- "graphql": ">= 14.6.0",
49
- "pg": "^8.5.0"
48
+ "graphql": "catalog:",
49
+ "pg": "catalog:"
50
50
  },
51
51
  "type": "module",
52
- "version": "2.1.0-alpha.3"
52
+ "version": "2.1.0-alpha.35",
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "git+https://github.com/contember/contember.git",
56
+ "directory": "packages/engine-actions"
57
+ }
53
58
  }
@@ -12,17 +12,29 @@ export class ActionsExecutionContainerHookFactory {
12
12
 
13
13
  create(): ExecutionContainerHook {
14
14
  return builder => {
15
- return builder.setupService('mapperFactory', (mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta }) => {
16
- mapperFactory.hooks.push(mapper => {
17
- const triggerPayloadPersister = new TriggerPayloadPersister(mapper, mapper.db.forSchema(systemSchema), providers, project.slug, stage.id, schemaMeta.id)
18
- const triggerPayloadBuilder = new TriggerPayloadBuilder(mapper)
19
- const payloadManager = new TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister)
20
- const changesFetcher = new TriggerIndirectChangesFetcher(mapper, whereBuilder, pathFactory)
21
- const listenersStore = this.listenerStoreProvider.getListenerStore(schema)
22
- const triggerHandler = new TriggerHandler(payloadManager, listenersStore, changesFetcher)
23
- triggerHandler.attach(mapper.eventManager)
24
- })
25
- })
15
+ return builder.setupService(
16
+ 'mapperFactory',
17
+ (mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo }) => {
18
+ mapperFactory.hooks.push(mapper => {
19
+ const triggerPayloadPersister = new TriggerPayloadPersister(
20
+ mapper,
21
+ mapper.db.forSchema(systemSchema),
22
+ providers,
23
+ project.slug,
24
+ stage.id,
25
+ schemaMeta.id,
26
+ mapper.identityId,
27
+ userInfo,
28
+ )
29
+ const triggerPayloadBuilder = new TriggerPayloadBuilder(mapper)
30
+ const payloadManager = new TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister)
31
+ const changesFetcher = new TriggerIndirectChangesFetcher(schema.model, mapper, whereBuilder, joinBuilder, pathFactory)
32
+ const listenersStore = this.listenerStoreProvider.getListenerStore(schema)
33
+ const triggerHandler = new TriggerHandler(payloadManager, listenersStore, changesFetcher)
34
+ triggerHandler.attach(mapper.eventManager)
35
+ })
36
+ },
37
+ )
26
38
  }
27
39
  }
28
40
  }
@@ -11,4 +11,6 @@ export namespace ActionsAuthorizationActions {
11
11
 
12
12
  export const EVENTS_VIEW = Authorizator.createAction(Resources.events, 'view')
13
13
  export const EVENTS_PROCESS = Authorizator.createAction(Resources.events, 'process')
14
+ export const EVENTS_RETRY = Authorizator.createAction(Resources.events, 'retry')
15
+ export const EVENTS_STOP = Authorizator.createAction(Resources.events, 'stop')
14
16
  }
@@ -6,7 +6,6 @@ import { Logger } from '@contember/logger'
6
6
  import { ImplementationException } from '../ImplementationException'
7
7
 
8
8
  export class DispatchWorkerSupervisorFactory {
9
-
10
9
  constructor(
11
10
  private projectDispatcherFactory: ProjectDispatcherFactory,
12
11
  ) {
@@ -74,21 +73,23 @@ export class DispatchWorkerSupervisor implements Runnable {
74
73
  throw e
75
74
  }
76
75
  }
77
- const projectTracker = new Supervisor(new AcquiringListener(
78
- tenantContainer.databaseContext.client,
79
- 'project_updated',
80
- async () => {
81
- logger.debug('Project config change detected, reloading dispatch workers')
82
- await endProjectWorkers()
83
- try {
84
- await startWorkers(true)
85
- } catch (e) {
86
- logger.error(e, { message: 'Dispatch workers reload failed, terminating' })
87
- await endAll()
88
- onError(e)
89
- }
90
- },
91
- ))
76
+ const projectTracker = new Supervisor(
77
+ new AcquiringListener(
78
+ tenantContainer.databaseContext.client,
79
+ 'project_updated',
80
+ async () => {
81
+ logger.debug('Project config change detected, reloading dispatch workers')
82
+ await endProjectWorkers()
83
+ try {
84
+ await startWorkers(true)
85
+ } catch (e) {
86
+ logger.error(e, { message: 'Dispatch workers reload failed, terminating' })
87
+ await endAll()
88
+ onError(e)
89
+ }
90
+ },
91
+ ),
92
+ )
92
93
 
93
94
  const runningProjectTracker = await projectTracker.run({
94
95
  logger,
@@ -6,7 +6,6 @@ import { ContentSchemaResolver } from '@contember/engine-http'
6
6
  import { DatabaseContext } from '@contember/engine-system-api'
7
7
  import { VariablesManager } from '../model/VariablesManager'
8
8
 
9
-
10
9
  type ProcessBatchArgs = {
11
10
  db: DatabaseContext
12
11
  contentSchemaResolver: ContentSchemaResolver
@@ -20,7 +19,6 @@ type ProcessBatchResult = {
20
19
  }
21
20
 
22
21
  export class EventDispatcher {
23
-
24
22
  constructor(
25
23
  private readonly eventsRepository: EventsRepository,
26
24
  private readonly variablesManager: VariablesManager,
@@ -1,17 +1,8 @@
1
- import {
2
- Client,
3
- Connection,
4
- Literal,
5
- LockModifier,
6
- LockType,
7
- Operator,
8
- SelectBuilder,
9
- UpdateBuilder,
10
- } from '@contember/database'
1
+ import { Client, Connection, Literal, LockModifier, LockType, Operator, SelectBuilder, UpdateBuilder } from '@contember/database'
11
2
  import { EventRow, HandledEvent } from './types'
12
3
  import { Actions } from '@contember/schema'
13
4
  import { eventsToProcessSpecification, eventsToProcessStateSpecification } from '../model/EventsToProcessSpecification'
14
-
5
+ import { notify } from '../utils/notifyChannel'
15
6
 
16
7
  const ACK_TIMEOUT_MS = 1_000 * 60 * 10 // 10 minutes
17
8
  const DEFAULT_REPEAT_INTERVAL_MS = 5_000 // 5 seconds
@@ -19,7 +10,6 @@ const DEFAULT_MAX_ATTEMPTS = 10
19
10
  const DEFAULT_BATCH_SIZE = 1
20
11
 
21
12
  export class EventsRepository {
22
-
23
13
  public async fetchBatch(actions: Actions.Schema, db: Client): Promise<FetchBatchResult> {
24
14
  const primaryEvent = (await this.fetchInternal(db, 1))[0]
25
15
  if (!primaryEvent) {
@@ -35,7 +25,6 @@ export class EventsRepository {
35
25
  return { ok: true, events: [primaryEvent, ...batch], target }
36
26
  }
37
27
 
38
-
39
28
  private async fetchBackOff(db: Client): Promise<number | undefined> {
40
29
  const result = await SelectBuilder.create<{ ms: number }>()
41
30
  .from('actions_event')
@@ -48,20 +37,19 @@ export class EventsRepository {
48
37
  return result.length ? Math.max(0, result[0].ms) : undefined
49
38
  }
50
39
 
51
-
52
40
  private async fetchInternal(db: Client, limit: number, targetName?: string): Promise<EventRow[]> {
53
41
  const visibleAt = new Date()
54
42
  visibleAt.setTime(visibleAt.getTime() + ACK_TIMEOUT_MS)
55
43
  return await UpdateBuilder.create()
56
44
  .table('actions_event')
57
- .with('events', qb => qb
58
- .select(it => it.raw('*'))
59
- .from('actions_event')
60
- .match(eventsToProcessSpecification)
61
- .where(targetName ? { target: targetName } : {})
62
- .limit(limit)
63
- .lock(LockType.forNoKeyUpdate, LockModifier.skipLocked),
64
- )
45
+ .with('events', qb =>
46
+ qb
47
+ .select(it => it.raw('*'))
48
+ .from('actions_event')
49
+ .match(eventsToProcessSpecification)
50
+ .where(targetName ? { target: targetName } : {})
51
+ .limit(limit)
52
+ .lock(LockType.forNoKeyUpdate, LockModifier.skipLocked))
65
53
  .values<EventRow>({
66
54
  state: 'processing',
67
55
  last_state_change: new Date(),
@@ -87,15 +75,38 @@ export class EventsRepository {
87
75
  })
88
76
  }
89
77
 
90
- public async requeue(db: Client, events: EventRow[]): Promise<void> {
78
+ public async requeue(db: Client, events: string[]): Promise<void> {
91
79
  await UpdateBuilder.create()
92
80
  .table('actions_event')
93
81
  .values<EventRow>({
94
- state: it => it.raw('CASE WHEN num_retries = 0 THEN ? ELSE ? END', 'created', 'retrying'),
82
+ state: it =>
83
+ it.raw(
84
+ `
85
+ CASE
86
+ WHEN num_retries = 0 THEN
87
+ ?::__SCHEMA__.actions_trigger_state
88
+ ELSE
89
+ ?::__SCHEMA__.actions_trigger_state END
90
+ `,
91
+ 'created',
92
+ 'retrying',
93
+ ),
95
94
  last_state_change: new Date(),
96
95
  visible_at: new Date(),
97
96
  })
98
- .where(it => it.in('id', events.map(it => it.id)))
97
+ .where(it => it.in('id', events))
98
+ .execute(db)
99
+ }
100
+
101
+ public async markStopped(db: Client, events: string[]): Promise<void> {
102
+ await UpdateBuilder.create()
103
+ .table('actions_event')
104
+ .values<EventRow>({
105
+ state: 'stopped',
106
+ last_state_change: new Date(),
107
+ resolved_at: new Date(),
108
+ })
109
+ .where(it => it.in('id', events))
99
110
  .execute(db)
100
111
  }
101
112
 
@@ -114,22 +125,26 @@ export class EventsRepository {
114
125
  }
115
126
 
116
127
  private async markFailed(db: Client, event: HandledEvent): Promise<void> {
117
- const numRetries = event.row.num_retries
128
+ const numRetries = event.row.num_retries + 1
118
129
  const now = new Date()
119
130
  const nextAttempt = new Date()
120
- nextAttempt.setTime(nextAttempt.getTime() + (event.target?.initialRepeatIntervalMs ?? DEFAULT_REPEAT_INTERVAL_MS) * Math.pow(2, event.row.num_retries))
131
+ nextAttempt.setTime(
132
+ nextAttempt.getTime() + (event.target?.initialRepeatIntervalMs ?? DEFAULT_REPEAT_INTERVAL_MS) * Math.pow(2, event.row.num_retries),
133
+ )
121
134
  await UpdateBuilder.create()
122
135
  .table('actions_event')
123
136
  .values<EventRow>({
124
137
  last_state_change: now,
125
- num_retries: event.row.num_retries + 1,
138
+ num_retries: numRetries,
126
139
  log: JSON.stringify([...event.row.log, event.result]) as any,
127
- ...(numRetries < (event.target?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS) ? {
128
- state: 'retrying',
129
- visible_at: nextAttempt,
130
- } : {
131
- state: 'failed',
132
- }),
140
+ ...(numRetries < (event.target?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS)
141
+ ? {
142
+ state: 'retrying',
143
+ visible_at: nextAttempt,
144
+ }
145
+ : {
146
+ state: 'failed',
147
+ }),
133
148
  })
134
149
  .where({ id: event.row.id })
135
150
  .execute(db)
@@ -138,16 +153,21 @@ export class EventsRepository {
138
153
  private async markFailedOnUnknownTarget(db: Client, targetName: string, primaryEventId: string) {
139
154
  await UpdateBuilder.create()
140
155
  .table('actions_event')
141
- .where(it => it.or(it => it
142
- .and(it => it
143
- .in('state', ['retrying', 'created', 'processing'])
144
- .compare('visible_at', Operator.lte, 'now')
145
- .compare('target', Operator.eq, targetName),
156
+ .where(it =>
157
+ it.or(it =>
158
+ it
159
+ .and(it =>
160
+ it
161
+ .in('state', ['retrying', 'created', 'processing'])
162
+ .compare('visible_at', Operator.lte, 'now')
163
+ .compare('target', Operator.eq, targetName)
164
+ )
165
+ .and(it =>
166
+ it
167
+ .compare('id', Operator.eq, primaryEventId)
168
+ )
146
169
  )
147
- .and(it => it
148
- .compare('id', Operator.eq, primaryEventId),
149
- ),
150
- ))
170
+ )
151
171
  .values<EventRow>({
152
172
  // intentionally not retrying
153
173
  last_state_change: new Date(),
@@ -3,8 +3,7 @@ import { EventDispatcher } from './EventDispatcher'
3
3
  import { ContentSchemaResolver } from '@contember/engine-http'
4
4
  import { Runnable, RunnableArgs, Running } from '@contember/engine-common'
5
5
  import { Listener } from '@contember/database'
6
- import { NOTIFY_CHANNEL_NAME } from '../triggers/TriggerPayloadPersister'
7
-
6
+ import { NOTIFY_CHANNEL_NAME } from '../utils/notifyChannel'
8
7
 
9
8
  export class ProjectDispatcherFactory {
10
9
  constructor(
@@ -12,13 +11,13 @@ export class ProjectDispatcherFactory {
12
11
  ) {
13
12
  }
14
13
 
15
- public create({ db, contentSchemaResolver, projectSlug }: { db: DatabaseContext; contentSchemaResolver: ContentSchemaResolver; projectSlug: string}): ProjectDispatcher {
14
+ public create(
15
+ { db, contentSchemaResolver, projectSlug }: { db: DatabaseContext; contentSchemaResolver: ContentSchemaResolver; projectSlug: string },
16
+ ): ProjectDispatcher {
16
17
  return new ProjectDispatcher(this.dispatcher, db, contentSchemaResolver, projectSlug)
17
18
  }
18
19
  }
19
20
 
20
-
21
-
22
21
  export class ProjectDispatcher implements Runnable {
23
22
  constructor(
24
23
  private readonly dispatcher: EventDispatcher,
@@ -29,16 +28,14 @@ export class ProjectDispatcher implements Runnable {
29
28
  }
30
29
 
31
30
  public async run({ logger, onError, onClose }: RunnableArgs): Promise<Running> {
32
-
33
31
  return await new Promise<Running>(async (resolve, reject) => {
34
-
35
32
  let resolvePending = () => {}
36
33
  let rejectPending = (e: any) => {}
37
34
 
38
35
  const resolvePendingRef = () => {
39
36
  resolvePending()
40
37
  }
41
- let pendingError: any = undefined
38
+ let pendingError: any
42
39
  const rejectPendingRef = (e: any) => {
43
40
  pendingError = e
44
41
  rejectPending(e)
@@ -112,8 +109,6 @@ export class ProjectDispatcher implements Runnable {
112
109
  } catch (e) {
113
110
  reject(e)
114
111
  }
115
- })
116
-
117
-
112
+ })
118
113
  }
119
114
  }
@@ -1,5 +1,5 @@
1
1
  import { Actions, ActionsPayload } from '@contember/schema'
2
- import { EventRow, HandledEvent, InvokeHandler, InvokeHandlerArgs } from './types'
2
+ import { EventRow, HandledEvent, InvokeHandler, InvokeHandlerArgs } from './types'
3
3
  import { VariablesMap } from '../model/VariablesManager'
4
4
  import * as Typesafe from '@contember/typesafe'
5
5
  import { FetcherResponse, WebhookFetcher } from './WebhookFetcher'
@@ -19,7 +19,7 @@ const ResponseType = Typesafe.noExtraProps(Typesafe.object({
19
19
  ),
20
20
  }))
21
21
 
22
- type EventResponseFactory = (eventRow: EventRow) => ({ ok: boolean; code?: number; response?: string; errorMessage?: string; durationMs?: number })
22
+ type EventResponseFactory = (eventRow: EventRow) => { ok: boolean; code?: number; response?: string; errorMessage?: string; durationMs?: number }
23
23
 
24
24
  export class WebhookTargetHandler implements InvokeHandler<Actions.WebhookTarget> {
25
25
  constructor(
@@ -35,14 +35,12 @@ export class WebhookTargetHandler implements InvokeHandler<Actions.WebhookTarget
35
35
 
36
36
  let eventResponseFactory: EventResponseFactory
37
37
  try {
38
-
39
38
  const response = await this.fetch(timeoutMs ?? DEFAULT_TIMEOUT_MS, target, variables, events)
40
39
 
41
40
  eventResponseFactory = this.createResponseFactory({
42
41
  response: response,
43
42
  events,
44
43
  })
45
-
46
44
  } catch (e) {
47
45
  logger.warn(e)
48
46
  const errorMessages = this.extractErrorMessages(e)
@@ -73,7 +71,8 @@ export class WebhookTargetHandler implements InvokeHandler<Actions.WebhookTarget
73
71
  })
74
72
  }
75
73
 
76
- if (response.responseText.trim() === ''
74
+ if (
75
+ response.responseText.trim() === ''
77
76
  || !response.headers.get('content-type')?.toLowerCase().includes('json')
78
77
  ) {
79
78
  return () => ({
@@ -93,7 +92,7 @@ export class WebhookTargetHandler implements InvokeHandler<Actions.WebhookTarget
93
92
  const responseData = ResponseType(parsedJson)
94
93
  const eventsInBatch = new Set(events.map(it => it.id))
95
94
  const failedEvents = Object.fromEntries(responseData.failures?.map(it => [it.eventId, it]) ?? [])
96
- const missingEvents = Object.keys(failedEvents).filter(it => !eventsInBatch.has(it))
95
+ const missingEvents = Object.keys(failedEvents).filter(it => !eventsInBatch.has(it))
97
96
 
98
97
  if (missingEvents.length) {
99
98
  return () => ({
@@ -140,10 +139,17 @@ export class WebhookTargetHandler implements InvokeHandler<Actions.WebhookTarget
140
139
  })
141
140
  }
142
141
 
143
- private async doFetch(target: Actions.WebhookTarget, variables: VariablesMap, abortController: AbortController, events: EventRow[]): Promise<FetcherResponse> {
142
+ private async doFetch(
143
+ target: Actions.WebhookTarget,
144
+ variables: VariablesMap,
145
+ abortController: AbortController,
146
+ events: EventRow[],
147
+ ): Promise<FetcherResponse> {
144
148
  const resolvedUrl = this.resolveVariables(target.url, variables)
145
- const resolvedHeaders = Object.fromEntries(Object.entries(target.headers ?? {})
146
- .map(([key, value]) => [key, this.resolveVariables(value, variables)]))
149
+ const resolvedHeaders = Object.fromEntries(
150
+ Object.entries(target.headers ?? {})
151
+ .map(([key, value]) => [key, this.resolveVariables(value, variables)]),
152
+ )
147
153
 
148
154
  return await this.fetcher.fetch(resolvedUrl, {
149
155
  method: 'POST',
@@ -174,6 +180,9 @@ export class WebhookTargetHandler implements InvokeHandler<Actions.WebhookTarget
174
180
  meta: {
175
181
  eventId: it.id,
176
182
  transactionId: it.transaction_id,
183
+ identityId: it.identity_id ?? null,
184
+ ipAddress: it.ip_address ?? null,
185
+ userAgent: it.user_agent ?? null,
177
186
  createdAt: it.created_at.toISOString(),
178
187
  lastStateChange: it.last_state_change.toISOString(),
179
188
  numRetries: it.num_retries,
@@ -3,7 +3,7 @@ import { Actions } from '@contember/schema'
3
3
  import { EventRow } from '../model/types'
4
4
  import { VariablesMap } from '../model/VariablesManager'
5
5
 
6
- export { type EventRow }
6
+ export type { EventRow }
7
7
 
8
8
  export interface InvokeHandler<Target extends Actions.AnyTarget> {
9
9
  handle(args: InvokeHandlerArgs<Target>): Promise<HandledEvent[]>
@@ -29,4 +29,3 @@ export type InvocationResult = {
29
29
  code?: number
30
30
  response?: string
31
31
  }
32
-
@@ -25,6 +25,7 @@ export class ActionsApiMiddlewareFactory {
25
25
  const graphqlContext: ActionsContext = {
26
26
  db: systemDatabase,
27
27
  logger,
28
+ project: projectContainer.project,
28
29
  contentSchemaResolver: projectContainer.contentSchemaResolver,
29
30
  requireAccess: async (action, message) => {
30
31
  if (!(await this.authorizator.isAllowed(identity, new AuthorizationScope.Global(), action))) {
@@ -34,11 +35,12 @@ export class ActionsApiMiddlewareFactory {
34
35
  }
35
36
  const handler = this.actionsGraphQLHandler
36
37
 
37
- await timer('GraphQL', () => handler({
38
- request: koa.request,
39
- response: koa.response,
40
- createContext: () => graphqlContext,
41
- }))
38
+ await timer('GraphQL', () =>
39
+ handler({
40
+ request: koa.request,
41
+ response: koa.response,
42
+ createContext: () => graphqlContext,
43
+ }))
42
44
  logger.debug('Actions query finished')
43
45
  }
44
46
  }
@@ -29,8 +29,7 @@ export class ActionsContextResolver {
29
29
  id: authResult.identityId,
30
30
  roles: authResult.roles,
31
31
  },
32
- ),
33
- )
32
+ ))
34
33
  logger.debug('Memberships fetched', { memberships })
35
34
 
36
35
  if (memberships.length === 0) {
@@ -4,7 +4,6 @@ import { ResolversFactory } from '../resolvers/ResolversFactory'
4
4
  import { schema as graphqlDocument } from '../schema/actions.graphql'
5
5
  import { ActionsContext } from '../resolvers/ActionsContext'
6
6
 
7
-
8
7
  export type ActionsGraphQLHandler = GraphQLQueryHandler<ActionsContext>
9
8
 
10
9
  export class ActionsGraphQLHandlerFactory {
@@ -55,7 +55,7 @@ export class ActionsWebsocketControllerFactory {
55
55
  if (!authResult) {
56
56
  throw new HttpErrorResponse(401, 'Authentication required')
57
57
  }
58
- if (!authResult.roles.some(it => it === TenantRole.SUPER_ADMIN || it === TenantRole.PROJECT_ADMIN)) {
58
+ if (!authResult.roles.some(it => it === TenantRole.SUPER_ADMIN || it === TenantRole.PROJECT_ADMIN)) {
59
59
  throw new HttpErrorResponse(403, 'Not allowed to run actions worker')
60
60
  }
61
61
 
@@ -113,9 +113,12 @@ export class ActionsWebsocketControllerFactory {
113
113
  const workerId = Math.random().toString().substring(2)
114
114
  const dispatchSupervisor = this.dispatchWorkerSupervisorFactory.create(projectGroup)
115
115
  try {
116
- const running = dispatchSupervisor.run({ logger, onError: () => {
117
- send({ type: 'workerCrashed', workerId })
118
- } })
116
+ const running = dispatchSupervisor.run({
117
+ logger,
118
+ onError: () => {
119
+ send({ type: 'workerCrashed', workerId })
120
+ },
121
+ })
119
122
  workers.push({ id: workerId, running })
120
123
  await running
121
124
  send({ type: 'workerStarted', workerId })
@@ -144,4 +147,3 @@ export class ActionsWebsocketControllerFactory {
144
147
  }
145
148
  }
146
149
  }
147
-
@@ -7,5 +7,6 @@ export interface ActionsContext {
7
7
  logger: Logger
8
8
  db: DatabaseContext
9
9
  contentSchemaResolver: ContentSchemaResolver
10
+ project: { slug: string }
10
11
  requireAccess: (action: Authorizator.Action, message?: string) => Promise<void>
11
12
  }
@@ -1,7 +1,7 @@
1
1
  import { DateTimeType, JSONType, UuidType } from '@contember/graphql-utils'
2
2
  import { Resolvers } from '../schema'
3
3
  import { EventsQueryResolver } from './query'
4
- import { ProcessBatchMutationResolver, SetVariablesMutationResolver } from './mutation'
4
+ import { ProcessBatchMutationResolver, RetryEventMutationResolver, SetVariablesMutationResolver, StopEventMutationResolver } from './mutation'
5
5
  import { ActionsContext } from './ActionsContext'
6
6
  import { VariablesQueryResolver } from './query/VariablesQueryResolver'
7
7
 
@@ -11,22 +11,29 @@ export class ResolversFactory {
11
11
  private readonly processBatchMutationResolver: ProcessBatchMutationResolver,
12
12
  private readonly variablesQueryResolver: VariablesQueryResolver,
13
13
  private readonly setVariablesMutationResolver: SetVariablesMutationResolver,
14
+ private readonly retryEventMutationResolver: RetryEventMutationResolver,
15
+ private readonly stopEventMutationResolver: StopEventMutationResolver,
14
16
  ) {
15
17
  }
16
18
 
17
19
  create(): Resolvers {
18
- const resolvers: Resolvers<ActionsContext> & { Mutation: Required<Resolvers<ActionsContext>['Mutation']> } & { Query: Required<Resolvers<ActionsContext>['Query']> } = {
20
+ const resolvers: Resolvers<ActionsContext> & { Mutation: Required<Resolvers<ActionsContext>['Mutation']> } & {
21
+ Query: Required<Resolvers<ActionsContext>['Query']>
22
+ } = {
19
23
  Json: JSONType,
20
24
  DateTime: DateTimeType,
21
25
  Uuid: UuidType,
22
26
  Mutation: {
23
27
  processBatch: this.processBatchMutationResolver.processBatch.bind(this.processBatchMutationResolver),
24
28
  setVariables: this.setVariablesMutationResolver.setVariables.bind(this.setVariablesMutationResolver),
29
+ retryEvent: this.retryEventMutationResolver.retryEvent.bind(this.retryEventMutationResolver),
30
+ stopEvent: this.stopEventMutationResolver.stopEvent.bind(this.stopEventMutationResolver),
25
31
  },
26
32
  Query: {
27
33
  eventsInProcessing: this.eventsQueryResolver.eventsInProcessing.bind(this.eventsQueryResolver),
28
34
  eventsToProcess: this.eventsQueryResolver.eventsToProcess.bind(this.eventsQueryResolver),
29
35
  failedEvents: this.eventsQueryResolver.failedEvents.bind(this.eventsQueryResolver),
36
+ event: this.eventsQueryResolver.event.bind(this.eventsQueryResolver),
30
37
  variables: this.variablesQueryResolver.variables.bind(this.variablesQueryResolver),
31
38
  },
32
39
  }
@@ -0,0 +1,22 @@
1
+ import { MutationResolvers, MutationRetryEventArgs } from '../../schema'
2
+ import { ActionsContext } from '../ActionsContext'
3
+ import { ActionsAuthorizationActions } from '../../../authorization'
4
+ import { EventsRepository } from '../../../dispatch/EventsRepository'
5
+ import { notify } from '../../../utils/notifyChannel'
6
+
7
+ export class RetryEventMutationResolver implements MutationResolvers<ActionsContext> {
8
+ constructor(
9
+ private readonly eventsRepository: EventsRepository,
10
+ ) {
11
+ }
12
+ async retryEvent(parent: unknown, args: MutationRetryEventArgs, ctx: ActionsContext) {
13
+ await ctx.requireAccess(ActionsAuthorizationActions.EVENTS_RETRY)
14
+
15
+ await this.eventsRepository.requeue(ctx.db.client, [args.id])
16
+ await notify(ctx.db.client, ctx.project.slug)
17
+
18
+ return {
19
+ ok: true,
20
+ }
21
+ }
22
+ }