@contember/engine-actions 2.1.0-beta.1 → 2.2.0-alpha.1

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 (294) hide show
  1. package/dist/development/index.cjs +10 -4
  2. package/dist/development/index.cjs.map +1 -1
  3. package/dist/development/index.js +10 -4
  4. package/dist/development/index.js.map +1 -1
  5. package/dist/development/src/ActionsExecutionContainerHookFactory.cjs +3 -2
  6. package/dist/development/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
  7. package/dist/development/src/ActionsExecutionContainerHookFactory.js +3 -2
  8. package/dist/development/src/ActionsExecutionContainerHookFactory.js.map +1 -1
  9. package/dist/development/src/ListenerStoreProvider.cjs.map +1 -1
  10. package/dist/development/src/ListenerStoreProvider.js.map +1 -1
  11. package/dist/development/src/authorization/ActionsPermissionsFactory.cjs.map +1 -1
  12. package/dist/development/src/authorization/ActionsPermissionsFactory.js.map +1 -1
  13. package/dist/development/src/dispatch/DispatchWorkerSupervisor.cjs.map +1 -1
  14. package/dist/development/src/dispatch/DispatchWorkerSupervisor.js.map +1 -1
  15. package/dist/development/src/dispatch/EventDispatcher.cjs.map +1 -1
  16. package/dist/development/src/dispatch/EventDispatcher.js.map +1 -1
  17. package/dist/development/src/dispatch/EventsRepository.cjs.map +1 -1
  18. package/dist/development/src/dispatch/EventsRepository.js.map +1 -1
  19. package/dist/development/src/dispatch/LazyDispatchWorker.cjs +67 -0
  20. package/dist/development/src/dispatch/LazyDispatchWorker.cjs.map +1 -0
  21. package/dist/development/src/dispatch/LazyDispatchWorker.js +67 -0
  22. package/dist/development/src/dispatch/LazyDispatchWorker.js.map +1 -0
  23. package/dist/development/src/dispatch/ProjectDispatcher.cjs.map +1 -1
  24. package/dist/development/src/dispatch/ProjectDispatcher.js.map +1 -1
  25. package/dist/development/src/dispatch/TargetHandlerResolver.cjs.map +1 -1
  26. package/dist/development/src/dispatch/TargetHandlerResolver.js.map +1 -1
  27. package/dist/development/src/dispatch/WebhookTargetHandler.cjs.map +1 -1
  28. package/dist/development/src/dispatch/WebhookTargetHandler.js.map +1 -1
  29. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
  30. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
  31. package/dist/development/src/graphql/http/ActionsContextResolver.cjs.map +1 -1
  32. package/dist/development/src/graphql/http/ActionsContextResolver.js.map +1 -1
  33. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +1 -1
  34. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +1 -1
  35. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +1 -1
  36. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.js.map +1 -1
  37. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
  38. package/dist/development/src/graphql/resolvers/ResolversFactory.js.map +1 -1
  39. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +1 -1
  40. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +1 -1
  41. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -1
  42. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -1
  43. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +1 -1
  44. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +1 -1
  45. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -1
  46. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -1
  47. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  48. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
  49. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +1 -1
  50. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.js.map +1 -1
  51. package/dist/development/src/migrations/index.cjs.map +1 -1
  52. package/dist/development/src/migrations/index.js.map +1 -1
  53. package/dist/development/src/model/EventByIdQuery.cjs.map +1 -1
  54. package/dist/development/src/model/EventByIdQuery.js.map +1 -1
  55. package/dist/development/src/model/EventsInProcessingQuery.cjs.map +1 -1
  56. package/dist/development/src/model/EventsInProcessingQuery.js.map +1 -1
  57. package/dist/development/src/model/EventsToProcessQuery.cjs.map +1 -1
  58. package/dist/development/src/model/EventsToProcessQuery.js.map +1 -1
  59. package/dist/development/src/model/FailedEventsQuery.cjs.map +1 -1
  60. package/dist/development/src/model/FailedEventsQuery.js.map +1 -1
  61. package/dist/development/src/model/VariablesManager.cjs.map +1 -1
  62. package/dist/development/src/model/VariablesManager.js.map +1 -1
  63. package/dist/development/src/triggers/TriggerHandler.cjs.map +1 -1
  64. package/dist/development/src/triggers/TriggerHandler.js.map +1 -1
  65. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.cjs.map +1 -1
  66. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.js.map +1 -1
  67. package/dist/development/src/triggers/TriggerListenersBuilder.cjs.map +1 -1
  68. package/dist/development/src/triggers/TriggerListenersBuilder.js.map +1 -1
  69. package/dist/development/src/triggers/TriggerListenersFactory.cjs.map +1 -1
  70. package/dist/development/src/triggers/TriggerListenersFactory.js.map +1 -1
  71. package/dist/development/src/triggers/TriggerListenersStore.cjs.map +1 -1
  72. package/dist/development/src/triggers/TriggerListenersStore.js.map +1 -1
  73. package/dist/development/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
  74. package/dist/development/src/triggers/TriggerPayloadBuilder.js.map +1 -1
  75. package/dist/development/src/triggers/TriggerPayloadManager.cjs.map +1 -1
  76. package/dist/development/src/triggers/TriggerPayloadManager.js.map +1 -1
  77. package/dist/development/src/triggers/TriggerPayloadPersister.cjs +32 -20
  78. package/dist/development/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
  79. package/dist/development/src/triggers/TriggerPayloadPersister.js +32 -20
  80. package/dist/development/src/triggers/TriggerPayloadPersister.js.map +1 -1
  81. package/dist/production/index.cjs +10 -4
  82. package/dist/production/index.cjs.map +1 -1
  83. package/dist/production/index.js +10 -4
  84. package/dist/production/index.js.map +1 -1
  85. package/dist/production/src/ActionsExecutionContainerHookFactory.cjs +3 -2
  86. package/dist/production/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
  87. package/dist/production/src/ActionsExecutionContainerHookFactory.js +3 -2
  88. package/dist/production/src/ActionsExecutionContainerHookFactory.js.map +1 -1
  89. package/dist/production/src/ListenerStoreProvider.cjs.map +1 -1
  90. package/dist/production/src/ListenerStoreProvider.js.map +1 -1
  91. package/dist/production/src/authorization/ActionsPermissionsFactory.cjs.map +1 -1
  92. package/dist/production/src/authorization/ActionsPermissionsFactory.js.map +1 -1
  93. package/dist/production/src/dispatch/DispatchWorkerSupervisor.cjs.map +1 -1
  94. package/dist/production/src/dispatch/DispatchWorkerSupervisor.js.map +1 -1
  95. package/dist/production/src/dispatch/EventDispatcher.cjs.map +1 -1
  96. package/dist/production/src/dispatch/EventDispatcher.js.map +1 -1
  97. package/dist/production/src/dispatch/EventsRepository.cjs.map +1 -1
  98. package/dist/production/src/dispatch/EventsRepository.js.map +1 -1
  99. package/dist/production/src/dispatch/LazyDispatchWorker.cjs +67 -0
  100. package/dist/production/src/dispatch/LazyDispatchWorker.cjs.map +1 -0
  101. package/dist/production/src/dispatch/LazyDispatchWorker.js +67 -0
  102. package/dist/production/src/dispatch/LazyDispatchWorker.js.map +1 -0
  103. package/dist/production/src/dispatch/ProjectDispatcher.cjs.map +1 -1
  104. package/dist/production/src/dispatch/ProjectDispatcher.js.map +1 -1
  105. package/dist/production/src/dispatch/TargetHandlerResolver.cjs.map +1 -1
  106. package/dist/production/src/dispatch/TargetHandlerResolver.js.map +1 -1
  107. package/dist/production/src/dispatch/WebhookTargetHandler.cjs.map +1 -1
  108. package/dist/production/src/dispatch/WebhookTargetHandler.js.map +1 -1
  109. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
  110. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
  111. package/dist/production/src/graphql/http/ActionsContextResolver.cjs.map +1 -1
  112. package/dist/production/src/graphql/http/ActionsContextResolver.js.map +1 -1
  113. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +1 -1
  114. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +1 -1
  115. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +1 -1
  116. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.js.map +1 -1
  117. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
  118. package/dist/production/src/graphql/resolvers/ResolversFactory.js.map +1 -1
  119. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +1 -1
  120. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +1 -1
  121. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -1
  122. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -1
  123. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +1 -1
  124. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +1 -1
  125. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -1
  126. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -1
  127. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  128. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
  129. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +1 -1
  130. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.js.map +1 -1
  131. package/dist/production/src/migrations/index.cjs.map +1 -1
  132. package/dist/production/src/migrations/index.js.map +1 -1
  133. package/dist/production/src/model/EventByIdQuery.cjs.map +1 -1
  134. package/dist/production/src/model/EventByIdQuery.js.map +1 -1
  135. package/dist/production/src/model/EventsInProcessingQuery.cjs.map +1 -1
  136. package/dist/production/src/model/EventsInProcessingQuery.js.map +1 -1
  137. package/dist/production/src/model/EventsToProcessQuery.cjs.map +1 -1
  138. package/dist/production/src/model/EventsToProcessQuery.js.map +1 -1
  139. package/dist/production/src/model/FailedEventsQuery.cjs.map +1 -1
  140. package/dist/production/src/model/FailedEventsQuery.js.map +1 -1
  141. package/dist/production/src/model/VariablesManager.cjs.map +1 -1
  142. package/dist/production/src/model/VariablesManager.js.map +1 -1
  143. package/dist/production/src/triggers/TriggerHandler.cjs.map +1 -1
  144. package/dist/production/src/triggers/TriggerHandler.js.map +1 -1
  145. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.cjs.map +1 -1
  146. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.js.map +1 -1
  147. package/dist/production/src/triggers/TriggerListenersBuilder.cjs.map +1 -1
  148. package/dist/production/src/triggers/TriggerListenersBuilder.js.map +1 -1
  149. package/dist/production/src/triggers/TriggerListenersFactory.cjs.map +1 -1
  150. package/dist/production/src/triggers/TriggerListenersFactory.js.map +1 -1
  151. package/dist/production/src/triggers/TriggerListenersStore.cjs.map +1 -1
  152. package/dist/production/src/triggers/TriggerListenersStore.js.map +1 -1
  153. package/dist/production/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
  154. package/dist/production/src/triggers/TriggerPayloadBuilder.js.map +1 -1
  155. package/dist/production/src/triggers/TriggerPayloadManager.cjs.map +1 -1
  156. package/dist/production/src/triggers/TriggerPayloadManager.js.map +1 -1
  157. package/dist/production/src/triggers/TriggerPayloadPersister.cjs +32 -20
  158. package/dist/production/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
  159. package/dist/production/src/triggers/TriggerPayloadPersister.js +32 -20
  160. package/dist/production/src/triggers/TriggerPayloadPersister.js.map +1 -1
  161. package/dist/tests/cases/unit/lazyDispatchWorker.test.d.ts +2 -0
  162. package/dist/tests/cases/unit/lazyDispatchWorker.test.d.ts.map +1 -0
  163. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  164. package/dist/types/ActionsExecutionContainerHookFactory.d.ts +1 -1
  165. package/dist/types/ActionsExecutionContainerHookFactory.d.ts.map +1 -1
  166. package/dist/types/ListenerStoreProvider.d.ts +1 -1
  167. package/dist/types/ListenerStoreProvider.d.ts.map +1 -1
  168. package/dist/types/authorization/index.d.ts +3 -3
  169. package/dist/types/authorization/index.d.ts.map +1 -1
  170. package/dist/types/dispatch/DispatchWorkerSupervisor.d.ts +1 -1
  171. package/dist/types/dispatch/DispatchWorkerSupervisor.d.ts.map +1 -1
  172. package/dist/types/dispatch/EventDispatcher.d.ts +3 -3
  173. package/dist/types/dispatch/EventDispatcher.d.ts.map +1 -1
  174. package/dist/types/dispatch/EventsRepository.d.ts +1 -1
  175. package/dist/types/dispatch/EventsRepository.d.ts.map +1 -1
  176. package/dist/types/dispatch/LazyDispatchWorker.d.ts +11 -0
  177. package/dist/types/dispatch/LazyDispatchWorker.d.ts.map +1 -0
  178. package/dist/types/dispatch/ProjectDispatcher.d.ts +1 -1
  179. package/dist/types/dispatch/ProjectDispatcher.d.ts.map +1 -1
  180. package/dist/types/dispatch/TargetHandlerResolver.d.ts +2 -2
  181. package/dist/types/dispatch/TargetHandlerResolver.d.ts.map +1 -1
  182. package/dist/types/dispatch/WebhookTargetHandler.d.ts +2 -2
  183. package/dist/types/dispatch/WebhookTargetHandler.d.ts.map +1 -1
  184. package/dist/types/dispatch/types.d.ts +2 -2
  185. package/dist/types/dispatch/types.d.ts.map +1 -1
  186. package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts +3 -3
  187. package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts.map +1 -1
  188. package/dist/types/graphql/http/ActionsContextResolver.d.ts +1 -1
  189. package/dist/types/graphql/http/ActionsContextResolver.d.ts.map +1 -1
  190. package/dist/types/graphql/http/ActionsGraphQLHandlerFactory.d.ts +2 -2
  191. package/dist/types/graphql/http/ActionsGraphQLHandlerFactory.d.ts.map +1 -1
  192. package/dist/types/graphql/http/ActionsWebsocketControllerFactory.d.ts +2 -2
  193. package/dist/types/graphql/http/ActionsWebsocketControllerFactory.d.ts.map +1 -1
  194. package/dist/types/graphql/resolvers/ResolversFactory.d.ts +4 -4
  195. package/dist/types/graphql/resolvers/ResolversFactory.d.ts.map +1 -1
  196. package/dist/types/graphql/resolvers/index.d.ts +2 -2
  197. package/dist/types/graphql/resolvers/index.d.ts.map +1 -1
  198. package/dist/types/graphql/resolvers/mutation/ProcessBatchMutationResolver.d.ts +3 -3
  199. package/dist/types/graphql/resolvers/mutation/ProcessBatchMutationResolver.d.ts.map +1 -1
  200. package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts +3 -3
  201. package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts.map +1 -1
  202. package/dist/types/graphql/resolvers/mutation/SetVariablesMutationResolver.d.ts +3 -3
  203. package/dist/types/graphql/resolvers/mutation/SetVariablesMutationResolver.d.ts.map +1 -1
  204. package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts +3 -3
  205. package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts.map +1 -1
  206. package/dist/types/graphql/resolvers/mutation/index.d.ts +4 -4
  207. package/dist/types/graphql/resolvers/mutation/index.d.ts.map +1 -1
  208. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts +2 -2
  209. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts.map +1 -1
  210. package/dist/types/graphql/resolvers/query/VariablesQueryResolver.d.ts +3 -3
  211. package/dist/types/graphql/resolvers/query/VariablesQueryResolver.d.ts.map +1 -1
  212. package/dist/types/graphql/resolvers/query/index.d.ts +1 -1
  213. package/dist/types/graphql/resolvers/query/index.d.ts.map +1 -1
  214. package/dist/types/index.d.ts +3 -3
  215. package/dist/types/index.d.ts.map +1 -1
  216. package/dist/types/model/EventByIdQuery.d.ts +1 -1
  217. package/dist/types/model/EventByIdQuery.d.ts.map +1 -1
  218. package/dist/types/model/EventsInProcessingQuery.d.ts +2 -2
  219. package/dist/types/model/EventsInProcessingQuery.d.ts.map +1 -1
  220. package/dist/types/model/EventsToProcessQuery.d.ts +2 -2
  221. package/dist/types/model/EventsToProcessQuery.d.ts.map +1 -1
  222. package/dist/types/model/FailedEventsQuery.d.ts +2 -2
  223. package/dist/types/model/FailedEventsQuery.d.ts.map +1 -1
  224. package/dist/types/model/VariablesManager.d.ts +1 -1
  225. package/dist/types/model/VariablesManager.d.ts.map +1 -1
  226. package/dist/types/triggers/TriggerHandler.d.ts +3 -3
  227. package/dist/types/triggers/TriggerHandler.d.ts.map +1 -1
  228. package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts +1 -1
  229. package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts.map +1 -1
  230. package/dist/types/triggers/TriggerListeners.d.ts +1 -1
  231. package/dist/types/triggers/TriggerListeners.d.ts.map +1 -1
  232. package/dist/types/triggers/TriggerListenersBuilder.d.ts +1 -1
  233. package/dist/types/triggers/TriggerListenersBuilder.d.ts.map +1 -1
  234. package/dist/types/triggers/TriggerListenersFactory.d.ts +1 -1
  235. package/dist/types/triggers/TriggerListenersFactory.d.ts.map +1 -1
  236. package/dist/types/triggers/TriggerListenersStore.d.ts +1 -1
  237. package/dist/types/triggers/TriggerListenersStore.d.ts.map +1 -1
  238. package/dist/types/triggers/TriggerPayloadBuilder.d.ts +1 -1
  239. package/dist/types/triggers/TriggerPayloadBuilder.d.ts.map +1 -1
  240. package/dist/types/triggers/TriggerPayloadManager.d.ts +4 -4
  241. package/dist/types/triggers/TriggerPayloadManager.d.ts.map +1 -1
  242. package/dist/types/triggers/TriggerPayloadPersister.d.ts +3 -2
  243. package/dist/types/triggers/TriggerPayloadPersister.d.ts.map +1 -1
  244. package/dist/types/triggers/index.d.ts +7 -7
  245. package/dist/types/triggers/index.d.ts.map +1 -1
  246. package/dist/types/tsconfig.tsbuildinfo +1 -1
  247. package/package.json +15 -15
  248. package/src/ActionsExecutionContainerHookFactory.ts +9 -5
  249. package/src/ListenerStoreProvider.ts +1 -1
  250. package/src/authorization/ActionsPermissionsFactory.ts +1 -1
  251. package/src/authorization/index.ts +3 -3
  252. package/src/dispatch/DispatchWorkerSupervisor.ts +2 -2
  253. package/src/dispatch/EventDispatcher.ts +4 -4
  254. package/src/dispatch/EventsRepository.ts +3 -3
  255. package/src/dispatch/LazyDispatchWorker.ts +72 -0
  256. package/src/dispatch/ProjectDispatcher.ts +2 -2
  257. package/src/dispatch/TargetHandlerResolver.ts +3 -3
  258. package/src/dispatch/WebhookTargetHandler.ts +3 -3
  259. package/src/dispatch/types.ts +2 -2
  260. package/src/graphql/http/ActionsApiMiddlewareFactory.ts +4 -4
  261. package/src/graphql/http/ActionsContextResolver.ts +1 -1
  262. package/src/graphql/http/ActionsGraphQLHandlerFactory.ts +3 -2
  263. package/src/graphql/http/ActionsWebsocketControllerFactory.ts +2 -2
  264. package/src/graphql/resolvers/ResolversFactory.ts +10 -5
  265. package/src/graphql/resolvers/index.ts +2 -2
  266. package/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.ts +4 -4
  267. package/src/graphql/resolvers/mutation/RetryEventMutationResolver.ts +5 -5
  268. package/src/graphql/resolvers/mutation/SetVariablesMutationResolver.ts +4 -4
  269. package/src/graphql/resolvers/mutation/StopEventMutationResolver.ts +4 -4
  270. package/src/graphql/resolvers/mutation/index.ts +4 -4
  271. package/src/graphql/resolvers/query/EventsQueryResolver.ts +8 -8
  272. package/src/graphql/resolvers/query/VariablesQueryResolver.ts +4 -4
  273. package/src/graphql/resolvers/query/index.ts +1 -1
  274. package/src/index.ts +39 -27
  275. package/src/migrations/index.ts +3 -3
  276. package/src/model/EventByIdQuery.ts +1 -1
  277. package/src/model/EventsInProcessingQuery.ts +2 -2
  278. package/src/model/EventsToProcessQuery.ts +3 -3
  279. package/src/model/FailedEventsQuery.ts +2 -2
  280. package/src/model/VariablesManager.ts +3 -3
  281. package/src/triggers/TriggerHandler.ts +3 -3
  282. package/src/triggers/TriggerIndirectChangesFetcher.ts +1 -1
  283. package/src/triggers/TriggerListeners.ts +1 -1
  284. package/src/triggers/TriggerListenersBuilder.ts +4 -4
  285. package/src/triggers/TriggerListenersFactory.ts +2 -2
  286. package/src/triggers/TriggerListenersStore.ts +1 -1
  287. package/src/triggers/TriggerPayloadBuilder.ts +3 -3
  288. package/src/triggers/TriggerPayloadManager.ts +4 -4
  289. package/src/triggers/TriggerPayloadPersister.ts +22 -9
  290. package/src/triggers/index.ts +7 -7
  291. package/tests/cases/unit/generator.test.ts +1 -1
  292. package/tests/cases/unit/lazyDispatchWorker.test.ts +226 -0
  293. package/tests/cases/unit/webhookHandler.test.ts +5 -5
  294. package/vitest.config.ts +0 -3
