@contember/engine-actions 2.1.0-alpha.8 → 2.1.0-beta.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 (390) hide show
  1. package/CLAUDE.md +47 -0
  2. package/dist/development/index.cjs +45 -21
  3. package/dist/development/index.cjs.map +1 -1
  4. package/dist/development/index.js +45 -21
  5. package/dist/development/index.js.map +1 -1
  6. package/dist/development/src/ActionsExecutionContainerHookFactory.cjs +23 -11
  7. package/dist/development/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
  8. package/dist/development/src/ActionsExecutionContainerHookFactory.js +23 -11
  9. package/dist/development/src/ActionsExecutionContainerHookFactory.js.map +1 -1
  10. package/dist/development/src/ListenerStoreProvider.cjs.map +1 -1
  11. package/dist/development/src/ListenerStoreProvider.js.map +1 -1
  12. package/dist/development/src/authorization/ActionsAuthorizationActions.cjs +2 -0
  13. package/dist/development/src/authorization/ActionsAuthorizationActions.cjs.map +1 -1
  14. package/dist/development/src/authorization/ActionsAuthorizationActions.js +2 -0
  15. package/dist/development/src/authorization/ActionsAuthorizationActions.js.map +1 -1
  16. package/dist/development/src/authorization/ActionsPermissionsFactory.cjs.map +1 -1
  17. package/dist/development/src/authorization/ActionsPermissionsFactory.js.map +1 -1
  18. package/dist/development/src/dispatch/DispatchWorkerSupervisor.cjs +16 -14
  19. package/dist/development/src/dispatch/DispatchWorkerSupervisor.cjs.map +1 -1
  20. package/dist/development/src/dispatch/DispatchWorkerSupervisor.js +16 -14
  21. package/dist/development/src/dispatch/DispatchWorkerSupervisor.js.map +1 -1
  22. package/dist/development/src/dispatch/EventDispatcher.cjs.map +1 -1
  23. package/dist/development/src/dispatch/EventDispatcher.js.map +1 -1
  24. package/dist/development/src/dispatch/EventsRepository.cjs +33 -15
  25. package/dist/development/src/dispatch/EventsRepository.cjs.map +1 -1
  26. package/dist/development/src/dispatch/EventsRepository.js +33 -15
  27. package/dist/development/src/dispatch/EventsRepository.js.map +1 -1
  28. package/dist/development/src/dispatch/ProjectDispatcher.cjs +3 -3
  29. package/dist/development/src/dispatch/ProjectDispatcher.cjs.map +1 -1
  30. package/dist/development/src/dispatch/ProjectDispatcher.js +2 -2
  31. package/dist/development/src/dispatch/ProjectDispatcher.js.map +1 -1
  32. package/dist/development/src/dispatch/TargetHandlerResolver.cjs.map +1 -1
  33. package/dist/development/src/dispatch/TargetHandlerResolver.js.map +1 -1
  34. package/dist/development/src/dispatch/WebhookFetcher.cjs.map +1 -1
  35. package/dist/development/src/dispatch/WebhookFetcher.js.map +1 -1
  36. package/dist/development/src/dispatch/WebhookTargetHandler.cjs +6 -1
  37. package/dist/development/src/dispatch/WebhookTargetHandler.cjs.map +1 -1
  38. package/dist/development/src/dispatch/WebhookTargetHandler.js +6 -1
  39. package/dist/development/src/dispatch/WebhookTargetHandler.js.map +1 -1
  40. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs +1 -0
  41. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
  42. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js +1 -0
  43. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
  44. package/dist/development/src/graphql/http/ActionsContextResolver.cjs +8 -11
  45. package/dist/development/src/graphql/http/ActionsContextResolver.cjs.map +1 -1
  46. package/dist/development/src/graphql/http/ActionsContextResolver.js +8 -11
  47. package/dist/development/src/graphql/http/ActionsContextResolver.js.map +1 -1
  48. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +1 -1
  49. package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +1 -1
  50. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.cjs +6 -3
  51. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +1 -1
  52. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.js +6 -3
  53. package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.js.map +1 -1
  54. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs +7 -2
  55. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
  56. package/dist/development/src/graphql/resolvers/ResolversFactory.js +8 -3
  57. package/dist/development/src/graphql/resolvers/ResolversFactory.js.map +1 -1
  58. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +1 -1
  59. package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +1 -1
  60. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs +21 -0
  61. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -0
  62. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.js +21 -0
  63. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -0
  64. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +1 -1
  65. package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +1 -1
  66. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs +19 -0
  67. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -0
  68. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.js +19 -0
  69. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -0
  70. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs +14 -1
  71. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  72. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js +14 -1
  73. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
  74. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +1 -1
  75. package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.js.map +1 -1
  76. package/dist/development/src/graphql/schema/actions.graphql.cjs +18 -4
  77. package/dist/development/src/graphql/schema/actions.graphql.cjs.map +1 -1
  78. package/dist/development/src/graphql/schema/actions.graphql.js +18 -4
  79. package/dist/development/src/graphql/schema/actions.graphql.js.map +1 -1
  80. package/dist/development/src/migrations/2023-03-10-145000-actions-variables.cjs.map +1 -1
  81. package/dist/development/src/migrations/2023-03-10-145000-actions-variables.js.map +1 -1
  82. package/dist/development/src/migrations/2025-05-28-160000-action-event-user.cjs +16 -0
  83. package/dist/development/src/migrations/2025-05-28-160000-action-event-user.cjs.map +1 -0
  84. package/dist/development/src/migrations/2025-05-28-160000-action-event-user.js +17 -0
  85. package/dist/development/src/migrations/2025-05-28-160000-action-event-user.js.map +1 -0
  86. package/dist/development/src/migrations/index.cjs +3 -1
  87. package/dist/development/src/migrations/index.cjs.map +1 -1
  88. package/dist/development/src/migrations/index.js +3 -1
  89. package/dist/development/src/migrations/index.js.map +1 -1
  90. package/dist/development/src/migrations/snapshot.cjs +5 -2
  91. package/dist/development/src/migrations/snapshot.cjs.map +1 -1
  92. package/dist/development/src/migrations/snapshot.js +5 -2
  93. package/dist/development/src/migrations/snapshot.js.map +1 -1
  94. package/dist/development/src/model/EventByIdQuery.cjs +17 -0
  95. package/dist/development/src/model/EventByIdQuery.cjs.map +1 -0
  96. package/dist/development/src/model/EventByIdQuery.js +17 -0
  97. package/dist/development/src/model/EventByIdQuery.js.map +1 -0
  98. package/dist/development/src/model/EventsInProcessingQuery.cjs.map +1 -1
  99. package/dist/development/src/model/EventsInProcessingQuery.js.map +1 -1
  100. package/dist/development/src/model/EventsToProcessQuery.cjs.map +1 -1
  101. package/dist/development/src/model/EventsToProcessQuery.js.map +1 -1
  102. package/dist/development/src/model/EventsToProcessSpecification.cjs.map +1 -1
  103. package/dist/development/src/model/EventsToProcessSpecification.js.map +1 -1
  104. package/dist/development/src/model/FailedEventsQuery.cjs.map +1 -1
  105. package/dist/development/src/model/FailedEventsQuery.js.map +1 -1
  106. package/dist/development/src/model/SetVariableCommand.cjs.map +1 -1
  107. package/dist/development/src/model/SetVariableCommand.js.map +1 -1
  108. package/dist/development/src/model/VariablesManager.cjs.map +1 -1
  109. package/dist/development/src/model/VariablesManager.js.map +1 -1
  110. package/dist/development/src/model/VariablesQuery.cjs.map +1 -1
  111. package/dist/development/src/model/VariablesQuery.js.map +1 -1
  112. package/dist/development/src/triggers/TriggerHandler.cjs +17 -14
  113. package/dist/development/src/triggers/TriggerHandler.cjs.map +1 -1
  114. package/dist/development/src/triggers/TriggerHandler.js +17 -14
  115. package/dist/development/src/triggers/TriggerHandler.js.map +1 -1
  116. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.cjs +44 -2
  117. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.cjs.map +1 -1
  118. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.js +44 -2
  119. package/dist/development/src/triggers/TriggerIndirectChangesFetcher.js.map +1 -1
  120. package/dist/development/src/triggers/TriggerListenersBuilder.cjs.map +1 -1
  121. package/dist/development/src/triggers/TriggerListenersBuilder.js.map +1 -1
  122. package/dist/development/src/triggers/TriggerListenersFactory.cjs.map +1 -1
  123. package/dist/development/src/triggers/TriggerListenersFactory.js.map +1 -1
  124. package/dist/development/src/triggers/TriggerListenersStore.cjs.map +1 -1
  125. package/dist/development/src/triggers/TriggerListenersStore.js.map +1 -1
  126. package/dist/development/src/triggers/TriggerPayloadBuilder.cjs +45 -16
  127. package/dist/development/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
  128. package/dist/development/src/triggers/TriggerPayloadBuilder.js +45 -16
  129. package/dist/development/src/triggers/TriggerPayloadBuilder.js.map +1 -1
  130. package/dist/development/src/triggers/TriggerPayloadManager.cjs.map +1 -1
  131. package/dist/development/src/triggers/TriggerPayloadManager.js.map +1 -1
  132. package/dist/development/src/triggers/TriggerPayloadPersister.cjs +9 -5
  133. package/dist/development/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
  134. package/dist/development/src/triggers/TriggerPayloadPersister.js +9 -5
  135. package/dist/development/src/triggers/TriggerPayloadPersister.js.map +1 -1
  136. package/dist/development/src/utils/assertNever.cjs.map +1 -1
  137. package/dist/development/src/utils/assertNever.js.map +1 -1
  138. package/dist/development/src/utils/map.cjs.map +1 -1
  139. package/dist/development/src/utils/map.js.map +1 -1
  140. package/dist/development/src/utils/notifyChannel.cjs +9 -0
  141. package/dist/development/src/utils/notifyChannel.cjs.map +1 -0
  142. package/dist/development/src/utils/notifyChannel.js +9 -0
  143. package/dist/development/src/utils/notifyChannel.js.map +1 -0
  144. package/dist/production/index.cjs +45 -21
  145. package/dist/production/index.cjs.map +1 -1
  146. package/dist/production/index.js +45 -21
  147. package/dist/production/index.js.map +1 -1
  148. package/dist/production/src/ActionsExecutionContainerHookFactory.cjs +23 -11
  149. package/dist/production/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
  150. package/dist/production/src/ActionsExecutionContainerHookFactory.js +23 -11
  151. package/dist/production/src/ActionsExecutionContainerHookFactory.js.map +1 -1
  152. package/dist/production/src/ListenerStoreProvider.cjs.map +1 -1
  153. package/dist/production/src/ListenerStoreProvider.js.map +1 -1
  154. package/dist/production/src/authorization/ActionsAuthorizationActions.cjs +2 -0
  155. package/dist/production/src/authorization/ActionsAuthorizationActions.cjs.map +1 -1
  156. package/dist/production/src/authorization/ActionsAuthorizationActions.js +2 -0
  157. package/dist/production/src/authorization/ActionsAuthorizationActions.js.map +1 -1
  158. package/dist/production/src/authorization/ActionsPermissionsFactory.cjs.map +1 -1
  159. package/dist/production/src/authorization/ActionsPermissionsFactory.js.map +1 -1
  160. package/dist/production/src/dispatch/DispatchWorkerSupervisor.cjs +16 -14
  161. package/dist/production/src/dispatch/DispatchWorkerSupervisor.cjs.map +1 -1
  162. package/dist/production/src/dispatch/DispatchWorkerSupervisor.js +16 -14
  163. package/dist/production/src/dispatch/DispatchWorkerSupervisor.js.map +1 -1
  164. package/dist/production/src/dispatch/EventDispatcher.cjs.map +1 -1
  165. package/dist/production/src/dispatch/EventDispatcher.js.map +1 -1
  166. package/dist/production/src/dispatch/EventsRepository.cjs +33 -15
  167. package/dist/production/src/dispatch/EventsRepository.cjs.map +1 -1
  168. package/dist/production/src/dispatch/EventsRepository.js +33 -15
  169. package/dist/production/src/dispatch/EventsRepository.js.map +1 -1
  170. package/dist/production/src/dispatch/ProjectDispatcher.cjs +3 -3
  171. package/dist/production/src/dispatch/ProjectDispatcher.cjs.map +1 -1
  172. package/dist/production/src/dispatch/ProjectDispatcher.js +2 -2
  173. package/dist/production/src/dispatch/ProjectDispatcher.js.map +1 -1
  174. package/dist/production/src/dispatch/TargetHandlerResolver.cjs.map +1 -1
  175. package/dist/production/src/dispatch/TargetHandlerResolver.js.map +1 -1
  176. package/dist/production/src/dispatch/WebhookFetcher.cjs.map +1 -1
  177. package/dist/production/src/dispatch/WebhookFetcher.js.map +1 -1
  178. package/dist/production/src/dispatch/WebhookTargetHandler.cjs +6 -1
  179. package/dist/production/src/dispatch/WebhookTargetHandler.cjs.map +1 -1
  180. package/dist/production/src/dispatch/WebhookTargetHandler.js +6 -1
  181. package/dist/production/src/dispatch/WebhookTargetHandler.js.map +1 -1
  182. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs +1 -0
  183. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
  184. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js +1 -0
  185. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
  186. package/dist/production/src/graphql/http/ActionsContextResolver.cjs +8 -11
  187. package/dist/production/src/graphql/http/ActionsContextResolver.cjs.map +1 -1
  188. package/dist/production/src/graphql/http/ActionsContextResolver.js +8 -11
  189. package/dist/production/src/graphql/http/ActionsContextResolver.js.map +1 -1
  190. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +1 -1
  191. package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +1 -1
  192. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.cjs +6 -3
  193. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +1 -1
  194. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.js +6 -3
  195. package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.js.map +1 -1
  196. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs +7 -2
  197. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
  198. package/dist/production/src/graphql/resolvers/ResolversFactory.js +8 -3
  199. package/dist/production/src/graphql/resolvers/ResolversFactory.js.map +1 -1
  200. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +1 -1
  201. package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +1 -1
  202. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs +21 -0
  203. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -0
  204. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.js +21 -0
  205. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -0
  206. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +1 -1
  207. package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +1 -1
  208. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs +19 -0
  209. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -0
  210. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.js +19 -0
  211. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -0
  212. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs +14 -1
  213. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  214. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js +14 -1
  215. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
  216. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +1 -1
  217. package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.js.map +1 -1
  218. package/dist/production/src/graphql/schema/actions.graphql.cjs +18 -4
  219. package/dist/production/src/graphql/schema/actions.graphql.cjs.map +1 -1
  220. package/dist/production/src/graphql/schema/actions.graphql.js +18 -4
  221. package/dist/production/src/graphql/schema/actions.graphql.js.map +1 -1
  222. package/dist/production/src/migrations/2023-03-10-145000-actions-variables.cjs.map +1 -1
  223. package/dist/production/src/migrations/2023-03-10-145000-actions-variables.js.map +1 -1
  224. package/dist/production/src/migrations/2025-05-28-160000-action-event-user.cjs +16 -0
  225. package/dist/production/src/migrations/2025-05-28-160000-action-event-user.cjs.map +1 -0
  226. package/dist/production/src/migrations/2025-05-28-160000-action-event-user.js +17 -0
  227. package/dist/production/src/migrations/2025-05-28-160000-action-event-user.js.map +1 -0
  228. package/dist/production/src/migrations/index.cjs +3 -1
  229. package/dist/production/src/migrations/index.cjs.map +1 -1
  230. package/dist/production/src/migrations/index.js +3 -1
  231. package/dist/production/src/migrations/index.js.map +1 -1
  232. package/dist/production/src/migrations/snapshot.cjs +5 -2
  233. package/dist/production/src/migrations/snapshot.cjs.map +1 -1
  234. package/dist/production/src/migrations/snapshot.js +5 -2
  235. package/dist/production/src/migrations/snapshot.js.map +1 -1
  236. package/dist/production/src/model/EventByIdQuery.cjs +17 -0
  237. package/dist/production/src/model/EventByIdQuery.cjs.map +1 -0
  238. package/dist/production/src/model/EventByIdQuery.js +17 -0
  239. package/dist/production/src/model/EventByIdQuery.js.map +1 -0
  240. package/dist/production/src/model/EventsInProcessingQuery.cjs.map +1 -1
  241. package/dist/production/src/model/EventsInProcessingQuery.js.map +1 -1
  242. package/dist/production/src/model/EventsToProcessQuery.cjs.map +1 -1
  243. package/dist/production/src/model/EventsToProcessQuery.js.map +1 -1
  244. package/dist/production/src/model/EventsToProcessSpecification.cjs.map +1 -1
  245. package/dist/production/src/model/EventsToProcessSpecification.js.map +1 -1
  246. package/dist/production/src/model/FailedEventsQuery.cjs.map +1 -1
  247. package/dist/production/src/model/FailedEventsQuery.js.map +1 -1
  248. package/dist/production/src/model/SetVariableCommand.cjs.map +1 -1
  249. package/dist/production/src/model/SetVariableCommand.js.map +1 -1
  250. package/dist/production/src/model/VariablesManager.cjs.map +1 -1
  251. package/dist/production/src/model/VariablesManager.js.map +1 -1
  252. package/dist/production/src/model/VariablesQuery.cjs.map +1 -1
  253. package/dist/production/src/model/VariablesQuery.js.map +1 -1
  254. package/dist/production/src/triggers/TriggerHandler.cjs +17 -14
  255. package/dist/production/src/triggers/TriggerHandler.cjs.map +1 -1
  256. package/dist/production/src/triggers/TriggerHandler.js +17 -14
  257. package/dist/production/src/triggers/TriggerHandler.js.map +1 -1
  258. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.cjs +44 -2
  259. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.cjs.map +1 -1
  260. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.js +44 -2
  261. package/dist/production/src/triggers/TriggerIndirectChangesFetcher.js.map +1 -1
  262. package/dist/production/src/triggers/TriggerListenersBuilder.cjs.map +1 -1
  263. package/dist/production/src/triggers/TriggerListenersBuilder.js.map +1 -1
  264. package/dist/production/src/triggers/TriggerListenersFactory.cjs.map +1 -1
  265. package/dist/production/src/triggers/TriggerListenersFactory.js.map +1 -1
  266. package/dist/production/src/triggers/TriggerListenersStore.cjs.map +1 -1
  267. package/dist/production/src/triggers/TriggerListenersStore.js.map +1 -1
  268. package/dist/production/src/triggers/TriggerPayloadBuilder.cjs +45 -16
  269. package/dist/production/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
  270. package/dist/production/src/triggers/TriggerPayloadBuilder.js +45 -16
  271. package/dist/production/src/triggers/TriggerPayloadBuilder.js.map +1 -1
  272. package/dist/production/src/triggers/TriggerPayloadManager.cjs.map +1 -1
  273. package/dist/production/src/triggers/TriggerPayloadManager.js.map +1 -1
  274. package/dist/production/src/triggers/TriggerPayloadPersister.cjs +9 -5
  275. package/dist/production/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
  276. package/dist/production/src/triggers/TriggerPayloadPersister.js +9 -5
  277. package/dist/production/src/triggers/TriggerPayloadPersister.js.map +1 -1
  278. package/dist/production/src/utils/assertNever.cjs.map +1 -1
  279. package/dist/production/src/utils/assertNever.js.map +1 -1
  280. package/dist/production/src/utils/map.cjs.map +1 -1
  281. package/dist/production/src/utils/map.js.map +1 -1
  282. package/dist/production/src/utils/notifyChannel.cjs +9 -0
  283. package/dist/production/src/utils/notifyChannel.cjs.map +1 -0
  284. package/dist/production/src/utils/notifyChannel.js +9 -0
  285. package/dist/production/src/utils/notifyChannel.js.map +1 -0
  286. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  287. package/dist/types/ActionsExecutionContainerHookFactory.d.ts.map +1 -1
  288. package/dist/types/authorization/ActionsAuthorizationActions.d.ts +10 -0
  289. package/dist/types/authorization/ActionsAuthorizationActions.d.ts.map +1 -1
  290. package/dist/types/dispatch/DispatchWorkerSupervisor.d.ts.map +1 -1
  291. package/dist/types/dispatch/EventDispatcher.d.ts.map +1 -1
  292. package/dist/types/dispatch/EventsRepository.d.ts +2 -1
  293. package/dist/types/dispatch/EventsRepository.d.ts.map +1 -1
  294. package/dist/types/dispatch/ProjectDispatcher.d.ts.map +1 -1
  295. package/dist/types/dispatch/WebhookTargetHandler.d.ts.map +1 -1
  296. package/dist/types/dispatch/types.d.ts +1 -1
  297. package/dist/types/dispatch/types.d.ts.map +1 -1
  298. package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts.map +1 -1
  299. package/dist/types/graphql/http/ActionsContextResolver.d.ts.map +1 -1
  300. package/dist/types/graphql/http/ActionsGraphQLHandlerFactory.d.ts.map +1 -1
  301. package/dist/types/graphql/http/ActionsWebsocketControllerFactory.d.ts.map +1 -1
  302. package/dist/types/graphql/resolvers/ActionsContext.d.ts +3 -0
  303. package/dist/types/graphql/resolvers/ActionsContext.d.ts.map +1 -1
  304. package/dist/types/graphql/resolvers/ResolversFactory.d.ts +4 -2
  305. package/dist/types/graphql/resolvers/ResolversFactory.d.ts.map +1 -1
  306. package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts +11 -0
  307. package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts.map +1 -0
  308. package/dist/types/graphql/resolvers/mutation/SetVariablesMutationResolver.d.ts.map +1 -1
  309. package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts +11 -0
  310. package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts.map +1 -0
  311. package/dist/types/graphql/resolvers/mutation/index.d.ts +2 -0
  312. package/dist/types/graphql/resolvers/mutation/index.d.ts.map +1 -1
  313. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts +3 -0
  314. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts.map +1 -1
  315. package/dist/types/graphql/resolvers/query/VariablesQueryResolver.d.ts.map +1 -1
  316. package/dist/types/graphql/schema/actions.graphql.d.ts.map +1 -1
  317. package/dist/types/graphql/schema/index.d.ts +45 -2
  318. package/dist/types/graphql/schema/index.d.ts.map +1 -1
  319. package/dist/types/index.d.ts +1 -1
  320. package/dist/types/index.d.ts.map +1 -1
  321. package/dist/types/migrations/2023-03-10-145000-actions-variables.d.ts.map +1 -1
  322. package/dist/types/migrations/2025-05-28-160000-action-event-user.d.ts +3 -0
  323. package/dist/types/migrations/2025-05-28-160000-action-event-user.d.ts.map +1 -0
  324. package/dist/types/migrations/index.d.ts.map +1 -1
  325. package/dist/types/migrations/snapshot.d.ts.map +1 -1
  326. package/dist/types/model/EventByIdQuery.d.ts +8 -0
  327. package/dist/types/model/EventByIdQuery.d.ts.map +1 -0
  328. package/dist/types/model/EventsToProcessSpecification.d.ts.map +1 -1
  329. package/dist/types/model/SetVariableCommand.d.ts.map +1 -1
  330. package/dist/types/model/types.d.ts +3 -0
  331. package/dist/types/model/types.d.ts.map +1 -1
  332. package/dist/types/triggers/TriggerHandler.d.ts.map +1 -1
  333. package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts +11 -3
  334. package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts.map +1 -1
  335. package/dist/types/triggers/TriggerListeners.d.ts.map +1 -1
  336. package/dist/types/triggers/TriggerListenersBuilder.d.ts.map +1 -1
  337. package/dist/types/triggers/TriggerListenersStore.d.ts +2 -2
  338. package/dist/types/triggers/TriggerListenersStore.d.ts.map +1 -1
  339. package/dist/types/triggers/TriggerPayloadBuilder.d.ts.map +1 -1
  340. package/dist/types/triggers/TriggerPayloadManager.d.ts +2 -1
  341. package/dist/types/triggers/TriggerPayloadManager.d.ts.map +1 -1
  342. package/dist/types/triggers/TriggerPayloadPersister.d.ts +7 -3
  343. package/dist/types/triggers/TriggerPayloadPersister.d.ts.map +1 -1
  344. package/dist/types/tsconfig.tsbuildinfo +1 -1
  345. package/dist/types/utils/notifyChannel.d.ts +4 -0
  346. package/dist/types/utils/notifyChannel.d.ts.map +1 -0
  347. package/graphql.codegen.yml +2 -2
  348. package/package.json +26 -21
  349. package/src/ActionsExecutionContainerHookFactory.ts +23 -11
  350. package/src/authorization/ActionsAuthorizationActions.ts +2 -0
  351. package/src/dispatch/DispatchWorkerSupervisor.ts +17 -16
  352. package/src/dispatch/EventDispatcher.ts +0 -2
  353. package/src/dispatch/EventsRepository.ts +63 -43
  354. package/src/dispatch/ProjectDispatcher.ts +6 -11
  355. package/src/dispatch/WebhookTargetHandler.ts +18 -9
  356. package/src/dispatch/types.ts +1 -2
  357. package/src/graphql/http/ActionsApiMiddlewareFactory.ts +7 -5
  358. package/src/graphql/http/ActionsContextResolver.ts +1 -2
  359. package/src/graphql/http/ActionsGraphQLHandlerFactory.ts +0 -1
  360. package/src/graphql/http/ActionsWebsocketControllerFactory.ts +7 -5
  361. package/src/graphql/resolvers/ActionsContext.ts +1 -0
  362. package/src/graphql/resolvers/ResolversFactory.ts +9 -2
  363. package/src/graphql/resolvers/mutation/RetryEventMutationResolver.ts +22 -0
  364. package/src/graphql/resolvers/mutation/SetVariablesMutationResolver.ts +0 -1
  365. package/src/graphql/resolvers/mutation/StopEventMutationResolver.ts +19 -0
  366. package/src/graphql/resolvers/mutation/index.ts +2 -0
  367. package/src/graphql/resolvers/query/EventsQueryResolver.ts +15 -8
  368. package/src/graphql/resolvers/query/VariablesQueryResolver.ts +0 -1
  369. package/src/graphql/schema/actions.graphql.ts +18 -4
  370. package/src/graphql/schema/index.ts +84 -30
  371. package/src/index.ts +55 -30
  372. package/src/migrations/2023-03-10-145000-actions-variables.ts +1 -1
  373. package/src/migrations/2025-05-28-160000-action-event-user.ts +16 -0
  374. package/src/migrations/index.ts +2 -0
  375. package/src/migrations/snapshot.ts +6 -3
  376. package/src/model/EventByIdQuery.ts +21 -0
  377. package/src/model/EventsToProcessSpecification.ts +9 -8
  378. package/src/model/SetVariableCommand.ts +0 -1
  379. package/src/model/types.ts +3 -0
  380. package/src/triggers/TriggerHandler.ts +16 -15
  381. package/src/triggers/TriggerIndirectChangesFetcher.ts +62 -3
  382. package/src/triggers/TriggerListeners.ts +1 -8
  383. package/src/triggers/TriggerListenersBuilder.ts +3 -6
  384. package/src/triggers/TriggerListenersStore.ts +2 -2
  385. package/src/triggers/TriggerPayloadBuilder.ts +43 -13
  386. package/src/triggers/TriggerPayloadManager.ts +2 -4
  387. package/src/triggers/TriggerPayloadPersister.ts +8 -3
  388. package/src/utils/notifyChannel.ts +6 -0
  389. package/tests/cases/unit/generator.test.ts +133 -136
  390. package/tests/cases/unit/webhookHandler.test.ts +47 -35
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Database = require("@contember/database");
4
+ class EventByIdQuery extends Database.DatabaseQuery {
5
+ constructor(id) {
6
+ super();
7
+ this.id = id;
8
+ }
9
+ async fetch(queryable) {
10
+ const result = await Database.SelectBuilder.create().from("actions_event").select("*").where({
11
+ id: this.id
12
+ }).getResult(queryable.db);
13
+ return this.fetchOneOrNull(result);
14
+ }
15
+ }
16
+ exports.EventByIdQuery = EventByIdQuery;
17
+ //# sourceMappingURL=EventByIdQuery.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventByIdQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/EventByIdQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\n\nexport class EventByIdQuery extends DatabaseQuery<EventRow | null> {\n\tconstructor(\n\t\tprivate readonly id: string,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow | null> {\n\t\tconst result = await SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where({\n\t\t\t\tid: this.id,\n\t\t\t})\n\t\t\t.getResult(queryable.db)\n\t\treturn this.fetchOneOrNull(result)\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder"],"mappings":";;;AAGO,MAAM,uBAAuBA,SAAAA,cAA+B;AAAA,EAClE,YACkB,IAChB;AACD,UAAA;AAFiB,SAAA,KAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAAwD;AACnE,UAAM,SAAS,MAAMC,uBAAc,SACjC,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM;AAAA,MACN,IAAI,KAAK;AAAA,IAAA,CACT,EACA,UAAU,UAAU,EAAE;AACxB,WAAO,KAAK,eAAe,MAAM;AAAA,EAClC;AACD;;"}
@@ -0,0 +1,17 @@
1
+ import { DatabaseQuery, SelectBuilder } from "@contember/database";
2
+ class EventByIdQuery extends DatabaseQuery {
3
+ constructor(id) {
4
+ super();
5
+ this.id = id;
6
+ }
7
+ async fetch(queryable) {
8
+ const result = await SelectBuilder.create().from("actions_event").select("*").where({
9
+ id: this.id
10
+ }).getResult(queryable.db);
11
+ return this.fetchOneOrNull(result);
12
+ }
13
+ }
14
+ export {
15
+ EventByIdQuery
16
+ };
17
+ //# sourceMappingURL=EventByIdQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventByIdQuery.js","sources":["../../../../../packages/engine-actions/src/model/EventByIdQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\n\nexport class EventByIdQuery extends DatabaseQuery<EventRow | null> {\n\tconstructor(\n\t\tprivate readonly id: string,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow | null> {\n\t\tconst result = await SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where({\n\t\t\t\tid: this.id,\n\t\t\t})\n\t\t\t.getResult(queryable.db)\n\t\treturn this.fetchOneOrNull(result)\n\t}\n}\n"],"names":[],"mappings":";AAGO,MAAM,uBAAuB,cAA+B;AAAA,EAClE,YACkB,IAChB;AACD,UAAA;AAFiB,SAAA,KAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAAwD;AACnE,UAAM,SAAS,MAAM,cAAc,SACjC,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM;AAAA,MACN,IAAI,KAAK;AAAA,IAAA,CACT,EACA,UAAU,UAAU,EAAE;AACxB,WAAO,KAAK,eAAe,MAAM;AAAA,EAClC;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsInProcessingQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/EventsInProcessingQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\n\nexport class EventsInProcessingQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where(it => it.in('state', ['processing']))\n\t\t\t.orderBy('last_state_change', 'asc')\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder"],"mappings":";;;AAIO,MAAM,gCAAgCA,SAAAA,cAA0B;AAAA,EACtE,YACkB,MAChB;AACK,UAAA;AAFW,SAAA,OAAA;AAAA,EAAA;AAAA,EAKlB,MAAM,MAAM,WAAmD;AAC9D,WAAOC,SAAAA,cAAc,OACnB,EAAA,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,CAAM,OAAA,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,EAC1C,QAAQ,qBAAqB,KAAK,EAClC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EAAA;AAE1B;;"}
1
+ {"version":3,"file":"EventsInProcessingQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/EventsInProcessingQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\n\nexport class EventsInProcessingQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where(it => it.in('state', ['processing']))\n\t\t\t.orderBy('last_state_change', 'asc')\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder"],"mappings":";;;AAIO,MAAM,gCAAgCA,SAAAA,cAA0B;AAAA,EACtE,YACkB,MAChB;AACD,UAAA;AAFiB,SAAA,OAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAAmD;AAC9D,WAAOC,SAAAA,cAAc,OAAA,EACnB,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,CAAA,OAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,EAC1C,QAAQ,qBAAqB,KAAK,EAClC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EACzB;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsInProcessingQuery.js","sources":["../../../../../packages/engine-actions/src/model/EventsInProcessingQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\n\nexport class EventsInProcessingQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where(it => it.in('state', ['processing']))\n\t\t\t.orderBy('last_state_change', 'asc')\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":[],"mappings":";AAIO,MAAM,gCAAgC,cAA0B;AAAA,EACtE,YACkB,MAChB;AACK,UAAA;AAFW,SAAA,OAAA;AAAA,EAAA;AAAA,EAKlB,MAAM,MAAM,WAAmD;AAC9D,WAAO,cAAc,OACnB,EAAA,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,CAAM,OAAA,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,EAC1C,QAAQ,qBAAqB,KAAK,EAClC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EAAA;AAE1B;"}
1
+ {"version":3,"file":"EventsInProcessingQuery.js","sources":["../../../../../packages/engine-actions/src/model/EventsInProcessingQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\n\nexport class EventsInProcessingQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where(it => it.in('state', ['processing']))\n\t\t\t.orderBy('last_state_change', 'asc')\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":[],"mappings":";AAIO,MAAM,gCAAgC,cAA0B;AAAA,EACtE,YACkB,MAChB;AACD,UAAA;AAFiB,SAAA,OAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAAmD;AAC9D,WAAO,cAAc,OAAA,EACnB,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,CAAA,OAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,EAC1C,QAAQ,qBAAqB,KAAK,EAClC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EACzB;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsToProcessQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/EventsToProcessQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\nimport { eventsToProcessSpecification } from './EventsToProcessSpecification'\n\nexport class EventsToProcessQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.match(eventsToProcessSpecification)\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder","eventsToProcessSpecification"],"mappings":";;;;AAKO,MAAM,6BAA6BA,SAAAA,cAA0B;AAAA,EACnE,YACkB,MAChB;AACK,UAAA;AAFW,SAAA,OAAA;AAAA,EAAA;AAAA,EAKlB,MAAM,MAAM,WAAmD;AACvD,WAAAC,uBAAc,SACnB,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAMC,6BAAAA,4BAA4B,EAClC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EAAA;AAE1B;;"}
1
+ {"version":3,"file":"EventsToProcessQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/EventsToProcessQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\nimport { eventsToProcessSpecification } from './EventsToProcessSpecification'\n\nexport class EventsToProcessQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.match(eventsToProcessSpecification)\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder","eventsToProcessSpecification"],"mappings":";;;;AAKO,MAAM,6BAA6BA,SAAAA,cAA0B;AAAA,EACnE,YACkB,MAChB;AACD,UAAA;AAFiB,SAAA,OAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAAmD;AAC9D,WAAOC,uBAAc,SACnB,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAMC,6BAAAA,4BAA4B,EAClC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EACzB;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsToProcessQuery.js","sources":["../../../../../packages/engine-actions/src/model/EventsToProcessQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\nimport { eventsToProcessSpecification } from './EventsToProcessSpecification'\n\nexport class EventsToProcessQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.match(eventsToProcessSpecification)\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,6BAA6B,cAA0B;AAAA,EACnE,YACkB,MAChB;AACK,UAAA;AAFW,SAAA,OAAA;AAAA,EAAA;AAAA,EAKlB,MAAM,MAAM,WAAmD;AACvD,WAAA,cAAc,SACnB,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,4BAA4B,EAClC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EAAA;AAE1B;"}
1
+ {"version":3,"file":"EventsToProcessQuery.js","sources":["../../../../../packages/engine-actions/src/model/EventsToProcessQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\nimport { eventsToProcessSpecification } from './EventsToProcessSpecification'\n\nexport class EventsToProcessQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.match(eventsToProcessSpecification)\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,6BAA6B,cAA0B;AAAA,EACnE,YACkB,MAChB;AACD,UAAA;AAFiB,SAAA,OAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAAmD;AAC9D,WAAO,cAAc,SACnB,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,4BAA4B,EAClC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EACzB;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsToProcessSpecification.cjs","sources":["../../../../../packages/engine-actions/src/model/EventsToProcessSpecification.ts"],"sourcesContent":["import { Operator, SelectBuilderSpecification } from '@contember/database'\n\n\nexport const eventsToProcessStateSpecification: SelectBuilderSpecification = qb => qb\n\t.where(it => it.in('state', ['retrying', 'created', 'processing']))\n\nexport const eventsToProcessSpecification: SelectBuilderSpecification = qb => qb\n\t.match(eventsToProcessStateSpecification)\n\t.where(it => it.compare('visible_at', Operator.lte, 'now'))\n\t.orderBy('priority', 'desc')\n\t.orderBy('visible_at')\n"],"names":["Operator"],"mappings":";;;AAGO,MAAM,oCAAgE,CAAA,OAAM,GACjF,MAAM,CAAM,OAAA,GAAG,GAAG,SAAS,CAAC,YAAY,WAAW,YAAY,CAAC,CAAC;AAEtD,MAAA,+BAA2D,QAAM,GAC5E,MAAM,iCAAiC,EACvC,MAAM,QAAM,GAAG,QAAQ,cAAcA,SAAS,SAAA,KAAK,KAAK,CAAC,EACzD,QAAQ,YAAY,MAAM,EAC1B,QAAQ,YAAY;;;"}
1
+ {"version":3,"file":"EventsToProcessSpecification.cjs","sources":["../../../../../packages/engine-actions/src/model/EventsToProcessSpecification.ts"],"sourcesContent":["import { Operator, SelectBuilderSpecification } from '@contember/database'\n\nexport const eventsToProcessStateSpecification: SelectBuilderSpecification = qb =>\n\tqb\n\t\t.where(it => it.in('state', ['retrying', 'created', 'processing']))\n\nexport const eventsToProcessSpecification: SelectBuilderSpecification = qb =>\n\tqb\n\t\t.match(eventsToProcessStateSpecification)\n\t\t.where(it => it.compare('visible_at', Operator.lte, 'now'))\n\t\t.orderBy('priority', 'desc')\n\t\t.orderBy('visible_at')\n"],"names":["Operator"],"mappings":";;;AAEO,MAAM,oCAAgE,CAAA,OAC5E,GACE,MAAM,CAAA,OAAM,GAAG,GAAG,SAAS,CAAC,YAAY,WAAW,YAAY,CAAC,CAAC;AAE7D,MAAM,+BAA2D,QACvE,GACE,MAAM,iCAAiC,EACvC,MAAM,QAAM,GAAG,QAAQ,cAAcA,SAAAA,SAAS,KAAK,KAAK,CAAC,EACzD,QAAQ,YAAY,MAAM,EAC1B,QAAQ,YAAY;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsToProcessSpecification.js","sources":["../../../../../packages/engine-actions/src/model/EventsToProcessSpecification.ts"],"sourcesContent":["import { Operator, SelectBuilderSpecification } from '@contember/database'\n\n\nexport const eventsToProcessStateSpecification: SelectBuilderSpecification = qb => qb\n\t.where(it => it.in('state', ['retrying', 'created', 'processing']))\n\nexport const eventsToProcessSpecification: SelectBuilderSpecification = qb => qb\n\t.match(eventsToProcessStateSpecification)\n\t.where(it => it.compare('visible_at', Operator.lte, 'now'))\n\t.orderBy('priority', 'desc')\n\t.orderBy('visible_at')\n"],"names":[],"mappings":";AAGO,MAAM,oCAAgE,CAAA,OAAM,GACjF,MAAM,CAAM,OAAA,GAAG,GAAG,SAAS,CAAC,YAAY,WAAW,YAAY,CAAC,CAAC;AAEtD,MAAA,+BAA2D,QAAM,GAC5E,MAAM,iCAAiC,EACvC,MAAM,QAAM,GAAG,QAAQ,cAAc,SAAS,KAAK,KAAK,CAAC,EACzD,QAAQ,YAAY,MAAM,EAC1B,QAAQ,YAAY;"}
1
+ {"version":3,"file":"EventsToProcessSpecification.js","sources":["../../../../../packages/engine-actions/src/model/EventsToProcessSpecification.ts"],"sourcesContent":["import { Operator, SelectBuilderSpecification } from '@contember/database'\n\nexport const eventsToProcessStateSpecification: SelectBuilderSpecification = qb =>\n\tqb\n\t\t.where(it => it.in('state', ['retrying', 'created', 'processing']))\n\nexport const eventsToProcessSpecification: SelectBuilderSpecification = qb =>\n\tqb\n\t\t.match(eventsToProcessStateSpecification)\n\t\t.where(it => it.compare('visible_at', Operator.lte, 'now'))\n\t\t.orderBy('priority', 'desc')\n\t\t.orderBy('visible_at')\n"],"names":[],"mappings":";AAEO,MAAM,oCAAgE,CAAA,OAC5E,GACE,MAAM,CAAA,OAAM,GAAG,GAAG,SAAS,CAAC,YAAY,WAAW,YAAY,CAAC,CAAC;AAE7D,MAAM,+BAA2D,QACvE,GACE,MAAM,iCAAiC,EACvC,MAAM,QAAM,GAAG,QAAQ,cAAc,SAAS,KAAK,KAAK,CAAC,EACzD,QAAQ,YAAY,MAAM,EAC1B,QAAQ,YAAY;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FailedEventsQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/FailedEventsQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\n\nexport class FailedEventsQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where(it => it.in('state', ['failed', 'retrying']))\n\t\t\t.orderBy('last_state_change', 'desc')\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder"],"mappings":";;;AAIO,MAAM,0BAA0BA,SAAAA,cAA0B;AAAA,EAChE,YACkB,MAChB;AACK,UAAA;AAFW,SAAA,OAAA;AAAA,EAAA;AAAA,EAKlB,MAAM,MAAM,WAAmD;AAC9D,WAAOC,SAAAA,cAAc,OAAiB,EACpC,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,QAAM,GAAG,GAAG,SAAS,CAAC,UAAU,UAAU,CAAC,CAAC,EAClD,QAAQ,qBAAqB,MAAM,EACnC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EAAA;AAE1B;;"}
1
+ {"version":3,"file":"FailedEventsQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/FailedEventsQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\n\nexport class FailedEventsQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where(it => it.in('state', ['failed', 'retrying']))\n\t\t\t.orderBy('last_state_change', 'desc')\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder"],"mappings":";;;AAIO,MAAM,0BAA0BA,SAAAA,cAA0B;AAAA,EAChE,YACkB,MAChB;AACD,UAAA;AAFiB,SAAA,OAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAAmD;AAC9D,WAAOC,SAAAA,cAAc,OAAA,EACnB,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,QAAM,GAAG,GAAG,SAAS,CAAC,UAAU,UAAU,CAAC,CAAC,EAClD,QAAQ,qBAAqB,MAAM,EACnC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EACzB;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FailedEventsQuery.js","sources":["../../../../../packages/engine-actions/src/model/FailedEventsQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\n\nexport class FailedEventsQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where(it => it.in('state', ['failed', 'retrying']))\n\t\t\t.orderBy('last_state_change', 'desc')\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":[],"mappings":";AAIO,MAAM,0BAA0B,cAA0B;AAAA,EAChE,YACkB,MAChB;AACK,UAAA;AAFW,SAAA,OAAA;AAAA,EAAA;AAAA,EAKlB,MAAM,MAAM,WAAmD;AAC9D,WAAO,cAAc,OAAiB,EACpC,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,QAAM,GAAG,GAAG,SAAS,CAAC,UAAU,UAAU,CAAC,CAAC,EAClD,QAAQ,qBAAqB,MAAM,EACnC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EAAA;AAE1B;"}
1
+ {"version":3,"file":"FailedEventsQuery.js","sources":["../../../../../packages/engine-actions/src/model/FailedEventsQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\nimport { EventArgs } from '../graphql/schema'\n\nexport class FailedEventsQuery extends DatabaseQuery<EventRow[]> {\n\tconstructor(\n\t\tprivate readonly args: EventArgs,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow[]> {\n\t\treturn SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where(it => it.in('state', ['failed', 'retrying']))\n\t\t\t.orderBy('last_state_change', 'desc')\n\t\t\t.limit(this.args.limit ?? 100, this.args.offset ?? 0)\n\t\t\t.getResult(queryable.db)\n\t}\n}\n"],"names":[],"mappings":";AAIO,MAAM,0BAA0B,cAA0B;AAAA,EAChE,YACkB,MAChB;AACD,UAAA;AAFiB,SAAA,OAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAAmD;AAC9D,WAAO,cAAc,OAAA,EACnB,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM,QAAM,GAAG,GAAG,SAAS,CAAC,UAAU,UAAU,CAAC,CAAC,EAClD,QAAQ,qBAAqB,MAAM,EACnC,MAAM,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,CAAC,EACnD,UAAU,UAAU,EAAE;AAAA,EACzB;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SetVariableCommand.cjs","sources":["../../../../../packages/engine-actions/src/model/SetVariableCommand.ts"],"sourcesContent":["import { Command } from '@contember/engine-system-api'\nimport { ConflictActionType, InsertBuilder, Literal } from '@contember/database'\n\nexport class SetVariableCommand implements Command<void> {\n\n\tconstructor(\n\t\tprivate readonly name: string,\n\t\tprivate readonly value: string,\n\t) {\n\t}\n\n\tasync execute({ providers, db }: Command.Args): Promise<void> {\n\t\tawait InsertBuilder.create()\n\t\t\t.into('actions_variable')\n\t\t\t.values({\n\t\t\t\tid: providers.uuid(),\n\t\t\t\tname: this.name,\n\t\t\t\tvalue: this.value,\n\t\t\t})\n\t\t\t.onConflict(ConflictActionType.update, ['name'], {\n\t\t\t\tvalue: this.value,\n\t\t\t\tupdated_at: new Literal('NOW()'),\n\t\t\t})\n\t\t\t.execute(db)\n\t}\n}\n"],"names":["InsertBuilder","ConflictActionType","Literal"],"mappings":";;;AAGO,MAAM,mBAA4C;AAAA,EAExD,YACkB,MACA,OAChB;AAFgB,SAAA,OAAA;AACA,SAAA,QAAA;AAAA,EAAA;AAAA,EAIlB,MAAM,QAAQ,EAAE,WAAW,MAAmC;AAC7D,UAAMA,SAAAA,cAAc,OAAO,EACzB,KAAK,kBAAkB,EACvB,OAAO;AAAA,MACP,IAAI,UAAU,KAAK;AAAA,MACnB,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IACZ,CAAA,EACA,WAAWC,SAAAA,mBAAmB,QAAQ,CAAC,MAAM,GAAG;AAAA,MAChD,OAAO,KAAK;AAAA,MACZ,YAAY,IAAIC,SAAAA,QAAQ,OAAO;AAAA,IAAA,CAC/B,EACA,QAAQ,EAAE;AAAA,EAAA;AAEd;;"}
1
+ {"version":3,"file":"SetVariableCommand.cjs","sources":["../../../../../packages/engine-actions/src/model/SetVariableCommand.ts"],"sourcesContent":["import { Command } from '@contember/engine-system-api'\nimport { ConflictActionType, InsertBuilder, Literal } from '@contember/database'\n\nexport class SetVariableCommand implements Command<void> {\n\tconstructor(\n\t\tprivate readonly name: string,\n\t\tprivate readonly value: string,\n\t) {\n\t}\n\n\tasync execute({ providers, db }: Command.Args): Promise<void> {\n\t\tawait InsertBuilder.create()\n\t\t\t.into('actions_variable')\n\t\t\t.values({\n\t\t\t\tid: providers.uuid(),\n\t\t\t\tname: this.name,\n\t\t\t\tvalue: this.value,\n\t\t\t})\n\t\t\t.onConflict(ConflictActionType.update, ['name'], {\n\t\t\t\tvalue: this.value,\n\t\t\t\tupdated_at: new Literal('NOW()'),\n\t\t\t})\n\t\t\t.execute(db)\n\t}\n}\n"],"names":["InsertBuilder","ConflictActionType","Literal"],"mappings":";;;AAGO,MAAM,mBAA4C;AAAA,EACxD,YACkB,MACA,OAChB;AAFgB,SAAA,OAAA;AACA,SAAA,QAAA;AAAA,EAElB;AAAA,EAEA,MAAM,QAAQ,EAAE,WAAW,MAAmC;AAC7D,UAAMA,SAAAA,cAAc,OAAA,EAClB,KAAK,kBAAkB,EACvB,OAAO;AAAA,MACP,IAAI,UAAU,KAAA;AAAA,MACd,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAAA,CACZ,EACA,WAAWC,SAAAA,mBAAmB,QAAQ,CAAC,MAAM,GAAG;AAAA,MAChD,OAAO,KAAK;AAAA,MACZ,YAAY,IAAIC,SAAAA,QAAQ,OAAO;AAAA,IAAA,CAC/B,EACA,QAAQ,EAAE;AAAA,EACb;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SetVariableCommand.js","sources":["../../../../../packages/engine-actions/src/model/SetVariableCommand.ts"],"sourcesContent":["import { Command } from '@contember/engine-system-api'\nimport { ConflictActionType, InsertBuilder, Literal } from '@contember/database'\n\nexport class SetVariableCommand implements Command<void> {\n\n\tconstructor(\n\t\tprivate readonly name: string,\n\t\tprivate readonly value: string,\n\t) {\n\t}\n\n\tasync execute({ providers, db }: Command.Args): Promise<void> {\n\t\tawait InsertBuilder.create()\n\t\t\t.into('actions_variable')\n\t\t\t.values({\n\t\t\t\tid: providers.uuid(),\n\t\t\t\tname: this.name,\n\t\t\t\tvalue: this.value,\n\t\t\t})\n\t\t\t.onConflict(ConflictActionType.update, ['name'], {\n\t\t\t\tvalue: this.value,\n\t\t\t\tupdated_at: new Literal('NOW()'),\n\t\t\t})\n\t\t\t.execute(db)\n\t}\n}\n"],"names":["InsertBuilder"],"mappings":";AAGO,MAAM,mBAA4C;AAAA,EAExD,YACkB,MACA,OAChB;AAFgB,SAAA,OAAA;AACA,SAAA,QAAA;AAAA,EAAA;AAAA,EAIlB,MAAM,QAAQ,EAAE,WAAW,MAAmC;AAC7D,UAAMA,gBAAc,OAAO,EACzB,KAAK,kBAAkB,EACvB,OAAO;AAAA,MACP,IAAI,UAAU,KAAK;AAAA,MACnB,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IACZ,CAAA,EACA,WAAW,mBAAmB,QAAQ,CAAC,MAAM,GAAG;AAAA,MAChD,OAAO,KAAK;AAAA,MACZ,YAAY,IAAI,QAAQ,OAAO;AAAA,IAAA,CAC/B,EACA,QAAQ,EAAE;AAAA,EAAA;AAEd;"}
1
+ {"version":3,"file":"SetVariableCommand.js","sources":["../../../../../packages/engine-actions/src/model/SetVariableCommand.ts"],"sourcesContent":["import { Command } from '@contember/engine-system-api'\nimport { ConflictActionType, InsertBuilder, Literal } from '@contember/database'\n\nexport class SetVariableCommand implements Command<void> {\n\tconstructor(\n\t\tprivate readonly name: string,\n\t\tprivate readonly value: string,\n\t) {\n\t}\n\n\tasync execute({ providers, db }: Command.Args): Promise<void> {\n\t\tawait InsertBuilder.create()\n\t\t\t.into('actions_variable')\n\t\t\t.values({\n\t\t\t\tid: providers.uuid(),\n\t\t\t\tname: this.name,\n\t\t\t\tvalue: this.value,\n\t\t\t})\n\t\t\t.onConflict(ConflictActionType.update, ['name'], {\n\t\t\t\tvalue: this.value,\n\t\t\t\tupdated_at: new Literal('NOW()'),\n\t\t\t})\n\t\t\t.execute(db)\n\t}\n}\n"],"names":["InsertBuilder"],"mappings":";AAGO,MAAM,mBAA4C;AAAA,EACxD,YACkB,MACA,OAChB;AAFgB,SAAA,OAAA;AACA,SAAA,QAAA;AAAA,EAElB;AAAA,EAEA,MAAM,QAAQ,EAAE,WAAW,MAAmC;AAC7D,UAAMA,gBAAc,OAAA,EAClB,KAAK,kBAAkB,EACvB,OAAO;AAAA,MACP,IAAI,UAAU,KAAA;AAAA,MACd,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAAA,CACZ,EACA,WAAW,mBAAmB,QAAQ,CAAC,MAAM,GAAG;AAAA,MAChD,OAAO,KAAK;AAAA,MACZ,YAAY,IAAI,QAAQ,OAAO;AAAA,IAAA,CAC/B,EACA,QAAQ,EAAE;AAAA,EACb;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariablesManager.cjs","sources":["../../../../../packages/engine-actions/src/model/VariablesManager.ts"],"sourcesContent":["import { DatabaseContext } from '@contember/engine-system-api'\nimport { VariablesQuery } from './VariablesQuery'\nimport { SetVariablesArgs } from '../graphql/schema'\nimport { DeleteBuilder } from '@contember/database'\nimport { SetVariableCommand } from './SetVariableCommand'\n\nexport type VariablesMap = Record<string, string>\n\nexport class VariablesManager {\n\tpublic async fetchVariables(db: DatabaseContext): Promise<VariablesMap> {\n\t\treturn Object.fromEntries((await db.queryHandler.fetch(new VariablesQuery())).map(it => [it.name, it.value]))\n\t}\n\n\tpublic async setVariables(db: DatabaseContext, args: SetVariablesArgs) {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst current = await this.fetchVariables(db)\n\t\t\tconst mode = args.mode ?? 'MERGE'\n\t\t\tconst inputVariables = Object.fromEntries(args.variables.map(it => [it.name, it.value]))\n\n\t\t\tlet newVariables: VariablesMap = {}\n\t\t\tswitch (mode) {\n\t\t\t\tcase 'APPEND_ONLY_MISSING':\n\t\t\t\t\tnewVariables = { ...inputVariables, ...current }\n\t\t\t\t\tbreak\n\t\t\t\tcase 'MERGE':\n\t\t\t\t\tnewVariables = { ...current, ...inputVariables }\n\t\t\t\t\tbreak\n\t\t\t\tcase 'SET':\n\t\t\t\t\tnewVariables = inputVariables\n\t\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tconst toDelete = Object.keys(current).filter(it => !(it in newVariables))\n\t\t\tif (toDelete.length > 0) {\n\t\t\t\tawait DeleteBuilder.create()\n\t\t\t\t\t.from('actions_variable')\n\t\t\t\t\t.where(it => it.in('name', toDelete))\n\t\t\t\t\t.execute(db.client)\n\t\t\t}\n\n\t\t\tfor (const [name, value] of Object.entries(newVariables)) {\n\t\t\t\tif (value === current[name]) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tawait db.commandBus.execute(new SetVariableCommand(name, value))\n\t\t\t}\n\t\t})\n\t}\n}\n"],"names":["VariablesQuery","db","DeleteBuilder","SetVariableCommand"],"mappings":";;;;;AAQO,MAAM,iBAAiB;AAAA,EAC7B,MAAa,eAAe,IAA4C;AACvE,WAAO,OAAO,aAAa,MAAM,GAAG,aAAa,MAAM,IAAIA,eAAe,eAAA,CAAC,GAAG,IAAI,QAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAAA,EAAA;AAAA,EAG7G,MAAa,aAAa,IAAqB,MAAwB;AACtE,WAAO,MAAM,GAAG,YAAY,OAAMC,QAAM;AACvC,YAAM,UAAU,MAAM,KAAK,eAAeA,GAAE;AACtC,YAAA,OAAO,KAAK,QAAQ;AAC1B,YAAM,iBAAiB,OAAO,YAAY,KAAK,UAAU,IAAI,CAAM,OAAA,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAEvF,UAAI,eAA6B,CAAC;AAClC,cAAQ,MAAM;AAAA,QACb,KAAK;AACJ,yBAAe,EAAE,GAAG,gBAAgB,GAAG,QAAQ;AAC/C;AAAA,QACD,KAAK;AACJ,yBAAe,EAAE,GAAG,SAAS,GAAG,eAAe;AAC/C;AAAA,QACD,KAAK;AACW,yBAAA;AACf;AAAA,MAAA;AAGI,YAAA,WAAW,OAAO,KAAK,OAAO,EAAE,OAAO,CAAA,OAAM,EAAE,MAAM,aAAa;AACpE,UAAA,SAAS,SAAS,GAAG;AACxB,cAAMC,SAAAA,cAAc,OAAO,EACzB,KAAK,kBAAkB,EACvB,MAAM,CAAA,OAAM,GAAG,GAAG,QAAQ,QAAQ,CAAC,EACnC,QAAQD,IAAG,MAAM;AAAA,MAAA;AAGpB,iBAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACrD,YAAA,UAAU,QAAQ,IAAI,GAAG;AAC5B;AAAA,QAAA;AAED,cAAMA,IAAG,WAAW,QAAQ,IAAIE,mBAAAA,mBAAmB,MAAM,KAAK,CAAC;AAAA,MAAA;AAAA,IAChE,CACA;AAAA,EAAA;AAEH;;"}
1
+ {"version":3,"file":"VariablesManager.cjs","sources":["../../../../../packages/engine-actions/src/model/VariablesManager.ts"],"sourcesContent":["import { DatabaseContext } from '@contember/engine-system-api'\nimport { VariablesQuery } from './VariablesQuery'\nimport { SetVariablesArgs } from '../graphql/schema'\nimport { DeleteBuilder } from '@contember/database'\nimport { SetVariableCommand } from './SetVariableCommand'\n\nexport type VariablesMap = Record<string, string>\n\nexport class VariablesManager {\n\tpublic async fetchVariables(db: DatabaseContext): Promise<VariablesMap> {\n\t\treturn Object.fromEntries((await db.queryHandler.fetch(new VariablesQuery())).map(it => [it.name, it.value]))\n\t}\n\n\tpublic async setVariables(db: DatabaseContext, args: SetVariablesArgs) {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst current = await this.fetchVariables(db)\n\t\t\tconst mode = args.mode ?? 'MERGE'\n\t\t\tconst inputVariables = Object.fromEntries(args.variables.map(it => [it.name, it.value]))\n\n\t\t\tlet newVariables: VariablesMap = {}\n\t\t\tswitch (mode) {\n\t\t\t\tcase 'APPEND_ONLY_MISSING':\n\t\t\t\t\tnewVariables = { ...inputVariables, ...current }\n\t\t\t\t\tbreak\n\t\t\t\tcase 'MERGE':\n\t\t\t\t\tnewVariables = { ...current, ...inputVariables }\n\t\t\t\t\tbreak\n\t\t\t\tcase 'SET':\n\t\t\t\t\tnewVariables = inputVariables\n\t\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tconst toDelete = Object.keys(current).filter(it => !(it in newVariables))\n\t\t\tif (toDelete.length > 0) {\n\t\t\t\tawait DeleteBuilder.create()\n\t\t\t\t\t.from('actions_variable')\n\t\t\t\t\t.where(it => it.in('name', toDelete))\n\t\t\t\t\t.execute(db.client)\n\t\t\t}\n\n\t\t\tfor (const [name, value] of Object.entries(newVariables)) {\n\t\t\t\tif (value === current[name]) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tawait db.commandBus.execute(new SetVariableCommand(name, value))\n\t\t\t}\n\t\t})\n\t}\n}\n"],"names":["VariablesQuery","db","DeleteBuilder","SetVariableCommand"],"mappings":";;;;;AAQO,MAAM,iBAAiB;AAAA,EAC7B,MAAa,eAAe,IAA4C;AACvE,WAAO,OAAO,aAAa,MAAM,GAAG,aAAa,MAAM,IAAIA,eAAAA,eAAA,CAAgB,GAAG,IAAI,QAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAAA,EAC7G;AAAA,EAEA,MAAa,aAAa,IAAqB,MAAwB;AACtE,WAAO,MAAM,GAAG,YAAY,OAAMC,QAAM;AACvC,YAAM,UAAU,MAAM,KAAK,eAAeA,GAAE;AAC5C,YAAM,OAAO,KAAK,QAAQ;AAC1B,YAAM,iBAAiB,OAAO,YAAY,KAAK,UAAU,IAAI,CAAA,OAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAEvF,UAAI,eAA6B,CAAA;AACjC,cAAQ,MAAA;AAAA,QACP,KAAK;AACJ,yBAAe,EAAE,GAAG,gBAAgB,GAAG,QAAA;AACvC;AAAA,QACD,KAAK;AACJ,yBAAe,EAAE,GAAG,SAAS,GAAG,eAAA;AAChC;AAAA,QACD,KAAK;AACJ,yBAAe;AACf;AAAA,MAAA;AAGF,YAAM,WAAW,OAAO,KAAK,OAAO,EAAE,OAAO,CAAA,OAAM,EAAE,MAAM,aAAa;AACxE,UAAI,SAAS,SAAS,GAAG;AACxB,cAAMC,SAAAA,cAAc,OAAA,EAClB,KAAK,kBAAkB,EACvB,MAAM,CAAA,OAAM,GAAG,GAAG,QAAQ,QAAQ,CAAC,EACnC,QAAQD,IAAG,MAAM;AAAA,MACpB;AAEA,iBAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACzD,YAAI,UAAU,QAAQ,IAAI,GAAG;AAC5B;AAAA,QACD;AACA,cAAMA,IAAG,WAAW,QAAQ,IAAIE,mBAAAA,mBAAmB,MAAM,KAAK,CAAC;AAAA,MAChE;AAAA,IACD,CAAC;AAAA,EACF;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariablesManager.js","sources":["../../../../../packages/engine-actions/src/model/VariablesManager.ts"],"sourcesContent":["import { DatabaseContext } from '@contember/engine-system-api'\nimport { VariablesQuery } from './VariablesQuery'\nimport { SetVariablesArgs } from '../graphql/schema'\nimport { DeleteBuilder } from '@contember/database'\nimport { SetVariableCommand } from './SetVariableCommand'\n\nexport type VariablesMap = Record<string, string>\n\nexport class VariablesManager {\n\tpublic async fetchVariables(db: DatabaseContext): Promise<VariablesMap> {\n\t\treturn Object.fromEntries((await db.queryHandler.fetch(new VariablesQuery())).map(it => [it.name, it.value]))\n\t}\n\n\tpublic async setVariables(db: DatabaseContext, args: SetVariablesArgs) {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst current = await this.fetchVariables(db)\n\t\t\tconst mode = args.mode ?? 'MERGE'\n\t\t\tconst inputVariables = Object.fromEntries(args.variables.map(it => [it.name, it.value]))\n\n\t\t\tlet newVariables: VariablesMap = {}\n\t\t\tswitch (mode) {\n\t\t\t\tcase 'APPEND_ONLY_MISSING':\n\t\t\t\t\tnewVariables = { ...inputVariables, ...current }\n\t\t\t\t\tbreak\n\t\t\t\tcase 'MERGE':\n\t\t\t\t\tnewVariables = { ...current, ...inputVariables }\n\t\t\t\t\tbreak\n\t\t\t\tcase 'SET':\n\t\t\t\t\tnewVariables = inputVariables\n\t\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tconst toDelete = Object.keys(current).filter(it => !(it in newVariables))\n\t\t\tif (toDelete.length > 0) {\n\t\t\t\tawait DeleteBuilder.create()\n\t\t\t\t\t.from('actions_variable')\n\t\t\t\t\t.where(it => it.in('name', toDelete))\n\t\t\t\t\t.execute(db.client)\n\t\t\t}\n\n\t\t\tfor (const [name, value] of Object.entries(newVariables)) {\n\t\t\t\tif (value === current[name]) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tawait db.commandBus.execute(new SetVariableCommand(name, value))\n\t\t\t}\n\t\t})\n\t}\n}\n"],"names":["db"],"mappings":";;;AAQO,MAAM,iBAAiB;AAAA,EAC7B,MAAa,eAAe,IAA4C;AACvE,WAAO,OAAO,aAAa,MAAM,GAAG,aAAa,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,QAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAAA,EAAA;AAAA,EAG7G,MAAa,aAAa,IAAqB,MAAwB;AACtE,WAAO,MAAM,GAAG,YAAY,OAAMA,QAAM;AACvC,YAAM,UAAU,MAAM,KAAK,eAAeA,GAAE;AACtC,YAAA,OAAO,KAAK,QAAQ;AAC1B,YAAM,iBAAiB,OAAO,YAAY,KAAK,UAAU,IAAI,CAAM,OAAA,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAEvF,UAAI,eAA6B,CAAC;AAClC,cAAQ,MAAM;AAAA,QACb,KAAK;AACJ,yBAAe,EAAE,GAAG,gBAAgB,GAAG,QAAQ;AAC/C;AAAA,QACD,KAAK;AACJ,yBAAe,EAAE,GAAG,SAAS,GAAG,eAAe;AAC/C;AAAA,QACD,KAAK;AACW,yBAAA;AACf;AAAA,MAAA;AAGI,YAAA,WAAW,OAAO,KAAK,OAAO,EAAE,OAAO,CAAA,OAAM,EAAE,MAAM,aAAa;AACpE,UAAA,SAAS,SAAS,GAAG;AACxB,cAAM,cAAc,OAAO,EACzB,KAAK,kBAAkB,EACvB,MAAM,CAAA,OAAM,GAAG,GAAG,QAAQ,QAAQ,CAAC,EACnC,QAAQA,IAAG,MAAM;AAAA,MAAA;AAGpB,iBAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACrD,YAAA,UAAU,QAAQ,IAAI,GAAG;AAC5B;AAAA,QAAA;AAED,cAAMA,IAAG,WAAW,QAAQ,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,MAAA;AAAA,IAChE,CACA;AAAA,EAAA;AAEH;"}
1
+ {"version":3,"file":"VariablesManager.js","sources":["../../../../../packages/engine-actions/src/model/VariablesManager.ts"],"sourcesContent":["import { DatabaseContext } from '@contember/engine-system-api'\nimport { VariablesQuery } from './VariablesQuery'\nimport { SetVariablesArgs } from '../graphql/schema'\nimport { DeleteBuilder } from '@contember/database'\nimport { SetVariableCommand } from './SetVariableCommand'\n\nexport type VariablesMap = Record<string, string>\n\nexport class VariablesManager {\n\tpublic async fetchVariables(db: DatabaseContext): Promise<VariablesMap> {\n\t\treturn Object.fromEntries((await db.queryHandler.fetch(new VariablesQuery())).map(it => [it.name, it.value]))\n\t}\n\n\tpublic async setVariables(db: DatabaseContext, args: SetVariablesArgs) {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst current = await this.fetchVariables(db)\n\t\t\tconst mode = args.mode ?? 'MERGE'\n\t\t\tconst inputVariables = Object.fromEntries(args.variables.map(it => [it.name, it.value]))\n\n\t\t\tlet newVariables: VariablesMap = {}\n\t\t\tswitch (mode) {\n\t\t\t\tcase 'APPEND_ONLY_MISSING':\n\t\t\t\t\tnewVariables = { ...inputVariables, ...current }\n\t\t\t\t\tbreak\n\t\t\t\tcase 'MERGE':\n\t\t\t\t\tnewVariables = { ...current, ...inputVariables }\n\t\t\t\t\tbreak\n\t\t\t\tcase 'SET':\n\t\t\t\t\tnewVariables = inputVariables\n\t\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tconst toDelete = Object.keys(current).filter(it => !(it in newVariables))\n\t\t\tif (toDelete.length > 0) {\n\t\t\t\tawait DeleteBuilder.create()\n\t\t\t\t\t.from('actions_variable')\n\t\t\t\t\t.where(it => it.in('name', toDelete))\n\t\t\t\t\t.execute(db.client)\n\t\t\t}\n\n\t\t\tfor (const [name, value] of Object.entries(newVariables)) {\n\t\t\t\tif (value === current[name]) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tawait db.commandBus.execute(new SetVariableCommand(name, value))\n\t\t\t}\n\t\t})\n\t}\n}\n"],"names":["db"],"mappings":";;;AAQO,MAAM,iBAAiB;AAAA,EAC7B,MAAa,eAAe,IAA4C;AACvE,WAAO,OAAO,aAAa,MAAM,GAAG,aAAa,MAAM,IAAI,eAAA,CAAgB,GAAG,IAAI,QAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAAA,EAC7G;AAAA,EAEA,MAAa,aAAa,IAAqB,MAAwB;AACtE,WAAO,MAAM,GAAG,YAAY,OAAMA,QAAM;AACvC,YAAM,UAAU,MAAM,KAAK,eAAeA,GAAE;AAC5C,YAAM,OAAO,KAAK,QAAQ;AAC1B,YAAM,iBAAiB,OAAO,YAAY,KAAK,UAAU,IAAI,CAAA,OAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAEvF,UAAI,eAA6B,CAAA;AACjC,cAAQ,MAAA;AAAA,QACP,KAAK;AACJ,yBAAe,EAAE,GAAG,gBAAgB,GAAG,QAAA;AACvC;AAAA,QACD,KAAK;AACJ,yBAAe,EAAE,GAAG,SAAS,GAAG,eAAA;AAChC;AAAA,QACD,KAAK;AACJ,yBAAe;AACf;AAAA,MAAA;AAGF,YAAM,WAAW,OAAO,KAAK,OAAO,EAAE,OAAO,CAAA,OAAM,EAAE,MAAM,aAAa;AACxE,UAAI,SAAS,SAAS,GAAG;AACxB,cAAM,cAAc,OAAA,EAClB,KAAK,kBAAkB,EACvB,MAAM,CAAA,OAAM,GAAG,GAAG,QAAQ,QAAQ,CAAC,EACnC,QAAQA,IAAG,MAAM;AAAA,MACpB;AAEA,iBAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACzD,YAAI,UAAU,QAAQ,IAAI,GAAG;AAC5B;AAAA,QACD;AACA,cAAMA,IAAG,WAAW,QAAQ,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,MAChE;AAAA,IACD,CAAC;AAAA,EACF;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariablesQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/VariablesQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\n\nexport class VariablesQuery extends DatabaseQuery<VariableRow[]> {\n\tpublic async fetch(queryable: DatabaseQueryable): Promise<VariableRow[]> {\n\t\treturn await SelectBuilder.create<VariableRow>()\n\t\t\t.from('actions_variable')\n\t\t\t.getResult(queryable.db)\n\t}\n}\n\nexport type VariableRow = {\n\tid: string\n\tname: string\n\tvalue: string\n\tcreated_at: Date\n\tupdated_at: Date\n}\n"],"names":["DatabaseQuery","SelectBuilder"],"mappings":";;;AAEO,MAAM,uBAAuBA,SAAAA,cAA6B;AAAA,EAChE,MAAa,MAAM,WAAsD;AACjE,WAAA,MAAMC,SAAAA,cAAc,SACzB,KAAK,kBAAkB,EACvB,UAAU,UAAU,EAAE;AAAA,EAAA;AAE1B;;"}
1
+ {"version":3,"file":"VariablesQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/VariablesQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\n\nexport class VariablesQuery extends DatabaseQuery<VariableRow[]> {\n\tpublic async fetch(queryable: DatabaseQueryable): Promise<VariableRow[]> {\n\t\treturn await SelectBuilder.create<VariableRow>()\n\t\t\t.from('actions_variable')\n\t\t\t.getResult(queryable.db)\n\t}\n}\n\nexport type VariableRow = {\n\tid: string\n\tname: string\n\tvalue: string\n\tcreated_at: Date\n\tupdated_at: Date\n}\n"],"names":["DatabaseQuery","SelectBuilder"],"mappings":";;;AAEO,MAAM,uBAAuBA,SAAAA,cAA6B;AAAA,EAChE,MAAa,MAAM,WAAsD;AACxE,WAAO,MAAMC,SAAAA,cAAc,SACzB,KAAK,kBAAkB,EACvB,UAAU,UAAU,EAAE;AAAA,EACzB;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariablesQuery.js","sources":["../../../../../packages/engine-actions/src/model/VariablesQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\n\nexport class VariablesQuery extends DatabaseQuery<VariableRow[]> {\n\tpublic async fetch(queryable: DatabaseQueryable): Promise<VariableRow[]> {\n\t\treturn await SelectBuilder.create<VariableRow>()\n\t\t\t.from('actions_variable')\n\t\t\t.getResult(queryable.db)\n\t}\n}\n\nexport type VariableRow = {\n\tid: string\n\tname: string\n\tvalue: string\n\tcreated_at: Date\n\tupdated_at: Date\n}\n"],"names":[],"mappings":";AAEO,MAAM,uBAAuB,cAA6B;AAAA,EAChE,MAAa,MAAM,WAAsD;AACjE,WAAA,MAAM,cAAc,SACzB,KAAK,kBAAkB,EACvB,UAAU,UAAU,EAAE;AAAA,EAAA;AAE1B;"}
1
+ {"version":3,"file":"VariablesQuery.js","sources":["../../../../../packages/engine-actions/src/model/VariablesQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\n\nexport class VariablesQuery extends DatabaseQuery<VariableRow[]> {\n\tpublic async fetch(queryable: DatabaseQueryable): Promise<VariableRow[]> {\n\t\treturn await SelectBuilder.create<VariableRow>()\n\t\t\t.from('actions_variable')\n\t\t\t.getResult(queryable.db)\n\t}\n}\n\nexport type VariableRow = {\n\tid: string\n\tname: string\n\tvalue: string\n\tcreated_at: Date\n\tupdated_at: Date\n}\n"],"names":[],"mappings":";AAEO,MAAM,uBAAuB,cAA6B;AAAA,EAChE,MAAa,MAAM,WAAsD;AACxE,WAAO,MAAM,cAAc,SACzB,KAAK,kBAAkB,EACvB,UAAU,UAAU,EAAE;AAAA,EACzB;AACD;"}
@@ -49,27 +49,27 @@ class TriggerHandler {
49
49
  }
