@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 +1 @@
1
- {"version":3,"file":"TriggerPayloadBuilder.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadBuilder.ts"],"sourcesContent":["import { ImplementationException } from '../ImplementationException'\nimport { assertNever } from '../utils/assertNever'\nimport { FiredEvent } from './TriggerPayloadManager'\nimport { Actions, ActionsPayload, Input } from '@contember/schema'\nimport { FieldNode, Mapper, ObjectNode } from '@contember/engine-content-api'\n\ntype Selections = Record<Input.PrimaryValue, any>\n\nexport class TriggerPayloadBuilder {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async build(events: FiredEvent[]): Promise<ActionsPayload.AnyEventPayload[]> {\n\t\tconst filteredEvents = events.filter(it => {\n\t\t\treturn it.cause.type !== 'BeforeUpdateEvent'\n\t\t\t\t|| it.cause.afterEvent?.hasChanges === true\n\t\t})\n\t\tif (filteredEvents.length === 0) {\n\t\t\treturn []\n\t\t}\n\t\tconst selections = await this.fetchSelection(filteredEvents)\n\t\tconst triggerType = filteredEvents[0].listener.trigger.type\n\t\tif (triggerType === 'basic') {\n\t\t\treturn filteredEvents.map(it => ({\n\t\t\t\ttrigger: it.listener.trigger.name,\n\t\t\t\t...this.buildBaseEventPayloads(it, it.selection ?? selections[it.primary]),\n\t\t\t}))\n\t\t}\n\t\tif (triggerType === 'watch') {\n\t\t\treturn this.buildWatchEventPayloads(filteredEvents, selections)\n\t\t}\n\t\treturn assertNever(triggerType)\n\t}\n\n\tpublic async preprocessEvent(event: FiredEvent): Promise<FiredEvent> {\n\t\tif (event.listener.type === 'delete' && event.listener.trigger.selection) {\n\t\t\tconst input = this.convertSelectionNode(event.listener.trigger.selection)\n\n\t\t\tconst selection = await this.mapper.selectUnique(\n\t\t\t\tevent.entity,\n\t\t\t\tinput.withArg('by', {\n\t\t\t\t\t[event.entity.primary]: event.primary,\n\t\t\t\t}),\n\t\t\t\t[],\n\t\t\t)\n\t\t\treturn { ...event, selection }\n\t\t}\n\t\treturn event\n\t}\n\n\tprivate buildWatchEventPayloads(events: FiredEvent[], selections: Selections): ActionsPayload.WatchEventPayload[] {\n\t\tconst byPrimary: Record<Input.PrimaryValue, { primary: Input.PrimaryValue; events: FiredEvent[] }> = {}\n\t\tfor (const event of events) {\n\t\t\tbyPrimary[event.primary] ??= { primary: event.primary, events: [] }\n\t\t\tbyPrimary[event.primary].events.push(event)\n\t\t}\n\t\tconst payloads: ActionsPayload.WatchEventPayload[] = []\n\t\tfor (const eventsByPrimary of Object.values(byPrimary)) {\n\t\t\tconst baseEvents: ActionsPayload.BaseEventPayload[] = []\n\n\t\t\tconst existingEvents = new Set<string>()\n\t\t\tfor (const event of eventsByPrimary.events) {\n\t\t\t\tconst baseEvent = this.buildBaseEventPayloads(event)\n\t\t\t\tconst stringRepresentation = JSON.stringify(baseEvent)\n\t\t\t\tif (existingEvents.has(stringRepresentation)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\texistingEvents.add(stringRepresentation)\n\t\t\t\tbaseEvents.push(baseEvent)\n\t\t\t}\n\n\t\t\tpayloads.push({\n\t\t\t\toperation: 'watch',\n\t\t\t\ttrigger: events[0].listener.trigger.name,\n\t\t\t\tentity: events[0].entity.name,\n\t\t\t\tid: eventsByPrimary.primary,\n\t\t\t\tselection: eventsByPrimary.events.find(it => it.selection)?.selection\n\t\t\t\t\t?? selections[eventsByPrimary.primary],\n\t\t\t\tevents: baseEvents,\n\t\t\t})\n\t\t}\n\t\treturn payloads\n\t}\n\n\tprivate buildBaseEventPayloads(event: FiredEvent, selection?: any): ActionsPayload.BaseEventPayload {\n\t\tswitch (event.cause.type) {\n\t\t\tcase 'AfterInsertEvent':\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'create',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tvalues: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'AfterUpdateEvent':\n\t\t\tcase 'BeforeUpdateEvent':\n\t\t\t\tconst afterEvent = event.cause.type === 'AfterUpdateEvent' ? event.cause : event.cause.afterEvent\n\t\t\t\tif (!afterEvent) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'update',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tvalues: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\told: Object.fromEntries(afterEvent.data.map(it => [it.fieldName, it.old])),\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'BeforeDeleteEvent':\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'delete',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'AfterJunctionUpdateEvent':\n\t\t\t\tif (event.listener.type !== 'junction') {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst [id, inverseId] = event.listener.context.type === 'owning'\n\t\t\t\t\t? [event.cause.owningId, event.cause.inverseId]\n\t\t\t\t\t: [event.cause.inverseId, event.cause.owningId]\n\t\t\t\treturn {\n\t\t\t\t\toperation: event.cause.operation === 'connect' ? 'junction_connect' : 'junction_disconnect',\n\t\t\t\t\tentity: event.listener.context.entity.name,\n\t\t\t\t\trelation: event.listener.context.relation.name,\n\t\t\t\t\tid,\n\t\t\t\t\tinverseId,\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tassertNever(event.cause, it => it.type)\n\t\t}\n\t}\n\n\tprivate async fetchSelection(events: FiredEvent[]): Promise<Selections> {\n\t\tconst trigger = events[0].listener.trigger\n\t\tif (!trigger.selection) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst ids = Array.from(new Set(events.filter(it => it.listener.type !== 'delete').map(it => it.primary)))\n\t\tif (ids.length === 0) {\n\t\t\treturn {}\n\t\t}\n\t\tconst entity = events[0].entity\n\t\tconst input = this.convertSelectionNode(trigger.selection).withArg('filter', {\n\t\t\t[entity.primary]: { in: ids },\n\t\t})\n\t\treturn await this.mapper.selectAssoc(entity, input, [], entity.primary)\n\t}\n\n\tprivate convertSelectionNode(node: Actions.SelectionNode, nodeName = 'root', path: string[] = []): ObjectNode<Input.ListQueryInput> {\n\t\treturn new ObjectNode(\n\t\t\tnodeName,\n\t\t\tnodeName,\n\t\t\tnode.map(it => {\n\t\t\t\tconst [field, args, selection] = Array.isArray(it) ? it : [it, undefined, undefined]\n\t\t\t\tif (selection === undefined || selection.length === 0) {\n\t\t\t\t\treturn new FieldNode(field, field, {})\n\t\t\t\t}\n\t\t\t\treturn this.convertSelectionNode(selection, field, [...path, nodeName]).withArgs(args)\n\t\t\t}),\n\t\t\t{},\n\t\t\t{},\n\t\t\tpath,\n\t\t)\n\t}\n}\n"],"names":["assertNever","ImplementationException","ObjectNode","FieldNode"],"mappings":";;;;;AAQO,MAAM,sBAAsB;AAAA,EAClC,YACkB,QAChB;AADgB,SAAA,SAAA;AAAA,EAElB;AAAA,EAEA,MAAa,MAAM,QAAiE;AACnF,UAAM,iBAAiB,OAAO,OAAO,CAAA,OAAM;AAC1C,aAAO,GAAG,MAAM,SAAS,uBACrB,GAAG,MAAM,YAAY,eAAe;AAAA,IACzC,CAAC;AACD,QAAI,eAAe,WAAW,GAAG;AAChC,aAAO,CAAA;AAAA,IACR;AACA,UAAM,aAAa,MAAM,KAAK,eAAe,cAAc;AAC3D,UAAM,cAAc,eAAe,CAAC,EAAE,SAAS,QAAQ;AACvD,QAAI,gBAAgB,SAAS;AAC5B,aAAO,eAAe,IAAI,CAAA,QAAO;AAAA,QAChC,SAAS,GAAG,SAAS,QAAQ;AAAA,QAC7B,GAAG,KAAK,uBAAuB,IAAI,GAAG,aAAa,WAAW,GAAG,OAAO,CAAC;AAAA,MAAA,EACxE;AAAA,IACH;AACA,QAAI,gBAAgB,SAAS;AAC5B,aAAO,KAAK,wBAAwB,gBAAgB,UAAU;AAAA,IAC/D;AACA,WAAOA,YAAAA,YAAY,WAAW;AAAA,EAC/B;AAAA,EAEA,MAAa,gBAAgB,OAAwC;AACpE,QAAI,MAAM,SAAS,SAAS,YAAY,MAAM,SAAS,QAAQ,WAAW;AACzE,YAAM,QAAQ,KAAK,qBAAqB,MAAM,SAAS,QAAQ,SAAS;AAExE,YAAM,YAAY,MAAM,KAAK,OAAO;AAAA,QACnC,MAAM;AAAA,QACN,MAAM,QAAQ,MAAM;AAAA,UACnB,CAAC,MAAM,OAAO,OAAO,GAAG,MAAM;AAAA,QAAA,CAC9B;AAAA,QACD,CAAA;AAAA,MAAC;AAEF,aAAO,EAAE,GAAG,OAAO,UAAA;AAAA,IACpB;AACA,WAAO;AAAA,EACR;AAAA,EAEQ,wBAAwB,QAAsB,YAA4D;AApDnH,QAAA;AAqDE,UAAM,YAA+F,CAAA;AACrG,eAAW,SAAS,QAAQ;AAC3B,gBAAA,KAAU,MAAM,aAAhB,UAAA,EAAA,IAA6B,EAAE,SAAS,MAAM,SAAS,QAAQ,CAAA,EAAC;AAChE,gBAAU,MAAM,OAAO,EAAE,OAAO,KAAK,KAAK;AAAA,IAC3C;AACA,UAAM,WAA+C,CAAA;AACrD,eAAW,mBAAmB,OAAO,OAAO,SAAS,GAAG;AACvD,YAAM,aAAgD,CAAA;AAEtD,YAAM,qCAAqB,IAAA;AAC3B,iBAAW,SAAS,gBAAgB,QAAQ;AAC3C,cAAM,YAAY,KAAK,uBAAuB,KAAK;AACnD,cAAM,uBAAuB,KAAK,UAAU,SAAS;AACrD,YAAI,eAAe,IAAI,oBAAoB,GAAG;AAC7C;AAAA,QACD;AACA,uBAAe,IAAI,oBAAoB;AACvC,mBAAW,KAAK,SAAS;AAAA,MAC1B;AAEA,eAAS,KAAK;AAAA,QACb,WAAW;AAAA,QACX,SAAS,OAAO,CAAC,EAAE,SAAS,QAAQ;AAAA,QACpC,QAAQ,OAAO,CAAC,EAAE,OAAO;AAAA,QACzB,IAAI,gBAAgB;AAAA,QACpB,WAAW,gBAAgB,OAAO,KAAK,CAAA,OAAM,GAAG,SAAS,GAAG,aACxD,WAAW,gBAAgB,OAAO;AAAA,QACtC,QAAQ;AAAA,MAAA,CACR;AAAA,IACF;AACA,WAAO;AAAA,EACR;AAAA,EAEQ,uBAAuB,OAAmB,WAAkD;AACnG,YAAQ,MAAM,MAAM,MAAA;AAAA,MACnB,KAAK;AACJ,eAAO;AAAA,UACN,WAAW;AAAA,UACX,QAAQ,MAAM,MAAM,OAAO;AAAA,UAC3B,IAAI,MAAM,MAAM;AAAA,UAChB;AAAA,UACA,QAAQ,OAAO,YAAY,MAAM,MAAM,KAAK,IAAI,CAAA,OAAM,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC;AAAA,UAC/E,MAAM,UAAU,MAAM,WAAW,MAAM,SAAS,OAAO;AAAA,UACvD,OAAO,MAAM;AAAA,QAAA;AAAA,MAEf,KAAK;AAAA,MACL,KAAK;AACJ,cAAM,aAAa,MAAM,MAAM,SAAS,qBAAqB,MAAM,QAAQ,MAAM,MAAM;AACvF,YAAI,CAAC,YAAY;AAChB,gBAAM,IAAIC,wBAAAA,wBAAA;AAAA,QACX;AACA,eAAO;AAAA,UACN,WAAW;AAAA,UACX,QAAQ,MAAM,MAAM,OAAO;AAAA,UAC3B,IAAI,MAAM,MAAM;AAAA,UAChB;AAAA,UACA,QAAQ,OAAO,YAAY,MAAM,MAAM,KAAK,IAAI,CAAA,OAAM,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC;AAAA,UAC/E,MAAM,UAAU,MAAM,WAAW,MAAM,SAAS,OAAO;AAAA,UACvD,KAAK,OAAO,YAAY,WAAW,KAAK,IAAI,CAAA,OAAM,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC;AAAA,UACzE,OAAO,MAAM;AAAA,QAAA;AAAA,MAEf,KAAK;AACJ,eAAO;AAAA,UACN,WAAW;AAAA,UACX,QAAQ,MAAM,MAAM,OAAO;AAAA,UAC3B,IAAI,MAAM,MAAM;AAAA,UAChB;AAAA,UACA,MAAM,UAAU,MAAM,WAAW,MAAM,SAAS,OAAO;AAAA,UACvD,OAAO,MAAM;AAAA,QAAA;AAAA,MAEf,KAAK;AACJ,YAAI,MAAM,SAAS,SAAS,YAAY;AACvC,gBAAM,IAAIA,wBAAAA,wBAAA;AAAA,QACX;AACA,cAAM,CAAC,IAAI,SAAS,IAAI,MAAM,SAAS,QAAQ,SAAS,WACrD,CAAC,MAAM,MAAM,UAAU,MAAM,MAAM,SAAS,IAC5C,CAAC,MAAM,MAAM,WAAW,MAAM,MAAM,QAAQ;AAC/C,eAAO;AAAA,UACN,WAAW,MAAM,MAAM,cAAc,YAAY,qBAAqB;AAAA,UACtE,QAAQ,MAAM,SAAS,QAAQ,OAAO;AAAA,UACtC,UAAU,MAAM,SAAS,QAAQ,SAAS;AAAA,UAC1C;AAAA,UACA;AAAA,UACA,MAAM,UAAU,MAAM,WAAW,MAAM,SAAS,OAAO;AAAA,UACvD,OAAO,MAAM;AAAA,QAAA;AAAA,MAEf;AACCD,oBAAAA,YAAY,MAAM,OAAO,CAAA,OAAM,GAAG,IAAI;AAAA,IAAA;AAAA,EAEzC;AAAA,EAEA,MAAc,eAAe,QAA2C;AACvE,UAAM,UAAU,OAAO,CAAC,EAAE,SAAS;AACnC,QAAI,CAAC,QAAQ,WAAW;AACvB,aAAO,CAAA;AAAA,IACR;AAEA,UAAM,MAAM,MAAM,KAAK,IAAI,IAAI,OAAO,OAAO,CAAA,OAAM,GAAG,SAAS,SAAS,QAAQ,EAAE,IAAI,QAAM,GAAG,OAAO,CAAC,CAAC;AACxG,QAAI,IAAI,WAAW,GAAG;AACrB,aAAO,CAAA;AAAA,IACR;AACA,UAAM,SAAS,OAAO,CAAC,EAAE;AACzB,UAAM,QAAQ,KAAK,qBAAqB,QAAQ,SAAS,EAAE,QAAQ,UAAU;AAAA,MAC5E,CAAC,OAAO,OAAO,GAAG,EAAE,IAAI,IAAA;AAAA,IAAI,CAC5B;AACD,WAAO,MAAM,KAAK,OAAO,YAAY,QAAQ,OAAO,CAAA,GAAI,OAAO,OAAO;AAAA,EACvE;AAAA,EAEQ,qBAAqB,MAA6B,WAAW,QAAQ,OAAiB,CAAA,GAAsC;AACnI,WAAO,IAAIE,iBAAAA;AAAAA,MACV;AAAA,MACA;AAAA,MACA,KAAK,IAAI,CAAA,OAAM;AACd,cAAM,CAAC,OAAO,MAAM,SAAS,IAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,IAAI,QAAW,MAAS;AACnF,YAAI,cAAc,UAAa,UAAU,WAAW,GAAG;AACtD,iBAAO,IAAIC,iBAAAA,UAAU,OAAO,OAAO,CAAA,CAAE;AAAA,QACtC;AACA,eAAO,KAAK,qBAAqB,WAAW,OAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,EAAE,SAAS,IAAI;AAAA,MACtF,CAAC;AAAA,MACD,CAAA;AAAA,MACA,CAAA;AAAA,MACA;AAAA,IAAA;AAAA,EAEF;AACD;;"}
1
+ {"version":3,"file":"TriggerPayloadBuilder.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadBuilder.ts"],"sourcesContent":["import { ImplementationException } from '../ImplementationException.js'\nimport { assertNever } from '../utils/assertNever.js'\nimport { FiredEvent } from './TriggerPayloadManager.js'\nimport { Actions, ActionsPayload, Input } from '@contember/schema'\nimport { FieldNode, Mapper, ObjectNode } from '@contember/engine-content-api'\n\ntype Selections = Record<Input.PrimaryValue, any>\n\nexport class TriggerPayloadBuilder {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async build(events: FiredEvent[]): Promise<ActionsPayload.AnyEventPayload[]> {\n\t\tconst filteredEvents = events.filter(it => {\n\t\t\treturn it.cause.type !== 'BeforeUpdateEvent'\n\t\t\t\t|| it.cause.afterEvent?.hasChanges === true\n\t\t})\n\t\tif (filteredEvents.length === 0) {\n\t\t\treturn []\n\t\t}\n\t\tconst selections = await this.fetchSelection(filteredEvents)\n\t\tconst triggerType = filteredEvents[0].listener.trigger.type\n\t\tif (triggerType === 'basic') {\n\t\t\treturn filteredEvents.map(it => ({\n\t\t\t\ttrigger: it.listener.trigger.name,\n\t\t\t\t...this.buildBaseEventPayloads(it, it.selection ?? selections[it.primary]),\n\t\t\t}))\n\t\t}\n\t\tif (triggerType === 'watch') {\n\t\t\treturn this.buildWatchEventPayloads(filteredEvents, selections)\n\t\t}\n\t\treturn assertNever(triggerType)\n\t}\n\n\tpublic async preprocessEvent(event: FiredEvent): Promise<FiredEvent> {\n\t\tif (event.listener.type === 'delete' && event.listener.trigger.selection) {\n\t\t\tconst input = this.convertSelectionNode(event.listener.trigger.selection)\n\n\t\t\tconst selection = await this.mapper.selectUnique(\n\t\t\t\tevent.entity,\n\t\t\t\tinput.withArg('by', {\n\t\t\t\t\t[event.entity.primary]: event.primary,\n\t\t\t\t}),\n\t\t\t\t[],\n\t\t\t)\n\t\t\treturn { ...event, selection }\n\t\t}\n\t\treturn event\n\t}\n\n\tprivate buildWatchEventPayloads(events: FiredEvent[], selections: Selections): ActionsPayload.WatchEventPayload[] {\n\t\tconst byPrimary: Record<Input.PrimaryValue, { primary: Input.PrimaryValue; events: FiredEvent[] }> = {}\n\t\tfor (const event of events) {\n\t\t\tbyPrimary[event.primary] ??= { primary: event.primary, events: [] }\n\t\t\tbyPrimary[event.primary].events.push(event)\n\t\t}\n\t\tconst payloads: ActionsPayload.WatchEventPayload[] = []\n\t\tfor (const eventsByPrimary of Object.values(byPrimary)) {\n\t\t\tconst baseEvents: ActionsPayload.BaseEventPayload[] = []\n\n\t\t\tconst existingEvents = new Set<string>()\n\t\t\tfor (const event of eventsByPrimary.events) {\n\t\t\t\tconst baseEvent = this.buildBaseEventPayloads(event)\n\t\t\t\tconst stringRepresentation = JSON.stringify(baseEvent)\n\t\t\t\tif (existingEvents.has(stringRepresentation)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\texistingEvents.add(stringRepresentation)\n\t\t\t\tbaseEvents.push(baseEvent)\n\t\t\t}\n\n\t\t\tpayloads.push({\n\t\t\t\toperation: 'watch',\n\t\t\t\ttrigger: events[0].listener.trigger.name,\n\t\t\t\tentity: events[0].entity.name,\n\t\t\t\tid: eventsByPrimary.primary,\n\t\t\t\tselection: eventsByPrimary.events.find(it => it.selection)?.selection\n\t\t\t\t\t?? selections[eventsByPrimary.primary],\n\t\t\t\tevents: baseEvents,\n\t\t\t})\n\t\t}\n\t\treturn payloads\n\t}\n\n\tprivate buildBaseEventPayloads(event: FiredEvent, selection?: any): ActionsPayload.BaseEventPayload {\n\t\tswitch (event.cause.type) {\n\t\t\tcase 'AfterInsertEvent':\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'create',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tvalues: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'AfterUpdateEvent':\n\t\t\tcase 'BeforeUpdateEvent':\n\t\t\t\tconst afterEvent = event.cause.type === 'AfterUpdateEvent' ? event.cause : event.cause.afterEvent\n\t\t\t\tif (!afterEvent) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'update',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tvalues: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\told: Object.fromEntries(afterEvent.data.map(it => [it.fieldName, it.old])),\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'BeforeDeleteEvent':\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'delete',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'AfterJunctionUpdateEvent':\n\t\t\t\tif (event.listener.type !== 'junction') {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst [id, inverseId] = event.listener.context.type === 'owning'\n\t\t\t\t\t? [event.cause.owningId, event.cause.inverseId]\n\t\t\t\t\t: [event.cause.inverseId, event.cause.owningId]\n\t\t\t\treturn {\n\t\t\t\t\toperation: event.cause.operation === 'connect' ? 'junction_connect' : 'junction_disconnect',\n\t\t\t\t\tentity: event.listener.context.entity.name,\n\t\t\t\t\trelation: event.listener.context.relation.name,\n\t\t\t\t\tid,\n\t\t\t\t\tinverseId,\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tassertNever(event.cause, it => it.type)\n\t\t}\n\t}\n\n\tprivate async fetchSelection(events: FiredEvent[]): Promise<Selections> {\n\t\tconst trigger = events[0].listener.trigger\n\t\tif (!trigger.selection) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst ids = Array.from(new Set(events.filter(it => it.listener.type !== 'delete').map(it => it.primary)))\n\t\tif (ids.length === 0) {\n\t\t\treturn {}\n\t\t}\n\t\tconst entity = events[0].entity\n\t\tconst input = this.convertSelectionNode(trigger.selection).withArg('filter', {\n\t\t\t[entity.primary]: { in: ids },\n\t\t})\n\t\treturn await this.mapper.selectAssoc(entity, input, [], entity.primary)\n\t}\n\n\tprivate convertSelectionNode(node: Actions.SelectionNode, nodeName = 'root', path: string[] = []): ObjectNode<Input.ListQueryInput> {\n\t\treturn new ObjectNode(\n\t\t\tnodeName,\n\t\t\tnodeName,\n\t\t\tnode.map(it => {\n\t\t\t\tconst [field, args, selection] = Array.isArray(it) ? it : [it, undefined, undefined]\n\t\t\t\tif (selection === undefined || selection.length === 0) {\n\t\t\t\t\treturn new FieldNode(field, field, {})\n\t\t\t\t}\n\t\t\t\treturn this.convertSelectionNode(selection, field, [...path, nodeName]).withArgs(args)\n\t\t\t}),\n\t\t\t{},\n\t\t\t{},\n\t\t\tpath,\n\t\t)\n\t}\n}\n"],"names":["assertNever","ImplementationException","ObjectNode","FieldNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPayloadBuilder.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadBuilder.ts"],"sourcesContent":["import { ImplementationException } from '../ImplementationException'\nimport { assertNever } from '../utils/assertNever'\nimport { FiredEvent } from './TriggerPayloadManager'\nimport { Actions, ActionsPayload, Input } from '@contember/schema'\nimport { FieldNode, Mapper, ObjectNode } from '@contember/engine-content-api'\n\ntype Selections = Record<Input.PrimaryValue, any>\n\nexport class TriggerPayloadBuilder {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async build(events: FiredEvent[]): Promise<ActionsPayload.AnyEventPayload[]> {\n\t\tconst filteredEvents = events.filter(it => {\n\t\t\treturn it.cause.type !== 'BeforeUpdateEvent'\n\t\t\t\t|| it.cause.afterEvent?.hasChanges === true\n\t\t})\n\t\tif (filteredEvents.length === 0) {\n\t\t\treturn []\n\t\t}\n\t\tconst selections = await this.fetchSelection(filteredEvents)\n\t\tconst triggerType = filteredEvents[0].listener.trigger.type\n\t\tif (triggerType === 'basic') {\n\t\t\treturn filteredEvents.map(it => ({\n\t\t\t\ttrigger: it.listener.trigger.name,\n\t\t\t\t...this.buildBaseEventPayloads(it, it.selection ?? selections[it.primary]),\n\t\t\t}))\n\t\t}\n\t\tif (triggerType === 'watch') {\n\t\t\treturn this.buildWatchEventPayloads(filteredEvents, selections)\n\t\t}\n\t\treturn assertNever(triggerType)\n\t}\n\n\tpublic async preprocessEvent(event: FiredEvent): Promise<FiredEvent> {\n\t\tif (event.listener.type === 'delete' && event.listener.trigger.selection) {\n\t\t\tconst input = this.convertSelectionNode(event.listener.trigger.selection)\n\n\t\t\tconst selection = await this.mapper.selectUnique(\n\t\t\t\tevent.entity,\n\t\t\t\tinput.withArg('by', {\n\t\t\t\t\t[event.entity.primary]: event.primary,\n\t\t\t\t}),\n\t\t\t\t[],\n\t\t\t)\n\t\t\treturn { ...event, selection }\n\t\t}\n\t\treturn event\n\t}\n\n\tprivate buildWatchEventPayloads(events: FiredEvent[], selections: Selections): ActionsPayload.WatchEventPayload[] {\n\t\tconst byPrimary: Record<Input.PrimaryValue, { primary: Input.PrimaryValue; events: FiredEvent[] }> = {}\n\t\tfor (const event of events) {\n\t\t\tbyPrimary[event.primary] ??= { primary: event.primary, events: [] }\n\t\t\tbyPrimary[event.primary].events.push(event)\n\t\t}\n\t\tconst payloads: ActionsPayload.WatchEventPayload[] = []\n\t\tfor (const eventsByPrimary of Object.values(byPrimary)) {\n\t\t\tconst baseEvents: ActionsPayload.BaseEventPayload[] = []\n\n\t\t\tconst existingEvents = new Set<string>()\n\t\t\tfor (const event of eventsByPrimary.events) {\n\t\t\t\tconst baseEvent = this.buildBaseEventPayloads(event)\n\t\t\t\tconst stringRepresentation = JSON.stringify(baseEvent)\n\t\t\t\tif (existingEvents.has(stringRepresentation)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\texistingEvents.add(stringRepresentation)\n\t\t\t\tbaseEvents.push(baseEvent)\n\t\t\t}\n\n\t\t\tpayloads.push({\n\t\t\t\toperation: 'watch',\n\t\t\t\ttrigger: events[0].listener.trigger.name,\n\t\t\t\tentity: events[0].entity.name,\n\t\t\t\tid: eventsByPrimary.primary,\n\t\t\t\tselection: eventsByPrimary.events.find(it => it.selection)?.selection\n\t\t\t\t\t?? selections[eventsByPrimary.primary],\n\t\t\t\tevents: baseEvents,\n\t\t\t})\n\t\t}\n\t\treturn payloads\n\t}\n\n\tprivate buildBaseEventPayloads(event: FiredEvent, selection?: any): ActionsPayload.BaseEventPayload {\n\t\tswitch (event.cause.type) {\n\t\t\tcase 'AfterInsertEvent':\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'create',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tvalues: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'AfterUpdateEvent':\n\t\t\tcase 'BeforeUpdateEvent':\n\t\t\t\tconst afterEvent = event.cause.type === 'AfterUpdateEvent' ? event.cause : event.cause.afterEvent\n\t\t\t\tif (!afterEvent) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'update',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tvalues: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\told: Object.fromEntries(afterEvent.data.map(it => [it.fieldName, it.old])),\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'BeforeDeleteEvent':\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'delete',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'AfterJunctionUpdateEvent':\n\t\t\t\tif (event.listener.type !== 'junction') {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst [id, inverseId] = event.listener.context.type === 'owning'\n\t\t\t\t\t? [event.cause.owningId, event.cause.inverseId]\n\t\t\t\t\t: [event.cause.inverseId, event.cause.owningId]\n\t\t\t\treturn {\n\t\t\t\t\toperation: event.cause.operation === 'connect' ? 'junction_connect' : 'junction_disconnect',\n\t\t\t\t\tentity: event.listener.context.entity.name,\n\t\t\t\t\trelation: event.listener.context.relation.name,\n\t\t\t\t\tid,\n\t\t\t\t\tinverseId,\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tassertNever(event.cause, it => it.type)\n\t\t}\n\t}\n\n\tprivate async fetchSelection(events: FiredEvent[]): Promise<Selections> {\n\t\tconst trigger = events[0].listener.trigger\n\t\tif (!trigger.selection) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst ids = Array.from(new Set(events.filter(it => it.listener.type !== 'delete').map(it => it.primary)))\n\t\tif (ids.length === 0) {\n\t\t\treturn {}\n\t\t}\n\t\tconst entity = events[0].entity\n\t\tconst input = this.convertSelectionNode(trigger.selection).withArg('filter', {\n\t\t\t[entity.primary]: { in: ids },\n\t\t})\n\t\treturn await this.mapper.selectAssoc(entity, input, [], entity.primary)\n\t}\n\n\tprivate convertSelectionNode(node: Actions.SelectionNode, nodeName = 'root', path: string[] = []): ObjectNode<Input.ListQueryInput> {\n\t\treturn new ObjectNode(\n\t\t\tnodeName,\n\t\t\tnodeName,\n\t\t\tnode.map(it => {\n\t\t\t\tconst [field, args, selection] = Array.isArray(it) ? it : [it, undefined, undefined]\n\t\t\t\tif (selection === undefined || selection.length === 0) {\n\t\t\t\t\treturn new FieldNode(field, field, {})\n\t\t\t\t}\n\t\t\t\treturn this.convertSelectionNode(selection, field, [...path, nodeName]).withArgs(args)\n\t\t\t}),\n\t\t\t{},\n\t\t\t{},\n\t\t\tpath,\n\t\t)\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TriggerPayloadBuilder.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadBuilder.ts"],"sourcesContent":["import { ImplementationException } from '../ImplementationException.js'\nimport { assertNever } from '../utils/assertNever.js'\nimport { FiredEvent } from './TriggerPayloadManager.js'\nimport { Actions, ActionsPayload, Input } from '@contember/schema'\nimport { FieldNode, Mapper, ObjectNode } from '@contember/engine-content-api'\n\ntype Selections = Record<Input.PrimaryValue, any>\n\nexport class TriggerPayloadBuilder {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async build(events: FiredEvent[]): Promise<ActionsPayload.AnyEventPayload[]> {\n\t\tconst filteredEvents = events.filter(it => {\n\t\t\treturn it.cause.type !== 'BeforeUpdateEvent'\n\t\t\t\t|| it.cause.afterEvent?.hasChanges === true\n\t\t})\n\t\tif (filteredEvents.length === 0) {\n\t\t\treturn []\n\t\t}\n\t\tconst selections = await this.fetchSelection(filteredEvents)\n\t\tconst triggerType = filteredEvents[0].listener.trigger.type\n\t\tif (triggerType === 'basic') {\n\t\t\treturn filteredEvents.map(it => ({\n\t\t\t\ttrigger: it.listener.trigger.name,\n\t\t\t\t...this.buildBaseEventPayloads(it, it.selection ?? selections[it.primary]),\n\t\t\t}))\n\t\t}\n\t\tif (triggerType === 'watch') {\n\t\t\treturn this.buildWatchEventPayloads(filteredEvents, selections)\n\t\t}\n\t\treturn assertNever(triggerType)\n\t}\n\n\tpublic async preprocessEvent(event: FiredEvent): Promise<FiredEvent> {\n\t\tif (event.listener.type === 'delete' && event.listener.trigger.selection) {\n\t\t\tconst input = this.convertSelectionNode(event.listener.trigger.selection)\n\n\t\t\tconst selection = await this.mapper.selectUnique(\n\t\t\t\tevent.entity,\n\t\t\t\tinput.withArg('by', {\n\t\t\t\t\t[event.entity.primary]: event.primary,\n\t\t\t\t}),\n\t\t\t\t[],\n\t\t\t)\n\t\t\treturn { ...event, selection }\n\t\t}\n\t\treturn event\n\t}\n\n\tprivate buildWatchEventPayloads(events: FiredEvent[], selections: Selections): ActionsPayload.WatchEventPayload[] {\n\t\tconst byPrimary: Record<Input.PrimaryValue, { primary: Input.PrimaryValue; events: FiredEvent[] }> = {}\n\t\tfor (const event of events) {\n\t\t\tbyPrimary[event.primary] ??= { primary: event.primary, events: [] }\n\t\t\tbyPrimary[event.primary].events.push(event)\n\t\t}\n\t\tconst payloads: ActionsPayload.WatchEventPayload[] = []\n\t\tfor (const eventsByPrimary of Object.values(byPrimary)) {\n\t\t\tconst baseEvents: ActionsPayload.BaseEventPayload[] = []\n\n\t\t\tconst existingEvents = new Set<string>()\n\t\t\tfor (const event of eventsByPrimary.events) {\n\t\t\t\tconst baseEvent = this.buildBaseEventPayloads(event)\n\t\t\t\tconst stringRepresentation = JSON.stringify(baseEvent)\n\t\t\t\tif (existingEvents.has(stringRepresentation)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\texistingEvents.add(stringRepresentation)\n\t\t\t\tbaseEvents.push(baseEvent)\n\t\t\t}\n\n\t\t\tpayloads.push({\n\t\t\t\toperation: 'watch',\n\t\t\t\ttrigger: events[0].listener.trigger.name,\n\t\t\t\tentity: events[0].entity.name,\n\t\t\t\tid: eventsByPrimary.primary,\n\t\t\t\tselection: eventsByPrimary.events.find(it => it.selection)?.selection\n\t\t\t\t\t?? selections[eventsByPrimary.primary],\n\t\t\t\tevents: baseEvents,\n\t\t\t})\n\t\t}\n\t\treturn payloads\n\t}\n\n\tprivate buildBaseEventPayloads(event: FiredEvent, selection?: any): ActionsPayload.BaseEventPayload {\n\t\tswitch (event.cause.type) {\n\t\t\tcase 'AfterInsertEvent':\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'create',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tvalues: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'AfterUpdateEvent':\n\t\t\tcase 'BeforeUpdateEvent':\n\t\t\t\tconst afterEvent = event.cause.type === 'AfterUpdateEvent' ? event.cause : event.cause.afterEvent\n\t\t\t\tif (!afterEvent) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'update',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tvalues: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\told: Object.fromEntries(afterEvent.data.map(it => [it.fieldName, it.old])),\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'BeforeDeleteEvent':\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'delete',\n\t\t\t\t\tentity: event.cause.entity.name,\n\t\t\t\t\tid: event.cause.id,\n\t\t\t\t\tselection,\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tcase 'AfterJunctionUpdateEvent':\n\t\t\t\tif (event.listener.type !== 'junction') {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst [id, inverseId] = event.listener.context.type === 'owning'\n\t\t\t\t\t? [event.cause.owningId, event.cause.inverseId]\n\t\t\t\t\t: [event.cause.inverseId, event.cause.owningId]\n\t\t\t\treturn {\n\t\t\t\t\toperation: event.cause.operation === 'connect' ? 'junction_connect' : 'junction_disconnect',\n\t\t\t\t\tentity: event.listener.context.entity.name,\n\t\t\t\t\trelation: event.listener.context.relation.name,\n\t\t\t\t\tid,\n\t\t\t\t\tinverseId,\n\t\t\t\t\tpath: 'path' in event.listener ? event.listener.path : undefined,\n\t\t\t\t\tnodes: event.nodes,\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tassertNever(event.cause, it => it.type)\n\t\t}\n\t}\n\n\tprivate async fetchSelection(events: FiredEvent[]): Promise<Selections> {\n\t\tconst trigger = events[0].listener.trigger\n\t\tif (!trigger.selection) {\n\t\t\treturn {}\n\t\t}\n\n\t\tconst ids = Array.from(new Set(events.filter(it => it.listener.type !== 'delete').map(it => it.primary)))\n\t\tif (ids.length === 0) {\n\t\t\treturn {}\n\t\t}\n\t\tconst entity = events[0].entity\n\t\tconst input = this.convertSelectionNode(trigger.selection).withArg('filter', {\n\t\t\t[entity.primary]: { in: ids },\n\t\t})\n\t\treturn await this.mapper.selectAssoc(entity, input, [], entity.primary)\n\t}\n\n\tprivate convertSelectionNode(node: Actions.SelectionNode, nodeName = 'root', path: string[] = []): ObjectNode<Input.ListQueryInput> {\n\t\treturn new ObjectNode(\n\t\t\tnodeName,\n\t\t\tnodeName,\n\t\t\tnode.map(it => {\n\t\t\t\tconst [field, args, selection] = Array.isArray(it) ? it : [it, undefined, undefined]\n\t\t\t\tif (selection === undefined || selection.length === 0) {\n\t\t\t\t\treturn new FieldNode(field, field, {})\n\t\t\t\t}\n\t\t\t\treturn this.convertSelectionNode(selection, field, [...path, nodeName]).withArgs(args)\n\t\t\t}),\n\t\t\t{},\n\t\t\t{},\n\t\t\tpath,\n\t\t)\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPayloadManager.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadManager.ts"],"sourcesContent":["import { Actions, ActionsPayload, Input, Model } from '@contember/schema'\nimport { AnyListener } from './TriggerListenersStore'\nimport { EventCause } from './TriggerHandler'\nimport { TriggerPayloadBuilder } from './TriggerPayloadBuilder'\nimport { TriggerPayloadPersister } from './TriggerPayloadPersister'\n\nexport interface FiredEvent {\n\tlistener: AnyListener\n\tcause: EventCause\n\tentity: Model.Entity\n\tprimary: Input.PrimaryValue\n\tselection?: any\n\tnodes?: ActionsPayload.EntityEventPathNode[]\n}\n\nexport class TriggerPayloadManager {\n\tprivate eventsByTrigger: Record<string, FiredEvent[]> = {}\n\n\tconstructor(\n\t\tprivate readonly triggerPayloadBuilder: TriggerPayloadBuilder,\n\t\tprivate readonly triggerPayloadPersister: TriggerPayloadPersister,\n\t) {\n\t}\n\n\tpublic async add(firedEvent: FiredEvent) {\n\t\tconst event = await this.triggerPayloadBuilder.preprocessEvent(firedEvent)\n\t\tthis.eventsByTrigger[firedEvent.listener.trigger.name] ??= []\n\t\tthis.eventsByTrigger[firedEvent.listener.trigger.name].push(event)\n\t}\n\n\tpublic async persist(): Promise<void> {\n\t\tfor (const events of Object.values(this.eventsByTrigger)) {\n\t\t\tconst payloads = await this.triggerPayloadBuilder.build(events)\n\t\t\tconst trigger = events[0].listener.trigger\n\t\t\tawait this.triggerPayloadPersister.persist(trigger, payloads)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;;;AAeO,MAAM,sBAAsB;AAAA,EAGlC,YACkB,uBACA,yBAChB;AAFgB,SAAA,wBAAA;AACA,SAAA,0BAAA;AAJlB,kBAAA,MAAQ,mBAAgD,EAAC;AAAA,EAMzD;AAAA,EAEA,MAAa,IAAI,YAAwB;AAxB1C,QAAA,IAAA;AAyBE,UAAM,QAAQ,MAAM,KAAK,sBAAsB,gBAAgB,UAAU;AACzE,KAAA,KAAA,KAAK,iBAAL,KAAqB,WAAW,SAAS,QAAQ,IAAA,MAAjD,SAA2D,CAAA;AAC3D,SAAK,gBAAgB,WAAW,SAAS,QAAQ,IAAI,EAAE,KAAK,KAAK;AAAA,EAClE;AAAA,EAEA,MAAa,UAAyB;AACrC,eAAW,UAAU,OAAO,OAAO,KAAK,eAAe,GAAG;AACzD,YAAM,WAAW,MAAM,KAAK,sBAAsB,MAAM,MAAM;AAC9D,YAAM,UAAU,OAAO,CAAC,EAAE,SAAS;AACnC,YAAM,KAAK,wBAAwB,QAAQ,SAAS,QAAQ;AAAA,IAC7D;AAAA,EACD;AACD;;"}
1
+ {"version":3,"file":"TriggerPayloadManager.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadManager.ts"],"sourcesContent":["import { Actions, ActionsPayload, Input, Model } from '@contember/schema'\nimport { AnyListener } from './TriggerListenersStore.js'\nimport { EventCause } from './TriggerHandler.js'\nimport { TriggerPayloadBuilder } from './TriggerPayloadBuilder.js'\nimport { TriggerPayloadPersister } from './TriggerPayloadPersister.js'\n\nexport interface FiredEvent {\n\tlistener: AnyListener\n\tcause: EventCause\n\tentity: Model.Entity\n\tprimary: Input.PrimaryValue\n\tselection?: any\n\tnodes?: ActionsPayload.EntityEventPathNode[]\n}\n\nexport class TriggerPayloadManager {\n\tprivate eventsByTrigger: Record<string, FiredEvent[]> = {}\n\n\tconstructor(\n\t\tprivate readonly triggerPayloadBuilder: TriggerPayloadBuilder,\n\t\tprivate readonly triggerPayloadPersister: TriggerPayloadPersister,\n\t) {\n\t}\n\n\tpublic async add(firedEvent: FiredEvent) {\n\t\tconst event = await this.triggerPayloadBuilder.preprocessEvent(firedEvent)\n\t\tthis.eventsByTrigger[firedEvent.listener.trigger.name] ??= []\n\t\tthis.eventsByTrigger[firedEvent.listener.trigger.name].push(event)\n\t}\n\n\tpublic async persist(): Promise<void> {\n\t\tfor (const events of Object.values(this.eventsByTrigger)) {\n\t\t\tconst payloads = await this.triggerPayloadBuilder.build(events)\n\t\t\tconst trigger = events[0].listener.trigger\n\t\t\tawait this.triggerPayloadPersister.persist(trigger, payloads)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;;;AAeO,MAAM,sBAAsB;AAAA,EAGlC,YACkB,uBACA,yBAChB;AAFgB,SAAA,wBAAA;AACA,SAAA,0BAAA;AAJlB,kBAAA,MAAQ,mBAAgD,EAAC;AAAA,EAMzD;AAAA,EAEA,MAAa,IAAI,YAAwB;AAxB1C,QAAA,IAAA;AAyBE,UAAM,QAAQ,MAAM,KAAK,sBAAsB,gBAAgB,UAAU;AACzE,KAAA,KAAA,KAAK,iBAAL,KAAqB,WAAW,SAAS,QAAQ,IAAA,MAAjD,SAA2D,CAAA;AAC3D,SAAK,gBAAgB,WAAW,SAAS,QAAQ,IAAI,EAAE,KAAK,KAAK;AAAA,EAClE;AAAA,EAEA,MAAa,UAAyB;AACrC,eAAW,UAAU,OAAO,OAAO,KAAK,eAAe,GAAG;AACzD,YAAM,WAAW,MAAM,KAAK,sBAAsB,MAAM,MAAM;AAC9D,YAAM,UAAU,OAAO,CAAC,EAAE,SAAS;AACnC,YAAM,KAAK,wBAAwB,QAAQ,SAAS,QAAQ;AAAA,IAC7D;AAAA,EACD;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPayloadManager.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadManager.ts"],"sourcesContent":["import { Actions, ActionsPayload, Input, Model } from '@contember/schema'\nimport { AnyListener } from './TriggerListenersStore'\nimport { EventCause } from './TriggerHandler'\nimport { TriggerPayloadBuilder } from './TriggerPayloadBuilder'\nimport { TriggerPayloadPersister } from './TriggerPayloadPersister'\n\nexport interface FiredEvent {\n\tlistener: AnyListener\n\tcause: EventCause\n\tentity: Model.Entity\n\tprimary: Input.PrimaryValue\n\tselection?: any\n\tnodes?: ActionsPayload.EntityEventPathNode[]\n}\n\nexport class TriggerPayloadManager {\n\tprivate eventsByTrigger: Record<string, FiredEvent[]> = {}\n\n\tconstructor(\n\t\tprivate readonly triggerPayloadBuilder: TriggerPayloadBuilder,\n\t\tprivate readonly triggerPayloadPersister: TriggerPayloadPersister,\n\t) {\n\t}\n\n\tpublic async add(firedEvent: FiredEvent) {\n\t\tconst event = await this.triggerPayloadBuilder.preprocessEvent(firedEvent)\n\t\tthis.eventsByTrigger[firedEvent.listener.trigger.name] ??= []\n\t\tthis.eventsByTrigger[firedEvent.listener.trigger.name].push(event)\n\t}\n\n\tpublic async persist(): Promise<void> {\n\t\tfor (const events of Object.values(this.eventsByTrigger)) {\n\t\t\tconst payloads = await this.triggerPayloadBuilder.build(events)\n\t\t\tconst trigger = events[0].listener.trigger\n\t\t\tawait this.triggerPayloadPersister.persist(trigger, payloads)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;AAeO,MAAM,sBAAsB;AAAA,EAGlC,YACkB,uBACA,yBAChB;AAFgB,SAAA,wBAAA;AACA,SAAA,0BAAA;AAJlB,kBAAA,MAAQ,mBAAgD,EAAC;AAAA,EAMzD;AAAA,EAEA,MAAa,IAAI,YAAwB;AAxB1C,QAAA,IAAA;AAyBE,UAAM,QAAQ,MAAM,KAAK,sBAAsB,gBAAgB,UAAU;AACzE,KAAA,KAAA,KAAK,iBAAL,KAAqB,WAAW,SAAS,QAAQ,IAAA,MAAjD,SAA2D,CAAA;AAC3D,SAAK,gBAAgB,WAAW,SAAS,QAAQ,IAAI,EAAE,KAAK,KAAK;AAAA,EAClE;AAAA,EAEA,MAAa,UAAyB;AACrC,eAAW,UAAU,OAAO,OAAO,KAAK,eAAe,GAAG;AACzD,YAAM,WAAW,MAAM,KAAK,sBAAsB,MAAM,MAAM;AAC9D,YAAM,UAAU,OAAO,CAAC,EAAE,SAAS;AACnC,YAAM,KAAK,wBAAwB,QAAQ,SAAS,QAAQ;AAAA,IAC7D;AAAA,EACD;AACD;"}
1
+ {"version":3,"file":"TriggerPayloadManager.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadManager.ts"],"sourcesContent":["import { Actions, ActionsPayload, Input, Model } from '@contember/schema'\nimport { AnyListener } from './TriggerListenersStore.js'\nimport { EventCause } from './TriggerHandler.js'\nimport { TriggerPayloadBuilder } from './TriggerPayloadBuilder.js'\nimport { TriggerPayloadPersister } from './TriggerPayloadPersister.js'\n\nexport interface FiredEvent {\n\tlistener: AnyListener\n\tcause: EventCause\n\tentity: Model.Entity\n\tprimary: Input.PrimaryValue\n\tselection?: any\n\tnodes?: ActionsPayload.EntityEventPathNode[]\n}\n\nexport class TriggerPayloadManager {\n\tprivate eventsByTrigger: Record<string, FiredEvent[]> = {}\n\n\tconstructor(\n\t\tprivate readonly triggerPayloadBuilder: TriggerPayloadBuilder,\n\t\tprivate readonly triggerPayloadPersister: TriggerPayloadPersister,\n\t) {\n\t}\n\n\tpublic async add(firedEvent: FiredEvent) {\n\t\tconst event = await this.triggerPayloadBuilder.preprocessEvent(firedEvent)\n\t\tthis.eventsByTrigger[firedEvent.listener.trigger.name] ??= []\n\t\tthis.eventsByTrigger[firedEvent.listener.trigger.name].push(event)\n\t}\n\n\tpublic async persist(): Promise<void> {\n\t\tfor (const events of Object.values(this.eventsByTrigger)) {\n\t\t\tconst payloads = await this.triggerPayloadBuilder.build(events)\n\t\t\tconst trigger = events[0].listener.trigger\n\t\t\tawait this.triggerPayloadPersister.persist(trigger, payloads)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;AAeO,MAAM,sBAAsB;AAAA,EAGlC,YACkB,uBACA,yBAChB;AAFgB,SAAA,wBAAA;AACA,SAAA,0BAAA;AAJlB,kBAAA,MAAQ,mBAAgD,EAAC;AAAA,EAMzD;AAAA,EAEA,MAAa,IAAI,YAAwB;AAxB1C,QAAA,IAAA;AAyBE,UAAM,QAAQ,MAAM,KAAK,sBAAsB,gBAAgB,UAAU;AACzE,KAAA,KAAA,KAAK,iBAAL,KAAqB,WAAW,SAAS,QAAQ,IAAA,MAAjD,SAA2D,CAAA;AAC3D,SAAK,gBAAgB,WAAW,SAAS,QAAQ,IAAI,EAAE,KAAK,KAAK;AAAA,EAClE;AAAA,EAEA,MAAa,UAAyB;AACrC,eAAW,UAAU,OAAO,OAAO,KAAK,eAAe,GAAG;AACzD,YAAM,WAAW,MAAM,KAAK,sBAAsB,MAAM,MAAM;AAC9D,YAAM,UAAU,OAAO,CAAC,EAAE,SAAS;AACnC,YAAM,KAAK,wBAAwB,QAAQ,SAAS,QAAQ;AAAA,IAC7D;AAAA,EACD;AACD;"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const Database = require("@contember/database");
4
4
  const notifyChannel = require("../utils/notifyChannel.cjs");
5
5
  class TriggerPayloadPersister {
6
- constructor(mapper, client, providers, projectSlug, stageId, schemaId, identityId, userInfo) {
6
+ constructor(mapper, client, providers, projectSlug, stageId, schemaId, identityId, userInfo, triggeredActionsCollector) {
7
7
  this.mapper = mapper;
8
8
  this.client = client;
9
9
  this.providers = providers;
@@ -12,33 +12,45 @@ class TriggerPayloadPersister {
12
12
  this.schemaId = schemaId;
13
13
  this.identityId = identityId;
14
14
  this.userInfo = userInfo;
15
+ this.triggeredActionsCollector = triggeredActionsCollector;
15
16
  }
16
17
  async persist(trigger, payloads) {
17
18
  const chunkSize = 100;
18
19
  if (!this.schemaId) {
19
20
  throw new Error("Schema id is not set");
20
21
  }
22
+ const collector = this.triggeredActionsCollector;
21
23
  for (let i = 0; i < payloads.length; i += chunkSize) {
22
24
  const chunk = payloads.slice(i, i + chunkSize);
23
- await Database.InsertBuilder.create().into("actions_event").values(chunk.map((it) => ({
24
- id: this.providers.uuid(),
25
- transaction_id: this.mapper.transactionId,
26
- created_at: "now",
27
- visible_at: "now",
28
- num_retries: 0,
29
- state: "created",
30
- stage_id: this.stageId,
31
- schema_id: this.schemaId,
32
- target: trigger.target,
33
- trigger: trigger.name,
34
- priority: trigger.priority ?? 0,
35
- payload: it,
36
- resolved_at: null,
37
- last_state_change: "now",
38
- identity_id: this.identityId,
39
- ip_address: this.userInfo.ipAddress,
40
- user_agent: this.userInfo.userAgent
41
- }))).execute(this.client);
25
+ const collected = collector ? [] : void 0;
26
+ const rows = chunk.map((it) => {
27
+ const id = this.providers.uuid();
28
+ const transactionId = this.mapper.transactionId;
29
+ collected?.push({ id, trigger: trigger.name, target: trigger.target, transactionId });
30
+ return {
31
+ id,
32
+ transaction_id: transactionId,
33
+ created_at: "now",
34
+ visible_at: "now",
35
+ num_retries: 0,
36
+ state: "created",
37
+ stage_id: this.stageId,
38
+ schema_id: this.schemaId,
39
+ target: trigger.target,
40
+ trigger: trigger.name,
41
+ priority: trigger.priority ?? 0,
42
+ payload: it,
43
+ resolved_at: null,
44
+ last_state_change: "now",
45
+ identity_id: this.identityId,
46
+ ip_address: this.userInfo.ipAddress,
47
+ user_agent: this.userInfo.userAgent
48
+ };
49
+ });
50
+ await Database.InsertBuilder.create().into("actions_event").values(rows).execute(this.client);
51
+ if (collected && collected.length > 0) {
52
+ collector.add(collected);
53
+ }
42
54
  }
43
55
  await notifyChannel.notify(this.client, this.projectSlug);
44
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPayloadPersister.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadPersister.ts"],"sourcesContent":["import { Client, InsertBuilder } from '@contember/database'\nimport { Mapper } from '@contember/engine-content-api'\nimport { Actions, ActionsPayload } from '@contember/schema'\nimport { EventRow } from '../model/types'\nimport { notify } from '../utils/notifyChannel'\n\ntype EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {\n\tcreated_at: string | Date\n\tvisible_at: string | Date\n\tlast_state_change: string | Date\n}\n\nexport class TriggerPayloadPersister {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly client: Client,\n\t\tprivate readonly providers: { uuid: () => string },\n\t\tprivate readonly projectSlug: string,\n\t\tprivate readonly stageId: string,\n\t\tprivate readonly schemaId: number | undefined,\n\t\tprivate readonly identityId: string,\n\t\tprivate readonly userInfo: { ipAddress: string | null; userAgent: string | null },\n\t) {\n\t}\n\n\tpublic async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {\n\t\tconst chunkSize = 100\n\t\tif (!this.schemaId) {\n\t\t\tthrow new Error('Schema id is not set')\n\t\t}\n\t\tfor (let i = 0; i < payloads.length; i += chunkSize) {\n\t\t\tconst chunk = payloads.slice(i, i + chunkSize)\n\t\t\tawait InsertBuilder.create()\n\t\t\t\t.into('actions_event')\n\t\t\t\t.values(chunk.map((it): EventRowToInsert => ({\n\t\t\t\t\tid: this.providers.uuid(),\n\t\t\t\t\ttransaction_id: this.mapper.transactionId,\n\t\t\t\t\tcreated_at: 'now',\n\t\t\t\t\tvisible_at: 'now',\n\t\t\t\t\tnum_retries: 0,\n\t\t\t\t\tstate: 'created',\n\t\t\t\t\tstage_id: this.stageId,\n\t\t\t\t\tschema_id: this.schemaId!,\n\t\t\t\t\ttarget: trigger.target,\n\t\t\t\t\ttrigger: trigger.name,\n\t\t\t\t\tpriority: trigger.priority ?? 0,\n\t\t\t\t\tpayload: it,\n\t\t\t\t\tresolved_at: null,\n\t\t\t\t\tlast_state_change: 'now',\n\t\t\t\t\tidentity_id: this.identityId,\n\t\t\t\t\tip_address: this.userInfo.ipAddress,\n\t\t\t\t\tuser_agent: this.userInfo.userAgent,\n\t\t\t\t})))\n\t\t\t\t.execute(this.client)\n\t\t}\n\n\t\tawait notify(this.client, this.projectSlug)\n\t}\n}\n"],"names":["InsertBuilder","notify"],"mappings":";;;;AAYO,MAAM,wBAAwB;AAAA,EACpC,YACkB,QACA,QACA,WACA,aACA,SACA,UACA,YACA,UAChB;AARgB,SAAA,SAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AACA,SAAA,cAAA;AACA,SAAA,UAAA;AACA,SAAA,WAAA;AACA,SAAA,aAAA;AACA,SAAA,WAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,SAA6B,UAA2D;AAC5G,UAAM,YAAY;AAClB,QAAI,CAAC,KAAK,UAAU;AACnB,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACvC;AACA,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,WAAW;AACpD,YAAM,QAAQ,SAAS,MAAM,GAAG,IAAI,SAAS;AAC7C,YAAMA,SAAAA,cAAc,OAAA,EAClB,KAAK,eAAe,EACpB,OAAO,MAAM,IAAI,CAAC,QAA0B;AAAA,QAC5C,IAAI,KAAK,UAAU,KAAA;AAAA,QACnB,gBAAgB,KAAK,OAAO;AAAA,QAC5B,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ;AAAA,QACjB,UAAU,QAAQ,YAAY;AAAA,QAC9B,SAAS;AAAA,QACT,aAAa;AAAA,QACb,mBAAmB;AAAA,QACnB,aAAa,KAAK;AAAA,QAClB,YAAY,KAAK,SAAS;AAAA,QAC1B,YAAY,KAAK,SAAS;AAAA,MAAA,EACzB,CAAC,EACF,QAAQ,KAAK,MAAM;AAAA,IACtB;AAEA,UAAMC,cAAAA,OAAO,KAAK,QAAQ,KAAK,WAAW;AAAA,EAC3C;AACD;;"}
1
+ {"version":3,"file":"TriggerPayloadPersister.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadPersister.ts"],"sourcesContent":["import { Client, InsertBuilder } from '@contember/database'\nimport { Mapper, TriggeredActionEvent, TriggeredActionsCollector } from '@contember/engine-content-api'\nimport { Actions, ActionsPayload } from '@contember/schema'\nimport { EventRow } from '../model/types.js'\nimport { notify } from '../utils/notifyChannel.js'\n\ntype EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {\n\tcreated_at: string | Date\n\tvisible_at: string | Date\n\tlast_state_change: string | Date\n}\n\nexport class TriggerPayloadPersister {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly client: Client,\n\t\tprivate readonly providers: { uuid: () => string },\n\t\tprivate readonly projectSlug: string,\n\t\tprivate readonly stageId: string,\n\t\tprivate readonly schemaId: number | undefined,\n\t\tprivate readonly identityId: string,\n\t\tprivate readonly userInfo: { ipAddress: string | null; userAgent: string | null },\n\t\tprivate readonly triggeredActionsCollector: TriggeredActionsCollector | undefined,\n\t) {\n\t}\n\n\tpublic async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {\n\t\tconst chunkSize = 100\n\t\tif (!this.schemaId) {\n\t\t\tthrow new Error('Schema id is not set')\n\t\t}\n\t\tconst collector = this.triggeredActionsCollector\n\t\tfor (let i = 0; i < payloads.length; i += chunkSize) {\n\t\t\tconst chunk = payloads.slice(i, i + chunkSize)\n\t\t\tconst collected: TriggeredActionEvent[] | undefined = collector ? [] : undefined\n\t\t\tconst rows = chunk.map((it): EventRowToInsert => {\n\t\t\t\tconst id = this.providers.uuid()\n\t\t\t\tconst transactionId = this.mapper.transactionId\n\t\t\t\tcollected?.push({ id, trigger: trigger.name, target: trigger.target, transactionId })\n\t\t\t\treturn {\n\t\t\t\t\tid,\n\t\t\t\t\ttransaction_id: transactionId,\n\t\t\t\t\tcreated_at: 'now',\n\t\t\t\t\tvisible_at: 'now',\n\t\t\t\t\tnum_retries: 0,\n\t\t\t\t\tstate: 'created',\n\t\t\t\t\tstage_id: this.stageId,\n\t\t\t\t\tschema_id: this.schemaId!,\n\t\t\t\t\ttarget: trigger.target,\n\t\t\t\t\ttrigger: trigger.name,\n\t\t\t\t\tpriority: trigger.priority ?? 0,\n\t\t\t\t\tpayload: it,\n\t\t\t\t\tresolved_at: null,\n\t\t\t\t\tlast_state_change: 'now',\n\t\t\t\t\tidentity_id: this.identityId,\n\t\t\t\t\tip_address: this.userInfo.ipAddress,\n\t\t\t\t\tuser_agent: this.userInfo.userAgent,\n\t\t\t\t}\n\t\t\t})\n\t\t\tawait InsertBuilder.create()\n\t\t\t\t.into('actions_event')\n\t\t\t\t.values(rows)\n\t\t\t\t.execute(this.client)\n\n\t\t\tif (collected && collected.length > 0) {\n\t\t\t\tcollector!.add(collected)\n\t\t\t}\n\t\t}\n\n\t\tawait notify(this.client, this.projectSlug)\n\t}\n}\n"],"names":["InsertBuilder","notify"],"mappings":";;;;AAYO,MAAM,wBAAwB;AAAA,EACpC,YACkB,QACA,QACA,WACA,aACA,SACA,UACA,YACA,UACA,2BAChB;AATgB,SAAA,SAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AACA,SAAA,cAAA;AACA,SAAA,UAAA;AACA,SAAA,WAAA;AACA,SAAA,aAAA;AACA,SAAA,WAAA;AACA,SAAA,4BAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,SAA6B,UAA2D;AAC5G,UAAM,YAAY;AAClB,QAAI,CAAC,KAAK,UAAU;AACnB,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACvC;AACA,UAAM,YAAY,KAAK;AACvB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,WAAW;AACpD,YAAM,QAAQ,SAAS,MAAM,GAAG,IAAI,SAAS;AAC7C,YAAM,YAAgD,YAAY,CAAA,IAAK;AACvE,YAAM,OAAO,MAAM,IAAI,CAAC,OAAyB;AAChD,cAAM,KAAK,KAAK,UAAU,KAAA;AAC1B,cAAM,gBAAgB,KAAK,OAAO;AAClC,mBAAW,KAAK,EAAE,IAAI,SAAS,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,cAAA,CAAe;AACpF,eAAO;AAAA,UACN;AAAA,UACA,gBAAgB;AAAA,UAChB,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,OAAO;AAAA,UACP,UAAU,KAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,QAAQ,QAAQ;AAAA,UAChB,SAAS,QAAQ;AAAA,UACjB,UAAU,QAAQ,YAAY;AAAA,UAC9B,SAAS;AAAA,UACT,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,aAAa,KAAK;AAAA,UAClB,YAAY,KAAK,SAAS;AAAA,UAC1B,YAAY,KAAK,SAAS;AAAA,QAAA;AAAA,MAE5B,CAAC;AACD,YAAMA,uBAAc,SAClB,KAAK,eAAe,EACpB,OAAO,IAAI,EACX,QAAQ,KAAK,MAAM;AAErB,UAAI,aAAa,UAAU,SAAS,GAAG;AACtC,kBAAW,IAAI,SAAS;AAAA,MACzB;AAAA,IACD;AAEA,UAAMC,cAAAA,OAAO,KAAK,QAAQ,KAAK,WAAW;AAAA,EAC3C;AACD;;"}
@@ -1,7 +1,7 @@
1
1
  import { InsertBuilder as InsertBuilder$1 } from "@contember/database";
2
2
  import { notify } from "../utils/notifyChannel.js";
3
3
  class TriggerPayloadPersister {
4
- constructor(mapper, client, providers, projectSlug, stageId, schemaId, identityId, userInfo) {
4
+ constructor(mapper, client, providers, projectSlug, stageId, schemaId, identityId, userInfo, triggeredActionsCollector) {
5
5
  this.mapper = mapper;
6
6
  this.client = client;
7
7
  this.providers = providers;
@@ -10,33 +10,45 @@ class TriggerPayloadPersister {
10
10
  this.schemaId = schemaId;
11
11
  this.identityId = identityId;
12
12
  this.userInfo = userInfo;
13
+ this.triggeredActionsCollector = triggeredActionsCollector;
13
14
  }
14
15
  async persist(trigger, payloads) {
15
16
  const chunkSize = 100;
16
17
  if (!this.schemaId) {
17
18
  throw new Error("Schema id is not set");
18
19
  }
20
+ const collector = this.triggeredActionsCollector;
19
21
  for (let i = 0; i < payloads.length; i += chunkSize) {
20
22
  const chunk = payloads.slice(i, i + chunkSize);
21
- await InsertBuilder$1.create().into("actions_event").values(chunk.map((it) => ({
22
- id: this.providers.uuid(),
23
- transaction_id: this.mapper.transactionId,
24
- created_at: "now",
25
- visible_at: "now",
26
- num_retries: 0,
27
- state: "created",
28
- stage_id: this.stageId,
29
- schema_id: this.schemaId,
30
- target: trigger.target,
31
- trigger: trigger.name,
32
- priority: trigger.priority ?? 0,
33
- payload: it,
34
- resolved_at: null,
35
- last_state_change: "now",
36
- identity_id: this.identityId,
37
- ip_address: this.userInfo.ipAddress,
38
- user_agent: this.userInfo.userAgent
39
- }))).execute(this.client);
23
+ const collected = collector ? [] : void 0;
24
+ const rows = chunk.map((it) => {
25
+ const id = this.providers.uuid();
26
+ const transactionId = this.mapper.transactionId;
27
+ collected?.push({ id, trigger: trigger.name, target: trigger.target, transactionId });
28
+ return {
29
+ id,
30
+ transaction_id: transactionId,
31
+ created_at: "now",
32
+ visible_at: "now",
33
+ num_retries: 0,
34
+ state: "created",
35
+ stage_id: this.stageId,
36
+ schema_id: this.schemaId,
37
+ target: trigger.target,
38
+ trigger: trigger.name,
39
+ priority: trigger.priority ?? 0,
40
+ payload: it,
41
+ resolved_at: null,
42
+ last_state_change: "now",
43
+ identity_id: this.identityId,
44
+ ip_address: this.userInfo.ipAddress,
45
+ user_agent: this.userInfo.userAgent
46
+ };
47
+ });
48
+ await InsertBuilder$1.create().into("actions_event").values(rows).execute(this.client);
49
+ if (collected && collected.length > 0) {
50
+ collector.add(collected);
51
+ }
40
52
  }
41
53
  await notify(this.client, this.projectSlug);
42
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPayloadPersister.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadPersister.ts"],"sourcesContent":["import { Client, InsertBuilder } from '@contember/database'\nimport { Mapper } from '@contember/engine-content-api'\nimport { Actions, ActionsPayload } from '@contember/schema'\nimport { EventRow } from '../model/types'\nimport { notify } from '../utils/notifyChannel'\n\ntype EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {\n\tcreated_at: string | Date\n\tvisible_at: string | Date\n\tlast_state_change: string | Date\n}\n\nexport class TriggerPayloadPersister {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly client: Client,\n\t\tprivate readonly providers: { uuid: () => string },\n\t\tprivate readonly projectSlug: string,\n\t\tprivate readonly stageId: string,\n\t\tprivate readonly schemaId: number | undefined,\n\t\tprivate readonly identityId: string,\n\t\tprivate readonly userInfo: { ipAddress: string | null; userAgent: string | null },\n\t) {\n\t}\n\n\tpublic async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {\n\t\tconst chunkSize = 100\n\t\tif (!this.schemaId) {\n\t\t\tthrow new Error('Schema id is not set')\n\t\t}\n\t\tfor (let i = 0; i < payloads.length; i += chunkSize) {\n\t\t\tconst chunk = payloads.slice(i, i + chunkSize)\n\t\t\tawait InsertBuilder.create()\n\t\t\t\t.into('actions_event')\n\t\t\t\t.values(chunk.map((it): EventRowToInsert => ({\n\t\t\t\t\tid: this.providers.uuid(),\n\t\t\t\t\ttransaction_id: this.mapper.transactionId,\n\t\t\t\t\tcreated_at: 'now',\n\t\t\t\t\tvisible_at: 'now',\n\t\t\t\t\tnum_retries: 0,\n\t\t\t\t\tstate: 'created',\n\t\t\t\t\tstage_id: this.stageId,\n\t\t\t\t\tschema_id: this.schemaId!,\n\t\t\t\t\ttarget: trigger.target,\n\t\t\t\t\ttrigger: trigger.name,\n\t\t\t\t\tpriority: trigger.priority ?? 0,\n\t\t\t\t\tpayload: it,\n\t\t\t\t\tresolved_at: null,\n\t\t\t\t\tlast_state_change: 'now',\n\t\t\t\t\tidentity_id: this.identityId,\n\t\t\t\t\tip_address: this.userInfo.ipAddress,\n\t\t\t\t\tuser_agent: this.userInfo.userAgent,\n\t\t\t\t})))\n\t\t\t\t.execute(this.client)\n\t\t}\n\n\t\tawait notify(this.client, this.projectSlug)\n\t}\n}\n"],"names":["InsertBuilder"],"mappings":";;AAYO,MAAM,wBAAwB;AAAA,EACpC,YACkB,QACA,QACA,WACA,aACA,SACA,UACA,YACA,UAChB;AARgB,SAAA,SAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AACA,SAAA,cAAA;AACA,SAAA,UAAA;AACA,SAAA,WAAA;AACA,SAAA,aAAA;AACA,SAAA,WAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,SAA6B,UAA2D;AAC5G,UAAM,YAAY;AAClB,QAAI,CAAC,KAAK,UAAU;AACnB,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACvC;AACA,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,WAAW;AACpD,YAAM,QAAQ,SAAS,MAAM,GAAG,IAAI,SAAS;AAC7C,YAAMA,gBAAc,OAAA,EAClB,KAAK,eAAe,EACpB,OAAO,MAAM,IAAI,CAAC,QAA0B;AAAA,QAC5C,IAAI,KAAK,UAAU,KAAA;AAAA,QACnB,gBAAgB,KAAK,OAAO;AAAA,QAC5B,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ;AAAA,QACjB,UAAU,QAAQ,YAAY;AAAA,QAC9B,SAAS;AAAA,QACT,aAAa;AAAA,QACb,mBAAmB;AAAA,QACnB,aAAa,KAAK;AAAA,QAClB,YAAY,KAAK,SAAS;AAAA,QAC1B,YAAY,KAAK,SAAS;AAAA,MAAA,EACzB,CAAC,EACF,QAAQ,KAAK,MAAM;AAAA,IACtB;AAEA,UAAM,OAAO,KAAK,QAAQ,KAAK,WAAW;AAAA,EAC3C;AACD;"}
1
+ {"version":3,"file":"TriggerPayloadPersister.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadPersister.ts"],"sourcesContent":["import { Client, InsertBuilder } from '@contember/database'\nimport { Mapper, TriggeredActionEvent, TriggeredActionsCollector } from '@contember/engine-content-api'\nimport { Actions, ActionsPayload } from '@contember/schema'\nimport { EventRow } from '../model/types.js'\nimport { notify } from '../utils/notifyChannel.js'\n\ntype EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {\n\tcreated_at: string | Date\n\tvisible_at: string | Date\n\tlast_state_change: string | Date\n}\n\nexport class TriggerPayloadPersister {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly client: Client,\n\t\tprivate readonly providers: { uuid: () => string },\n\t\tprivate readonly projectSlug: string,\n\t\tprivate readonly stageId: string,\n\t\tprivate readonly schemaId: number | undefined,\n\t\tprivate readonly identityId: string,\n\t\tprivate readonly userInfo: { ipAddress: string | null; userAgent: string | null },\n\t\tprivate readonly triggeredActionsCollector: TriggeredActionsCollector | undefined,\n\t) {\n\t}\n\n\tpublic async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {\n\t\tconst chunkSize = 100\n\t\tif (!this.schemaId) {\n\t\t\tthrow new Error('Schema id is not set')\n\t\t}\n\t\tconst collector = this.triggeredActionsCollector\n\t\tfor (let i = 0; i < payloads.length; i += chunkSize) {\n\t\t\tconst chunk = payloads.slice(i, i + chunkSize)\n\t\t\tconst collected: TriggeredActionEvent[] | undefined = collector ? [] : undefined\n\t\t\tconst rows = chunk.map((it): EventRowToInsert => {\n\t\t\t\tconst id = this.providers.uuid()\n\t\t\t\tconst transactionId = this.mapper.transactionId\n\t\t\t\tcollected?.push({ id, trigger: trigger.name, target: trigger.target, transactionId })\n\t\t\t\treturn {\n\t\t\t\t\tid,\n\t\t\t\t\ttransaction_id: transactionId,\n\t\t\t\t\tcreated_at: 'now',\n\t\t\t\t\tvisible_at: 'now',\n\t\t\t\t\tnum_retries: 0,\n\t\t\t\t\tstate: 'created',\n\t\t\t\t\tstage_id: this.stageId,\n\t\t\t\t\tschema_id: this.schemaId!,\n\t\t\t\t\ttarget: trigger.target,\n\t\t\t\t\ttrigger: trigger.name,\n\t\t\t\t\tpriority: trigger.priority ?? 0,\n\t\t\t\t\tpayload: it,\n\t\t\t\t\tresolved_at: null,\n\t\t\t\t\tlast_state_change: 'now',\n\t\t\t\t\tidentity_id: this.identityId,\n\t\t\t\t\tip_address: this.userInfo.ipAddress,\n\t\t\t\t\tuser_agent: this.userInfo.userAgent,\n\t\t\t\t}\n\t\t\t})\n\t\t\tawait InsertBuilder.create()\n\t\t\t\t.into('actions_event')\n\t\t\t\t.values(rows)\n\t\t\t\t.execute(this.client)\n\n\t\t\tif (collected && collected.length > 0) {\n\t\t\t\tcollector!.add(collected)\n\t\t\t}\n\t\t}\n\n\t\tawait notify(this.client, this.projectSlug)\n\t}\n}\n"],"names":["InsertBuilder"],"mappings":";;AAYO,MAAM,wBAAwB;AAAA,EACpC,YACkB,QACA,QACA,WACA,aACA,SACA,UACA,YACA,UACA,2BAChB;AATgB,SAAA,SAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AACA,SAAA,cAAA;AACA,SAAA,UAAA;AACA,SAAA,WAAA;AACA,SAAA,aAAA;AACA,SAAA,WAAA;AACA,SAAA,4BAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,SAA6B,UAA2D;AAC5G,UAAM,YAAY;AAClB,QAAI,CAAC,KAAK,UAAU;AACnB,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACvC;AACA,UAAM,YAAY,KAAK;AACvB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,WAAW;AACpD,YAAM,QAAQ,SAAS,MAAM,GAAG,IAAI,SAAS;AAC7C,YAAM,YAAgD,YAAY,CAAA,IAAK;AACvE,YAAM,OAAO,MAAM,IAAI,CAAC,OAAyB;AAChD,cAAM,KAAK,KAAK,UAAU,KAAA;AAC1B,cAAM,gBAAgB,KAAK,OAAO;AAClC,mBAAW,KAAK,EAAE,IAAI,SAAS,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,cAAA,CAAe;AACpF,eAAO;AAAA,UACN;AAAA,UACA,gBAAgB;AAAA,UAChB,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,OAAO;AAAA,UACP,UAAU,KAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,QAAQ,QAAQ;AAAA,UAChB,SAAS,QAAQ;AAAA,UACjB,UAAU,QAAQ,YAAY;AAAA,UAC9B,SAAS;AAAA,UACT,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,aAAa,KAAK;AAAA,UAClB,YAAY,KAAK,SAAS;AAAA,UAC1B,YAAY,KAAK,SAAS;AAAA,QAAA;AAAA,MAE5B,CAAC;AACD,YAAMA,gBAAc,SAClB,KAAK,eAAe,EACpB,OAAO,IAAI,EACX,QAAQ,KAAK,MAAM;AAErB,UAAI,aAAa,UAAU,SAAS,GAAG;AACtC,kBAAW,IAAI,SAAS;AAAA,MACzB;AAAA,IACD;AAEA,UAAM,OAAO,KAAK,QAAQ,KAAK,WAAW;AAAA,EAC3C;AACD;"}
@@ -18,6 +18,7 @@ const WebhookTargetHandler = require("./src/dispatch/WebhookTargetHandler.cjs");
18
18
  const ActionsContextResolver = require("./src/graphql/http/ActionsContextResolver.cjs");
19
19
  const ActionsWebsocketControllerFactory = require("./src/graphql/http/ActionsWebsocketControllerFactory.cjs");
20
20
  const DispatchWorkerSupervisor = require("./src/dispatch/DispatchWorkerSupervisor.cjs");
21
+ const LazyDispatchWorker = require("./src/dispatch/LazyDispatchWorker.cjs");
21
22
  const ProjectDispatcher = require("./src/dispatch/ProjectDispatcher.cjs");
22
23
  const VariablesQueryResolver = require("./src/graphql/resolvers/query/VariablesQueryResolver.cjs");
23
24
  const VariablesManager = require("./src/model/VariablesManager.cjs");
@@ -98,11 +99,16 @@ class ActionsPlugin {
98
99
  it.addRoute("actions", "/actions/:projectSlug", actionsMiddlewareFactory.create());
99
100
  it.addWebsocketRoute("actions", "/actions/_worker", actionsWebsocketMiddlewareFactory.create());
100
101
  }
101
- ).setupService("applicationWorkers", (it, { actions_dispatchWorkerSupervisorFactory, projectGroupContainer, serverConfig }) => {
102
- if (!serverConfig.projectGroup) {
103
- it.registerWorker(this.name, actions_dispatchWorkerSupervisorFactory.create(projectGroupContainer));
102
+ ).setupService(
103
+ "applicationWorkers",
104
+ (it, { actions_dispatchWorkerSupervisorFactory, projectGroupContainer, projectGroupContainerResolver, serverConfig }) => {
105
+ if (!serverConfig.projectGroup) {
106
+ it.registerWorker(this.name, actions_dispatchWorkerSupervisorFactory.create(projectGroupContainer));
107
+ } else {
108
+ it.registerWorker(this.name, new LazyDispatchWorker.LazyDispatchWorker(projectGroupContainerResolver, actions_dispatchWorkerSupervisorFactory));
109
+ }
104
110
  }
105
- });
111
+ );
106
112
  };
107
113
  return hook;
108
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../packages/engine-actions/src/index.ts"],"sourcesContent":["import { Plugin } from '@contember/engine-plugins'\nimport { migrationsGroup } from './migrations'\nimport { ActionsExecutionContainerHookFactory } from './ActionsExecutionContainerHookFactory'\nimport { ListenerStoreProvider } from './ListenerStoreProvider'\nimport { MigrationGroup } from '@contember/database-migrations'\nimport { MasterContainerBuilder, MasterContainerHook } from '@contember/engine-http'\nimport { ActionsApiMiddlewareFactory } from './graphql/http/ActionsApiMiddlewareFactory'\nimport { ActionsGraphQLHandlerFactory } from './graphql/http/ActionsGraphQLHandlerFactory'\nimport { ResolversFactory } from './graphql/resolvers/ResolversFactory'\nimport {\n\tEventsQueryResolver,\n\tProcessBatchMutationResolver,\n\tRetryEventMutationResolver,\n\tSetVariablesMutationResolver,\n\tStopEventMutationResolver,\n} from './graphql/resolvers'\nimport { EventDispatcher } from './dispatch/EventDispatcher'\nimport { EventsRepository } from './dispatch/EventsRepository'\nimport { TargetHandlerResolver } from './dispatch/TargetHandlerResolver'\nimport { WebhookTargetHandler } from './dispatch/WebhookTargetHandler'\nimport { ActionsContextResolver } from './graphql/http/ActionsContextResolver'\nimport { ActionsWebsocketControllerFactory } from './graphql/http/ActionsWebsocketControllerFactory'\nimport { DispatchWorkerSupervisorFactory } from './dispatch/DispatchWorkerSupervisor'\nimport { ProjectDispatcherFactory } from './dispatch/ProjectDispatcher'\nimport { VariablesQueryResolver } from './graphql/resolvers/query/VariablesQueryResolver'\nimport { VariablesManager } from './model/VariablesManager'\nimport { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { ActionsPermissionsFactory } from './authorization'\nimport { WebhookFetcherNative } from './dispatch/WebhookFetcher'\n\nexport { TriggerHandler, TriggerIndirectChangesFetcher, TriggerListenersFactory, TriggerListenersStore, TriggerPayloadManager } from './triggers'\nexport { ActionsExecutionContainerHookFactory } from './ActionsExecutionContainerHookFactory'\nexport { ListenerStoreProvider } from './ListenerStoreProvider'\n\nexport default class ActionsPlugin implements Plugin {\n\tname = 'contember/actions'\n\n\tgetSystemMigrations(): MigrationGroup {\n\t\treturn migrationsGroup\n\t}\n\n\tgetExecutionContainerHook() {\n\t\tconst hookFactory = new ActionsExecutionContainerHookFactory(new ListenerStoreProvider())\n\t\treturn hookFactory.create()\n\t}\n\n\tgetMasterContainerHook() {\n\t\tconst hook: MasterContainerHook = (builder: MasterContainerBuilder) => {\n\t\t\treturn builder\n\t\t\t\t.addService('actions_variableManager', () => {\n\t\t\t\t\treturn new VariablesManager()\n\t\t\t\t})\n\t\t\t\t.addService('actions_eventRepository', () => {\n\t\t\t\t\treturn new EventsRepository()\n\t\t\t\t})\n\t\t\t\t.addService('actions_eventDispatcher', ({ actions_eventRepository, actions_variableManager }) => {\n\t\t\t\t\tconst webhookTargetHandler = new WebhookTargetHandler(new WebhookFetcherNative())\n\t\t\t\t\tconst targetHandlerResolver = new TargetHandlerResolver(webhookTargetHandler)\n\t\t\t\t\treturn new EventDispatcher(actions_eventRepository, actions_variableManager, targetHandlerResolver)\n\t\t\t\t})\n\t\t\t\t.addService('actions_dispatchWorkerSupervisorFactory', ({ actions_eventDispatcher }) => {\n\t\t\t\t\tconst projectDispatcherFactory = new ProjectDispatcherFactory(actions_eventDispatcher)\n\t\t\t\t\treturn new DispatchWorkerSupervisorFactory(projectDispatcherFactory)\n\t\t\t\t})\n\t\t\t\t.addService('actions_authorizator', () => {\n\t\t\t\t\treturn new Authorizator.Default(new AccessEvaluator.PermissionEvaluator(new ActionsPermissionsFactory().create()))\n\t\t\t\t})\n\t\t\t\t.setupService(\n\t\t\t\t\t'application',\n\t\t\t\t\t(\n\t\t\t\t\t\tit,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprojectContextResolver,\n\t\t\t\t\t\t\tdebugMode,\n\t\t\t\t\t\t\tactions_eventRepository,\n\t\t\t\t\t\t\tactions_eventDispatcher,\n\t\t\t\t\t\t\tactions_dispatchWorkerSupervisorFactory,\n\t\t\t\t\t\t\tactions_variableManager,\n\t\t\t\t\t\t\tactions_authorizator,\n\t\t\t\t\t\t},\n\t\t\t\t\t) => {\n\t\t\t\t\t\tconst handlerFactory = new ActionsGraphQLHandlerFactory()\n\t\t\t\t\t\tconst eventsQueryResolver = new EventsQueryResolver()\n\t\t\t\t\t\tconst processBatchMutationResolver = new ProcessBatchMutationResolver(actions_eventDispatcher)\n\t\t\t\t\t\tconst variablesQueryResolver = new VariablesQueryResolver(actions_variableManager)\n\t\t\t\t\t\tconst setVariablesMutationResolver = new SetVariablesMutationResolver(actions_variableManager)\n\t\t\t\t\t\tconst resolversFactory = new ResolversFactory(\n\t\t\t\t\t\t\teventsQueryResolver,\n\t\t\t\t\t\t\tprocessBatchMutationResolver,\n\t\t\t\t\t\t\tvariablesQueryResolver,\n\t\t\t\t\t\t\tsetVariablesMutationResolver,\n\t\t\t\t\t\t\tnew RetryEventMutationResolver(actions_eventRepository),\n\t\t\t\t\t\t\tnew StopEventMutationResolver(actions_eventRepository),\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tconst actionsContextResolver = new ActionsContextResolver(debugMode, projectContextResolver)\n\t\t\t\t\t\tconst actionsMiddlewareFactory = new ActionsApiMiddlewareFactory(\n\t\t\t\t\t\t\tactionsContextResolver,\n\t\t\t\t\t\t\thandlerFactory.create(resolversFactory),\n\t\t\t\t\t\t\tactions_authorizator,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst actionsWebsocketMiddlewareFactory = new ActionsWebsocketControllerFactory(\n\t\t\t\t\t\t\tdebugMode,\n\t\t\t\t\t\t\tactionsContextResolver,\n\t\t\t\t\t\t\tactions_dispatchWorkerSupervisorFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tit.addRoute('actions', '/actions/:projectSlug', actionsMiddlewareFactory.create())\n\t\t\t\t\t\tit.addWebsocketRoute('actions', '/actions/_worker', actionsWebsocketMiddlewareFactory.create())\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.setupService('applicationWorkers', (it, { actions_dispatchWorkerSupervisorFactory, projectGroupContainer, serverConfig }) => {\n\t\t\t\t\tif (!(serverConfig as any).projectGroup) {\n\t\t\t\t\t\tit.registerWorker(this.name, actions_dispatchWorkerSupervisorFactory.create(projectGroupContainer))\n\t\t\t\t\t}\n\t\t\t\t}) as unknown as MasterContainerBuilder\n\t\t}\n\t\treturn hook\n\t}\n}\n"],"names":["migrationsGroup","ActionsExecutionContainerHookFactory","ListenerStoreProvider","VariablesManager","EventsRepository","WebhookTargetHandler","WebhookFetcherNative","TargetHandlerResolver","EventDispatcher","ProjectDispatcherFactory","DispatchWorkerSupervisorFactory","Authorizator","AccessEvaluator","ActionsPermissionsFactory","ActionsGraphQLHandlerFactory","EventsQueryResolver","ProcessBatchMutationResolver","VariablesQueryResolver","SetVariablesMutationResolver","ResolversFactory","RetryEventMutationResolver","StopEventMutationResolver","ActionsContextResolver","ActionsApiMiddlewareFactory","ActionsWebsocketControllerFactory"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAqB,cAAgC;AAAA,EAArD,cAAA;AACC,kBAAA,MAAA,QAAO,mBAAA;AAAA,EAAA;AAAA,EAEP,sBAAsC;AACrC,WAAOA,MAAAA;AAAAA,EACR;AAAA,EAEA,4BAA4B;AAC3B,UAAM,cAAc,IAAIC,0EAAqC,IAAIC,sBAAAA,uBAAuB;AACxF,WAAO,YAAY,OAAA;AAAA,EACpB;AAAA,EAEA,yBAAyB;AACxB,UAAM,OAA4B,CAAC,YAAoC;AACtE,aAAO,QACL,WAAW,2BAA2B,MAAM;AAC5C,eAAO,IAAIC,iBAAAA,iBAAA;AAAA,MACZ,CAAC,EACA,WAAW,2BAA2B,MAAM;AAC5C,eAAO,IAAIC,iBAAAA,iBAAA;AAAA,MACZ,CAAC,EACA,WAAW,2BAA2B,CAAC,EAAE,yBAAyB,8BAA8B;AAChG,cAAM,uBAAuB,IAAIC,0CAAqB,IAAIC,eAAAA,sBAAsB;AAChF,cAAM,wBAAwB,IAAIC,sBAAAA,sBAAsB,oBAAoB;AAC5E,eAAO,IAAIC,gBAAAA,gBAAgB,yBAAyB,yBAAyB,qBAAqB;AAAA,MACnG,CAAC,EACA,WAAW,2CAA2C,CAAC,EAAE,8BAA8B;AACvF,cAAM,2BAA2B,IAAIC,kBAAAA,yBAAyB,uBAAuB;AACrF,eAAO,IAAIC,yBAAAA,gCAAgC,wBAAwB;AAAA,MACpE,CAAC,EACA,WAAW,wBAAwB,MAAM;AACzC,eAAO,IAAIC,cAAAA,aAAa,QAAQ,IAAIC,cAAAA,gBAAgB,oBAAoB,IAAIC,0BAAAA,0BAAA,EAA4B,OAAA,CAAQ,CAAC;AAAA,MAClH,CAAC,EACA;AAAA,QACA;AAAA,QACA,CACC,IACA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,MAEG;AACJ,gBAAM,iBAAiB,IAAIC,0DAAA;AAC3B,gBAAM,sBAAsB,IAAIC,wCAAA;AAChC,gBAAM,+BAA+B,IAAIC,6BAAAA,6BAA6B,uBAAuB;AAC7F,gBAAM,yBAAyB,IAAIC,uBAAAA,uBAAuB,uBAAuB;AACjF,gBAAM,+BAA+B,IAAIC,6BAAAA,6BAA6B,uBAAuB;AAC7F,gBAAM,mBAAmB,IAAIC,iBAAAA;AAAAA,YAC5B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,IAAIC,2BAAAA,2BAA2B,uBAAuB;AAAA,YACtD,IAAIC,0BAAAA,0BAA0B,uBAAuB;AAAA,UAAA;AAGtD,gBAAM,yBAAyB,IAAIC,8CAAuB,WAAW,sBAAsB;AAC3F,gBAAM,2BAA2B,IAAIC,4BAAAA;AAAAA,YACpC;AAAA,YACA,eAAe,OAAO,gBAAgB;AAAA,YACtC;AAAA,UAAA;AAED,gBAAM,oCAAoC,IAAIC,kCAAAA;AAAAA,YAC7C;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAED,aAAG,SAAS,WAAW,yBAAyB,yBAAyB,QAAQ;AACjF,aAAG,kBAAkB,WAAW,oBAAoB,kCAAkC,QAAQ;AAAA,QAC/F;AAAA,MAAA,EAEA,aAAa,sBAAsB,CAAC,IAAI,EAAE,yCAAyC,uBAAuB,mBAAmB;AAC7H,YAAI,CAAE,aAAqB,cAAc;AACxC,aAAG,eAAe,KAAK,MAAM,wCAAwC,OAAO,qBAAqB,CAAC;AAAA,QACnG;AAAA,MACD,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACR;AACD;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../packages/engine-actions/src/index.ts"],"sourcesContent":["import { Plugin } from '@contember/engine-plugins'\nimport { migrationsGroup } from './migrations/index.js'\nimport { ActionsExecutionContainerHookFactory } from './ActionsExecutionContainerHookFactory.js'\nimport { ListenerStoreProvider } from './ListenerStoreProvider.js'\nimport { MigrationGroup } from '@contember/database-migrations'\nimport { MasterContainerBuilder, MasterContainerHook } from '@contember/engine-http'\nimport { ActionsApiMiddlewareFactory } from './graphql/http/ActionsApiMiddlewareFactory.js'\nimport { ActionsGraphQLHandlerFactory } from './graphql/http/ActionsGraphQLHandlerFactory.js'\nimport { ResolversFactory } from './graphql/resolvers/ResolversFactory.js'\nimport {\n\tEventsQueryResolver,\n\tProcessBatchMutationResolver,\n\tRetryEventMutationResolver,\n\tSetVariablesMutationResolver,\n\tStopEventMutationResolver,\n} from './graphql/resolvers/index.js'\nimport { EventDispatcher } from './dispatch/EventDispatcher.js'\nimport { EventsRepository } from './dispatch/EventsRepository.js'\nimport { TargetHandlerResolver } from './dispatch/TargetHandlerResolver.js'\nimport { WebhookTargetHandler } from './dispatch/WebhookTargetHandler.js'\nimport { ActionsContextResolver } from './graphql/http/ActionsContextResolver.js'\nimport { ActionsWebsocketControllerFactory } from './graphql/http/ActionsWebsocketControllerFactory.js'\nimport { DispatchWorkerSupervisorFactory } from './dispatch/DispatchWorkerSupervisor.js'\nimport { LazyDispatchWorker } from './dispatch/LazyDispatchWorker.js'\nimport { ProjectDispatcherFactory } from './dispatch/ProjectDispatcher.js'\nimport { VariablesQueryResolver } from './graphql/resolvers/query/VariablesQueryResolver.js'\nimport { VariablesManager } from './model/VariablesManager.js'\nimport { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { ActionsPermissionsFactory } from './authorization/index.js'\nimport { WebhookFetcherNative } from './dispatch/WebhookFetcher.js'\n\nexport {\n\tTriggerHandler,\n\tTriggerIndirectChangesFetcher,\n\tTriggerListenersFactory,\n\tTriggerListenersStore,\n\tTriggerPayloadManager,\n} from './triggers/index.js'\nexport { ActionsExecutionContainerHookFactory } from './ActionsExecutionContainerHookFactory.js'\nexport { ListenerStoreProvider } from './ListenerStoreProvider.js'\n\nexport default class ActionsPlugin implements Plugin {\n\tname = 'contember/actions'\n\n\tgetSystemMigrations(): MigrationGroup {\n\t\treturn migrationsGroup\n\t}\n\n\tgetExecutionContainerHook() {\n\t\tconst hookFactory = new ActionsExecutionContainerHookFactory(new ListenerStoreProvider())\n\t\treturn hookFactory.create()\n\t}\n\n\tgetMasterContainerHook() {\n\t\tconst hook: MasterContainerHook = (builder: MasterContainerBuilder) => {\n\t\t\treturn builder\n\t\t\t\t.addService('actions_variableManager', () => {\n\t\t\t\t\treturn new VariablesManager()\n\t\t\t\t})\n\t\t\t\t.addService('actions_eventRepository', () => {\n\t\t\t\t\treturn new EventsRepository()\n\t\t\t\t})\n\t\t\t\t.addService('actions_eventDispatcher', ({ actions_eventRepository, actions_variableManager }) => {\n\t\t\t\t\tconst webhookTargetHandler = new WebhookTargetHandler(new WebhookFetcherNative())\n\t\t\t\t\tconst targetHandlerResolver = new TargetHandlerResolver(webhookTargetHandler)\n\t\t\t\t\treturn new EventDispatcher(actions_eventRepository, actions_variableManager, targetHandlerResolver)\n\t\t\t\t})\n\t\t\t\t.addService('actions_dispatchWorkerSupervisorFactory', ({ actions_eventDispatcher }) => {\n\t\t\t\t\tconst projectDispatcherFactory = new ProjectDispatcherFactory(actions_eventDispatcher)\n\t\t\t\t\treturn new DispatchWorkerSupervisorFactory(projectDispatcherFactory)\n\t\t\t\t})\n\t\t\t\t.addService('actions_authorizator', () => {\n\t\t\t\t\treturn new Authorizator.Default(new AccessEvaluator.PermissionEvaluator(new ActionsPermissionsFactory().create()))\n\t\t\t\t})\n\t\t\t\t.setupService(\n\t\t\t\t\t'application',\n\t\t\t\t\t(\n\t\t\t\t\t\tit,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprojectContextResolver,\n\t\t\t\t\t\t\tdebugMode,\n\t\t\t\t\t\t\tactions_eventRepository,\n\t\t\t\t\t\t\tactions_eventDispatcher,\n\t\t\t\t\t\t\tactions_dispatchWorkerSupervisorFactory,\n\t\t\t\t\t\t\tactions_variableManager,\n\t\t\t\t\t\t\tactions_authorizator,\n\t\t\t\t\t\t},\n\t\t\t\t\t) => {\n\t\t\t\t\t\tconst handlerFactory = new ActionsGraphQLHandlerFactory()\n\t\t\t\t\t\tconst eventsQueryResolver = new EventsQueryResolver()\n\t\t\t\t\t\tconst processBatchMutationResolver = new ProcessBatchMutationResolver(actions_eventDispatcher)\n\t\t\t\t\t\tconst variablesQueryResolver = new VariablesQueryResolver(actions_variableManager)\n\t\t\t\t\t\tconst setVariablesMutationResolver = new SetVariablesMutationResolver(actions_variableManager)\n\t\t\t\t\t\tconst resolversFactory = new ResolversFactory(\n\t\t\t\t\t\t\teventsQueryResolver,\n\t\t\t\t\t\t\tprocessBatchMutationResolver,\n\t\t\t\t\t\t\tvariablesQueryResolver,\n\t\t\t\t\t\t\tsetVariablesMutationResolver,\n\t\t\t\t\t\t\tnew RetryEventMutationResolver(actions_eventRepository),\n\t\t\t\t\t\t\tnew StopEventMutationResolver(actions_eventRepository),\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tconst actionsContextResolver = new ActionsContextResolver(debugMode, projectContextResolver)\n\t\t\t\t\t\tconst actionsMiddlewareFactory = new ActionsApiMiddlewareFactory(\n\t\t\t\t\t\t\tactionsContextResolver,\n\t\t\t\t\t\t\thandlerFactory.create(resolversFactory),\n\t\t\t\t\t\t\tactions_authorizator,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst actionsWebsocketMiddlewareFactory = new ActionsWebsocketControllerFactory(\n\t\t\t\t\t\t\tdebugMode,\n\t\t\t\t\t\t\tactionsContextResolver,\n\t\t\t\t\t\t\tactions_dispatchWorkerSupervisorFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tit.addRoute('actions', '/actions/:projectSlug', actionsMiddlewareFactory.create())\n\t\t\t\t\t\tit.addWebsocketRoute('actions', '/actions/_worker', actionsWebsocketMiddlewareFactory.create())\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.setupService(\n\t\t\t\t\t'applicationWorkers',\n\t\t\t\t\t(it, { actions_dispatchWorkerSupervisorFactory, projectGroupContainer, projectGroupContainerResolver, serverConfig }) => {\n\t\t\t\t\t\tif (!(serverConfig as any).projectGroup) {\n\t\t\t\t\t\t\tit.registerWorker(this.name, actions_dispatchWorkerSupervisorFactory.create(projectGroupContainer))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tit.registerWorker(this.name, new LazyDispatchWorker(projectGroupContainerResolver, actions_dispatchWorkerSupervisorFactory))\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t) as unknown as MasterContainerBuilder\n\t\t}\n\t\treturn hook\n\t}\n}\n"],"names":["migrationsGroup","ActionsExecutionContainerHookFactory","ListenerStoreProvider","VariablesManager","EventsRepository","WebhookTargetHandler","WebhookFetcherNative","TargetHandlerResolver","EventDispatcher","ProjectDispatcherFactory","DispatchWorkerSupervisorFactory","Authorizator","AccessEvaluator","ActionsPermissionsFactory","ActionsGraphQLHandlerFactory","EventsQueryResolver","ProcessBatchMutationResolver","VariablesQueryResolver","SetVariablesMutationResolver","ResolversFactory","RetryEventMutationResolver","StopEventMutationResolver","ActionsContextResolver","ActionsApiMiddlewareFactory","ActionsWebsocketControllerFactory","LazyDispatchWorker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAqB,cAAgC;AAAA,EAArD,cAAA;AACC,kBAAA,MAAA,QAAO,mBAAA;AAAA,EAAA;AAAA,EAEP,sBAAsC;AACrC,WAAOA,MAAAA;AAAAA,EACR;AAAA,EAEA,4BAA4B;AAC3B,UAAM,cAAc,IAAIC,0EAAqC,IAAIC,sBAAAA,uBAAuB;AACxF,WAAO,YAAY,OAAA;AAAA,EACpB;AAAA,EAEA,yBAAyB;AACxB,UAAM,OAA4B,CAAC,YAAoC;AACtE,aAAO,QACL,WAAW,2BAA2B,MAAM;AAC5C,eAAO,IAAIC,iBAAAA,iBAAA;AAAA,MACZ,CAAC,EACA,WAAW,2BAA2B,MAAM;AAC5C,eAAO,IAAIC,iBAAAA,iBAAA;AAAA,MACZ,CAAC,EACA,WAAW,2BAA2B,CAAC,EAAE,yBAAyB,8BAA8B;AAChG,cAAM,uBAAuB,IAAIC,0CAAqB,IAAIC,eAAAA,sBAAsB;AAChF,cAAM,wBAAwB,IAAIC,sBAAAA,sBAAsB,oBAAoB;AAC5E,eAAO,IAAIC,gBAAAA,gBAAgB,yBAAyB,yBAAyB,qBAAqB;AAAA,MACnG,CAAC,EACA,WAAW,2CAA2C,CAAC,EAAE,8BAA8B;AACvF,cAAM,2BAA2B,IAAIC,kBAAAA,yBAAyB,uBAAuB;AACrF,eAAO,IAAIC,yBAAAA,gCAAgC,wBAAwB;AAAA,MACpE,CAAC,EACA,WAAW,wBAAwB,MAAM;AACzC,eAAO,IAAIC,cAAAA,aAAa,QAAQ,IAAIC,cAAAA,gBAAgB,oBAAoB,IAAIC,0BAAAA,0BAAA,EAA4B,OAAA,CAAQ,CAAC;AAAA,MAClH,CAAC,EACA;AAAA,QACA;AAAA,QACA,CACC,IACA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,MAEG;AACJ,gBAAM,iBAAiB,IAAIC,0DAAA;AAC3B,gBAAM,sBAAsB,IAAIC,wCAAA;AAChC,gBAAM,+BAA+B,IAAIC,6BAAAA,6BAA6B,uBAAuB;AAC7F,gBAAM,yBAAyB,IAAIC,uBAAAA,uBAAuB,uBAAuB;AACjF,gBAAM,+BAA+B,IAAIC,6BAAAA,6BAA6B,uBAAuB;AAC7F,gBAAM,mBAAmB,IAAIC,iBAAAA;AAAAA,YAC5B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,IAAIC,2BAAAA,2BAA2B,uBAAuB;AAAA,YACtD,IAAIC,0BAAAA,0BAA0B,uBAAuB;AAAA,UAAA;AAGtD,gBAAM,yBAAyB,IAAIC,8CAAuB,WAAW,sBAAsB;AAC3F,gBAAM,2BAA2B,IAAIC,4BAAAA;AAAAA,YACpC;AAAA,YACA,eAAe,OAAO,gBAAgB;AAAA,YACtC;AAAA,UAAA;AAED,gBAAM,oCAAoC,IAAIC,kCAAAA;AAAAA,YAC7C;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAED,aAAG,SAAS,WAAW,yBAAyB,yBAAyB,QAAQ;AACjF,aAAG,kBAAkB,WAAW,oBAAoB,kCAAkC,QAAQ;AAAA,QAC/F;AAAA,MAAA,EAEA;AAAA,QACA;AAAA,QACA,CAAC,IAAI,EAAE,yCAAyC,uBAAuB,+BAA+B,mBAAmB;AACxH,cAAI,CAAE,aAAqB,cAAc;AACxC,eAAG,eAAe,KAAK,MAAM,wCAAwC,OAAO,qBAAqB,CAAC;AAAA,UACnG,OAAO;AACN,eAAG,eAAe,KAAK,MAAM,IAAIC,sCAAmB,+BAA+B,uCAAuC,CAAC;AAAA,UAC5H;AAAA,QACD;AAAA,MAAA;AAAA,IAEH;AACA,WAAO;AAAA,EACR;AACD;;;;;;;;;"}
@@ -16,6 +16,7 @@ import { WebhookTargetHandler } from "./src/dispatch/WebhookTargetHandler.js";
16
16
  import { ActionsContextResolver } from "./src/graphql/http/ActionsContextResolver.js";
17
17
  import { ActionsWebsocketControllerFactory } from "./src/graphql/http/ActionsWebsocketControllerFactory.js";
18
18
  import { DispatchWorkerSupervisorFactory } from "./src/dispatch/DispatchWorkerSupervisor.js";
19
+ import { LazyDispatchWorker } from "./src/dispatch/LazyDispatchWorker.js";
19
20
  import { ProjectDispatcherFactory } from "./src/dispatch/ProjectDispatcher.js";
20
21
  import { VariablesQueryResolver } from "./src/graphql/resolvers/query/VariablesQueryResolver.js";
21
22
  import { VariablesManager } from "./src/model/VariablesManager.js";
@@ -96,11 +97,16 @@ class ActionsPlugin {
96
97
  it.addRoute("actions", "/actions/:projectSlug", actionsMiddlewareFactory.create());
97
98
  it.addWebsocketRoute("actions", "/actions/_worker", actionsWebsocketMiddlewareFactory.create());
98
99
  }
99
- ).setupService("applicationWorkers", (it, { actions_dispatchWorkerSupervisorFactory, projectGroupContainer, serverConfig }) => {
100
- if (!serverConfig.projectGroup) {
101
- it.registerWorker(this.name, actions_dispatchWorkerSupervisorFactory.create(projectGroupContainer));
100
+ ).setupService(
101
+ "applicationWorkers",
102
+ (it, { actions_dispatchWorkerSupervisorFactory, projectGroupContainer, projectGroupContainerResolver, serverConfig }) => {
103
+ if (!serverConfig.projectGroup) {
104
+ it.registerWorker(this.name, actions_dispatchWorkerSupervisorFactory.create(projectGroupContainer));
105
+ } else {
106
+ it.registerWorker(this.name, new LazyDispatchWorker(projectGroupContainerResolver, actions_dispatchWorkerSupervisorFactory));
107
+ }
102
108
  }
103
- });
109
+ );
104
110
  };
105
111
  return hook;
106
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../packages/engine-actions/src/index.ts"],"sourcesContent":["import { Plugin } from '@contember/engine-plugins'\nimport { migrationsGroup } from './migrations'\nimport { ActionsExecutionContainerHookFactory } from './ActionsExecutionContainerHookFactory'\nimport { ListenerStoreProvider } from './ListenerStoreProvider'\nimport { MigrationGroup } from '@contember/database-migrations'\nimport { MasterContainerBuilder, MasterContainerHook } from '@contember/engine-http'\nimport { ActionsApiMiddlewareFactory } from './graphql/http/ActionsApiMiddlewareFactory'\nimport { ActionsGraphQLHandlerFactory } from './graphql/http/ActionsGraphQLHandlerFactory'\nimport { ResolversFactory } from './graphql/resolvers/ResolversFactory'\nimport {\n\tEventsQueryResolver,\n\tProcessBatchMutationResolver,\n\tRetryEventMutationResolver,\n\tSetVariablesMutationResolver,\n\tStopEventMutationResolver,\n} from './graphql/resolvers'\nimport { EventDispatcher } from './dispatch/EventDispatcher'\nimport { EventsRepository } from './dispatch/EventsRepository'\nimport { TargetHandlerResolver } from './dispatch/TargetHandlerResolver'\nimport { WebhookTargetHandler } from './dispatch/WebhookTargetHandler'\nimport { ActionsContextResolver } from './graphql/http/ActionsContextResolver'\nimport { ActionsWebsocketControllerFactory } from './graphql/http/ActionsWebsocketControllerFactory'\nimport { DispatchWorkerSupervisorFactory } from './dispatch/DispatchWorkerSupervisor'\nimport { ProjectDispatcherFactory } from './dispatch/ProjectDispatcher'\nimport { VariablesQueryResolver } from './graphql/resolvers/query/VariablesQueryResolver'\nimport { VariablesManager } from './model/VariablesManager'\nimport { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { ActionsPermissionsFactory } from './authorization'\nimport { WebhookFetcherNative } from './dispatch/WebhookFetcher'\n\nexport { TriggerHandler, TriggerIndirectChangesFetcher, TriggerListenersFactory, TriggerListenersStore, TriggerPayloadManager } from './triggers'\nexport { ActionsExecutionContainerHookFactory } from './ActionsExecutionContainerHookFactory'\nexport { ListenerStoreProvider } from './ListenerStoreProvider'\n\nexport default class ActionsPlugin implements Plugin {\n\tname = 'contember/actions'\n\n\tgetSystemMigrations(): MigrationGroup {\n\t\treturn migrationsGroup\n\t}\n\n\tgetExecutionContainerHook() {\n\t\tconst hookFactory = new ActionsExecutionContainerHookFactory(new ListenerStoreProvider())\n\t\treturn hookFactory.create()\n\t}\n\n\tgetMasterContainerHook() {\n\t\tconst hook: MasterContainerHook = (builder: MasterContainerBuilder) => {\n\t\t\treturn builder\n\t\t\t\t.addService('actions_variableManager', () => {\n\t\t\t\t\treturn new VariablesManager()\n\t\t\t\t})\n\t\t\t\t.addService('actions_eventRepository', () => {\n\t\t\t\t\treturn new EventsRepository()\n\t\t\t\t})\n\t\t\t\t.addService('actions_eventDispatcher', ({ actions_eventRepository, actions_variableManager }) => {\n\t\t\t\t\tconst webhookTargetHandler = new WebhookTargetHandler(new WebhookFetcherNative())\n\t\t\t\t\tconst targetHandlerResolver = new TargetHandlerResolver(webhookTargetHandler)\n\t\t\t\t\treturn new EventDispatcher(actions_eventRepository, actions_variableManager, targetHandlerResolver)\n\t\t\t\t})\n\t\t\t\t.addService('actions_dispatchWorkerSupervisorFactory', ({ actions_eventDispatcher }) => {\n\t\t\t\t\tconst projectDispatcherFactory = new ProjectDispatcherFactory(actions_eventDispatcher)\n\t\t\t\t\treturn new DispatchWorkerSupervisorFactory(projectDispatcherFactory)\n\t\t\t\t})\n\t\t\t\t.addService('actions_authorizator', () => {\n\t\t\t\t\treturn new Authorizator.Default(new AccessEvaluator.PermissionEvaluator(new ActionsPermissionsFactory().create()))\n\t\t\t\t})\n\t\t\t\t.setupService(\n\t\t\t\t\t'application',\n\t\t\t\t\t(\n\t\t\t\t\t\tit,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprojectContextResolver,\n\t\t\t\t\t\t\tdebugMode,\n\t\t\t\t\t\t\tactions_eventRepository,\n\t\t\t\t\t\t\tactions_eventDispatcher,\n\t\t\t\t\t\t\tactions_dispatchWorkerSupervisorFactory,\n\t\t\t\t\t\t\tactions_variableManager,\n\t\t\t\t\t\t\tactions_authorizator,\n\t\t\t\t\t\t},\n\t\t\t\t\t) => {\n\t\t\t\t\t\tconst handlerFactory = new ActionsGraphQLHandlerFactory()\n\t\t\t\t\t\tconst eventsQueryResolver = new EventsQueryResolver()\n\t\t\t\t\t\tconst processBatchMutationResolver = new ProcessBatchMutationResolver(actions_eventDispatcher)\n\t\t\t\t\t\tconst variablesQueryResolver = new VariablesQueryResolver(actions_variableManager)\n\t\t\t\t\t\tconst setVariablesMutationResolver = new SetVariablesMutationResolver(actions_variableManager)\n\t\t\t\t\t\tconst resolversFactory = new ResolversFactory(\n\t\t\t\t\t\t\teventsQueryResolver,\n\t\t\t\t\t\t\tprocessBatchMutationResolver,\n\t\t\t\t\t\t\tvariablesQueryResolver,\n\t\t\t\t\t\t\tsetVariablesMutationResolver,\n\t\t\t\t\t\t\tnew RetryEventMutationResolver(actions_eventRepository),\n\t\t\t\t\t\t\tnew StopEventMutationResolver(actions_eventRepository),\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tconst actionsContextResolver = new ActionsContextResolver(debugMode, projectContextResolver)\n\t\t\t\t\t\tconst actionsMiddlewareFactory = new ActionsApiMiddlewareFactory(\n\t\t\t\t\t\t\tactionsContextResolver,\n\t\t\t\t\t\t\thandlerFactory.create(resolversFactory),\n\t\t\t\t\t\t\tactions_authorizator,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst actionsWebsocketMiddlewareFactory = new ActionsWebsocketControllerFactory(\n\t\t\t\t\t\t\tdebugMode,\n\t\t\t\t\t\t\tactionsContextResolver,\n\t\t\t\t\t\t\tactions_dispatchWorkerSupervisorFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tit.addRoute('actions', '/actions/:projectSlug', actionsMiddlewareFactory.create())\n\t\t\t\t\t\tit.addWebsocketRoute('actions', '/actions/_worker', actionsWebsocketMiddlewareFactory.create())\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.setupService('applicationWorkers', (it, { actions_dispatchWorkerSupervisorFactory, projectGroupContainer, serverConfig }) => {\n\t\t\t\t\tif (!(serverConfig as any).projectGroup) {\n\t\t\t\t\t\tit.registerWorker(this.name, actions_dispatchWorkerSupervisorFactory.create(projectGroupContainer))\n\t\t\t\t\t}\n\t\t\t\t}) as unknown as MasterContainerBuilder\n\t\t}\n\t\treturn hook\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAqB,cAAgC;AAAA,EAArD,cAAA;AACC,kBAAA,MAAA,QAAO,mBAAA;AAAA,EAAA;AAAA,EAEP,sBAAsC;AACrC,WAAO;AAAA,EACR;AAAA,EAEA,4BAA4B;AAC3B,UAAM,cAAc,IAAI,qCAAqC,IAAI,uBAAuB;AACxF,WAAO,YAAY,OAAA;AAAA,EACpB;AAAA,EAEA,yBAAyB;AACxB,UAAM,OAA4B,CAAC,YAAoC;AACtE,aAAO,QACL,WAAW,2BAA2B,MAAM;AAC5C,eAAO,IAAI,iBAAA;AAAA,MACZ,CAAC,EACA,WAAW,2BAA2B,MAAM;AAC5C,eAAO,IAAI,iBAAA;AAAA,MACZ,CAAC,EACA,WAAW,2BAA2B,CAAC,EAAE,yBAAyB,8BAA8B;AAChG,cAAM,uBAAuB,IAAI,qBAAqB,IAAI,sBAAsB;AAChF,cAAM,wBAAwB,IAAI,sBAAsB,oBAAoB;AAC5E,eAAO,IAAI,gBAAgB,yBAAyB,yBAAyB,qBAAqB;AAAA,MACnG,CAAC,EACA,WAAW,2CAA2C,CAAC,EAAE,8BAA8B;AACvF,cAAM,2BAA2B,IAAI,yBAAyB,uBAAuB;AACrF,eAAO,IAAI,gCAAgC,wBAAwB;AAAA,MACpE,CAAC,EACA,WAAW,wBAAwB,MAAM;AACzC,eAAO,IAAI,aAAa,QAAQ,IAAI,gBAAgB,oBAAoB,IAAI,0BAAA,EAA4B,OAAA,CAAQ,CAAC;AAAA,MAClH,CAAC,EACA;AAAA,QACA;AAAA,QACA,CACC,IACA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,MAEG;AACJ,gBAAM,iBAAiB,IAAI,6BAAA;AAC3B,gBAAM,sBAAsB,IAAI,oBAAA;AAChC,gBAAM,+BAA+B,IAAI,6BAA6B,uBAAuB;AAC7F,gBAAM,yBAAyB,IAAI,uBAAuB,uBAAuB;AACjF,gBAAM,+BAA+B,IAAI,6BAA6B,uBAAuB;AAC7F,gBAAM,mBAAmB,IAAI;AAAA,YAC5B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,IAAI,2BAA2B,uBAAuB;AAAA,YACtD,IAAI,0BAA0B,uBAAuB;AAAA,UAAA;AAGtD,gBAAM,yBAAyB,IAAI,uBAAuB,WAAW,sBAAsB;AAC3F,gBAAM,2BAA2B,IAAI;AAAA,YACpC;AAAA,YACA,eAAe,OAAO,gBAAgB;AAAA,YACtC;AAAA,UAAA;AAED,gBAAM,oCAAoC,IAAI;AAAA,YAC7C;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAED,aAAG,SAAS,WAAW,yBAAyB,yBAAyB,QAAQ;AACjF,aAAG,kBAAkB,WAAW,oBAAoB,kCAAkC,QAAQ;AAAA,QAC/F;AAAA,MAAA,EAEA,aAAa,sBAAsB,CAAC,IAAI,EAAE,yCAAyC,uBAAuB,mBAAmB;AAC7H,YAAI,CAAE,aAAqB,cAAc;AACxC,aAAG,eAAe,KAAK,MAAM,wCAAwC,OAAO,qBAAqB,CAAC;AAAA,QACnG;AAAA,MACD,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACR;AACD;"}
1
+ {"version":3,"file":"index.js","sources":["../../../packages/engine-actions/src/index.ts"],"sourcesContent":["import { Plugin } from '@contember/engine-plugins'\nimport { migrationsGroup } from './migrations/index.js'\nimport { ActionsExecutionContainerHookFactory } from './ActionsExecutionContainerHookFactory.js'\nimport { ListenerStoreProvider } from './ListenerStoreProvider.js'\nimport { MigrationGroup } from '@contember/database-migrations'\nimport { MasterContainerBuilder, MasterContainerHook } from '@contember/engine-http'\nimport { ActionsApiMiddlewareFactory } from './graphql/http/ActionsApiMiddlewareFactory.js'\nimport { ActionsGraphQLHandlerFactory } from './graphql/http/ActionsGraphQLHandlerFactory.js'\nimport { ResolversFactory } from './graphql/resolvers/ResolversFactory.js'\nimport {\n\tEventsQueryResolver,\n\tProcessBatchMutationResolver,\n\tRetryEventMutationResolver,\n\tSetVariablesMutationResolver,\n\tStopEventMutationResolver,\n} from './graphql/resolvers/index.js'\nimport { EventDispatcher } from './dispatch/EventDispatcher.js'\nimport { EventsRepository } from './dispatch/EventsRepository.js'\nimport { TargetHandlerResolver } from './dispatch/TargetHandlerResolver.js'\nimport { WebhookTargetHandler } from './dispatch/WebhookTargetHandler.js'\nimport { ActionsContextResolver } from './graphql/http/ActionsContextResolver.js'\nimport { ActionsWebsocketControllerFactory } from './graphql/http/ActionsWebsocketControllerFactory.js'\nimport { DispatchWorkerSupervisorFactory } from './dispatch/DispatchWorkerSupervisor.js'\nimport { LazyDispatchWorker } from './dispatch/LazyDispatchWorker.js'\nimport { ProjectDispatcherFactory } from './dispatch/ProjectDispatcher.js'\nimport { VariablesQueryResolver } from './graphql/resolvers/query/VariablesQueryResolver.js'\nimport { VariablesManager } from './model/VariablesManager.js'\nimport { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { ActionsPermissionsFactory } from './authorization/index.js'\nimport { WebhookFetcherNative } from './dispatch/WebhookFetcher.js'\n\nexport {\n\tTriggerHandler,\n\tTriggerIndirectChangesFetcher,\n\tTriggerListenersFactory,\n\tTriggerListenersStore,\n\tTriggerPayloadManager,\n} from './triggers/index.js'\nexport { ActionsExecutionContainerHookFactory } from './ActionsExecutionContainerHookFactory.js'\nexport { ListenerStoreProvider } from './ListenerStoreProvider.js'\n\nexport default class ActionsPlugin implements Plugin {\n\tname = 'contember/actions'\n\n\tgetSystemMigrations(): MigrationGroup {\n\t\treturn migrationsGroup\n\t}\n\n\tgetExecutionContainerHook() {\n\t\tconst hookFactory = new ActionsExecutionContainerHookFactory(new ListenerStoreProvider())\n\t\treturn hookFactory.create()\n\t}\n\n\tgetMasterContainerHook() {\n\t\tconst hook: MasterContainerHook = (builder: MasterContainerBuilder) => {\n\t\t\treturn builder\n\t\t\t\t.addService('actions_variableManager', () => {\n\t\t\t\t\treturn new VariablesManager()\n\t\t\t\t})\n\t\t\t\t.addService('actions_eventRepository', () => {\n\t\t\t\t\treturn new EventsRepository()\n\t\t\t\t})\n\t\t\t\t.addService('actions_eventDispatcher', ({ actions_eventRepository, actions_variableManager }) => {\n\t\t\t\t\tconst webhookTargetHandler = new WebhookTargetHandler(new WebhookFetcherNative())\n\t\t\t\t\tconst targetHandlerResolver = new TargetHandlerResolver(webhookTargetHandler)\n\t\t\t\t\treturn new EventDispatcher(actions_eventRepository, actions_variableManager, targetHandlerResolver)\n\t\t\t\t})\n\t\t\t\t.addService('actions_dispatchWorkerSupervisorFactory', ({ actions_eventDispatcher }) => {\n\t\t\t\t\tconst projectDispatcherFactory = new ProjectDispatcherFactory(actions_eventDispatcher)\n\t\t\t\t\treturn new DispatchWorkerSupervisorFactory(projectDispatcherFactory)\n\t\t\t\t})\n\t\t\t\t.addService('actions_authorizator', () => {\n\t\t\t\t\treturn new Authorizator.Default(new AccessEvaluator.PermissionEvaluator(new ActionsPermissionsFactory().create()))\n\t\t\t\t})\n\t\t\t\t.setupService(\n\t\t\t\t\t'application',\n\t\t\t\t\t(\n\t\t\t\t\t\tit,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprojectContextResolver,\n\t\t\t\t\t\t\tdebugMode,\n\t\t\t\t\t\t\tactions_eventRepository,\n\t\t\t\t\t\t\tactions_eventDispatcher,\n\t\t\t\t\t\t\tactions_dispatchWorkerSupervisorFactory,\n\t\t\t\t\t\t\tactions_variableManager,\n\t\t\t\t\t\t\tactions_authorizator,\n\t\t\t\t\t\t},\n\t\t\t\t\t) => {\n\t\t\t\t\t\tconst handlerFactory = new ActionsGraphQLHandlerFactory()\n\t\t\t\t\t\tconst eventsQueryResolver = new EventsQueryResolver()\n\t\t\t\t\t\tconst processBatchMutationResolver = new ProcessBatchMutationResolver(actions_eventDispatcher)\n\t\t\t\t\t\tconst variablesQueryResolver = new VariablesQueryResolver(actions_variableManager)\n\t\t\t\t\t\tconst setVariablesMutationResolver = new SetVariablesMutationResolver(actions_variableManager)\n\t\t\t\t\t\tconst resolversFactory = new ResolversFactory(\n\t\t\t\t\t\t\teventsQueryResolver,\n\t\t\t\t\t\t\tprocessBatchMutationResolver,\n\t\t\t\t\t\t\tvariablesQueryResolver,\n\t\t\t\t\t\t\tsetVariablesMutationResolver,\n\t\t\t\t\t\t\tnew RetryEventMutationResolver(actions_eventRepository),\n\t\t\t\t\t\t\tnew StopEventMutationResolver(actions_eventRepository),\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tconst actionsContextResolver = new ActionsContextResolver(debugMode, projectContextResolver)\n\t\t\t\t\t\tconst actionsMiddlewareFactory = new ActionsApiMiddlewareFactory(\n\t\t\t\t\t\t\tactionsContextResolver,\n\t\t\t\t\t\t\thandlerFactory.create(resolversFactory),\n\t\t\t\t\t\t\tactions_authorizator,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst actionsWebsocketMiddlewareFactory = new ActionsWebsocketControllerFactory(\n\t\t\t\t\t\t\tdebugMode,\n\t\t\t\t\t\t\tactionsContextResolver,\n\t\t\t\t\t\t\tactions_dispatchWorkerSupervisorFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tit.addRoute('actions', '/actions/:projectSlug', actionsMiddlewareFactory.create())\n\t\t\t\t\t\tit.addWebsocketRoute('actions', '/actions/_worker', actionsWebsocketMiddlewareFactory.create())\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.setupService(\n\t\t\t\t\t'applicationWorkers',\n\t\t\t\t\t(it, { actions_dispatchWorkerSupervisorFactory, projectGroupContainer, projectGroupContainerResolver, serverConfig }) => {\n\t\t\t\t\t\tif (!(serverConfig as any).projectGroup) {\n\t\t\t\t\t\t\tit.registerWorker(this.name, actions_dispatchWorkerSupervisorFactory.create(projectGroupContainer))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tit.registerWorker(this.name, new LazyDispatchWorker(projectGroupContainerResolver, actions_dispatchWorkerSupervisorFactory))\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t) as unknown as MasterContainerBuilder\n\t\t}\n\t\treturn hook\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAqB,cAAgC;AAAA,EAArD,cAAA;AACC,kBAAA,MAAA,QAAO,mBAAA;AAAA,EAAA;AAAA,EAEP,sBAAsC;AACrC,WAAO;AAAA,EACR;AAAA,EAEA,4BAA4B;AAC3B,UAAM,cAAc,IAAI,qCAAqC,IAAI,uBAAuB;AACxF,WAAO,YAAY,OAAA;AAAA,EACpB;AAAA,EAEA,yBAAyB;AACxB,UAAM,OAA4B,CAAC,YAAoC;AACtE,aAAO,QACL,WAAW,2BAA2B,MAAM;AAC5C,eAAO,IAAI,iBAAA;AAAA,MACZ,CAAC,EACA,WAAW,2BAA2B,MAAM;AAC5C,eAAO,IAAI,iBAAA;AAAA,MACZ,CAAC,EACA,WAAW,2BAA2B,CAAC,EAAE,yBAAyB,8BAA8B;AAChG,cAAM,uBAAuB,IAAI,qBAAqB,IAAI,sBAAsB;AAChF,cAAM,wBAAwB,IAAI,sBAAsB,oBAAoB;AAC5E,eAAO,IAAI,gBAAgB,yBAAyB,yBAAyB,qBAAqB;AAAA,MACnG,CAAC,EACA,WAAW,2CAA2C,CAAC,EAAE,8BAA8B;AACvF,cAAM,2BAA2B,IAAI,yBAAyB,uBAAuB;AACrF,eAAO,IAAI,gCAAgC,wBAAwB;AAAA,MACpE,CAAC,EACA,WAAW,wBAAwB,MAAM;AACzC,eAAO,IAAI,aAAa,QAAQ,IAAI,gBAAgB,oBAAoB,IAAI,0BAAA,EAA4B,OAAA,CAAQ,CAAC;AAAA,MAClH,CAAC,EACA;AAAA,QACA;AAAA,QACA,CACC,IACA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,MAEG;AACJ,gBAAM,iBAAiB,IAAI,6BAAA;AAC3B,gBAAM,sBAAsB,IAAI,oBAAA;AAChC,gBAAM,+BAA+B,IAAI,6BAA6B,uBAAuB;AAC7F,gBAAM,yBAAyB,IAAI,uBAAuB,uBAAuB;AACjF,gBAAM,+BAA+B,IAAI,6BAA6B,uBAAuB;AAC7F,gBAAM,mBAAmB,IAAI;AAAA,YAC5B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,IAAI,2BAA2B,uBAAuB;AAAA,YACtD,IAAI,0BAA0B,uBAAuB;AAAA,UAAA;AAGtD,gBAAM,yBAAyB,IAAI,uBAAuB,WAAW,sBAAsB;AAC3F,gBAAM,2BAA2B,IAAI;AAAA,YACpC;AAAA,YACA,eAAe,OAAO,gBAAgB;AAAA,YACtC;AAAA,UAAA;AAED,gBAAM,oCAAoC,IAAI;AAAA,YAC7C;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAED,aAAG,SAAS,WAAW,yBAAyB,yBAAyB,QAAQ;AACjF,aAAG,kBAAkB,WAAW,oBAAoB,kCAAkC,QAAQ;AAAA,QAC/F;AAAA,MAAA,EAEA;AAAA,QACA;AAAA,QACA,CAAC,IAAI,EAAE,yCAAyC,uBAAuB,+BAA+B,mBAAmB;AACxH,cAAI,CAAE,aAAqB,cAAc;AACxC,eAAG,eAAe,KAAK,MAAM,wCAAwC,OAAO,qBAAqB,CAAC;AAAA,UACnG,OAAO;AACN,eAAG,eAAe,KAAK,MAAM,IAAI,mBAAmB,+BAA+B,uCAAuC,CAAC;AAAA,UAC5H;AAAA,QACD;AAAA,MAAA;AAAA,IAEH;AACA,WAAO;AAAA,EACR;AACD;"}
@@ -14,7 +14,7 @@ class ActionsExecutionContainerHookFactory {
14
14
  return (builder) => {
15
15
  return builder.setupService(
16
16
  "mapperFactory",
17
- (mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo }) => {
17
+ (mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo, triggeredActionsCollector }) => {
18
18
  mapperFactory.hooks.push((mapper) => {
19
19
  const triggerPayloadPersister = new TriggerPayloadPersister.TriggerPayloadPersister(
20
20
  mapper,
@@ -24,7 +24,8 @@ class ActionsExecutionContainerHookFactory {
24
24
  stage.id,
25
25
  schemaMeta.id,
26
26
  mapper.identityId,
27
- userInfo
27
+ userInfo,
28
+ triggeredActionsCollector
28
29
  );
29
30
  const triggerPayloadBuilder = new TriggerPayloadBuilder.TriggerPayloadBuilder(mapper);
30
31
  const payloadManager = new TriggerPayloadManager.TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister);
@@ -1 +1 @@
1
- {"version":3,"file":"ActionsExecutionContainerHookFactory.cjs","sources":["../../../../packages/engine-actions/src/ActionsExecutionContainerHookFactory.ts"],"sourcesContent":["import { TriggerHandler, TriggerIndirectChangesFetcher, TriggerPayloadManager } from './triggers'\nimport { ListenerStoreProvider } from './ListenerStoreProvider'\nimport { TriggerPayloadBuilder } from './triggers/TriggerPayloadBuilder'\nimport { TriggerPayloadPersister } from './triggers/TriggerPayloadPersister'\nimport { ExecutionContainerHook } from '@contember/engine-content-api'\n\nexport class ActionsExecutionContainerHookFactory {\n\tconstructor(\n\t\tprivate readonly listenerStoreProvider: ListenerStoreProvider,\n\t) {\n\t}\n\n\tcreate(): ExecutionContainerHook {\n\t\treturn builder => {\n\t\t\treturn builder.setupService(\n\t\t\t\t'mapperFactory',\n\t\t\t\t(mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo }) => {\n\t\t\t\t\tmapperFactory.hooks.push(mapper => {\n\t\t\t\t\t\tconst triggerPayloadPersister = new TriggerPayloadPersister(\n\t\t\t\t\t\t\tmapper,\n\t\t\t\t\t\t\tmapper.db.forSchema(systemSchema),\n\t\t\t\t\t\t\tproviders,\n\t\t\t\t\t\t\tproject.slug,\n\t\t\t\t\t\t\tstage.id,\n\t\t\t\t\t\t\tschemaMeta.id,\n\t\t\t\t\t\t\tmapper.identityId,\n\t\t\t\t\t\t\tuserInfo,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst triggerPayloadBuilder = new TriggerPayloadBuilder(mapper)\n\t\t\t\t\t\tconst payloadManager = new TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister)\n\t\t\t\t\t\tconst changesFetcher = new TriggerIndirectChangesFetcher(schema.model, mapper, whereBuilder, joinBuilder, pathFactory)\n\t\t\t\t\t\tconst listenersStore = this.listenerStoreProvider.getListenerStore(schema)\n\t\t\t\t\t\tconst triggerHandler = new TriggerHandler(payloadManager, listenersStore, changesFetcher)\n\t\t\t\t\t\ttriggerHandler.attach(mapper.eventManager)\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n}\n"],"names":["TriggerPayloadPersister","TriggerPayloadBuilder","TriggerPayloadManager","TriggerIndirectChangesFetcher","TriggerHandler"],"mappings":";;;;;;;;AAMO,MAAM,qCAAqC;AAAA,EACjD,YACkB,uBAChB;AADgB,SAAA,wBAAA;AAAA,EAElB;AAAA,EAEA,SAAiC;AAChC,WAAO,CAAA,YAAW;AACjB,aAAO,QAAQ;AAAA,QACd;AAAA,QACA,CAAC,eAAe,EAAE,cAAc,QAAQ,aAAa,cAAc,WAAW,OAAO,SAAS,YAAY,aAAa,eAAe;AACrI,wBAAc,MAAM,KAAK,CAAA,WAAU;AAClC,kBAAM,0BAA0B,IAAIA,wBAAAA;AAAAA,cACnC;AAAA,cACA,OAAO,GAAG,UAAU,YAAY;AAAA,cAChC;AAAA,cACA,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP;AAAA,YAAA;AAED,kBAAM,wBAAwB,IAAIC,sBAAAA,sBAAsB,MAAM;AAC9D,kBAAM,iBAAiB,IAAIC,4CAAsB,uBAAuB,uBAAuB;AAC/F,kBAAM,iBAAiB,IAAIC,8BAAAA,8BAA8B,OAAO,OAAO,QAAQ,cAAc,aAAa,WAAW;AACrH,kBAAM,iBAAiB,KAAK,sBAAsB,iBAAiB,MAAM;AACzE,kBAAM,iBAAiB,IAAIC,eAAAA,eAAe,gBAAgB,gBAAgB,cAAc;AACxF,2BAAe,OAAO,OAAO,YAAY;AAAA,UAC1C,CAAC;AAAA,QACF;AAAA,MAAA;AAAA,IAEF;AAAA,EACD;AACD;;"}
1
+ {"version":3,"file":"ActionsExecutionContainerHookFactory.cjs","sources":["../../../../packages/engine-actions/src/ActionsExecutionContainerHookFactory.ts"],"sourcesContent":["import { TriggerHandler, TriggerIndirectChangesFetcher, TriggerPayloadManager } from './triggers/index.js'\nimport { ListenerStoreProvider } from './ListenerStoreProvider.js'\nimport { TriggerPayloadBuilder } from './triggers/TriggerPayloadBuilder.js'\nimport { TriggerPayloadPersister } from './triggers/TriggerPayloadPersister.js'\nimport { ExecutionContainerHook } from '@contember/engine-content-api'\n\nexport class ActionsExecutionContainerHookFactory {\n\tconstructor(\n\t\tprivate readonly listenerStoreProvider: ListenerStoreProvider,\n\t) {\n\t}\n\n\tcreate(): ExecutionContainerHook {\n\t\treturn builder => {\n\t\t\treturn builder.setupService(\n\t\t\t\t'mapperFactory',\n\t\t\t\t(\n\t\t\t\t\tmapperFactory,\n\t\t\t\t\t{ whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo, triggeredActionsCollector },\n\t\t\t\t) => {\n\t\t\t\t\tmapperFactory.hooks.push(mapper => {\n\t\t\t\t\t\tconst triggerPayloadPersister = new TriggerPayloadPersister(\n\t\t\t\t\t\t\tmapper,\n\t\t\t\t\t\t\tmapper.db.forSchema(systemSchema),\n\t\t\t\t\t\t\tproviders,\n\t\t\t\t\t\t\tproject.slug,\n\t\t\t\t\t\t\tstage.id,\n\t\t\t\t\t\t\tschemaMeta.id,\n\t\t\t\t\t\t\tmapper.identityId,\n\t\t\t\t\t\t\tuserInfo,\n\t\t\t\t\t\t\ttriggeredActionsCollector,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst triggerPayloadBuilder = new TriggerPayloadBuilder(mapper)\n\t\t\t\t\t\tconst payloadManager = new TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister)\n\t\t\t\t\t\tconst changesFetcher = new TriggerIndirectChangesFetcher(schema.model, mapper, whereBuilder, joinBuilder, pathFactory)\n\t\t\t\t\t\tconst listenersStore = this.listenerStoreProvider.getListenerStore(schema)\n\t\t\t\t\t\tconst triggerHandler = new TriggerHandler(payloadManager, listenersStore, changesFetcher)\n\t\t\t\t\t\ttriggerHandler.attach(mapper.eventManager)\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n}\n"],"names":["TriggerPayloadPersister","TriggerPayloadBuilder","TriggerPayloadManager","TriggerIndirectChangesFetcher","TriggerHandler"],"mappings":";;;;;;;;AAMO,MAAM,qCAAqC;AAAA,EACjD,YACkB,uBAChB;AADgB,SAAA,wBAAA;AAAA,EAElB;AAAA,EAEA,SAAiC;AAChC,WAAO,CAAA,YAAW;AACjB,aAAO,QAAQ;AAAA,QACd;AAAA,QACA,CACC,eACA,EAAE,cAAc,QAAQ,aAAa,cAAc,WAAW,OAAO,SAAS,YAAY,aAAa,UAAU,gCAC7G;AACJ,wBAAc,MAAM,KAAK,CAAA,WAAU;AAClC,kBAAM,0BAA0B,IAAIA,wBAAAA;AAAAA,cACnC;AAAA,cACA,OAAO,GAAG,UAAU,YAAY;AAAA,cAChC;AAAA,cACA,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YAAA;AAED,kBAAM,wBAAwB,IAAIC,sBAAAA,sBAAsB,MAAM;AAC9D,kBAAM,iBAAiB,IAAIC,4CAAsB,uBAAuB,uBAAuB;AAC/F,kBAAM,iBAAiB,IAAIC,8BAAAA,8BAA8B,OAAO,OAAO,QAAQ,cAAc,aAAa,WAAW;AACrH,kBAAM,iBAAiB,KAAK,sBAAsB,iBAAiB,MAAM;AACzE,kBAAM,iBAAiB,IAAIC,eAAAA,eAAe,gBAAgB,gBAAgB,cAAc;AACxF,2BAAe,OAAO,OAAO,YAAY;AAAA,UAC1C,CAAC;AAAA,QACF;AAAA,MAAA;AAAA,IAEF;AAAA,EACD;AACD;;"}
@@ -12,7 +12,7 @@ class ActionsExecutionContainerHookFactory {
12
12
  return (builder) => {
13
13
  return builder.setupService(
14
14
  "mapperFactory",
15
- (mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo }) => {
15
+ (mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo, triggeredActionsCollector }) => {
16
16
  mapperFactory.hooks.push((mapper) => {
17
17
  const triggerPayloadPersister = new TriggerPayloadPersister(
18
18
  mapper,
@@ -22,7 +22,8 @@ class ActionsExecutionContainerHookFactory {
22
22
  stage.id,
23
23
  schemaMeta.id,
24
24
  mapper.identityId,
25
- userInfo
25
+ userInfo,
26
+ triggeredActionsCollector
26
27
  );
27
28
  const triggerPayloadBuilder = new TriggerPayloadBuilder(mapper);
28
29
  const payloadManager = new TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister);
@@ -1 +1 @@
1
- {"version":3,"file":"ActionsExecutionContainerHookFactory.js","sources":["../../../../packages/engine-actions/src/ActionsExecutionContainerHookFactory.ts"],"sourcesContent":["import { TriggerHandler, TriggerIndirectChangesFetcher, TriggerPayloadManager } from './triggers'\nimport { ListenerStoreProvider } from './ListenerStoreProvider'\nimport { TriggerPayloadBuilder } from './triggers/TriggerPayloadBuilder'\nimport { TriggerPayloadPersister } from './triggers/TriggerPayloadPersister'\nimport { ExecutionContainerHook } from '@contember/engine-content-api'\n\nexport class ActionsExecutionContainerHookFactory {\n\tconstructor(\n\t\tprivate readonly listenerStoreProvider: ListenerStoreProvider,\n\t) {\n\t}\n\n\tcreate(): ExecutionContainerHook {\n\t\treturn builder => {\n\t\t\treturn builder.setupService(\n\t\t\t\t'mapperFactory',\n\t\t\t\t(mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo }) => {\n\t\t\t\t\tmapperFactory.hooks.push(mapper => {\n\t\t\t\t\t\tconst triggerPayloadPersister = new TriggerPayloadPersister(\n\t\t\t\t\t\t\tmapper,\n\t\t\t\t\t\t\tmapper.db.forSchema(systemSchema),\n\t\t\t\t\t\t\tproviders,\n\t\t\t\t\t\t\tproject.slug,\n\t\t\t\t\t\t\tstage.id,\n\t\t\t\t\t\t\tschemaMeta.id,\n\t\t\t\t\t\t\tmapper.identityId,\n\t\t\t\t\t\t\tuserInfo,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst triggerPayloadBuilder = new TriggerPayloadBuilder(mapper)\n\t\t\t\t\t\tconst payloadManager = new TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister)\n\t\t\t\t\t\tconst changesFetcher = new TriggerIndirectChangesFetcher(schema.model, mapper, whereBuilder, joinBuilder, pathFactory)\n\t\t\t\t\t\tconst listenersStore = this.listenerStoreProvider.getListenerStore(schema)\n\t\t\t\t\t\tconst triggerHandler = new TriggerHandler(payloadManager, listenersStore, changesFetcher)\n\t\t\t\t\t\ttriggerHandler.attach(mapper.eventManager)\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,qCAAqC;AAAA,EACjD,YACkB,uBAChB;AADgB,SAAA,wBAAA;AAAA,EAElB;AAAA,EAEA,SAAiC;AAChC,WAAO,CAAA,YAAW;AACjB,aAAO,QAAQ;AAAA,QACd;AAAA,QACA,CAAC,eAAe,EAAE,cAAc,QAAQ,aAAa,cAAc,WAAW,OAAO,SAAS,YAAY,aAAa,eAAe;AACrI,wBAAc,MAAM,KAAK,CAAA,WAAU;AAClC,kBAAM,0BAA0B,IAAI;AAAA,cACnC;AAAA,cACA,OAAO,GAAG,UAAU,YAAY;AAAA,cAChC;AAAA,cACA,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP;AAAA,YAAA;AAED,kBAAM,wBAAwB,IAAI,sBAAsB,MAAM;AAC9D,kBAAM,iBAAiB,IAAI,sBAAsB,uBAAuB,uBAAuB;AAC/F,kBAAM,iBAAiB,IAAI,8BAA8B,OAAO,OAAO,QAAQ,cAAc,aAAa,WAAW;AACrH,kBAAM,iBAAiB,KAAK,sBAAsB,iBAAiB,MAAM;AACzE,kBAAM,iBAAiB,IAAI,eAAe,gBAAgB,gBAAgB,cAAc;AACxF,2BAAe,OAAO,OAAO,YAAY;AAAA,UAC1C,CAAC;AAAA,QACF;AAAA,MAAA;AAAA,IAEF;AAAA,EACD;AACD;"}
1
+ {"version":3,"file":"ActionsExecutionContainerHookFactory.js","sources":["../../../../packages/engine-actions/src/ActionsExecutionContainerHookFactory.ts"],"sourcesContent":["import { TriggerHandler, TriggerIndirectChangesFetcher, TriggerPayloadManager } from './triggers/index.js'\nimport { ListenerStoreProvider } from './ListenerStoreProvider.js'\nimport { TriggerPayloadBuilder } from './triggers/TriggerPayloadBuilder.js'\nimport { TriggerPayloadPersister } from './triggers/TriggerPayloadPersister.js'\nimport { ExecutionContainerHook } from '@contember/engine-content-api'\n\nexport class ActionsExecutionContainerHookFactory {\n\tconstructor(\n\t\tprivate readonly listenerStoreProvider: ListenerStoreProvider,\n\t) {\n\t}\n\n\tcreate(): ExecutionContainerHook {\n\t\treturn builder => {\n\t\t\treturn builder.setupService(\n\t\t\t\t'mapperFactory',\n\t\t\t\t(\n\t\t\t\t\tmapperFactory,\n\t\t\t\t\t{ whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta, joinBuilder, userInfo, triggeredActionsCollector },\n\t\t\t\t) => {\n\t\t\t\t\tmapperFactory.hooks.push(mapper => {\n\t\t\t\t\t\tconst triggerPayloadPersister = new TriggerPayloadPersister(\n\t\t\t\t\t\t\tmapper,\n\t\t\t\t\t\t\tmapper.db.forSchema(systemSchema),\n\t\t\t\t\t\t\tproviders,\n\t\t\t\t\t\t\tproject.slug,\n\t\t\t\t\t\t\tstage.id,\n\t\t\t\t\t\t\tschemaMeta.id,\n\t\t\t\t\t\t\tmapper.identityId,\n\t\t\t\t\t\t\tuserInfo,\n\t\t\t\t\t\t\ttriggeredActionsCollector,\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst triggerPayloadBuilder = new TriggerPayloadBuilder(mapper)\n\t\t\t\t\t\tconst payloadManager = new TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister)\n\t\t\t\t\t\tconst changesFetcher = new TriggerIndirectChangesFetcher(schema.model, mapper, whereBuilder, joinBuilder, pathFactory)\n\t\t\t\t\t\tconst listenersStore = this.listenerStoreProvider.getListenerStore(schema)\n\t\t\t\t\t\tconst triggerHandler = new TriggerHandler(payloadManager, listenersStore, changesFetcher)\n\t\t\t\t\t\ttriggerHandler.attach(mapper.eventManager)\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,qCAAqC;AAAA,EACjD,YACkB,uBAChB;AADgB,SAAA,wBAAA;AAAA,EAElB;AAAA,EAEA,SAAiC;AAChC,WAAO,CAAA,YAAW;AACjB,aAAO,QAAQ;AAAA,QACd;AAAA,QACA,CACC,eACA,EAAE,cAAc,QAAQ,aAAa,cAAc,WAAW,OAAO,SAAS,YAAY,aAAa,UAAU,gCAC7G;AACJ,wBAAc,MAAM,KAAK,CAAA,WAAU;AAClC,kBAAM,0BAA0B,IAAI;AAAA,cACnC;AAAA,cACA,OAAO,GAAG,UAAU,YAAY;AAAA,cAChC;AAAA,cACA,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YAAA;AAED,kBAAM,wBAAwB,IAAI,sBAAsB,MAAM;AAC9D,kBAAM,iBAAiB,IAAI,sBAAsB,uBAAuB,uBAAuB;AAC/F,kBAAM,iBAAiB,IAAI,8BAA8B,OAAO,OAAO,QAAQ,cAAc,aAAa,WAAW;AACrH,kBAAM,iBAAiB,KAAK,sBAAsB,iBAAiB,MAAM;AACzE,kBAAM,iBAAiB,IAAI,eAAe,gBAAgB,gBAAgB,cAAc;AACxF,2BAAe,OAAO,OAAO,YAAY;AAAA,UAC1C,CAAC;AAAA,QACF;AAAA,MAAA;AAAA,IAEF;AAAA,EACD;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListenerStoreProvider.cjs","sources":["../../../../packages/engine-actions/src/ListenerStoreProvider.ts"],"sourcesContent":["import { TriggerListenersFactory, TriggerListenersStore } from './triggers'\nimport { Schema } from '@contember/schema'\n\nexport class ListenerStoreProvider {\n\tprivate listenersStoreCache = new WeakMap<Schema, TriggerListenersStore>()\n\n\tpublic getListenerStore(schema: Schema): TriggerListenersStore {\n\t\tconst currentStore = this.listenersStoreCache.get(schema)\n\t\tif (currentStore) {\n\t\t\treturn currentStore\n\t\t}\n\t\tconst listenersFactory = new TriggerListenersFactory(schema)\n\t\tconst newStore = listenersFactory.create()\n\t\tthis.listenersStoreCache.set(schema, newStore)\n\t\treturn newStore\n\t}\n}\n"],"names":["TriggerListenersFactory"],"mappings":";;;;;;;;AAGO,MAAM,sBAAsB;AAAA,EAA5B,cAAA;AACN,kBAAA,MAAQ,2CAA0B,QAAA,CAAuC;AAAA,EAAA;AAAA,EAElE,iBAAiB,QAAuC;AAC9D,UAAM,eAAe,KAAK,oBAAoB,IAAI,MAAM;AACxD,QAAI,cAAc;AACjB,aAAO;AAAA,IACR;AACA,UAAM,mBAAmB,IAAIA,wBAAAA,wBAAwB,MAAM;AAC3D,UAAM,WAAW,iBAAiB,OAAA;AAClC,SAAK,oBAAoB,IAAI,QAAQ,QAAQ;AAC7C,WAAO;AAAA,EACR;AACD;;"}
1
+ {"version":3,"file":"ListenerStoreProvider.cjs","sources":["../../../../packages/engine-actions/src/ListenerStoreProvider.ts"],"sourcesContent":["import { TriggerListenersFactory, TriggerListenersStore } from './triggers/index.js'\nimport { Schema } from '@contember/schema'\n\nexport class ListenerStoreProvider {\n\tprivate listenersStoreCache = new WeakMap<Schema, TriggerListenersStore>()\n\n\tpublic getListenerStore(schema: Schema): TriggerListenersStore {\n\t\tconst currentStore = this.listenersStoreCache.get(schema)\n\t\tif (currentStore) {\n\t\t\treturn currentStore\n\t\t}\n\t\tconst listenersFactory = new TriggerListenersFactory(schema)\n\t\tconst newStore = listenersFactory.create()\n\t\tthis.listenersStoreCache.set(schema, newStore)\n\t\treturn newStore\n\t}\n}\n"],"names":["TriggerListenersFactory"],"mappings":";;;;;;;;AAGO,MAAM,sBAAsB;AAAA,EAA5B,cAAA;AACN,kBAAA,MAAQ,2CAA0B,QAAA,CAAuC;AAAA,EAAA;AAAA,EAElE,iBAAiB,QAAuC;AAC9D,UAAM,eAAe,KAAK,oBAAoB,IAAI,MAAM;AACxD,QAAI,cAAc;AACjB,aAAO;AAAA,IACR;AACA,UAAM,mBAAmB,IAAIA,wBAAAA,wBAAwB,MAAM;AAC3D,UAAM,WAAW,iBAAiB,OAAA;AAClC,SAAK,oBAAoB,IAAI,QAAQ,QAAQ;AAC7C,WAAO;AAAA,EACR;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListenerStoreProvider.js","sources":["../../../../packages/engine-actions/src/ListenerStoreProvider.ts"],"sourcesContent":["import { TriggerListenersFactory, TriggerListenersStore } from './triggers'\nimport { Schema } from '@contember/schema'\n\nexport class ListenerStoreProvider {\n\tprivate listenersStoreCache = new WeakMap<Schema, TriggerListenersStore>()\n\n\tpublic getListenerStore(schema: Schema): TriggerListenersStore {\n\t\tconst currentStore = this.listenersStoreCache.get(schema)\n\t\tif (currentStore) {\n\t\t\treturn currentStore\n\t\t}\n\t\tconst listenersFactory = new TriggerListenersFactory(schema)\n\t\tconst newStore = listenersFactory.create()\n\t\tthis.listenersStoreCache.set(schema, newStore)\n\t\treturn newStore\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAGO,MAAM,sBAAsB;AAAA,EAA5B,cAAA;AACN,kBAAA,MAAQ,2CAA0B,QAAA,CAAuC;AAAA,EAAA;AAAA,EAElE,iBAAiB,QAAuC;AAC9D,UAAM,eAAe,KAAK,oBAAoB,IAAI,MAAM;AACxD,QAAI,cAAc;AACjB,aAAO;AAAA,IACR;AACA,UAAM,mBAAmB,IAAI,wBAAwB,MAAM;AAC3D,UAAM,WAAW,iBAAiB,OAAA;AAClC,SAAK,oBAAoB,IAAI,QAAQ,QAAQ;AAC7C,WAAO;AAAA,EACR;AACD;"}
1
+ {"version":3,"file":"ListenerStoreProvider.js","sources":["../../../../packages/engine-actions/src/ListenerStoreProvider.ts"],"sourcesContent":["import { TriggerListenersFactory, TriggerListenersStore } from './triggers/index.js'\nimport { Schema } from '@contember/schema'\n\nexport class ListenerStoreProvider {\n\tprivate listenersStoreCache = new WeakMap<Schema, TriggerListenersStore>()\n\n\tpublic getListenerStore(schema: Schema): TriggerListenersStore {\n\t\tconst currentStore = this.listenersStoreCache.get(schema)\n\t\tif (currentStore) {\n\t\t\treturn currentStore\n\t\t}\n\t\tconst listenersFactory = new TriggerListenersFactory(schema)\n\t\tconst newStore = listenersFactory.create()\n\t\tthis.listenersStoreCache.set(schema, newStore)\n\t\treturn newStore\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAGO,MAAM,sBAAsB;AAAA,EAA5B,cAAA;AACN,kBAAA,MAAQ,2CAA0B,QAAA,CAAuC;AAAA,EAAA;AAAA,EAElE,iBAAiB,QAAuC;AAC9D,UAAM,eAAe,KAAK,oBAAoB,IAAI,MAAM;AACxD,QAAI,cAAc;AACjB,aAAO;AAAA,IACR;AACA,UAAM,mBAAmB,IAAI,wBAAwB,MAAM;AAC3D,UAAM,WAAW,iBAAiB,OAAA;AAClC,SAAK,oBAAoB,IAAI,QAAQ,QAAQ;AAC7C,WAAO;AAAA,EACR;AACD;"}