@@ -1,5 +1,5 @@
1
1
  import { Mapper, PathFactory, WhereBuilder } from '@contember/engine-content-api'
2
- import { IndirectListener, JunctionListener } from './TriggerListenersStore'
2
+ import { IndirectListener, JunctionListener } from './TriggerListenersStore.js'
3
3
  import { SelectBuilder } from '@contember/database'
4
4
  import { ActionsPayload, Input, Model, Schema } from '@contember/schema'
5
5
  import { JoinBuilder } from '@contember/engine-content-api'
@@ -1,4 +1,4 @@
1
- import { CreateListener, DeleteListener, IndirectListener, JunctionListener, UpdateListener } from './TriggerListenersStore'
1
+ import { CreateListener, DeleteListener, IndirectListener, JunctionListener, UpdateListener } from './TriggerListenersStore.js'
2
2
 
3
3
  export interface TriggerListeners {
4
4
  readonly deleteListeners: Map<string, DeleteListener[]>
@@ -1,9 +1,9 @@
1
1
  import { Actions, Model } from '@contember/schema'
2
- import { TriggerListeners } from './TriggerListeners'
3
- import { JunctionListener, TriggerListenersStore } from './TriggerListenersStore'
2
+ import { TriggerListeners } from './TriggerListeners.js'
3
+ import { JunctionListener, TriggerListenersStore } from './TriggerListenersStore.js'
4
4
  import { acceptFieldVisitor, getEntity } from '@contember/schema-utils'
5
- import { mapGetOrPut } from '../utils/map'
6
- import { ImplementationException } from '../ImplementationException'
5
+ import { mapGetOrPut } from '../utils/map.js'
6
+ import { ImplementationException } from '../ImplementationException.js'
7
7
 
8
8
  export class TriggerListenerBuilder {
9
9
  private readonly data: TriggerListeners = {
@@ -1,5 +1,5 @@
1
- import { TriggerListenersStore } from './TriggerListenersStore'
2
- import { TriggerListenerBuilder } from './TriggerListenersBuilder'
1
+ import { TriggerListenersStore } from './TriggerListenersStore.js'
2
+ import { TriggerListenerBuilder } from './TriggerListenersBuilder.js'
3
3
  import { Schema } from '@contember/schema'
4
4
 
5
5
  export class TriggerListenersFactory {
@@ -1,5 +1,5 @@
1
1
  import { Actions, Model } from '@contember/schema'
2
- import { TriggerListeners } from './TriggerListeners'
2
+ import { TriggerListeners } from './TriggerListeners.js'
3
3
 
4
4
  export interface IndirectListener {
5
5
  type: 'indirect'
@@ -1,6 +1,6 @@
1
- import { ImplementationException } from '../ImplementationException'
2
- import { assertNever } from '../utils/assertNever'
3
- import { FiredEvent } from './TriggerPayloadManager'
1
+ import { ImplementationException } from '../ImplementationException.js'
2
+ import { assertNever } from '../utils/assertNever.js'
3
+ import { FiredEvent } from './TriggerPayloadManager.js'
4
4
  import { Actions, ActionsPayload, Input } from '@contember/schema'
5
5
  import { FieldNode, Mapper, ObjectNode } from '@contember/engine-content-api'
6
6
 
@@ -1,8 +1,8 @@
1
1
  import { Actions, ActionsPayload, Input, Model } from '@contember/schema'
2
- import { AnyListener } from './TriggerListenersStore'
3
- import { EventCause } from './TriggerHandler'
4
- import { TriggerPayloadBuilder } from './TriggerPayloadBuilder'
5
- import { TriggerPayloadPersister } from './TriggerPayloadPersister'
2
+ import { AnyListener } from './TriggerListenersStore.js'
3
+ import { EventCause } from './TriggerHandler.js'
4
+ import { TriggerPayloadBuilder } from './TriggerPayloadBuilder.js'
5
+ import { TriggerPayloadPersister } from './TriggerPayloadPersister.js'
6
6
 
7
7
  export interface FiredEvent {
8
8
  listener: AnyListener
@@ -1,8 +1,8 @@
1
1
  import { Client, InsertBuilder } from '@contember/database'
2
- import { Mapper } from '@contember/engine-content-api'
2
+ import { Mapper, TriggeredActionEvent, TriggeredActionsCollector } from '@contember/engine-content-api'
3
3
  import { Actions, ActionsPayload } from '@contember/schema'
4
- import { EventRow } from '../model/types'
5
- import { notify } from '../utils/notifyChannel'
4
+ import { EventRow } from '../model/types.js'
5
+ import { notify } from '../utils/notifyChannel.js'
6
6
 
7
7
  type EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {
8
8
  created_at: string | Date
@@ -20,6 +20,7 @@ export class TriggerPayloadPersister {
20
20
  private readonly schemaId: number | undefined,
21
21
  private readonly identityId: string,
22
22
  private readonly userInfo: { ipAddress: string | null; userAgent: string | null },
23
+ private readonly triggeredActionsCollector: TriggeredActionsCollector | undefined,
23
24
  ) {
24
25
  }
25
26
 
@@ -28,13 +29,17 @@ export class TriggerPayloadPersister {
28
29
  if (!this.schemaId) {
29
30
  throw new Error('Schema id is not set')
30
31
  }
32
+ const collector = this.triggeredActionsCollector
31
33
  for (let i = 0; i < payloads.length; i += chunkSize) {
32
34
  const chunk = payloads.slice(i, i + chunkSize)
33
- await InsertBuilder.create()
34
- .into('actions_event')
35
- .values(chunk.map((it): EventRowToInsert => ({
36
- id: this.providers.uuid(),
37
- transaction_id: this.mapper.transactionId,
35
+ const collected: TriggeredActionEvent[] | undefined = collector ? [] : undefined
36
+ const rows = chunk.map((it): EventRowToInsert => {
37
+ const id = this.providers.uuid()
38
+ const transactionId = this.mapper.transactionId
39
+ collected?.push({ id, trigger: trigger.name, target: trigger.target, transactionId })
40
+ return {
41
+ id,
42
+ transaction_id: transactionId,
38
43
  created_at: 'now',
39
44
  visible_at: 'now',
40
45
  num_retries: 0,
@@ -50,8 +55,16 @@ export class TriggerPayloadPersister {
50
55
  identity_id: this.identityId,
51
56
  ip_address: this.userInfo.ipAddress,
52
57
  user_agent: this.userInfo.userAgent,
53
- })))
58
+ }
59
+ })
60
+ await InsertBuilder.create()
61
+ .into('actions_event')
62
+ .values(rows)
54
63
  .execute(this.client)
64
+
65
+ if (collected && collected.length > 0) {
66
+ collector!.add(collected)
67
+ }
55
68
  }
56
69
 
57
70
  await notify(this.client, this.projectSlug)
@@ -1,7 +1,7 @@
1
- export * from './TriggerIndirectChangesFetcher'
2
- export * from './TriggerListeners'
3
- export * from './TriggerListenersBuilder'
4
- export * from './TriggerListenersFactory'
5
- export * from './TriggerListenersStore'
6
- export * from './TriggerHandler'
7
- export * from './TriggerPayloadManager'
1
+ export * from './TriggerIndirectChangesFetcher.js'
2
+ export * from './TriggerListeners.js'
3
+ export * from './TriggerListenersBuilder.js'
4
+ export * from './TriggerListenersFactory.js'
5
+ export * from './TriggerListenersStore.js'
6
+ export * from './TriggerHandler.js'
7
+ export * from './TriggerPayloadManager.js'
@@ -1,4 +1,4 @@
1
- import { TriggerListenerBuilder, TriggerListeners } from '../../../src/triggers'
1
+ import { TriggerListenerBuilder, TriggerListeners } from '../../../src/triggers/index.js'
2
2
  import { SchemaDefinition as def } from '@contember/schema-definition'
3
3
  import { Actions, Model } from '@contember/schema'
4
4
  import { expect, test } from 'bun:test'
@@ -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.js'
5
+ import { DispatchWorkerSupervisorFactory } from '../../../src/dispatch/DispatchWorkerSupervisor.js'
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
+ })
@@ -1,11 +1,11 @@
1
1
  import { describe, expect, test } from 'bun:test'
2
- import { WebhookTargetHandler } from '../../../src/dispatch/WebhookTargetHandler'
3
- import { FetcherResponse } from '../../../src/dispatch/WebhookFetcher'
2
+ import { WebhookTargetHandler } from '../../../src/dispatch/WebhookTargetHandler.js'
3
+ import { FetcherResponse } from '../../../src/dispatch/WebhookFetcher.js'
4
4
  import { createLogger, Logger, TestLoggerHandler } from '@contember/logger'
5
- import { EventRow } from '../../../src/model/types'
5
+ import { EventRow } from '../../../src/model/types.js'
6
6
  import { Actions, ActionsPayload } from '@contember/schema'
7
- import { HandledEvent } from '../../../src/dispatch/types'
8
- import { testUuid } from '../../src/uuid'
7
+ import { HandledEvent } from '../../../src/dispatch/types.js'
8
+ import { testUuid } from '../../src/uuid.js'
9
9
 
10
10
  const assert = {
11
11
  equal: (a: any, b: any) => expect(a).toEqual(b),
package/vitest.config.ts DELETED
@@ -1,3 +0,0 @@
1
- import { defineProject } from 'vitest/config'
2
-
3
- export default defineProject({})