50
50
  async directUpdateHandler(event) {
51
51
  const updateListeners = this.listenersStore.getUpdateListeners(event.entity.name);
52
- updateListeners.map((listener) => {
52
+ await Promise.all(updateListeners.map((listener) => {
53
53
  if (event.data.some((it) => listener.fields.has(it.fieldName) && it.value !== it.old)) {
54
- this.payloadManager.add({
54
+ return this.payloadManager.add({
55
55
  listener,
56
56
  entity: event.entity,
57
57
  primary: event.id,
58
58
  cause: event
59
59
  });
60
60
  }
61
- });
61
+ }));
62
62
  }
63
63
  async directCreateHandler(event) {
64
64
  const createListeners = this.listenersStore.getCreateListener(event.entity.name);
65
- createListeners.map((listener) => {
66
- this.payloadManager.add({
65
+ await Promise.all(createListeners.map((listener) => {
66
+ return this.payloadManager.add({
67
67
  listener,
68
68
  entity: event.entity,
69
69
  primary: event.id,
70
70
  cause: event
71
71
  });
72
- });
72
+ }));
73
73
  }
74
74
  /**
75
75
  * Collect affected triggers after entity was created or before it was deleted.
@@ -77,9 +77,11 @@ class TriggerHandler {
77
77
  */
78
78
  async indirectChangesEntityHandler(event) {
79
79
  const indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name);
80
- const promises = indirectEntityListeners.map((listener) => this.collectDeepChanges(event, listener, {
81
- [event.entity.primary]: { eq: event.id }
82
- }));
80
+ const promises = indirectEntityListeners.map(
81
+ (listener) => this.collectDeepChanges(event, listener, {
82
+ [event.entity.primary]: { eq: event.id }
83
+ })
84
+ );
83
85
  await Promise.all(promises);
84
86
  }
85
87
  async indirectChangesRelationHandler(event) {
@@ -112,14 +114,15 @@ class TriggerHandler {
112
114
  }
113
115
  async collectDeepChanges(cause, listener, where) {
114
116
  const result = await this.changesFetcher.fetch(listener, where);
115
- for (const row of result) {
116
- this.payloadManager.add({
117
+ await Promise.all(result.map((row) => {
118
+ return this.payloadManager.add({
117
119
  listener,
118
120
  entity: listener.rootEntity,
119
- primary: row,
120
- cause
121
+ primary: row.id,
122
+ cause,
123
+ nodes: row.nodes
121
124
  });
122
- }
125
+ }));
123
126
  }
124
127
  }
125
128
  exports.TriggerHandler = TriggerHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerHandler.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerHandler.ts"],"sourcesContent":["import {\n\tAfterInsertEvent,\n\tAfterJunctionUpdateEvent,\n\tAfterUpdateEvent,\n\tBeforeDeleteEvent,\n\tBeforeUpdateEvent,\n\tEventManager,\n} from '@contember/engine-content-api'\nimport { Input } from '@contember/schema'\nimport { IndirectListener, JunctionListener, TriggerListenersStore } from './TriggerListenersStore'\nimport { TriggerPayloadManager } from './TriggerPayloadManager'\nimport { TriggerIndirectChangesFetcher } from './TriggerIndirectChangesFetcher'\n\nexport type EventCause =\n\t| BeforeUpdateEvent\n\t| AfterUpdateEvent\n\t| BeforeDeleteEvent\n\t| AfterInsertEvent\n\t| AfterJunctionUpdateEvent\n\nexport class TriggerHandler {\n\tconstructor(\n\t\tprivate readonly payloadManager: TriggerPayloadManager,\n\t\tprivate readonly listenersStore: TriggerListenersStore,\n\t\tprivate readonly changesFetcher: TriggerIndirectChangesFetcher,\n\t) {\n\t}\n\n\tattach(evm: EventManager) {\n\t\tevm.listen('BeforeDeleteEvent', async event => {\n\t\t\tawait this.directDeleteHandler(event)\n\t\t\tawait this.indirectChangesEntityHandler(event)\n\t\t})\n\t\tevm.listen('AfterInsertEvent', async event => {\n\t\t\tawait this.indirectChangesEntityHandler(event)\n\t\t\tawait this.directCreateHandler(event)\n\t\t})\n\t\tevm.listen('BeforeUpdateEvent', async event => {\n\t\t\tawait this.indirectChangesRelationHandler(event)\n\t\t})\n\t\tevm.listen('AfterUpdateEvent', async event => {\n\t\t\tif (event.hasChanges) {\n\t\t\t\tawait this.indirectChangesUpdatesHandler(event)\n\t\t\t\tawait this.directUpdateHandler(event)\n\t\t\t}\n\t\t})\n\t\tevm.listen('AfterJunctionUpdateEvent', async event => {\n\t\t\tif (event.hasChanges) {\n\t\t\t\tawait this.junctionHandler(event)\n\t\t\t}\n\t\t})\n\t\tevm.listen('BeforeCommitEvent', async event => {\n\t\t\tawait this.payloadManager.persist()\n\t\t})\n\t}\n\n\tprivate async directDeleteHandler(event: BeforeDeleteEvent) {\n\t\tconst deleteListeners = this.listenersStore.getDeleteListener(event.entity.name)\n\t\tif (!deleteListeners) {\n\t\t\treturn\n\t\t}\n\t\tawait Promise.all(deleteListeners.map(listener => {\n\t\t\treturn this.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: event.entity,\n\t\t\t\tprimary: event.id,\n\t\t\t\tcause: event,\n\t\t\t})\n\t\t}))\n\t}\n\n\tprivate async directUpdateHandler(event: AfterUpdateEvent) {\n\t\tconst updateListeners = this.listenersStore.getUpdateListeners(event.entity.name)\n\t\tupdateListeners.map(listener => {\n\t\t\tif (event.data.some(it => listener.fields.has(it.fieldName) && it.value !== it.old)) {\n\t\t\t\tthis.payloadManager.add({\n\t\t\t\t\tlistener,\n\t\t\t\t\tentity: event.entity,\n\t\t\t\t\tprimary: event.id,\n\t\t\t\t\tcause: event,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate async directCreateHandler(event: AfterInsertEvent) {\n\t\tconst createListeners = this.listenersStore.getCreateListener(event.entity.name)\n\t\tcreateListeners.map(listener => {\n\t\t\tthis.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: event.entity,\n\t\t\t\tprimary: event.id,\n\t\t\t\tcause: event,\n\t\t\t})\n\t\t})\n\t}\n\n\n\t/**\n\t * Collect affected triggers after entity was created or before it was deleted.\n\t * todo: after insert, it should probably check only owning relations, because other relations are connected later, so it would be always empty\n\t */\n\tprivate async indirectChangesEntityHandler(event: BeforeDeleteEvent | AfterInsertEvent) {\n\t\t//\n\t\tconst indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)\n\t\tconst promises = indirectEntityListeners.map(listener => this.collectDeepChanges(event, listener, {\n\t\t\t[event.entity.primary]: { eq: event.id },\n\t\t}))\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async indirectChangesRelationHandler(event: BeforeUpdateEvent) {\n\t\tawait this.indirectChangesUpdatesHandlerInner(event, 'relations')\n\t}\n\n\tprivate async indirectChangesUpdatesHandler(event: AfterUpdateEvent) {\n\t\tawait this.indirectChangesUpdatesHandlerInner(event, 'fields')\n\t}\n\tprivate async indirectChangesUpdatesHandlerInner(event: AfterUpdateEvent | BeforeUpdateEvent, type: 'fields' | 'relations') {\n\t\tconst indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)\n\t\tconst promises = indirectEntityListeners.map(listener => {\n\t\t\tif (event.data.some(val => listener[type].has(val.fieldName) && (!('old' in val) || val.value !== val.old))) {\n\t\t\t\treturn this.collectDeepChanges(event, listener, {\n\t\t\t\t\t[event.entity.primary]: { eq: event.id },\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async junctionHandler(event: AfterJunctionUpdateEvent) {\n\t\tconst listeners = this.listenersStore.getJunctionListeners(event.owningEntity.name, event.owningRelation.name)\n\t\tconst promises = listeners.map(listener => {\n\t\t\tconst primary = listener.context.type === 'owning'\n\t\t\t\t? event.owningId\n\t\t\t\t: event.inverseId\n\t\t\tconst entity = listener.context.entity\n\t\t\treturn this.collectDeepChanges(event, listener, {\n\t\t\t\t[entity.primary]: { eq: primary },\n\t\t\t})\n\t\t})\n\t\tawait Promise.all(promises)\n\t}\n\n\n\tprivate async collectDeepChanges(\n\t\tcause: EventCause,\n\t\tlistener: IndirectListener | JunctionListener,\n\t\twhere: Input.Where,\n\t) {\n\t\tconst result = await this.changesFetcher.fetch(listener, where)\n\t\tfor (const row of result) {\n\t\t\tthis.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: listener.rootEntity,\n\t\t\t\tprimary: row,\n\t\t\t\tcause,\n\t\t\t})\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TriggerHandler.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerHandler.ts"],"sourcesContent":["import {\n\tAfterInsertEvent,\n\tAfterJunctionUpdateEvent,\n\tAfterUpdateEvent,\n\tBeforeDeleteEvent,\n\tBeforeUpdateEvent,\n\tEventManager,\n} from '@contember/engine-content-api'\nimport { Input } from '@contember/schema'\nimport { IndirectListener, JunctionListener, TriggerListenersStore } from './TriggerListenersStore'\nimport { TriggerPayloadManager } from './TriggerPayloadManager'\nimport { TriggerIndirectChangesFetcher } from './TriggerIndirectChangesFetcher'\n\nexport type EventCause =\n\t| BeforeUpdateEvent\n\t| AfterUpdateEvent\n\t| BeforeDeleteEvent\n\t| AfterInsertEvent\n\t| AfterJunctionUpdateEvent\n\nexport class TriggerHandler {\n\tconstructor(\n\t\tprivate readonly payloadManager: TriggerPayloadManager,\n\t\tprivate readonly listenersStore: TriggerListenersStore,\n\t\tprivate readonly changesFetcher: TriggerIndirectChangesFetcher,\n\t) {\n\t}\n\n\tattach(evm: EventManager) {\n\t\tevm.listen('BeforeDeleteEvent', async event => {\n\t\t\tawait this.directDeleteHandler(event)\n\t\t\tawait this.indirectChangesEntityHandler(event)\n\t\t})\n\t\tevm.listen('AfterInsertEvent', async event => {\n\t\t\tawait this.indirectChangesEntityHandler(event)\n\t\t\tawait this.directCreateHandler(event)\n\t\t})\n\t\tevm.listen('BeforeUpdateEvent', async event => {\n\t\t\tawait this.indirectChangesRelationHandler(event)\n\t\t})\n\t\tevm.listen('AfterUpdateEvent', async event => {\n\t\t\tif (event.hasChanges) {\n\t\t\t\tawait this.indirectChangesUpdatesHandler(event)\n\t\t\t\tawait this.directUpdateHandler(event)\n\t\t\t}\n\t\t})\n\t\tevm.listen('AfterJunctionUpdateEvent', async event => {\n\t\t\tif (event.hasChanges) {\n\t\t\t\tawait this.junctionHandler(event)\n\t\t\t}\n\t\t})\n\t\tevm.listen('BeforeCommitEvent', async event => {\n\t\t\tawait this.payloadManager.persist()\n\t\t})\n\t}\n\n\tprivate async directDeleteHandler(event: BeforeDeleteEvent) {\n\t\tconst deleteListeners = this.listenersStore.getDeleteListener(event.entity.name)\n\t\tif (!deleteListeners) {\n\t\t\treturn\n\t\t}\n\t\tawait Promise.all(deleteListeners.map(listener => {\n\t\t\treturn this.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: event.entity,\n\t\t\t\tprimary: event.id,\n\t\t\t\tcause: event,\n\t\t\t})\n\t\t}))\n\t}\n\n\tprivate async directUpdateHandler(event: AfterUpdateEvent) {\n\t\tconst updateListeners = this.listenersStore.getUpdateListeners(event.entity.name)\n\t\tawait Promise.all(updateListeners.map(listener => {\n\t\t\tif (event.data.some(it => listener.fields.has(it.fieldName) && it.value !== it.old)) {\n\t\t\t\treturn this.payloadManager.add({\n\t\t\t\t\tlistener,\n\t\t\t\t\tentity: event.entity,\n\t\t\t\t\tprimary: event.id,\n\t\t\t\t\tcause: event,\n\t\t\t\t})\n\t\t\t}\n\t\t}))\n\t}\n\n\tprivate async directCreateHandler(event: AfterInsertEvent) {\n\t\tconst createListeners = this.listenersStore.getCreateListener(event.entity.name)\n\t\tawait Promise.all(createListeners.map(listener => {\n\t\t\treturn this.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: event.entity,\n\t\t\t\tprimary: event.id,\n\t\t\t\tcause: event,\n\t\t\t})\n\t\t}))\n\t}\n\n\t/**\n\t * Collect affected triggers after entity was created or before it was deleted.\n\t * todo: after insert, it should probably check only owning relations, because other relations are connected later, so it would be always empty\n\t */\n\tprivate async indirectChangesEntityHandler(event: BeforeDeleteEvent | AfterInsertEvent) {\n\t\t//\n\t\tconst indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)\n\t\tconst promises = indirectEntityListeners.map(listener =>\n\t\t\tthis.collectDeepChanges(event, listener, {\n\t\t\t\t[event.entity.primary]: { eq: event.id },\n\t\t\t})\n\t\t)\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async indirectChangesRelationHandler(event: BeforeUpdateEvent) {\n\t\tawait this.indirectChangesUpdatesHandlerInner(event, 'relations')\n\t}\n\n\tprivate async indirectChangesUpdatesHandler(event: AfterUpdateEvent) {\n\t\tawait this.indirectChangesUpdatesHandlerInner(event, 'fields')\n\t}\n\tprivate async indirectChangesUpdatesHandlerInner(event: AfterUpdateEvent | BeforeUpdateEvent, type: 'fields' | 'relations') {\n\t\tconst indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)\n\t\tconst promises = indirectEntityListeners.map(listener => {\n\t\t\tif (event.data.some(val => listener[type].has(val.fieldName) && (!('old' in val) || val.value !== val.old))) {\n\t\t\t\treturn this.collectDeepChanges(event, listener, {\n\t\t\t\t\t[event.entity.primary]: { eq: event.id },\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async junctionHandler(event: AfterJunctionUpdateEvent) {\n\t\tconst listeners = this.listenersStore.getJunctionListeners(event.owningEntity.name, event.owningRelation.name)\n\t\tconst promises = listeners.map(listener => {\n\t\t\tconst primary = listener.context.type === 'owning'\n\t\t\t\t? event.owningId\n\t\t\t\t: event.inverseId\n\t\t\tconst entity = listener.context.entity\n\t\t\treturn this.collectDeepChanges(event, listener, {\n\t\t\t\t[entity.primary]: { eq: primary },\n\t\t\t})\n\t\t})\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async collectDeepChanges(\n\t\tcause: EventCause,\n\t\tlistener: IndirectListener | JunctionListener,\n\t\twhere: Input.Where,\n\t) {\n\t\tconst result = await this.changesFetcher.fetch(listener, where)\n\t\tawait Promise.all(result.map(row => {\n\t\t\treturn this.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: listener.rootEntity,\n\t\t\t\tprimary: row.id,\n\t\t\t\tcause,\n\t\t\t\tnodes: row.nodes,\n\t\t\t})\n\t\t}))\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -47,27 +47,27 @@ class TriggerHandler {
47
47
  }
48
48
  async directUpdateHandler(event) {
49
49
  const updateListeners = this.listenersStore.getUpdateListeners(event.entity.name);
50
- updateListeners.map((listener) => {
50
+ await Promise.all(updateListeners.map((listener) => {
51
51
  if (event.data.some((it) => listener.fields.has(it.fieldName) && it.value !== it.old)) {
52
- this.payloadManager.add({
52
+ return this.payloadManager.add({
53
53
  listener,
54
54
  entity: event.entity,
55
55
  primary: event.id,
56
56
  cause: event
57
57
  });
58
58
  }
59
- });
59
+ }));
60
60
  }
61
61
  async directCreateHandler(event) {
62
62
  const createListeners = this.listenersStore.getCreateListener(event.entity.name);
63
- createListeners.map((listener) => {
64
- this.payloadManager.add({
63
+ await Promise.all(createListeners.map((listener) => {
64
+ return this.payloadManager.add({
65
65
  listener,
66
66
  entity: event.entity,
67
67
  primary: event.id,
68
68
  cause: event
69
69
  });
70
- });
70
+ }));
71
71
  }
72
72
  /**
73
73
  * Collect affected triggers after entity was created or before it was deleted.
@@ -75,9 +75,11 @@ class TriggerHandler {
75
75
  */
76
76
  async indirectChangesEntityHandler(event) {
77
77
  const indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name);
78
- const promises = indirectEntityListeners.map((listener) => this.collectDeepChanges(event, listener, {
79
- [event.entity.primary]: { eq: event.id }
80
- }));
78
+ const promises = indirectEntityListeners.map(
79
+ (listener) => this.collectDeepChanges(event, listener, {
80
+ [event.entity.primary]: { eq: event.id }
81
+ })
82
+ );
81
83
  await Promise.all(promises);
82
84
  }
83
85
  async indirectChangesRelationHandler(event) {
@@ -110,14 +112,15 @@ class TriggerHandler {
110
112
  }
111
113
  async collectDeepChanges(cause, listener, where) {
112
114
  const result = await this.changesFetcher.fetch(listener, where);
113
- for (const row of result) {
114
- this.payloadManager.add({
115
+ await Promise.all(result.map((row) => {
116
+ return this.payloadManager.add({
115
117
  listener,
116
118
  entity: listener.rootEntity,
117
- primary: row,
118
- cause
119
+ primary: row.id,
120
+ cause,
121
+ nodes: row.nodes
119
122
  });
120
- }
123
+ }));
121
124
  }
122
125
  }
123
126
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerHandler.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerHandler.ts"],"sourcesContent":["import {\n\tAfterInsertEvent,\n\tAfterJunctionUpdateEvent,\n\tAfterUpdateEvent,\n\tBeforeDeleteEvent,\n\tBeforeUpdateEvent,\n\tEventManager,\n} from '@contember/engine-content-api'\nimport { Input } from '@contember/schema'\nimport { IndirectListener, JunctionListener, TriggerListenersStore } from './TriggerListenersStore'\nimport { TriggerPayloadManager } from './TriggerPayloadManager'\nimport { TriggerIndirectChangesFetcher } from './TriggerIndirectChangesFetcher'\n\nexport type EventCause =\n\t| BeforeUpdateEvent\n\t| AfterUpdateEvent\n\t| BeforeDeleteEvent\n\t| AfterInsertEvent\n\t| AfterJunctionUpdateEvent\n\nexport class TriggerHandler {\n\tconstructor(\n\t\tprivate readonly payloadManager: TriggerPayloadManager,\n\t\tprivate readonly listenersStore: TriggerListenersStore,\n\t\tprivate readonly changesFetcher: TriggerIndirectChangesFetcher,\n\t) {\n\t}\n\n\tattach(evm: EventManager) {\n\t\tevm.listen('BeforeDeleteEvent', async event => {\n\t\t\tawait this.directDeleteHandler(event)\n\t\t\tawait this.indirectChangesEntityHandler(event)\n\t\t})\n\t\tevm.listen('AfterInsertEvent', async event => {\n\t\t\tawait this.indirectChangesEntityHandler(event)\n\t\t\tawait this.directCreateHandler(event)\n\t\t})\n\t\tevm.listen('BeforeUpdateEvent', async event => {\n\t\t\tawait this.indirectChangesRelationHandler(event)\n\t\t})\n\t\tevm.listen('AfterUpdateEvent', async event => {\n\t\t\tif (event.hasChanges) {\n\t\t\t\tawait this.indirectChangesUpdatesHandler(event)\n\t\t\t\tawait this.directUpdateHandler(event)\n\t\t\t}\n\t\t})\n\t\tevm.listen('AfterJunctionUpdateEvent', async event => {\n\t\t\tif (event.hasChanges) {\n\t\t\t\tawait this.junctionHandler(event)\n\t\t\t}\n\t\t})\n\t\tevm.listen('BeforeCommitEvent', async event => {\n\t\t\tawait this.payloadManager.persist()\n\t\t})\n\t}\n\n\tprivate async directDeleteHandler(event: BeforeDeleteEvent) {\n\t\tconst deleteListeners = this.listenersStore.getDeleteListener(event.entity.name)\n\t\tif (!deleteListeners) {\n\t\t\treturn\n\t\t}\n\t\tawait Promise.all(deleteListeners.map(listener => {\n\t\t\treturn this.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: event.entity,\n\t\t\t\tprimary: event.id,\n\t\t\t\tcause: event,\n\t\t\t})\n\t\t}))\n\t}\n\n\tprivate async directUpdateHandler(event: AfterUpdateEvent) {\n\t\tconst updateListeners = this.listenersStore.getUpdateListeners(event.entity.name)\n\t\tupdateListeners.map(listener => {\n\t\t\tif (event.data.some(it => listener.fields.has(it.fieldName) && it.value !== it.old)) {\n\t\t\t\tthis.payloadManager.add({\n\t\t\t\t\tlistener,\n\t\t\t\t\tentity: event.entity,\n\t\t\t\t\tprimary: event.id,\n\t\t\t\t\tcause: event,\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate async directCreateHandler(event: AfterInsertEvent) {\n\t\tconst createListeners = this.listenersStore.getCreateListener(event.entity.name)\n\t\tcreateListeners.map(listener => {\n\t\t\tthis.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: event.entity,\n\t\t\t\tprimary: event.id,\n\t\t\t\tcause: event,\n\t\t\t})\n\t\t})\n\t}\n\n\n\t/**\n\t * Collect affected triggers after entity was created or before it was deleted.\n\t * todo: after insert, it should probably check only owning relations, because other relations are connected later, so it would be always empty\n\t */\n\tprivate async indirectChangesEntityHandler(event: BeforeDeleteEvent | AfterInsertEvent) {\n\t\t//\n\t\tconst indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)\n\t\tconst promises = indirectEntityListeners.map(listener => this.collectDeepChanges(event, listener, {\n\t\t\t[event.entity.primary]: { eq: event.id },\n\t\t}))\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async indirectChangesRelationHandler(event: BeforeUpdateEvent) {\n\t\tawait this.indirectChangesUpdatesHandlerInner(event, 'relations')\n\t}\n\n\tprivate async indirectChangesUpdatesHandler(event: AfterUpdateEvent) {\n\t\tawait this.indirectChangesUpdatesHandlerInner(event, 'fields')\n\t}\n\tprivate async indirectChangesUpdatesHandlerInner(event: AfterUpdateEvent | BeforeUpdateEvent, type: 'fields' | 'relations') {\n\t\tconst indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)\n\t\tconst promises = indirectEntityListeners.map(listener => {\n\t\t\tif (event.data.some(val => listener[type].has(val.fieldName) && (!('old' in val) || val.value !== val.old))) {\n\t\t\t\treturn this.collectDeepChanges(event, listener, {\n\t\t\t\t\t[event.entity.primary]: { eq: event.id },\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async junctionHandler(event: AfterJunctionUpdateEvent) {\n\t\tconst listeners = this.listenersStore.getJunctionListeners(event.owningEntity.name, event.owningRelation.name)\n\t\tconst promises = listeners.map(listener => {\n\t\t\tconst primary = listener.context.type === 'owning'\n\t\t\t\t? event.owningId\n\t\t\t\t: event.inverseId\n\t\t\tconst entity = listener.context.entity\n\t\t\treturn this.collectDeepChanges(event, listener, {\n\t\t\t\t[entity.primary]: { eq: primary },\n\t\t\t})\n\t\t})\n\t\tawait Promise.all(promises)\n\t}\n\n\n\tprivate async collectDeepChanges(\n\t\tcause: EventCause,\n\t\tlistener: IndirectListener | JunctionListener,\n\t\twhere: Input.Where,\n\t) {\n\t\tconst result = await this.changesFetcher.fetch(listener, where)\n\t\tfor (const row of result) {\n\t\t\tthis.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: listener.rootEntity,\n\t\t\t\tprimary: row,\n\t\t\t\tcause,\n\t\t\t})\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TriggerHandler.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerHandler.ts"],"sourcesContent":["import {\n\tAfterInsertEvent,\n\tAfterJunctionUpdateEvent,\n\tAfterUpdateEvent,\n\tBeforeDeleteEvent,\n\tBeforeUpdateEvent,\n\tEventManager,\n} from '@contember/engine-content-api'\nimport { Input } from '@contember/schema'\nimport { IndirectListener, JunctionListener, TriggerListenersStore } from './TriggerListenersStore'\nimport { TriggerPayloadManager } from './TriggerPayloadManager'\nimport { TriggerIndirectChangesFetcher } from './TriggerIndirectChangesFetcher'\n\nexport type EventCause =\n\t| BeforeUpdateEvent\n\t| AfterUpdateEvent\n\t| BeforeDeleteEvent\n\t| AfterInsertEvent\n\t| AfterJunctionUpdateEvent\n\nexport class TriggerHandler {\n\tconstructor(\n\t\tprivate readonly payloadManager: TriggerPayloadManager,\n\t\tprivate readonly listenersStore: TriggerListenersStore,\n\t\tprivate readonly changesFetcher: TriggerIndirectChangesFetcher,\n\t) {\n\t}\n\n\tattach(evm: EventManager) {\n\t\tevm.listen('BeforeDeleteEvent', async event => {\n\t\t\tawait this.directDeleteHandler(event)\n\t\t\tawait this.indirectChangesEntityHandler(event)\n\t\t})\n\t\tevm.listen('AfterInsertEvent', async event => {\n\t\t\tawait this.indirectChangesEntityHandler(event)\n\t\t\tawait this.directCreateHandler(event)\n\t\t})\n\t\tevm.listen('BeforeUpdateEvent', async event => {\n\t\t\tawait this.indirectChangesRelationHandler(event)\n\t\t})\n\t\tevm.listen('AfterUpdateEvent', async event => {\n\t\t\tif (event.hasChanges) {\n\t\t\t\tawait this.indirectChangesUpdatesHandler(event)\n\t\t\t\tawait this.directUpdateHandler(event)\n\t\t\t}\n\t\t})\n\t\tevm.listen('AfterJunctionUpdateEvent', async event => {\n\t\t\tif (event.hasChanges) {\n\t\t\t\tawait this.junctionHandler(event)\n\t\t\t}\n\t\t})\n\t\tevm.listen('BeforeCommitEvent', async event => {\n\t\t\tawait this.payloadManager.persist()\n\t\t})\n\t}\n\n\tprivate async directDeleteHandler(event: BeforeDeleteEvent) {\n\t\tconst deleteListeners = this.listenersStore.getDeleteListener(event.entity.name)\n\t\tif (!deleteListeners) {\n\t\t\treturn\n\t\t}\n\t\tawait Promise.all(deleteListeners.map(listener => {\n\t\t\treturn this.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: event.entity,\n\t\t\t\tprimary: event.id,\n\t\t\t\tcause: event,\n\t\t\t})\n\t\t}))\n\t}\n\n\tprivate async directUpdateHandler(event: AfterUpdateEvent) {\n\t\tconst updateListeners = this.listenersStore.getUpdateListeners(event.entity.name)\n\t\tawait Promise.all(updateListeners.map(listener => {\n\t\t\tif (event.data.some(it => listener.fields.has(it.fieldName) && it.value !== it.old)) {\n\t\t\t\treturn this.payloadManager.add({\n\t\t\t\t\tlistener,\n\t\t\t\t\tentity: event.entity,\n\t\t\t\t\tprimary: event.id,\n\t\t\t\t\tcause: event,\n\t\t\t\t})\n\t\t\t}\n\t\t}))\n\t}\n\n\tprivate async directCreateHandler(event: AfterInsertEvent) {\n\t\tconst createListeners = this.listenersStore.getCreateListener(event.entity.name)\n\t\tawait Promise.all(createListeners.map(listener => {\n\t\t\treturn this.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: event.entity,\n\t\t\t\tprimary: event.id,\n\t\t\t\tcause: event,\n\t\t\t})\n\t\t}))\n\t}\n\n\t/**\n\t * Collect affected triggers after entity was created or before it was deleted.\n\t * todo: after insert, it should probably check only owning relations, because other relations are connected later, so it would be always empty\n\t */\n\tprivate async indirectChangesEntityHandler(event: BeforeDeleteEvent | AfterInsertEvent) {\n\t\t//\n\t\tconst indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)\n\t\tconst promises = indirectEntityListeners.map(listener =>\n\t\t\tthis.collectDeepChanges(event, listener, {\n\t\t\t\t[event.entity.primary]: { eq: event.id },\n\t\t\t})\n\t\t)\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async indirectChangesRelationHandler(event: BeforeUpdateEvent) {\n\t\tawait this.indirectChangesUpdatesHandlerInner(event, 'relations')\n\t}\n\n\tprivate async indirectChangesUpdatesHandler(event: AfterUpdateEvent) {\n\t\tawait this.indirectChangesUpdatesHandlerInner(event, 'fields')\n\t}\n\tprivate async indirectChangesUpdatesHandlerInner(event: AfterUpdateEvent | BeforeUpdateEvent, type: 'fields' | 'relations') {\n\t\tconst indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)\n\t\tconst promises = indirectEntityListeners.map(listener => {\n\t\t\tif (event.data.some(val => listener[type].has(val.fieldName) && (!('old' in val) || val.value !== val.old))) {\n\t\t\t\treturn this.collectDeepChanges(event, listener, {\n\t\t\t\t\t[event.entity.primary]: { eq: event.id },\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async junctionHandler(event: AfterJunctionUpdateEvent) {\n\t\tconst listeners = this.listenersStore.getJunctionListeners(event.owningEntity.name, event.owningRelation.name)\n\t\tconst promises = listeners.map(listener => {\n\t\t\tconst primary = listener.context.type === 'owning'\n\t\t\t\t? event.owningId\n\t\t\t\t: event.inverseId\n\t\t\tconst entity = listener.context.entity\n\t\t\treturn this.collectDeepChanges(event, listener, {\n\t\t\t\t[entity.primary]: { eq: primary },\n\t\t\t})\n\t\t})\n\t\tawait Promise.all(promises)\n\t}\n\n\tprivate async collectDeepChanges(\n\t\tcause: EventCause,\n\t\tlistener: IndirectListener | JunctionListener,\n\t\twhere: Input.Where,\n\t) {\n\t\tconst result = await this.changesFetcher.fetch(listener, where)\n\t\tawait Promise.all(result.map(row => {\n\t\t\treturn this.payloadManager.add({\n\t\t\t\tlistener,\n\t\t\t\tentity: listener.rootEntity,\n\t\t\t\tprimary: row.id,\n\t\t\t\tcause,\n\t\t\t\tnodes: row.nodes,\n\t\t\t})\n\t\t}))\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1,20 +1,62 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const Database = require("@contember/database");
4
+ const schemaUtils = require("@contember/schema-utils");
4
5
  class TriggerIndirectChangesFetcher {
5
- constructor(mapper, whereBuilder, pathFactory) {
6
+ constructor(model, mapper, whereBuilder, joinBuilder, pathFactory) {
7
+ this.model = model;
6
8
  this.mapper = mapper;
7
9
  this.whereBuilder = whereBuilder;
10
+ this.joinBuilder = joinBuilder;
8
11
  this.pathFactory = pathFactory;
9
12
  }
10
13
  async fetch(listener, where) {
14
+ if (listener.trigger.withNodes) {
15
+ return this.fetchWithNodes(listener, where);
16
+ }
11
17
  for (let i = listener.path.length - 1; i >= 0; i--) {
12
18
  where = { [listener.path[i]]: where };
13
19
  }
14
20
  const qb = Database.SelectBuilder.create().from(listener.rootEntity.tableName, "root_").select(["root_", listener.rootEntity.primaryColumn], "id");
15
21
  const path = this.pathFactory.create([]);
16
22
  const qbWithWhere = this.whereBuilder.build(qb, listener.rootEntity, path, where);
17
- return (await qbWithWhere.getResult(this.mapper.db)).map((it) => it.id);
23
+ return await qbWithWhere.getResult(this.mapper.db);
24
+ }
25
+ async fetchWithNodes(listener, where) {
26
+ const basePath = this.pathFactory.create([]);
27
+ let path = basePath;
28
+ let entity = listener.rootEntity;
29
+ let qb = Database.SelectBuilder.create().from(entity.tableName, path.alias).select([path.alias, entity.primaryColumn], path.for(entity.primary).alias);
30
+ for (let i = 0; i < listener.path.length; i++) {
31
+ const relationName = listener.path[i];
32
+ path = path.for(relationName);
33
+ const targetEntity = schemaUtils.getTargetEntity(this.model, entity, relationName);
34
+ if (!targetEntity) {
35
+ throw new Error(`Target entity for relation ${entity.name}::${relationName} not found`);
36
+ }
37
+ qb = this.joinBuilder.join(qb, path, entity, relationName);
38
+ entity = targetEntity;
39
+ qb = qb.select([path.alias, targetEntity.primaryColumn], path.for(targetEntity.primary).alias);
40
+ }
41
+ const qbWithWhere = this.whereBuilder.build(qb, entity, path, where);
42
+ const result = await qbWithWhere.getResult(this.mapper.db);
43
+ return result.map((row) => {
44
+ const nodes = [];
45
+ let entity2 = listener.rootEntity;
46
+ let path2 = basePath;
47
+ const id = row[path2.for(entity2.primary).alias];
48
+ for (let i = 0; i < listener.path.length; i++) {
49
+ const relationName = listener.path[i];
50
+ const targetEntity = schemaUtils.getTargetEntity(this.model, entity2, relationName);
51
+ if (!targetEntity) {
52
+ throw new Error(`Target entity for relation ${entity2.name}::${relationName} not found`);
53
+ }
54
+ path2 = path2.for(relationName);
55
+ nodes.push({ relation: relationName, entity: targetEntity.name, id: row[path2.for(targetEntity.primary).alias] });
56
+ entity2 = targetEntity;
57
+ }
58
+ return { id, nodes };
59
+ });
18
60
  }
19
61
  }
20
62
  exports.TriggerIndirectChangesFetcher = TriggerIndirectChangesFetcher;
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerIndirectChangesFetcher.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerIndirectChangesFetcher.ts"],"sourcesContent":["import { Mapper, PathFactory, WhereBuilder } from '@contember/engine-content-api'\nimport { IndirectListener, JunctionListener } from './TriggerListenersStore'\nimport { SelectBuilder } from '@contember/database'\nimport { Input } from '@contember/schema'\n\nexport class TriggerIndirectChangesFetcher {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly whereBuilder: WhereBuilder,\n\t\tprivate readonly pathFactory: PathFactory,\n\t) {\n\t}\n\n\tpublic async fetch(\n\t\tlistener: IndirectListener | JunctionListener,\n\t\twhere: Input.Where,\n\t): Promise<Input.PrimaryValue[]> {\n\t\tfor (let i = listener.path.length - 1; i >= 0; i--) {\n\t\t\twhere = { [listener.path[i]]: where }\n\t\t}\n\t\tconst qb = SelectBuilder.create<{ id: Input.PrimaryValue }>()\n\t\t\t.from(listener.rootEntity.tableName, 'root_')\n\t\t\t.select(['root_', listener.rootEntity.primaryColumn], 'id')\n\t\tconst path = this.pathFactory.create([])\n\t\tconst qbWithWhere = this.whereBuilder.build(qb, listener.rootEntity, path, where)\n\n\t\treturn (await qbWithWhere.getResult(this.mapper.db)).map(it => it.id)\n\t}\n\n}\n"],"names":["SelectBuilder"],"mappings":";;;AAKO,MAAM,8BAA8B;AAAA,EAC1C,YACkB,QACA,cACA,aAChB;AAHgB,SAAA,SAAA;AACA,SAAA,eAAA;AACA,SAAA,cAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,MACZ,UACA,OACgC;AAChC,aAAS,IAAI,SAAS,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACnD,cAAQ,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,MAAM;AAAA,IAAA;AAErC,UAAM,KAAKA,SAAAA,cAAc,OAAA,EACvB,KAAK,SAAS,WAAW,WAAW,OAAO,EAC3C,OAAO,CAAC,SAAS,SAAS,WAAW,aAAa,GAAG,IAAI;AAC3D,UAAM,OAAO,KAAK,YAAY,OAAO,CAAA,CAAE;AACjC,UAAA,cAAc,KAAK,aAAa,MAAM,IAAI,SAAS,YAAY,MAAM,KAAK;AAExE,YAAA,MAAM,YAAY,UAAU,KAAK,OAAO,EAAE,GAAG,IAAI,CAAM,OAAA,GAAG,EAAE;AAAA,EAAA;AAGtE;;"}
1
+ {"version":3,"file":"TriggerIndirectChangesFetcher.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerIndirectChangesFetcher.ts"],"sourcesContent":["import { Mapper, PathFactory, WhereBuilder } from '@contember/engine-content-api'\nimport { IndirectListener, JunctionListener } from './TriggerListenersStore'\nimport { SelectBuilder } from '@contember/database'\nimport { ActionsPayload, Input, Model, Schema } from '@contember/schema'\nimport { JoinBuilder } from '@contember/engine-content-api'\nimport { getTargetEntity } from '@contember/schema-utils'\n\nexport type TriggerIndirectChangesFetcherResult = {\n\tid: Input.PrimaryValue\n\tnodes?: ActionsPayload.EntityEventPathNode[]\n}[]\n\nexport class TriggerIndirectChangesFetcher {\n\tconstructor(\n\t\tprivate readonly model: Model.Schema,\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly whereBuilder: WhereBuilder,\n\t\tprivate readonly joinBuilder: JoinBuilder,\n\t\tprivate readonly pathFactory: PathFactory,\n\t) {\n\t}\n\n\tpublic async fetch(\n\t\tlistener: IndirectListener | JunctionListener,\n\t\twhere: Input.Where,\n\t): Promise<TriggerIndirectChangesFetcherResult> {\n\t\tif (listener.trigger.withNodes) {\n\t\t\treturn this.fetchWithNodes(listener, where)\n\t\t}\n\n\t\tfor (let i = listener.path.length - 1; i >= 0; i--) {\n\t\t\twhere = { [listener.path[i]]: where }\n\t\t}\n\t\tconst qb = SelectBuilder.create<{ id: Input.PrimaryValue }>()\n\t\t\t.from(listener.rootEntity.tableName, 'root_')\n\t\t\t.select(['root_', listener.rootEntity.primaryColumn], 'id')\n\t\tconst path = this.pathFactory.create([])\n\t\tconst qbWithWhere = this.whereBuilder.build(qb, listener.rootEntity, path, where)\n\n\t\treturn (await qbWithWhere.getResult(this.mapper.db))\n\t}\n\n\tprivate async fetchWithNodes(\n\t\tlistener: IndirectListener | JunctionListener,\n\t\twhere: Input.Where,\n\t): Promise<TriggerIndirectChangesFetcherResult> {\n\t\tconst basePath = this.pathFactory.create([])\n\t\tlet path = basePath\n\t\tlet entity = listener.rootEntity\n\t\tlet qb = SelectBuilder.create()\n\t\t\t.from(entity.tableName, path.alias)\n\t\t\t.select([path.alias, entity.primaryColumn], path.for(entity.primary).alias)\n\n\t\tfor (let i = 0; i < listener.path.length; i++) {\n\t\t\tconst relationName = listener.path[i]\n\t\t\tpath = path.for(relationName)\n\t\t\tconst targetEntity = getTargetEntity(this.model, entity, relationName)\n\t\t\tif (!targetEntity) {\n\t\t\t\tthrow new Error(`Target entity for relation ${entity.name}::${relationName} not found`)\n\t\t\t}\n\t\t\tqb = this.joinBuilder.join(qb, path, entity, relationName)\n\n\t\t\tentity = targetEntity\n\t\t\tqb = qb.select([path.alias, targetEntity.primaryColumn], path.for(targetEntity.primary).alias)\n\t\t}\n\n\t\tconst qbWithWhere = this.whereBuilder.build(qb, entity, path, where)\n\n\t\tconst result = await qbWithWhere.getResult(this.mapper.db)\n\n\t\treturn result.map(row => {\n\t\t\tconst nodes: ActionsPayload.EntityEventPathNode[] = []\n\t\t\tlet entity = listener.rootEntity\n\t\t\tlet path = basePath\n\t\t\tconst id = row[path.for(entity.primary).alias]\n\t\t\tfor (let i = 0; i < listener.path.length; i++) {\n\t\t\t\tconst relationName = listener.path[i]\n\t\t\t\tconst targetEntity = getTargetEntity(this.model, entity, relationName)\n\t\t\t\tif (!targetEntity) {\n\t\t\t\t\tthrow new Error(`Target entity for relation ${entity.name}::${relationName} not found`)\n\t\t\t\t}\n\t\t\t\tpath = path.for(relationName)\n\t\t\t\tnodes.push({ relation: relationName, entity: targetEntity.name, id: row[path.for(targetEntity.primary).alias] })\n\t\t\t\tentity = targetEntity\n\t\t\t}\n\t\t\treturn { id, nodes }\n\t\t})\n\t}\n}\n"],"names":["SelectBuilder","getTargetEntity","entity","path"],"mappings":";;;;AAYO,MAAM,8BAA8B;AAAA,EAC1C,YACkB,OACA,QACA,cACA,aACA,aAChB;AALgB,SAAA,QAAA;AACA,SAAA,SAAA;AACA,SAAA,eAAA;AACA,SAAA,cAAA;AACA,SAAA,cAAA;AAAA,EAElB;AAAA,EAEA,MAAa,MACZ,UACA,OAC+C;AAC/C,QAAI,SAAS,QAAQ,WAAW;AAC/B,aAAO,KAAK,eAAe,UAAU,KAAK;AAAA,IAC3C;AAEA,aAAS,IAAI,SAAS,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACnD,cAAQ,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,MAAA;AAAA,IAC/B;AACA,UAAM,KAAKA,SAAAA,cAAc,OAAA,EACvB,KAAK,SAAS,WAAW,WAAW,OAAO,EAC3C,OAAO,CAAC,SAAS,SAAS,WAAW,aAAa,GAAG,IAAI;AAC3D,UAAM,OAAO,KAAK,YAAY,OAAO,CAAA,CAAE;AACvC,UAAM,cAAc,KAAK,aAAa,MAAM,IAAI,SAAS,YAAY,MAAM,KAAK;AAEhF,WAAQ,MAAM,YAAY,UAAU,KAAK,OAAO,EAAE;AAAA,EACnD;AAAA,EAEA,MAAc,eACb,UACA,OAC+C;AAC/C,UAAM,WAAW,KAAK,YAAY,OAAO,CAAA,CAAE;AAC3C,QAAI,OAAO;AACX,QAAI,SAAS,SAAS;AACtB,QAAI,KAAKA,uBAAc,SACrB,KAAK,OAAO,WAAW,KAAK,KAAK,EACjC,OAAO,CAAC,KAAK,OAAO,OAAO,aAAa,GAAG,KAAK,IAAI,OAAO,OAAO,EAAE,KAAK;AAE3E,aAAS,IAAI,GAAG,IAAI,SAAS,KAAK,QAAQ,KAAK;AAC9C,YAAM,eAAe,SAAS,KAAK,CAAC;AACpC,aAAO,KAAK,IAAI,YAAY;AAC5B,YAAM,eAAeC,YAAAA,gBAAgB,KAAK,OAAO,QAAQ,YAAY;AACrE,UAAI,CAAC,cAAc;AAClB,cAAM,IAAI,MAAM,8BAA8B,OAAO,IAAI,KAAK,YAAY,YAAY;AAAA,MACvF;AACA,WAAK,KAAK,YAAY,KAAK,IAAI,MAAM,QAAQ,YAAY;AAEzD,eAAS;AACT,WAAK,GAAG,OAAO,CAAC,KAAK,OAAO,aAAa,aAAa,GAAG,KAAK,IAAI,aAAa,OAAO,EAAE,KAAK;AAAA,IAC9F;AAEA,UAAM,cAAc,KAAK,aAAa,MAAM,IAAI,QAAQ,MAAM,KAAK;AAEnE,UAAM,SAAS,MAAM,YAAY,UAAU,KAAK,OAAO,EAAE;AAEzD,WAAO,OAAO,IAAI,CAAA,QAAO;AACxB,YAAM,QAA8C,CAAA;AACpD,UAAIC,UAAS,SAAS;AACtB,UAAIC,QAAO;AACX,YAAM,KAAK,IAAIA,MAAK,IAAID,QAAO,OAAO,EAAE,KAAK;AAC7C,eAAS,IAAI,GAAG,IAAI,SAAS,KAAK,QAAQ,KAAK;AAC9C,cAAM,eAAe,SAAS,KAAK,CAAC;AACpC,cAAM,eAAeD,YAAAA,gBAAgB,KAAK,OAAOC,SAAQ,YAAY;AACrE,YAAI,CAAC,cAAc;AAClB,gBAAM,IAAI,MAAM,8BAA8BA,QAAO,IAAI,KAAK,YAAY,YAAY;AAAA,QACvF;AACAC,gBAAOA,MAAK,IAAI,YAAY;AAC5B,cAAM,KAAK,EAAE,UAAU,cAAc,QAAQ,aAAa,MAAM,IAAI,IAAIA,MAAK,IAAI,aAAa,OAAO,EAAE,KAAK,GAAG;AAC/GD,kBAAS;AAAA,MACV;AACA,aAAO,EAAE,IAAI,MAAA;AAAA,IACd,CAAC;AAAA,EACF;AACD;;"}
@@ -1,18 +1,60 @@
1
1
  import { SelectBuilder } from "@contember/database";
2
+ import { getTargetEntity } from "@contember/schema-utils";
2
3
  class TriggerIndirectChangesFetcher {
3
- constructor(mapper, whereBuilder, pathFactory) {
4
+ constructor(model, mapper, whereBuilder, joinBuilder, pathFactory) {
5
+ this.model = model;
4
6
  this.mapper = mapper;
5
7
  this.whereBuilder = whereBuilder;
8
+ this.joinBuilder = joinBuilder;
6
9
  this.pathFactory = pathFactory;
7
10
  }
8
11
  async fetch(listener, where) {
12
+ if (listener.trigger.withNodes) {
13
+ return this.fetchWithNodes(listener, where);
14
+ }
9
15
  for (let i = listener.path.length - 1; i >= 0; i--) {
10
16
  where = { [listener.path[i]]: where };
11
17
  }
12
18
  const qb = SelectBuilder.create().from(listener.rootEntity.tableName, "root_").select(["root_", listener.rootEntity.primaryColumn], "id");
13
19
  const path = this.pathFactory.create([]);
14
20
  const qbWithWhere = this.whereBuilder.build(qb, listener.rootEntity, path, where);
15
- return (await qbWithWhere.getResult(this.mapper.db)).map((it) => it.id);
21
+ return await qbWithWhere.getResult(this.mapper.db);
22
+ }
23
+ async fetchWithNodes(listener, where) {
24
+ const basePath = this.pathFactory.create([]);
25
+ let path = basePath;
26
+ let entity = listener.rootEntity;
27
+ let qb = SelectBuilder.create().from(entity.tableName, path.alias).select([path.alias, entity.primaryColumn], path.for(entity.primary).alias);
28
+ for (let i = 0; i < listener.path.length; i++) {
29
+ const relationName = listener.path[i];
30
+ path = path.for(relationName);
31
+ const targetEntity = getTargetEntity(this.model, entity, relationName);
32
+ if (!targetEntity) {
33
+ throw new Error(`Target entity for relation ${entity.name}::${relationName} not found`);
34
+ }
35
+ qb = this.joinBuilder.join(qb, path, entity, relationName);
36
+ entity = targetEntity;
37
+ qb = qb.select([path.alias, targetEntity.primaryColumn], path.for(targetEntity.primary).alias);
38
+ }
39
+ const qbWithWhere = this.whereBuilder.build(qb, entity, path, where);
40
+ const result = await qbWithWhere.getResult(this.mapper.db);
41
+ return result.map((row) => {
42
+ const nodes = [];
43
+ let entity2 = listener.rootEntity;
44
+ let path2 = basePath;
45
+ const id = row[path2.for(entity2.primary).alias];
46
+ for (let i = 0; i < listener.path.length; i++) {
47
+ const relationName = listener.path[i];
48
+ const targetEntity = getTargetEntity(this.model, entity2, relationName);
49
+ if (!targetEntity) {
50
+ throw new Error(`Target entity for relation ${entity2.name}::${relationName} not found`);
51
+ }
52
+ path2 = path2.for(relationName);
53
+ nodes.push({ relation: relationName, entity: targetEntity.name, id: row[path2.for(targetEntity.primary).alias] });
54
+ entity2 = targetEntity;
55
+ }
56
+ return { id, nodes };
57
+ });
16
58
  }
17
59
  }
18
60
  export {