@contember/engine-actions 2.1.0-alpha.9 → 2.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/CLAUDE.md +47 -0
  2. package/dist/development/index.cjs +54 -24
  3. package/dist/development/index.cjs.map +1 -1
  4. package/dist/development/index.js +54 -24
  5. package/dist/development/index.js.map +1 -1
  6. package/dist/development/src/ActionsExecutionContainerHookFactory.cjs +24 -11
  7. package/dist/development/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
  8. package/dist/development/src/ActionsExecutionContainerHookFactory.js +24 -11
  9. package/dist/development/src/ActionsExecutionContainerHookFactory.js.map +1 -1
  10. package/dist/development/src/ListenerStoreProvider.cjs.map +1 -1
  11. package/dist/development/src/ListenerStoreProvider.js.map +1 -1
  12. package/dist/development/src/authorization/ActionsAuthorizationActions.cjs +2 -0
  13. package/dist/development/src/authorization/ActionsAuthorizationActions.cjs.map +1 -1
  14. package/dist/development/src/authorization/ActionsAuthorizationActions.js +2 -0
  15. package/dist/development/src/authorization/ActionsAuthorizationActions.js.map +1 -1
  16. package/dist/development/src/authorization/ActionsPermissionsFactory.cjs.map +1 -1
  17. package/dist/development/src/authorization/ActionsPermissionsFactory.js.map +1 -1
  18. package/dist/development/src/dispatch/DispatchWorkerSupervisor.cjs +16 -14
  19. package/dist/development/src/dispatch/DispatchWorkerSupervisor.cjs.map +1 -1
  20. package/dist/development/src/dispatch/DispatchWorkerSupervisor.js +16 -14
  21. package/dist/development/src/dispatch/DispatchWorkerSupervisor.js.map +1 -1
  22. package/dist/development/src/dispatch/EventDispatcher.cjs.map +1 -1
  23. package/dist/development/src/dispatch/EventDispatcher.js.map +1 -1
  24. package/dist/development/src/dispatch/EventsRepository.cjs +33 -15
  25. package/dist/development/src/dispatch/EventsRepository.cjs.map +1 -1
  26. package/dist/development/src/dispatch/EventsRepository.js +33 -15
  27. package/dist/development/src/dispatch/EventsRepository.js.map +1 -1
  28. package/dist/development/src/dispatch/LazyDispatchWorker.cjs +67 -0
  29. package/dist/development/src/dispatch/LazyDispatchWorker.cjs.map +1 -0
  30. package/dist/development/src/dispatch/LazyDispatchWorker.js +67 -0
  31. package/dist/development/src/dispatch/LazyDispatchWorker.js.map +1 -0
  32. package/dist/development/src/dispatch/ProjectDispatcher.cjs +3 -3
  33. package/dist/development/src/dispatch/ProjectDispatcher.cjs.map +1 -1
  34. package/dist/development/src/dispatch/ProjectDispatcher.js +2 -2
  35. package/dist/development/src/dispatch/ProjectDispatcher.js.map +1 -1
  36. package/dist/development/src/dispatch/TargetHandlerResolver.cjs.map +1 -1
  37. package/dist/development/src/dispatch/TargetHandlerResolver.js.map +1 -1
  38. package/dist/development/src/dispatch/WebhookFetcher.cjs.map +1 -1
  39. package/dist/development/src/dispatch/WebhookFetcher.js.map +1 -1
  40. package/dist/development/src/dispatch/WebhookTargetHandler.cjs +6 -1
  41. package/dist/development/src/dispatch/WebhookTargetHandler.cjs.map +1 -1
  42. package/dist/development/src/dispatch/WebhookTargetHandler.js +6 -1
  43. package/dist/development/src/dispatch/WebhookTargetHandler.js.map +1 -1
  44. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs +1 -0
  45. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
  46. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js +1 -0
  47. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
  48. package/dist/development/src/graphql/http/ActionsContextResolver.cjs +8 -11
  49. package/dist/development/src/graphql/http/ActionsContextResolver.cjs.map +1 -1
  50. package/dist/development/src/graphql/http/ActionsContextResolver.js +8 -11
  51. package/dist/development/src/graphql/http/ActionsContextResolver.js.map +1 -1
  52. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +1 -1
  53. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +1 -1
  54. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.cjs +6 -3
  55. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +1 -1
  56. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.js +6 -3
  57. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.js.map +1 -1
  58. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs +7 -2
  59. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
  60. package/dist/development/src/graphql/resolvers/ResolversFactory.js +8 -3
  61. package/dist/development/src/graphql/resolvers/ResolversFactory.js.map +1 -1
  62. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +1 -1
  63. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +1 -1
  64. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs +21 -0
  65. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -0
  66. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.js +21 -0
  67. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -0
  68. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +1 -1
  69. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +1 -1
  70. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs +19 -0
  71. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -0
  72. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.js +19 -0
  73. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -0
  74. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs +14 -1
  75. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  76. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js +14 -1
  77. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
  78. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +1 -1
  79. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.js.map +1 -1
  80. package/dist/development/src/graphql/schema/actions.graphql.cjs +18 -4
  81. package/dist/development/src/graphql/schema/actions.graphql.cjs.map +1 -1
  82. package/dist/development/src/graphql/schema/actions.graphql.js +18 -4
  83. package/dist/development/src/graphql/schema/actions.graphql.js.map +1 -1
  84. package/dist/development/src/migrations/2023-03-10-145000-actions-variables.cjs.map +1 -1
  85. package/dist/development/src/migrations/2023-03-10-145000-actions-variables.js.map +1 -1
  86. package/dist/development/src/migrations/2025-05-28-160000-action-event-user.cjs +16 -0
  87. package/dist/development/src/migrations/2025-05-28-160000-action-event-user.cjs.map +1 -0
  88. package/dist/development/src/migrations/2025-05-28-160000-action-event-user.js +17 -0
  89. package/dist/development/src/migrations/2025-05-28-160000-action-event-user.js.map +1 -0
  90. package/dist/development/src/migrations/index.cjs +3 -1
  91. package/dist/development/src/migrations/index.cjs.map +1 -1
  92. package/dist/development/src/migrations/index.js +3 -1
  93. package/dist/development/src/migrations/index.js.map +1 -1
  94. package/dist/development/src/migrations/snapshot.cjs +5 -2
  95. package/dist/development/src/migrations/snapshot.cjs.map +1 -1
  96. package/dist/development/src/migrations/snapshot.js +5 -2
  97. package/dist/development/src/migrations/snapshot.js.map +1 -1
  98. package/dist/development/src/model/EventByIdQuery.cjs +17 -0
  99. package/dist/development/src/model/EventByIdQuery.cjs.map +1 -0
  100. package/dist/development/src/model/EventByIdQuery.js +17 -0
  101. package/dist/development/src/model/EventByIdQuery.js.map +1 -0
  102. package/dist/development/src/model/EventsInProcessingQuery.cjs.map +1 -1
  103. package/dist/development/src/model/EventsInProcessingQuery.js.map +1 -1
  104. package/dist/development/src/model/EventsToProcessQuery.cjs.map +1 -1
  105. package/dist/development/src/model/EventsToProcessQuery.js.map +1 -1
  106. package/dist/development/src/model/EventsToProcessSpecification.cjs.map +1 -1
  107. package/dist/development/src/model/EventsToProcessSpecification.js.map +1 -1
  108. package/dist/development/src/model/FailedEventsQuery.cjs.map +1 -1
  109. package/dist/development/src/model/FailedEventsQuery.js.map +1 -1
  110. package/dist/development/src/model/SetVariableCommand.cjs.map +1 -1
  111. package/dist/development/src/model/SetVariableCommand.js.map +1 -1
  112. package/dist/development/src/model/VariablesManager.cjs.map +1 -1
  113. package/dist/development/src/model/VariablesManager.js.map +1 -1
  114. package/dist/development/src/model/VariablesQuery.cjs.map +1 -1
  115. package/dist/development/src/model/VariablesQuery.js.map +1 -1
  116. package/dist/development/src/triggers/TriggerHandler.cjs +17 -14
  117. package/dist/development/src/triggers/TriggerHandler.cjs.map +1 -1
  118. package/dist/development/src/triggers/TriggerHandler.js +17 -14
  119. package/dist/development/src/triggers/TriggerHandler.js.map +1 -1
  120. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.cjs +44 -2
  121. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.cjs.map +1 -1
  122. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.js +44 -2
  123. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.js.map +1 -1
  124. package/dist/development/src/triggers/TriggerListenersBuilder.cjs.map +1 -1
  125. package/dist/development/src/triggers/TriggerListenersBuilder.js.map +1 -1
  126. package/dist/development/src/triggers/TriggerListenersFactory.cjs.map +1 -1
  127. package/dist/development/src/triggers/TriggerListenersFactory.js.map +1 -1
  128. package/dist/development/src/triggers/TriggerListenersStore.cjs.map +1 -1
  129. package/dist/development/src/triggers/TriggerListenersStore.js.map +1 -1
  130. package/dist/development/src/triggers/TriggerPayloadBuilder.cjs +45 -16
  131. package/dist/development/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
  132. package/dist/development/src/triggers/TriggerPayloadBuilder.js +45 -16
  133. package/dist/development/src/triggers/TriggerPayloadBuilder.js.map +1 -1
  134. package/dist/development/src/triggers/TriggerPayloadManager.cjs.map +1 -1
  135. package/dist/development/src/triggers/TriggerPayloadManager.js.map +1 -1
  136. package/dist/development/src/triggers/TriggerPayloadPersister.cjs +36 -20
  137. package/dist/development/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
  138. package/dist/development/src/triggers/TriggerPayloadPersister.js +36 -20
  139. package/dist/development/src/triggers/TriggerPayloadPersister.js.map +1 -1
  140. package/dist/development/src/utils/assertNever.cjs.map +1 -1
  141. package/dist/development/src/utils/assertNever.js.map +1 -1
  142. package/dist/development/src/utils/map.cjs.map +1 -1
  143. package/dist/development/src/utils/map.js.map +1 -1
  144. package/dist/development/src/utils/notifyChannel.cjs +9 -0
  145. package/dist/development/src/utils/notifyChannel.cjs.map +1 -0
  146. package/dist/development/src/utils/notifyChannel.js +9 -0
  147. package/dist/development/src/utils/notifyChannel.js.map +1 -0
  148. package/dist/production/index.cjs +54 -24
  149. package/dist/production/index.cjs.map +1 -1
  150. package/dist/production/index.js +54 -24
  151. package/dist/production/index.js.map +1 -1
  152. package/dist/production/src/ActionsExecutionContainerHookFactory.cjs +24 -11
  153. package/dist/production/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
  154. package/dist/production/src/ActionsExecutionContainerHookFactory.js +24 -11
  155. package/dist/production/src/ActionsExecutionContainerHookFactory.js.map +1 -1
  156. package/dist/production/src/ListenerStoreProvider.cjs.map +1 -1
  157. package/dist/production/src/ListenerStoreProvider.js.map +1 -1
  158. package/dist/production/src/authorization/ActionsAuthorizationActions.cjs +2 -0
  159. package/dist/production/src/authorization/ActionsAuthorizationActions.cjs.map +1 -1
  160. package/dist/production/src/authorization/ActionsAuthorizationActions.js +2 -0
  161. package/dist/production/src/authorization/ActionsAuthorizationActions.js.map +1 -1
  162. package/dist/production/src/authorization/ActionsPermissionsFactory.cjs.map +1 -1
  163. package/dist/production/src/authorization/ActionsPermissionsFactory.js.map +1 -1
  164. package/dist/production/src/dispatch/DispatchWorkerSupervisor.cjs +16 -14
  165. package/dist/production/src/dispatch/DispatchWorkerSupervisor.cjs.map +1 -1
  166. package/dist/production/src/dispatch/DispatchWorkerSupervisor.js +16 -14
  167. package/dist/production/src/dispatch/DispatchWorkerSupervisor.js.map +1 -1
  168. package/dist/production/src/dispatch/EventDispatcher.cjs.map +1 -1
  169. package/dist/production/src/dispatch/EventDispatcher.js.map +1 -1
  170. package/dist/production/src/dispatch/EventsRepository.cjs +33 -15
  171. package/dist/production/src/dispatch/EventsRepository.cjs.map +1 -1
  172. package/dist/production/src/dispatch/EventsRepository.js +33 -15
  173. package/dist/production/src/dispatch/EventsRepository.js.map +1 -1
  174. package/dist/production/src/dispatch/LazyDispatchWorker.cjs +67 -0
  175. package/dist/production/src/dispatch/LazyDispatchWorker.cjs.map +1 -0
  176. package/dist/production/src/dispatch/LazyDispatchWorker.js +67 -0
  177. package/dist/production/src/dispatch/LazyDispatchWorker.js.map +1 -0
  178. package/dist/production/src/dispatch/ProjectDispatcher.cjs +3 -3
  179. package/dist/production/src/dispatch/ProjectDispatcher.cjs.map +1 -1
  180. package/dist/production/src/dispatch/ProjectDispatcher.js +2 -2
  181. package/dist/production/src/dispatch/ProjectDispatcher.js.map +1 -1
  182. package/dist/production/src/dispatch/TargetHandlerResolver.cjs.map +1 -1
  183. package/dist/production/src/dispatch/TargetHandlerResolver.js.map +1 -1
  184. package/dist/production/src/dispatch/WebhookFetcher.cjs.map +1 -1
  185. package/dist/production/src/dispatch/WebhookFetcher.js.map +1 -1
  186. package/dist/production/src/dispatch/WebhookTargetHandler.cjs +6 -1
  187. package/dist/production/src/dispatch/WebhookTargetHandler.cjs.map +1 -1
  188. package/dist/production/src/dispatch/WebhookTargetHandler.js +6 -1
  189. package/dist/production/src/dispatch/WebhookTargetHandler.js.map +1 -1
  190. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs +1 -0
  191. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
  192. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js +1 -0
  193. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
  194. package/dist/production/src/graphql/http/ActionsContextResolver.cjs +8 -11
  195. package/dist/production/src/graphql/http/ActionsContextResolver.cjs.map +1 -1
  196. package/dist/production/src/graphql/http/ActionsContextResolver.js +8 -11
  197. package/dist/production/src/graphql/http/ActionsContextResolver.js.map +1 -1
  198. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +1 -1
  199. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +1 -1
  200. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.cjs +6 -3
  201. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +1 -1
  202. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.js +6 -3
  203. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.js.map +1 -1
  204. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs +7 -2
  205. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
  206. package/dist/production/src/graphql/resolvers/ResolversFactory.js +8 -3
  207. package/dist/production/src/graphql/resolvers/ResolversFactory.js.map +1 -1
  208. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +1 -1
  209. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +1 -1
  210. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs +21 -0
  211. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -0
  212. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.js +21 -0
  213. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -0
  214. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +1 -1
  215. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +1 -1
  216. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs +19 -0
  217. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -0
  218. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.js +19 -0
  219. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -0
  220. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs +14 -1
  221. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  222. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js +14 -1
  223. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
  224. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +1 -1
  225. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.js.map +1 -1
  226. package/dist/production/src/graphql/schema/actions.graphql.cjs +18 -4
  227. package/dist/production/src/graphql/schema/actions.graphql.cjs.map +1 -1
  228. package/dist/production/src/graphql/schema/actions.graphql.js +18 -4
  229. package/dist/production/src/graphql/schema/actions.graphql.js.map +1 -1
  230. package/dist/production/src/migrations/2023-03-10-145000-actions-variables.cjs.map +1 -1
  231. package/dist/production/src/migrations/2023-03-10-145000-actions-variables.js.map +1 -1
  232. package/dist/production/src/migrations/2025-05-28-160000-action-event-user.cjs +16 -0
  233. package/dist/production/src/migrations/2025-05-28-160000-action-event-user.cjs.map +1 -0
  234. package/dist/production/src/migrations/2025-05-28-160000-action-event-user.js +17 -0
  235. package/dist/production/src/migrations/2025-05-28-160000-action-event-user.js.map +1 -0
  236. package/dist/production/src/migrations/index.cjs +3 -1
  237. package/dist/production/src/migrations/index.cjs.map +1 -1
  238. package/dist/production/src/migrations/index.js +3 -1
  239. package/dist/production/src/migrations/index.js.map +1 -1
  240. package/dist/production/src/migrations/snapshot.cjs +5 -2
  241. package/dist/production/src/migrations/snapshot.cjs.map +1 -1
  242. package/dist/production/src/migrations/snapshot.js +5 -2
  243. package/dist/production/src/migrations/snapshot.js.map +1 -1
  244. package/dist/production/src/model/EventByIdQuery.cjs +17 -0
  245. package/dist/production/src/model/EventByIdQuery.cjs.map +1 -0
  246. package/dist/production/src/model/EventByIdQuery.js +17 -0
  247. package/dist/production/src/model/EventByIdQuery.js.map +1 -0
  248. package/dist/production/src/model/EventsInProcessingQuery.cjs.map +1 -1
  249. package/dist/production/src/model/EventsInProcessingQuery.js.map +1 -1
  250. package/dist/production/src/model/EventsToProcessQuery.cjs.map +1 -1
  251. package/dist/production/src/model/EventsToProcessQuery.js.map +1 -1
  252. package/dist/production/src/model/EventsToProcessSpecification.cjs.map +1 -1
  253. package/dist/production/src/model/EventsToProcessSpecification.js.map +1 -1
  254. package/dist/production/src/model/FailedEventsQuery.cjs.map +1 -1
  255. package/dist/production/src/model/FailedEventsQuery.js.map +1 -1
  256. package/dist/production/src/model/SetVariableCommand.cjs.map +1 -1
  257. package/dist/production/src/model/SetVariableCommand.js.map +1 -1
  258. package/dist/production/src/model/VariablesManager.cjs.map +1 -1
  259. package/dist/production/src/model/VariablesManager.js.map +1 -1
  260. package/dist/production/src/model/VariablesQuery.cjs.map +1 -1
  261. package/dist/production/src/model/VariablesQuery.js.map +1 -1
  262. package/dist/production/src/triggers/TriggerHandler.cjs +17 -14
  263. package/dist/production/src/triggers/TriggerHandler.cjs.map +1 -1
  264. package/dist/production/src/triggers/TriggerHandler.js +17 -14
  265. package/dist/production/src/triggers/TriggerHandler.js.map +1 -1
  266. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.cjs +44 -2
  267. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.cjs.map +1 -1
  268. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.js +44 -2
  269. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.js.map +1 -1
  270. package/dist/production/src/triggers/TriggerListenersBuilder.cjs.map +1 -1
  271. package/dist/production/src/triggers/TriggerListenersBuilder.js.map +1 -1
  272. package/dist/production/src/triggers/TriggerListenersFactory.cjs.map +1 -1
  273. package/dist/production/src/triggers/TriggerListenersFactory.js.map +1 -1
  274. package/dist/production/src/triggers/TriggerListenersStore.cjs.map +1 -1
  275. package/dist/production/src/triggers/TriggerListenersStore.js.map +1 -1
  276. package/dist/production/src/triggers/TriggerPayloadBuilder.cjs +45 -16
  277. package/dist/production/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
  278. package/dist/production/src/triggers/TriggerPayloadBuilder.js +45 -16
  279. package/dist/production/src/triggers/TriggerPayloadBuilder.js.map +1 -1
  280. package/dist/production/src/triggers/TriggerPayloadManager.cjs.map +1 -1
  281. package/dist/production/src/triggers/TriggerPayloadManager.js.map +1 -1
  282. package/dist/production/src/triggers/TriggerPayloadPersister.cjs +36 -20
  283. package/dist/production/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
  284. package/dist/production/src/triggers/TriggerPayloadPersister.js +36 -20
  285. package/dist/production/src/triggers/TriggerPayloadPersister.js.map +1 -1
  286. package/dist/production/src/utils/assertNever.cjs.map +1 -1
  287. package/dist/production/src/utils/assertNever.js.map +1 -1
  288. package/dist/production/src/utils/map.cjs.map +1 -1
  289. package/dist/production/src/utils/map.js.map +1 -1
  290. package/dist/production/src/utils/notifyChannel.cjs +9 -0
  291. package/dist/production/src/utils/notifyChannel.cjs.map +1 -0
  292. package/dist/production/src/utils/notifyChannel.js +9 -0
  293. package/dist/production/src/utils/notifyChannel.js.map +1 -0
  294. package/dist/tests/cases/unit/lazyDispatchWorker.test.d.ts +2 -0
  295. package/dist/tests/cases/unit/lazyDispatchWorker.test.d.ts.map +1 -0
  296. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  297. package/dist/types/ActionsExecutionContainerHookFactory.d.ts.map +1 -1
  298. package/dist/types/authorization/ActionsAuthorizationActions.d.ts +10 -0
  299. package/dist/types/authorization/ActionsAuthorizationActions.d.ts.map +1 -1
  300. package/dist/types/dispatch/DispatchWorkerSupervisor.d.ts.map +1 -1
  301. package/dist/types/dispatch/EventDispatcher.d.ts.map +1 -1
  302. package/dist/types/dispatch/EventsRepository.d.ts +2 -1
  303. package/dist/types/dispatch/EventsRepository.d.ts.map +1 -1
  304. package/dist/types/dispatch/LazyDispatchWorker.d.ts +11 -0
  305. package/dist/types/dispatch/LazyDispatchWorker.d.ts.map +1 -0
  306. package/dist/types/dispatch/ProjectDispatcher.d.ts.map +1 -1
  307. package/dist/types/dispatch/WebhookTargetHandler.d.ts.map +1 -1
  308. package/dist/types/dispatch/types.d.ts +1 -1
  309. package/dist/types/dispatch/types.d.ts.map +1 -1
  310. package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts.map +1 -1
  311. package/dist/types/graphql/http/ActionsContextResolver.d.ts.map +1 -1
  312. package/dist/types/graphql/http/ActionsGraphQLHandlerFactory.d.ts.map +1 -1
  313. package/dist/types/graphql/http/ActionsWebsocketControllerFactory.d.ts.map +1 -1
  314. package/dist/types/graphql/resolvers/ActionsContext.d.ts +3 -0
  315. package/dist/types/graphql/resolvers/ActionsContext.d.ts.map +1 -1
  316. package/dist/types/graphql/resolvers/ResolversFactory.d.ts +4 -2
  317. package/dist/types/graphql/resolvers/ResolversFactory.d.ts.map +1 -1
  318. package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts +11 -0
  319. package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts.map +1 -0
  320. package/dist/types/graphql/resolvers/mutation/SetVariablesMutationResolver.d.ts.map +1 -1
  321. package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts +11 -0
  322. package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts.map +1 -0
  323. package/dist/types/graphql/resolvers/mutation/index.d.ts +2 -0
  324. package/dist/types/graphql/resolvers/mutation/index.d.ts.map +1 -1
  325. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts +3 -0
  326. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts.map +1 -1
  327. package/dist/types/graphql/resolvers/query/VariablesQueryResolver.d.ts.map +1 -1
  328. package/dist/types/graphql/schema/actions.graphql.d.ts.map +1 -1
  329. package/dist/types/graphql/schema/index.d.ts +45 -2
  330. package/dist/types/graphql/schema/index.d.ts.map +1 -1
  331. package/dist/types/index.d.ts +1 -1
  332. package/dist/types/index.d.ts.map +1 -1
  333. package/dist/types/migrations/2023-03-10-145000-actions-variables.d.ts.map +1 -1
  334. package/dist/types/migrations/2025-05-28-160000-action-event-user.d.ts +3 -0
  335. package/dist/types/migrations/2025-05-28-160000-action-event-user.d.ts.map +1 -0
  336. package/dist/types/migrations/index.d.ts.map +1 -1
  337. package/dist/types/migrations/snapshot.d.ts.map +1 -1
  338. package/dist/types/model/EventByIdQuery.d.ts +8 -0
  339. package/dist/types/model/EventByIdQuery.d.ts.map +1 -0
  340. package/dist/types/model/EventsToProcessSpecification.d.ts.map +1 -1
  341. package/dist/types/model/SetVariableCommand.d.ts.map +1 -1
  342. package/dist/types/model/types.d.ts +3 -0
  343. package/dist/types/model/types.d.ts.map +1 -1
  344. package/dist/types/triggers/TriggerHandler.d.ts.map +1 -1
  345. package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts +11 -3
  346. package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts.map +1 -1
  347. package/dist/types/triggers/TriggerListeners.d.ts.map +1 -1
  348. package/dist/types/triggers/TriggerListenersBuilder.d.ts.map +1 -1
  349. package/dist/types/triggers/TriggerListenersStore.d.ts +2 -2
  350. package/dist/types/triggers/TriggerListenersStore.d.ts.map +1 -1
  351. package/dist/types/triggers/TriggerPayloadBuilder.d.ts.map +1 -1
  352. package/dist/types/triggers/TriggerPayloadManager.d.ts +2 -1
  353. package/dist/types/triggers/TriggerPayloadManager.d.ts.map +1 -1
  354. package/dist/types/triggers/TriggerPayloadPersister.d.ts +9 -4
  355. package/dist/types/triggers/TriggerPayloadPersister.d.ts.map +1 -1
  356. package/dist/types/tsconfig.tsbuildinfo +1 -1
  357. package/dist/types/utils/notifyChannel.d.ts +4 -0
  358. package/dist/types/utils/notifyChannel.d.ts.map +1 -0
  359. package/graphql.codegen.yml +2 -2
  360. package/package.json +26 -21
  361. package/src/ActionsExecutionContainerHookFactory.ts +27 -11
  362. package/src/authorization/ActionsAuthorizationActions.ts +2 -0
  363. package/src/dispatch/DispatchWorkerSupervisor.ts +17 -16
  364. package/src/dispatch/EventDispatcher.ts +0 -2
  365. package/src/dispatch/EventsRepository.ts +63 -43
  366. package/src/dispatch/LazyDispatchWorker.ts +72 -0
  367. package/src/dispatch/ProjectDispatcher.ts +6 -11
  368. package/src/dispatch/WebhookTargetHandler.ts +18 -9
  369. package/src/dispatch/types.ts +1 -2
  370. package/src/graphql/http/ActionsApiMiddlewareFactory.ts +7 -5
  371. package/src/graphql/http/ActionsContextResolver.ts +1 -2
  372. package/src/graphql/http/ActionsGraphQLHandlerFactory.ts +0 -1
  373. package/src/graphql/http/ActionsWebsocketControllerFactory.ts +7 -5
  374. package/src/graphql/resolvers/ActionsContext.ts +1 -0
  375. package/src/graphql/resolvers/ResolversFactory.ts +9 -2
  376. package/src/graphql/resolvers/mutation/RetryEventMutationResolver.ts +22 -0
  377. package/src/graphql/resolvers/mutation/SetVariablesMutationResolver.ts +0 -1
  378. package/src/graphql/resolvers/mutation/StopEventMutationResolver.ts +19 -0
  379. package/src/graphql/resolvers/mutation/index.ts +2 -0
  380. package/src/graphql/resolvers/query/EventsQueryResolver.ts +15 -8
  381. package/src/graphql/resolvers/query/VariablesQueryResolver.ts +0 -1
  382. package/src/graphql/schema/actions.graphql.ts +18 -4
  383. package/src/graphql/schema/index.ts +84 -30
  384. package/src/index.ts +66 -35
  385. package/src/migrations/2023-03-10-145000-actions-variables.ts +1 -1
  386. package/src/migrations/2025-05-28-160000-action-event-user.ts +16 -0
  387. package/src/migrations/index.ts +2 -0
  388. package/src/migrations/snapshot.ts +6 -3
  389. package/src/model/EventByIdQuery.ts +21 -0
  390. package/src/model/EventsToProcessSpecification.ts +9 -8
  391. package/src/model/SetVariableCommand.ts +0 -1
  392. package/src/model/types.ts +3 -0
  393. package/src/triggers/TriggerHandler.ts +16 -15
  394. package/src/triggers/TriggerIndirectChangesFetcher.ts +62 -3
  395. package/src/triggers/TriggerListeners.ts +1 -8
  396. package/src/triggers/TriggerListenersBuilder.ts +3 -6
  397. package/src/triggers/TriggerListenersStore.ts +2 -2
  398. package/src/triggers/TriggerPayloadBuilder.ts +43 -13
  399. package/src/triggers/TriggerPayloadManager.ts +2 -4
  400. package/src/triggers/TriggerPayloadPersister.ts +28 -10
  401. package/src/utils/notifyChannel.ts +6 -0
  402. package/tests/cases/unit/generator.test.ts +133 -136
  403. package/tests/cases/unit/lazyDispatchWorker.test.ts +226 -0
  404. package/tests/cases/unit/webhookHandler.test.ts +47 -35
  405. package/vitest.config.ts +0 -3
