@contember/engine-actions 2.1.0-beta.1 → 2.2.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/index.cjs +10 -4
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +10 -4
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/ActionsExecutionContainerHookFactory.cjs +3 -2
- package/dist/development/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
- package/dist/development/src/ActionsExecutionContainerHookFactory.js +3 -2
- package/dist/development/src/ActionsExecutionContainerHookFactory.js.map +1 -1
- package/dist/development/src/ListenerStoreProvider.cjs.map +1 -1
- package/dist/development/src/ListenerStoreProvider.js.map +1 -1
- package/dist/development/src/authorization/ActionsPermissionsFactory.cjs.map +1 -1
- package/dist/development/src/authorization/ActionsPermissionsFactory.js.map +1 -1
- package/dist/development/src/dispatch/DispatchWorkerSupervisor.cjs.map +1 -1
- package/dist/development/src/dispatch/DispatchWorkerSupervisor.js.map +1 -1
- package/dist/development/src/dispatch/EventDispatcher.cjs.map +1 -1
- package/dist/development/src/dispatch/EventDispatcher.js.map +1 -1
- package/dist/development/src/dispatch/EventsRepository.cjs.map +1 -1
- package/dist/development/src/dispatch/EventsRepository.js.map +1 -1
- package/dist/development/src/dispatch/LazyDispatchWorker.cjs +67 -0
- package/dist/development/src/dispatch/LazyDispatchWorker.cjs.map +1 -0
- package/dist/development/src/dispatch/LazyDispatchWorker.js +67 -0
- package/dist/development/src/dispatch/LazyDispatchWorker.js.map +1 -0
- package/dist/development/src/dispatch/ProjectDispatcher.cjs.map +1 -1
- package/dist/development/src/dispatch/ProjectDispatcher.js.map +1 -1
- package/dist/development/src/dispatch/TargetHandlerResolver.cjs.map +1 -1
- package/dist/development/src/dispatch/TargetHandlerResolver.js.map +1 -1
- package/dist/development/src/dispatch/WebhookTargetHandler.cjs.map +1 -1
- package/dist/development/src/dispatch/WebhookTargetHandler.js.map +1 -1
- package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
- package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
- package/dist/development/src/graphql/http/ActionsContextResolver.cjs.map +1 -1
- package/dist/development/src/graphql/http/ActionsContextResolver.js.map +1 -1
- package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +1 -1
- package/dist/development/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +1 -1
- package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +1 -1
- package/dist/development/src/graphql/http/ActionsWebsocketControllerFactory.js.map +1 -1
- package/dist/development/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
- package/dist/development/src/graphql/resolvers/ResolversFactory.js.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -1
- package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
- package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
- package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +1 -1
- package/dist/development/src/graphql/resolvers/query/VariablesQueryResolver.js.map +1 -1
- package/dist/development/src/migrations/index.cjs.map +1 -1
- package/dist/development/src/migrations/index.js.map +1 -1
- package/dist/development/src/model/EventByIdQuery.cjs.map +1 -1
- package/dist/development/src/model/EventByIdQuery.js.map +1 -1
- package/dist/development/src/model/EventsInProcessingQuery.cjs.map +1 -1
- package/dist/development/src/model/EventsInProcessingQuery.js.map +1 -1
- package/dist/development/src/model/EventsToProcessQuery.cjs.map +1 -1
- package/dist/development/src/model/EventsToProcessQuery.js.map +1 -1
- package/dist/development/src/model/FailedEventsQuery.cjs.map +1 -1
- package/dist/development/src/model/FailedEventsQuery.js.map +1 -1
- package/dist/development/src/model/VariablesManager.cjs.map +1 -1
- package/dist/development/src/model/VariablesManager.js.map +1 -1
- package/dist/development/src/triggers/TriggerHandler.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerHandler.js.map +1 -1
- package/dist/development/src/triggers/TriggerIndirectChangesFetcher.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerIndirectChangesFetcher.js.map +1 -1
- package/dist/development/src/triggers/TriggerListenersBuilder.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerListenersBuilder.js.map +1 -1
- package/dist/development/src/triggers/TriggerListenersFactory.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerListenersFactory.js.map +1 -1
- package/dist/development/src/triggers/TriggerListenersStore.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerListenersStore.js.map +1 -1
- package/dist/development/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerPayloadBuilder.js.map +1 -1
- package/dist/development/src/triggers/TriggerPayloadManager.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerPayloadManager.js.map +1 -1
- package/dist/development/src/triggers/TriggerPayloadPersister.cjs +32 -20
- package/dist/development/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerPayloadPersister.js +32 -20
- package/dist/development/src/triggers/TriggerPayloadPersister.js.map +1 -1
- package/dist/production/index.cjs +10 -4
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +10 -4
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/ActionsExecutionContainerHookFactory.cjs +3 -2
- package/dist/production/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
- package/dist/production/src/ActionsExecutionContainerHookFactory.js +3 -2
- package/dist/production/src/ActionsExecutionContainerHookFactory.js.map +1 -1
- package/dist/production/src/ListenerStoreProvider.cjs.map +1 -1
- package/dist/production/src/ListenerStoreProvider.js.map +1 -1
- package/dist/production/src/authorization/ActionsPermissionsFactory.cjs.map +1 -1
- package/dist/production/src/authorization/ActionsPermissionsFactory.js.map +1 -1
- package/dist/production/src/dispatch/DispatchWorkerSupervisor.cjs.map +1 -1
- package/dist/production/src/dispatch/DispatchWorkerSupervisor.js.map +1 -1
- package/dist/production/src/dispatch/EventDispatcher.cjs.map +1 -1
- package/dist/production/src/dispatch/EventDispatcher.js.map +1 -1
- package/dist/production/src/dispatch/EventsRepository.cjs.map +1 -1
- package/dist/production/src/dispatch/EventsRepository.js.map +1 -1
- package/dist/production/src/dispatch/LazyDispatchWorker.cjs +67 -0
- package/dist/production/src/dispatch/LazyDispatchWorker.cjs.map +1 -0
- package/dist/production/src/dispatch/LazyDispatchWorker.js +67 -0
- package/dist/production/src/dispatch/LazyDispatchWorker.js.map +1 -0
- package/dist/production/src/dispatch/ProjectDispatcher.cjs.map +1 -1
- package/dist/production/src/dispatch/ProjectDispatcher.js.map +1 -1
- package/dist/production/src/dispatch/TargetHandlerResolver.cjs.map +1 -1
- package/dist/production/src/dispatch/TargetHandlerResolver.js.map +1 -1
- package/dist/production/src/dispatch/WebhookTargetHandler.cjs.map +1 -1
- package/dist/production/src/dispatch/WebhookTargetHandler.js.map +1 -1
- package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
- package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
- package/dist/production/src/graphql/http/ActionsContextResolver.cjs.map +1 -1
- package/dist/production/src/graphql/http/ActionsContextResolver.js.map +1 -1
- package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.cjs.map +1 -1
- package/dist/production/src/graphql/http/ActionsGraphQLHandlerFactory.js.map +1 -1
- package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.cjs.map +1 -1
- package/dist/production/src/graphql/http/ActionsWebsocketControllerFactory.js.map +1 -1
- package/dist/production/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
- package/dist/production/src/graphql/resolvers/ResolversFactory.js.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.cjs.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.js.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.cjs.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.js.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -1
- package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
- package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
- package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.cjs.map +1 -1
- package/dist/production/src/graphql/resolvers/query/VariablesQueryResolver.js.map +1 -1
- package/dist/production/src/migrations/index.cjs.map +1 -1
- package/dist/production/src/migrations/index.js.map +1 -1
- package/dist/production/src/model/EventByIdQuery.cjs.map +1 -1
- package/dist/production/src/model/EventByIdQuery.js.map +1 -1
- package/dist/production/src/model/EventsInProcessingQuery.cjs.map +1 -1
- package/dist/production/src/model/EventsInProcessingQuery.js.map +1 -1
- package/dist/production/src/model/EventsToProcessQuery.cjs.map +1 -1
- package/dist/production/src/model/EventsToProcessQuery.js.map +1 -1
- package/dist/production/src/model/FailedEventsQuery.cjs.map +1 -1
- package/dist/production/src/model/FailedEventsQuery.js.map +1 -1
- package/dist/production/src/model/VariablesManager.cjs.map +1 -1
- package/dist/production/src/model/VariablesManager.js.map +1 -1
- package/dist/production/src/triggers/TriggerHandler.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerHandler.js.map +1 -1
- package/dist/production/src/triggers/TriggerIndirectChangesFetcher.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerIndirectChangesFetcher.js.map +1 -1
- package/dist/production/src/triggers/TriggerListenersBuilder.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerListenersBuilder.js.map +1 -1
- package/dist/production/src/triggers/TriggerListenersFactory.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerListenersFactory.js.map +1 -1
- package/dist/production/src/triggers/TriggerListenersStore.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerListenersStore.js.map +1 -1
- package/dist/production/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerPayloadBuilder.js.map +1 -1
- package/dist/production/src/triggers/TriggerPayloadManager.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerPayloadManager.js.map +1 -1
- package/dist/production/src/triggers/TriggerPayloadPersister.cjs +32 -20
- package/dist/production/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerPayloadPersister.js +32 -20
- package/dist/production/src/triggers/TriggerPayloadPersister.js.map +1 -1
- package/dist/tests/cases/unit/lazyDispatchWorker.test.d.ts +2 -0
- package/dist/tests/cases/unit/lazyDispatchWorker.test.d.ts.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ActionsExecutionContainerHookFactory.d.ts +1 -1
- package/dist/types/ActionsExecutionContainerHookFactory.d.ts.map +1 -1
- package/dist/types/ListenerStoreProvider.d.ts +1 -1
- package/dist/types/ListenerStoreProvider.d.ts.map +1 -1
- package/dist/types/authorization/index.d.ts +3 -3
- package/dist/types/authorization/index.d.ts.map +1 -1
- package/dist/types/dispatch/DispatchWorkerSupervisor.d.ts +1 -1
- package/dist/types/dispatch/DispatchWorkerSupervisor.d.ts.map +1 -1
- package/dist/types/dispatch/EventDispatcher.d.ts +3 -3
- package/dist/types/dispatch/EventDispatcher.d.ts.map +1 -1
- package/dist/types/dispatch/EventsRepository.d.ts +1 -1
- package/dist/types/dispatch/EventsRepository.d.ts.map +1 -1
- package/dist/types/dispatch/LazyDispatchWorker.d.ts +11 -0
- package/dist/types/dispatch/LazyDispatchWorker.d.ts.map +1 -0
- package/dist/types/dispatch/ProjectDispatcher.d.ts +1 -1
- package/dist/types/dispatch/ProjectDispatcher.d.ts.map +1 -1
- package/dist/types/dispatch/TargetHandlerResolver.d.ts +2 -2
- package/dist/types/dispatch/TargetHandlerResolver.d.ts.map +1 -1
- package/dist/types/dispatch/WebhookTargetHandler.d.ts +2 -2
- package/dist/types/dispatch/WebhookTargetHandler.d.ts.map +1 -1
- package/dist/types/dispatch/types.d.ts +2 -2
- package/dist/types/dispatch/types.d.ts.map +1 -1
- package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts +3 -3
- package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts.map +1 -1
- package/dist/types/graphql/http/ActionsContextResolver.d.ts +1 -1
- package/dist/types/graphql/http/ActionsContextResolver.d.ts.map +1 -1
- package/dist/types/graphql/http/ActionsGraphQLHandlerFactory.d.ts +2 -2
- package/dist/types/graphql/http/ActionsGraphQLHandlerFactory.d.ts.map +1 -1
- package/dist/types/graphql/http/ActionsWebsocketControllerFactory.d.ts +2 -2
- package/dist/types/graphql/http/ActionsWebsocketControllerFactory.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/ResolversFactory.d.ts +4 -4
- package/dist/types/graphql/resolvers/ResolversFactory.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/index.d.ts +2 -2
- package/dist/types/graphql/resolvers/index.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/mutation/ProcessBatchMutationResolver.d.ts +3 -3
- package/dist/types/graphql/resolvers/mutation/ProcessBatchMutationResolver.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts +3 -3
- package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/mutation/SetVariablesMutationResolver.d.ts +3 -3
- package/dist/types/graphql/resolvers/mutation/SetVariablesMutationResolver.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts +3 -3
- package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/mutation/index.d.ts +4 -4
- package/dist/types/graphql/resolvers/mutation/index.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts +2 -2
- package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/query/VariablesQueryResolver.d.ts +3 -3
- package/dist/types/graphql/resolvers/query/VariablesQueryResolver.d.ts.map +1 -1
- package/dist/types/graphql/resolvers/query/index.d.ts +1 -1
- package/dist/types/graphql/resolvers/query/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model/EventByIdQuery.d.ts +1 -1
- package/dist/types/model/EventByIdQuery.d.ts.map +1 -1
- package/dist/types/model/EventsInProcessingQuery.d.ts +2 -2
- package/dist/types/model/EventsInProcessingQuery.d.ts.map +1 -1
- package/dist/types/model/EventsToProcessQuery.d.ts +2 -2
- package/dist/types/model/EventsToProcessQuery.d.ts.map +1 -1
- package/dist/types/model/FailedEventsQuery.d.ts +2 -2
- package/dist/types/model/FailedEventsQuery.d.ts.map +1 -1
- package/dist/types/model/VariablesManager.d.ts +1 -1
- package/dist/types/model/VariablesManager.d.ts.map +1 -1
- package/dist/types/triggers/TriggerHandler.d.ts +3 -3
- package/dist/types/triggers/TriggerHandler.d.ts.map +1 -1
- package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts +1 -1
- package/dist/types/triggers/TriggerIndirectChangesFetcher.d.ts.map +1 -1
- package/dist/types/triggers/TriggerListeners.d.ts +1 -1
- package/dist/types/triggers/TriggerListeners.d.ts.map +1 -1
- package/dist/types/triggers/TriggerListenersBuilder.d.ts +1 -1
- package/dist/types/triggers/TriggerListenersBuilder.d.ts.map +1 -1
- package/dist/types/triggers/TriggerListenersFactory.d.ts +1 -1
- package/dist/types/triggers/TriggerListenersFactory.d.ts.map +1 -1
- package/dist/types/triggers/TriggerListenersStore.d.ts +1 -1
- package/dist/types/triggers/TriggerListenersStore.d.ts.map +1 -1
- package/dist/types/triggers/TriggerPayloadBuilder.d.ts +1 -1
- package/dist/types/triggers/TriggerPayloadBuilder.d.ts.map +1 -1
- package/dist/types/triggers/TriggerPayloadManager.d.ts +4 -4
- package/dist/types/triggers/TriggerPayloadManager.d.ts.map +1 -1
- package/dist/types/triggers/TriggerPayloadPersister.d.ts +3 -2
- package/dist/types/triggers/TriggerPayloadPersister.d.ts.map +1 -1
- package/dist/types/triggers/index.d.ts +7 -7
- package/dist/types/triggers/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -15
- package/src/ActionsExecutionContainerHookFactory.ts +9 -5
- package/src/ListenerStoreProvider.ts +1 -1
- package/src/authorization/ActionsPermissionsFactory.ts +1 -1
- package/src/authorization/index.ts +3 -3
- package/src/dispatch/DispatchWorkerSupervisor.ts +2 -2
- package/src/dispatch/EventDispatcher.ts +4 -4
- package/src/dispatch/EventsRepository.ts +3 -3
- package/src/dispatch/LazyDispatchWorker.ts +72 -0
- package/src/dispatch/ProjectDispatcher.ts +2 -2
- package/src/dispatch/TargetHandlerResolver.ts +3 -3
- package/src/dispatch/WebhookTargetHandler.ts +3 -3
- package/src/dispatch/types.ts +2 -2
- package/src/graphql/http/ActionsApiMiddlewareFactory.ts +4 -4
- package/src/graphql/http/ActionsContextResolver.ts +1 -1
- package/src/graphql/http/ActionsGraphQLHandlerFactory.ts +3 -2
- package/src/graphql/http/ActionsWebsocketControllerFactory.ts +2 -2
- package/src/graphql/resolvers/ResolversFactory.ts +10 -5
- package/src/graphql/resolvers/index.ts +2 -2
- package/src/graphql/resolvers/mutation/ProcessBatchMutationResolver.ts +4 -4
- package/src/graphql/resolvers/mutation/RetryEventMutationResolver.ts +5 -5
- package/src/graphql/resolvers/mutation/SetVariablesMutationResolver.ts +4 -4
- package/src/graphql/resolvers/mutation/StopEventMutationResolver.ts +4 -4
- package/src/graphql/resolvers/mutation/index.ts +4 -4
- package/src/graphql/resolvers/query/EventsQueryResolver.ts +8 -8
- package/src/graphql/resolvers/query/VariablesQueryResolver.ts +4 -4
- package/src/graphql/resolvers/query/index.ts +1 -1
- package/src/index.ts +39 -27
- package/src/migrations/index.ts +3 -3
- package/src/model/EventByIdQuery.ts +1 -1
- package/src/model/EventsInProcessingQuery.ts +2 -2
- package/src/model/EventsToProcessQuery.ts +3 -3
- package/src/model/FailedEventsQuery.ts +2 -2
- package/src/model/VariablesManager.ts +3 -3
- package/src/triggers/TriggerHandler.ts +3 -3
- package/src/triggers/TriggerIndirectChangesFetcher.ts +1 -1
- package/src/triggers/TriggerListeners.ts +1 -1
- package/src/triggers/TriggerListenersBuilder.ts +4 -4
- package/src/triggers/TriggerListenersFactory.ts +2 -2
- package/src/triggers/TriggerListenersStore.ts +1 -1
- package/src/triggers/TriggerPayloadBuilder.ts +3 -3
- package/src/triggers/TriggerPayloadManager.ts +4 -4
- package/src/triggers/TriggerPayloadPersister.ts +22 -9
- package/src/triggers/index.ts +7 -7
- package/tests/cases/unit/generator.test.ts +1 -1
- package/tests/cases/unit/lazyDispatchWorker.test.ts +226 -0
- package/tests/cases/unit/webhookHandler.test.ts +5 -5
- package/vitest.config.ts +0 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Mapper, PathFactory, WhereBuilder } from '@contember/engine-content-api'
|
|
2
|
-
import { IndirectListener, JunctionListener } from './TriggerListenersStore'
|
|
2
|
+
import { IndirectListener, JunctionListener } from './TriggerListenersStore.js'
|
|
3
3
|
import { SelectBuilder } from '@contember/database'
|
|
4
4
|
import { ActionsPayload, Input, Model, Schema } from '@contember/schema'
|
|
5
5
|
import { JoinBuilder } from '@contember/engine-content-api'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CreateListener, DeleteListener, IndirectListener, JunctionListener, UpdateListener } from './TriggerListenersStore'
|
|
1
|
+
import { CreateListener, DeleteListener, IndirectListener, JunctionListener, UpdateListener } from './TriggerListenersStore.js'
|
|
2
2
|
|
|
3
3
|
export interface TriggerListeners {
|
|
4
4
|
readonly deleteListeners: Map<string, DeleteListener[]>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Actions, Model } from '@contember/schema'
|
|
2
|
-
import { TriggerListeners } from './TriggerListeners'
|
|
3
|
-
import { JunctionListener, TriggerListenersStore } from './TriggerListenersStore'
|
|
2
|
+
import { TriggerListeners } from './TriggerListeners.js'
|
|
3
|
+
import { JunctionListener, TriggerListenersStore } from './TriggerListenersStore.js'
|
|
4
4
|
import { acceptFieldVisitor, getEntity } from '@contember/schema-utils'
|
|
5
|
-
import { mapGetOrPut } from '../utils/map'
|
|
6
|
-
import { ImplementationException } from '../ImplementationException'
|
|
5
|
+
import { mapGetOrPut } from '../utils/map.js'
|
|
6
|
+
import { ImplementationException } from '../ImplementationException.js'
|
|
7
7
|
|
|
8
8
|
export class TriggerListenerBuilder {
|
|
9
9
|
private readonly data: TriggerListeners = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TriggerListenersStore } from './TriggerListenersStore'
|
|
2
|
-
import { TriggerListenerBuilder } from './TriggerListenersBuilder'
|
|
1
|
+
import { TriggerListenersStore } from './TriggerListenersStore.js'
|
|
2
|
+
import { TriggerListenerBuilder } from './TriggerListenersBuilder.js'
|
|
3
3
|
import { Schema } from '@contember/schema'
|
|
4
4
|
|
|
5
5
|
export class TriggerListenersFactory {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ImplementationException } from '../ImplementationException'
|
|
2
|
-
import { assertNever } from '../utils/assertNever'
|
|
3
|
-
import { FiredEvent } from './TriggerPayloadManager'
|
|
1
|
+
import { ImplementationException } from '../ImplementationException.js'
|
|
2
|
+
import { assertNever } from '../utils/assertNever.js'
|
|
3
|
+
import { FiredEvent } from './TriggerPayloadManager.js'
|
|
4
4
|
import { Actions, ActionsPayload, Input } from '@contember/schema'
|
|
5
5
|
import { FieldNode, Mapper, ObjectNode } from '@contember/engine-content-api'
|
|
6
6
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Actions, ActionsPayload, Input, Model } from '@contember/schema'
|
|
2
|
-
import { AnyListener } from './TriggerListenersStore'
|
|
3
|
-
import { EventCause } from './TriggerHandler'
|
|
4
|
-
import { TriggerPayloadBuilder } from './TriggerPayloadBuilder'
|
|
5
|
-
import { TriggerPayloadPersister } from './TriggerPayloadPersister'
|
|
2
|
+
import { AnyListener } from './TriggerListenersStore.js'
|
|
3
|
+
import { EventCause } from './TriggerHandler.js'
|
|
4
|
+
import { TriggerPayloadBuilder } from './TriggerPayloadBuilder.js'
|
|
5
|
+
import { TriggerPayloadPersister } from './TriggerPayloadPersister.js'
|
|
6
6
|
|
|
7
7
|
export interface FiredEvent {
|
|
8
8
|
listener: AnyListener
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Client, InsertBuilder } from '@contember/database'
|
|
2
|
-
import { Mapper } from '@contember/engine-content-api'
|
|
2
|
+
import { Mapper, TriggeredActionEvent, TriggeredActionsCollector } from '@contember/engine-content-api'
|
|
3
3
|
import { Actions, ActionsPayload } from '@contember/schema'
|
|
4
|
-
import { EventRow } from '../model/types'
|
|
5
|
-
import { notify } from '../utils/notifyChannel'
|
|
4
|
+
import { EventRow } from '../model/types.js'
|
|
5
|
+
import { notify } from '../utils/notifyChannel.js'
|
|
6
6
|
|
|
7
7
|
type EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {
|
|
8
8
|
created_at: string | Date
|
|
@@ -20,6 +20,7 @@ export class TriggerPayloadPersister {
|
|
|
20
20
|
private readonly schemaId: number | undefined,
|
|
21
21
|
private readonly identityId: string,
|
|
22
22
|
private readonly userInfo: { ipAddress: string | null; userAgent: string | null },
|
|
23
|
+
private readonly triggeredActionsCollector: TriggeredActionsCollector | undefined,
|
|
23
24
|
) {
|
|
24
25
|
}
|
|
25
26
|
|
|
@@ -28,13 +29,17 @@ export class TriggerPayloadPersister {
|
|
|
28
29
|
if (!this.schemaId) {
|
|
29
30
|
throw new Error('Schema id is not set')
|
|
30
31
|
}
|
|
32
|
+
const collector = this.triggeredActionsCollector
|
|
31
33
|
for (let i = 0; i < payloads.length; i += chunkSize) {
|
|
32
34
|
const chunk = payloads.slice(i, i + chunkSize)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
.
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
const collected: TriggeredActionEvent[] | undefined = collector ? [] : undefined
|
|
36
|
+
const rows = chunk.map((it): EventRowToInsert => {
|
|
37
|
+
const id = this.providers.uuid()
|
|
38
|
+
const transactionId = this.mapper.transactionId
|
|
39
|
+
collected?.push({ id, trigger: trigger.name, target: trigger.target, transactionId })
|
|
40
|
+
return {
|
|
41
|
+
id,
|
|
42
|
+
transaction_id: transactionId,
|
|
38
43
|
created_at: 'now',
|
|
39
44
|
visible_at: 'now',
|
|
40
45
|
num_retries: 0,
|
|
@@ -50,8 +55,16 @@ export class TriggerPayloadPersister {
|
|
|
50
55
|
identity_id: this.identityId,
|
|
51
56
|
ip_address: this.userInfo.ipAddress,
|
|
52
57
|
user_agent: this.userInfo.userAgent,
|
|
53
|
-
}
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
await InsertBuilder.create()
|
|
61
|
+
.into('actions_event')
|
|
62
|
+
.values(rows)
|
|
54
63
|
.execute(this.client)
|
|
64
|
+
|
|
65
|
+
if (collected && collected.length > 0) {
|
|
66
|
+
collector!.add(collected)
|
|
67
|
+
}
|
|
55
68
|
}
|
|
56
69
|
|
|
57
70
|
await notify(this.client, this.projectSlug)
|
package/src/triggers/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './TriggerIndirectChangesFetcher'
|
|
2
|
-
export * from './TriggerListeners'
|
|
3
|
-
export * from './TriggerListenersBuilder'
|
|
4
|
-
export * from './TriggerListenersFactory'
|
|
5
|
-
export * from './TriggerListenersStore'
|
|
6
|
-
export * from './TriggerHandler'
|
|
7
|
-
export * from './TriggerPayloadManager'
|
|
1
|
+
export * from './TriggerIndirectChangesFetcher.js'
|
|
2
|
+
export * from './TriggerListeners.js'
|
|
3
|
+
export * from './TriggerListenersBuilder.js'
|
|
4
|
+
export * from './TriggerListenersFactory.js'
|
|
5
|
+
export * from './TriggerListenersStore.js'
|
|
6
|
+
export * from './TriggerHandler.js'
|
|
7
|
+
export * from './TriggerPayloadManager.js'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TriggerListenerBuilder, TriggerListeners } from '../../../src/triggers'
|
|
1
|
+
import { TriggerListenerBuilder, TriggerListeners } from '../../../src/triggers/index.js'
|
|
2
2
|
import { SchemaDefinition as def } from '@contember/schema-definition'
|
|
3
3
|
import { Actions, Model } from '@contember/schema'
|
|
4
4
|
import { expect, test } from 'bun:test'
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
|
+
import { Runnable, RunnableArgs, Running } from '@contember/engine-common'
|
|
3
|
+
import { createLogger, TestLoggerHandler } from '@contember/logger'
|
|
4
|
+
import { LazyDispatchWorker } from '../../../src/dispatch/LazyDispatchWorker.js'
|
|
5
|
+
import { DispatchWorkerSupervisorFactory } from '../../../src/dispatch/DispatchWorkerSupervisor.js'
|
|
6
|
+
import { ProjectGroupContainerResolver } from '@contember/engine-http'
|
|
7
|
+
import { ProjectGroupContainer } from '@contember/engine-http'
|
|
8
|
+
|
|
9
|
+
const silentLogger = createLogger(new TestLoggerHandler())
|
|
10
|
+
|
|
11
|
+
const tick = () => new Promise<void>(r => setImmediate(r))
|
|
12
|
+
|
|
13
|
+
const waitFor = async (cond: () => boolean, attempts = 50) => {
|
|
14
|
+
for (let i = 0; i < attempts; i++) {
|
|
15
|
+
if (cond()) return
|
|
16
|
+
await tick()
|
|
17
|
+
}
|
|
18
|
+
throw new Error('waitFor: condition not met')
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
type FakeRunnable = Runnable & {
|
|
22
|
+
id: string
|
|
23
|
+
startCount: number
|
|
24
|
+
endCount: number
|
|
25
|
+
failOnRun?: () => Error | undefined
|
|
26
|
+
emitError?: (e: any) => void
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const createFakeSupervisor = (id: string, opts: { failOnRun?: () => Error | undefined } = {}): FakeRunnable => {
|
|
30
|
+
const fake: FakeRunnable = {
|
|
31
|
+
id,
|
|
32
|
+
startCount: 0,
|
|
33
|
+
endCount: 0,
|
|
34
|
+
failOnRun: opts.failOnRun,
|
|
35
|
+
async run(args: RunnableArgs): Promise<Running> {
|
|
36
|
+
fake.startCount++
|
|
37
|
+
const failure = fake.failOnRun?.()
|
|
38
|
+
if (failure) {
|
|
39
|
+
throw failure
|
|
40
|
+
}
|
|
41
|
+
fake.emitError = args.onError
|
|
42
|
+
return {
|
|
43
|
+
end: async () => {
|
|
44
|
+
fake.endCount++
|
|
45
|
+
},
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
}
|
|
49
|
+
return fake
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
type FakeResolver = Pick<ProjectGroupContainerResolver, 'on'> & {
|
|
53
|
+
fire: (slug: string | undefined) => (() => void) | undefined
|
|
54
|
+
listenerCount: () => number
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const createFakeResolver = (): FakeResolver => {
|
|
58
|
+
const listeners: Array<(args: { container: ProjectGroupContainer; slug: string | undefined }) => void | (() => void)> = []
|
|
59
|
+
return {
|
|
60
|
+
on(_event, cb) {
|
|
61
|
+
listeners.push(cb as any)
|
|
62
|
+
return () => {
|
|
63
|
+
const idx = listeners.indexOf(cb as any)
|
|
64
|
+
if (idx >= 0) listeners.splice(idx, 1)
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
fire(slug) {
|
|
68
|
+
const fakeContainer = { slug } as unknown as ProjectGroupContainer
|
|
69
|
+
const cleanups = listeners.map(it => it({ container: fakeContainer, slug }))
|
|
70
|
+
return () => cleanups.forEach(it => it?.())
|
|
71
|
+
},
|
|
72
|
+
listenerCount: () => listeners.length,
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const createFakeFactory = (registry: FakeRunnable[]): DispatchWorkerSupervisorFactory => {
|
|
77
|
+
let counter = 0
|
|
78
|
+
return {
|
|
79
|
+
create(_container: ProjectGroupContainer): any {
|
|
80
|
+
const fake = createFakeSupervisor(`fake-${counter++}`)
|
|
81
|
+
registry.push(fake)
|
|
82
|
+
return fake
|
|
83
|
+
},
|
|
84
|
+
} as any
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const recordOnError = () => {
|
|
88
|
+
const errors: any[] = []
|
|
89
|
+
return { errors, onError: (e: any) => errors.push(e) }
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
describe('LazyDispatchWorker', () => {
|
|
93
|
+
test('does not spawn supervisor before any project group is created', async () => {
|
|
94
|
+
const resolver = createFakeResolver()
|
|
95
|
+
const supervisors: FakeRunnable[] = []
|
|
96
|
+
const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
|
|
97
|
+
const { onError } = recordOnError()
|
|
98
|
+
|
|
99
|
+
const running = await worker.run({ logger: silentLogger, onError })
|
|
100
|
+
|
|
101
|
+
expect(supervisors).toHaveLength(0)
|
|
102
|
+
expect(resolver.listenerCount()).toBe(1)
|
|
103
|
+
|
|
104
|
+
await running.end()
|
|
105
|
+
expect(resolver.listenerCount()).toBe(0)
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
test('spawns supervisor when project group is created', async () => {
|
|
109
|
+
const resolver = createFakeResolver()
|
|
110
|
+
const supervisors: FakeRunnable[] = []
|
|
111
|
+
const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
|
|
112
|
+
const { onError, errors } = recordOnError()
|
|
113
|
+
|
|
114
|
+
const running = await worker.run({ logger: silentLogger, onError })
|
|
115
|
+
|
|
116
|
+
resolver.fire('tenantA')
|
|
117
|
+
await waitFor(() => supervisors.length === 1 && supervisors[0].startCount === 1)
|
|
118
|
+
|
|
119
|
+
expect(supervisors[0].startCount).toBe(1)
|
|
120
|
+
expect(supervisors[0].endCount).toBe(0)
|
|
121
|
+
expect(errors).toHaveLength(0)
|
|
122
|
+
|
|
123
|
+
await running.end()
|
|
124
|
+
expect(supervisors[0].endCount).toBe(1)
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
test('spawns one supervisor per project group, isolated', async () => {
|
|
128
|
+
const resolver = createFakeResolver()
|
|
129
|
+
const supervisors: FakeRunnable[] = []
|
|
130
|
+
const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
|
|
131
|
+
const { onError } = recordOnError()
|
|
132
|
+
|
|
133
|
+
const running = await worker.run({ logger: silentLogger, onError })
|
|
134
|
+
|
|
135
|
+
resolver.fire('tenantA')
|
|
136
|
+
resolver.fire('tenantB')
|
|
137
|
+
await waitFor(() => supervisors.length === 2 && supervisors.every(it => it.startCount === 1))
|
|
138
|
+
|
|
139
|
+
await running.end()
|
|
140
|
+
expect(supervisors.map(it => it.endCount)).toEqual([1, 1])
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
test('container invalidation ends only that supervisor', async () => {
|
|
144
|
+
const resolver = createFakeResolver()
|
|
145
|
+
const supervisors: FakeRunnable[] = []
|
|
146
|
+
const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
|
|
147
|
+
const { onError } = recordOnError()
|
|
148
|
+
|
|
149
|
+
const running = await worker.run({ logger: silentLogger, onError })
|
|
150
|
+
|
|
151
|
+
const cleanupA = resolver.fire('tenantA')!
|
|
152
|
+
resolver.fire('tenantB')
|
|
153
|
+
await waitFor(() => supervisors.length === 2 && supervisors.every(it => it.startCount === 1))
|
|
154
|
+
|
|
155
|
+
cleanupA()
|
|
156
|
+
await waitFor(() => supervisors[0].endCount === 1)
|
|
157
|
+
|
|
158
|
+
expect(supervisors[0].endCount).toBe(1)
|
|
159
|
+
expect(supervisors[1].endCount).toBe(0)
|
|
160
|
+
|
|
161
|
+
await running.end()
|
|
162
|
+
expect(supervisors[1].endCount).toBe(1)
|
|
163
|
+
})
|
|
164
|
+
|
|
165
|
+
test('end() unsubscribes listener, no further supervisors are spawned', async () => {
|
|
166
|
+
const resolver = createFakeResolver()
|
|
167
|
+
const supervisors: FakeRunnable[] = []
|
|
168
|
+
const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
|
|
169
|
+
const { onError } = recordOnError()
|
|
170
|
+
|
|
171
|
+
const running = await worker.run({ logger: silentLogger, onError })
|
|
172
|
+
expect(resolver.listenerCount()).toBe(1)
|
|
173
|
+
|
|
174
|
+
await running.end()
|
|
175
|
+
expect(resolver.listenerCount()).toBe(0)
|
|
176
|
+
|
|
177
|
+
resolver.fire('tenantLate')
|
|
178
|
+
await tick()
|
|
179
|
+
expect(supervisors).toHaveLength(0)
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
test('startup failure of a tenant supervisor propagates to onError once retries are exhausted', async () => {
|
|
183
|
+
const resolver = createFakeResolver()
|
|
184
|
+
const registry: FakeRunnable[] = []
|
|
185
|
+
const factory: DispatchWorkerSupervisorFactory = {
|
|
186
|
+
create(_container: ProjectGroupContainer): any {
|
|
187
|
+
const fake = createFakeSupervisor(`fake-${registry.length}`, {
|
|
188
|
+
failOnRun: () => new Error('boom'),
|
|
189
|
+
})
|
|
190
|
+
registry.push(fake)
|
|
191
|
+
return fake
|
|
192
|
+
},
|
|
193
|
+
} as any
|
|
194
|
+
const worker = new LazyDispatchWorker(resolver as any, factory, { startupMax: 0, minBackoff: 1 })
|
|
195
|
+
const { onError, errors } = recordOnError()
|
|
196
|
+
|
|
197
|
+
const running = await worker.run({ logger: silentLogger, onError })
|
|
198
|
+
|
|
199
|
+
resolver.fire('tenantBroken')
|
|
200
|
+
await waitFor(() => errors.length > 0, 200)
|
|
201
|
+
|
|
202
|
+
expect(errors[0]).toBeInstanceOf(Error)
|
|
203
|
+
expect((errors[0] as Error).message).toContain('boom')
|
|
204
|
+
|
|
205
|
+
await running.end()
|
|
206
|
+
})
|
|
207
|
+
|
|
208
|
+
test('errors after end() are swallowed', async () => {
|
|
209
|
+
const resolver = createFakeResolver()
|
|
210
|
+
const supervisors: FakeRunnable[] = []
|
|
211
|
+
const worker = new LazyDispatchWorker(resolver as any, createFakeFactory(supervisors))
|
|
212
|
+
const { onError, errors } = recordOnError()
|
|
213
|
+
|
|
214
|
+
const running = await worker.run({ logger: silentLogger, onError })
|
|
215
|
+
|
|
216
|
+
resolver.fire('tenantA')
|
|
217
|
+
await waitFor(() => supervisors.length === 1 && supervisors[0].emitError !== undefined)
|
|
218
|
+
|
|
219
|
+
await running.end()
|
|
220
|
+
expect(supervisors[0].endCount).toBe(1)
|
|
221
|
+
|
|
222
|
+
supervisors[0].emitError!(new Error('after end'))
|
|
223
|
+
await tick()
|
|
224
|
+
expect(errors).toHaveLength(0)
|
|
225
|
+
})
|
|
226
|
+
})
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test'
|
|
2
|
-
import { WebhookTargetHandler } from '../../../src/dispatch/WebhookTargetHandler'
|
|
3
|
-
import { FetcherResponse } from '../../../src/dispatch/WebhookFetcher'
|
|
2
|
+
import { WebhookTargetHandler } from '../../../src/dispatch/WebhookTargetHandler.js'
|
|
3
|
+
import { FetcherResponse } from '../../../src/dispatch/WebhookFetcher.js'
|
|
4
4
|
import { createLogger, Logger, TestLoggerHandler } from '@contember/logger'
|
|
5
|
-
import { EventRow } from '../../../src/model/types'
|
|
5
|
+
import { EventRow } from '../../../src/model/types.js'
|
|
6
6
|
import { Actions, ActionsPayload } from '@contember/schema'
|
|
7
|
-
import { HandledEvent } from '../../../src/dispatch/types'
|
|
8
|
-
import { testUuid } from '../../src/uuid'
|
|
7
|
+
import { HandledEvent } from '../../../src/dispatch/types.js'
|
|
8
|
+
import { testUuid } from '../../src/uuid.js'
|
|
9
9
|
|
|
10
10
|
const assert = {
|
|
11
11
|
equal: (a: any, b: any) => expect(a).toEqual(b),
|
package/vitest.config.ts
DELETED