@@ -0,0 +1,226 @@
1
+ import { describe, expect, test } from 'bun:test'
2
+ import { Runnable, RunnableArgs, Running } from '@contember/engine-common'
3
+ import { createLogger, TestLoggerHandler } from '@contember/logger'
4
+ import { LazyDispatchWorker } from '../../../src/dispatch/LazyDispatchWorker'
5
+ import { DispatchWorkerSupervisorFactory } from '../../../src/dispatch/DispatchWorkerSupervisor'
6
+ import { ProjectGroupContainerResolver } from '@contember/engine-http'
7
+ import { ProjectGroupContainer } from '@contember/engine-http'
8
+
9
+ const silentLogger = createLogger(new TestLoggerHandler())
10
+
11
+ const tick = () => new Promise<void>(r => setImmediate(r))
12
+
13
+ const waitFor = async (cond: () => boolean, attempts = 50) => {
14
+ for (let i = 0; i < attempts; i++) {
15
+ if (cond()) return
16
+ await tick()
17
+ }
18
+ throw new Error('waitFor: condition not met')
19
+ }
20
+
21
+ type FakeRunnable = Runnable & {
22
+ id: string
23
+ startCount: number
24
+ endCount: number
25
+ failOnRun?: () => Error | undefined
26
+ emitError?: (e: any) => void
27
+ }
28
+
29
+ const createFakeSupervisor = (id: string, opts: { failOnRun?: () => Error | undefined } = {}): FakeRunnable => {
30
+ const fake: FakeRunnable = {
31
+ id,
32
+ startCount: 0,
33
+ endCount: 0,
34
+ failOnRun: opts.failOnRun,
35
+ async run(args: RunnableArgs): Promise<Running> {
36
+ fake.startCount++
37
+ const failure = fake.failOnRun?.()
38
+ if (failure) {
39
+ throw failure
40
+ }
41
+ fake.emitError = args.onError
42
+ return {
43
+ end: async () => {
44
+ fake.endCount++
45
+ },
46
+ }
47
+ },
48
+ }
49
+ return fake
50
+ }
51
+
52
+ type FakeResolver = Pick<ProjectGroupContainerResolver, 'on'> & {
53
+ fire: (slug: string | undefined) => (() => void) | undefined
54
+ listenerCount: () => number
55
+ }
56
+
57
+ const createFakeResolver = (): FakeResolver => {
58
+ const listeners: Array<(args: { container: ProjectGroupContainer; slug: string | undefined }) => void | (() => void)> = []
59
+ return {
60
+ on(_event, cb) {
61
+ listeners.push(cb as any)
62
+ return () => {
63
+ const idx = listeners.indexOf(cb as any)
64
+ if (idx >= 0) listeners.splice(idx, 1)
65
+ }
66
+ },
67
+ fire(slug) {
68
+ const fakeContainer = { slug } as unknown as ProjectGroupContainer
69
+ const cleanups = listeners.map(it => it({ container: fakeContainer, slug }))
70
+ return () => cleanups.forEach(it => it?.())
71
+ },
72
+ listenerCount: () => listeners.length,
73
+ }
74
+ }
75
+
76
+ const createFakeFactory = (registry: FakeRunnable[]): DispatchWorkerSupervisorFactory => {
77
+ let counter = 0
78
+ return {
79
+ create(_container: ProjectGroupContainer): any {
80
+ const fake = createFakeSupervisor(`fake-${counter++}`)
81
+ registry.push(fake)
82
+ return fake
83
+ },
84
+ } as any
85
+ }
86
+
87
+ const recordOnError = () => {
88
+ const errors: any[] = []
89
+ return { errors, onError: (e: any) => errors.push(e) }
90
+ }
91
+
92
+ describe('LazyDispatchWorker', () => {
93
+ test('does not spawn supervisor before any project group is created', async () => {
94
+ const resolver = createFakeResolver()
95
+ const supervisors: FakeRunnable[] = []
96
+ const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
97
+ const { onError } = recordOnError()
98
+
99
+ const running = await worker.run({ logger: silentLogger, onError })
100
+
101
+ expect(supervisors).toHaveLength(0)
102
+ expect(resolver.listenerCount()).toBe(1)
103
+
104
+ await running.end()
105
+ expect(resolver.listenerCount()).toBe(0)
106
+ })
107
+
108
+ test('spawns supervisor when project group is created', async () => {
109
+ const resolver = createFakeResolver()
110
+ const supervisors: FakeRunnable[] = []
111
+ const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
112
+ const { onError, errors } = recordOnError()
113
+
114
+ const running = await worker.run({ logger: silentLogger, onError })
115
+
116
+ resolver.fire('tenantA')
117
+ await waitFor(() => supervisors.length === 1 && supervisors[0].startCount === 1)
118
+
119
+ expect(supervisors[0].startCount).toBe(1)
120
+ expect(supervisors[0].endCount).toBe(0)
121
+ expect(errors).toHaveLength(0)
122
+
123
+ await running.end()
124
+ expect(supervisors[0].endCount).toBe(1)
125
+ })
126
+
127
+ test('spawns one supervisor per project group, isolated', async () => {
128
+ const resolver = createFakeResolver()
129
+ const supervisors: FakeRunnable[] = []
130
+ const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
131
+ const { onError } = recordOnError()
132
+
133
+ const running = await worker.run({ logger: silentLogger, onError })
134
+
135
+ resolver.fire('tenantA')
136
+ resolver.fire('tenantB')
137
+ await waitFor(() => supervisors.length === 2 && supervisors.every(it => it.startCount === 1))
138
+
139
+ await running.end()
140
+ expect(supervisors.map(it => it.endCount)).toEqual([1, 1])
141
+ })
142
+
143
+ test('container invalidation ends only that supervisor', async () => {
144
+ const resolver = createFakeResolver()
145
+ const supervisors: FakeRunnable[] = []
146
+ const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
147
+ const { onError } = recordOnError()
148
+
149
+ const running = await worker.run({ logger: silentLogger, onError })
150
+
151
+ const cleanupA = resolver.fire('tenantA')!
152
+ resolver.fire('tenantB')
153
+ await waitFor(() => supervisors.length === 2 && supervisors.every(it => it.startCount === 1))
154
+
155
+ cleanupA()
156
+ await waitFor(() => supervisors[0].endCount === 1)
157
+
158
+ expect(supervisors[0].endCount).toBe(1)
159
+ expect(supervisors[1].endCount).toBe(0)
160
+
161
+ await running.end()
162
+ expect(supervisors[1].endCount).toBe(1)
163
+ })
164
+
165
+ test('end() unsubscribes listener, no further supervisors are spawned', async () => {
166
+ const resolver = createFakeResolver()
167
+ const supervisors: FakeRunnable[] = []
168
+ const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
169
+ const { onError } = recordOnError()
170
+
171
+ const running = await worker.run({ logger: silentLogger, onError })
172
+ expect(resolver.listenerCount()).toBe(1)
173
+
174
+ await running.end()
175
+ expect(resolver.listenerCount()).toBe(0)
176
+
177
+ resolver.fire('tenantLate')
178
+ await tick()
179
+ expect(supervisors).toHaveLength(0)
180
+ })
181
+
182
+ test('startup failure of a tenant supervisor propagates to onError once retries are exhausted', async () => {
183
+ const resolver = createFakeResolver()
184
+ const registry: FakeRunnable[] = []
185
+ const factory: DispatchWorkerSupervisorFactory = {
186
+ create(_container: ProjectGroupContainer): any {
187
+ const fake = createFakeSupervisor(`fake-${registry.length}`, {
188
+ failOnRun: () => new Error('boom'),
189
+ })
190
+ registry.push(fake)
191
+ return fake
192
+ },
193
+ } as any
194
+ const worker = new LazyDispatchWorker(resolver as any, factory, { startupMax: 0, minBackoff: 1 })
195
+ const { onError, errors } = recordOnError()
196
+
197
+ const running = await worker.run({ logger: silentLogger, onError })
198
+
199
+ resolver.fire('tenantBroken')
200
+ await waitFor(() => errors.length > 0, 200)
201
+
202
+ expect(errors[0]).toBeInstanceOf(Error)
203
+ expect((errors[0] as Error).message).toContain('boom')
204
+
205
+ await running.end()
206
+ })
207
+
208
+ test('errors after end() are swallowed', async () => {
209
+ const resolver = createFakeResolver()
210
+ const supervisors: FakeRunnable[] = []
211
+ const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
212
+ const { onError, errors } = recordOnError()
213
+
214
+ const running = await worker.run({ logger: silentLogger, onError })
215
+
216
+ resolver.fire('tenantA')
217
+ await waitFor(() => supervisors.length === 1 && supervisors[0].emitError !== undefined)
218
+
219
+ await running.end()
220
+ expect(supervisors[0].endCount).toBe(1)
221
+
222
+ supervisors[0].emitError!(new Error('after end'))
223
+ await tick()
224
+ expect(errors).toHaveLength(0)
225
+ })
226
+ })
@@ -7,7 +7,6 @@ import { Actions, ActionsPayload } from '@contember/schema'
7
7
  import { HandledEvent } from '../../../src/dispatch/types'
8
8
  import { testUuid } from '../../src/uuid'
9
9
 
10
-
11
10
  const assert = {
12
11
  equal: (a: any, b: any) => expect(a).toEqual(b),
13
12
  deepStrictEqual: (a: any, b: any) => expect(a).toStrictEqual(b),
@@ -29,6 +28,9 @@ const createTestEvent = (i = 0, row: Partial<EventRow> = {}): EventRow => ({
29
28
  priority: 1,
30
29
  schema_id: 1,
31
30
  state: 'created',
31
+ identity_id: testUuid(i * 10 + 4),
32
+ ip_address: '127.0.0.1',
33
+ user_agent: 'test-agent',
32
34
  ...row,
33
35
  })
34
36
 
@@ -51,20 +53,26 @@ describe('webhook request', () => {
51
53
  fetch(url: string, init: RequestInit): Promise<FetcherResponse> {
52
54
  fetchCalled = true
53
55
  assert.equal(url, 'http://localhost')
54
- assert.equal(init.body, JSON.stringify({
55
- events: [{
56
- meta: {
57
- eventId: testUuid(1),
58
- transactionId: testUuid(2),
59
- createdAt: now.toISOString(),
60
- lastStateChange: now.toISOString(),
61
- numRetries: 0,
62
- trigger: 'test',
63
- target: 'test_target',
64
- },
65
- foo: 'bar',
66
- }],
67
- }))
56
+ assert.equal(
57
+ init.body,
58
+ JSON.stringify({
59
+ events: [{
60
+ meta: {
61
+ eventId: testUuid(1),
62
+ transactionId: testUuid(2),
63
+ identityId: testUuid(4),
64
+ ipAddress: '127.0.0.1',
65
+ userAgent: 'test-agent',
66
+ createdAt: now.toISOString(),
67
+ lastStateChange: now.toISOString(),
68
+ numRetries: 0,
69
+ trigger: 'test',
70
+ target: 'test_target',
71
+ },
72
+ foo: 'bar',
73
+ }],
74
+ }),
75
+ )
68
76
 
69
77
  return okResponse
70
78
  },
@@ -96,25 +104,31 @@ describe('webhook request', () => {
96
104
  fetch(url: string, init: RequestInit): Promise<FetcherResponse> {
97
105
  fetchCalled = true
98
106
  assert.equal(url, 'http://localhost')
99
- assert.equal(init.body, JSON.stringify({
100
- options: 'value',
101
- payload: {
102
- json: {
103
- events: [{
104
- meta: {
105
- eventId: testUuid(1),
106
- transactionId: testUuid(2),
107
- createdAt: now.toISOString(),
108
- lastStateChange: now.toISOString(),
109
- numRetries: 0,
110
- trigger: 'test',
111
- target: 'test_target',
112
- },
113
- foo: 'bar',
114
- }],
107
+ assert.equal(
108
+ init.body,
109
+ JSON.stringify({
110
+ options: 'value',
111
+ payload: {
112
+ json: {
113
+ events: [{
114
+ meta: {
115
+ eventId: testUuid(1),
116
+ transactionId: testUuid(2),
117
+ identityId: testUuid(4),
118
+ ipAddress: '127.0.0.1',
119
+ userAgent: 'test-agent',
120
+ createdAt: now.toISOString(),
121
+ lastStateChange: now.toISOString(),
122
+ numRetries: 0,
123
+ trigger: 'test',
124
+ target: 'test_target',
125
+ },
126
+ foo: 'bar',
127
+ }],
128
+ },
115
129
  },
116
- },
117
- }))
130
+ }),
131
+ )
118
132
 
119
133
  return okResponse
120
134
  },
@@ -257,7 +271,6 @@ describe('webhook response', () => {
257
271
  ])
258
272
  })
259
273
 
260
-
261
274
  test('invalid partial response', async () => {
262
275
  const testLoggerHandler = new TestLoggerHandler()
263
276
  const logger = createLogger(testLoggerHandler)
@@ -319,7 +332,6 @@ describe('webhook response', () => {
319
332
  ])
320
333
  })
321
334
 
322
-
323
335
  test('ignored invalid response', async () => {
324
336
  const testLoggerHandler = new TestLoggerHandler()
325
337
  const logger = createLogger(testLoggerHandler)
package/vitest.config.ts DELETED
@@ -1,3 +0,0 @@
1
- import { defineProject } from 'vitest/config'
2
-
3
- export default defineProject({})