@contember/engine-actions 2.0.0-alpha.9 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/ActionsExecutionContainerHookFactory.cjs +2 -2
- package/dist/development/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
- package/dist/development/src/ActionsExecutionContainerHookFactory.js +2 -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/ActionsAuthorizationActions.cjs.map +1 -1
- package/dist/development/src/authorization/ActionsAuthorizationActions.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 +1 -1
- package/dist/development/src/dispatch/EventDispatcher.cjs.map +1 -1
- package/dist/development/src/dispatch/EventDispatcher.js +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/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/WebhookFetcher.cjs.map +1 -1
- package/dist/development/src/dispatch/WebhookFetcher.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/SetVariablesMutationResolver.cjs.map +1 -1
- package/dist/development/src/graphql/resolvers/mutation/SetVariablesMutationResolver.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/graphql/schema/actions.graphql.cjs.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/SetVariableCommand.cjs.map +1 -1
- package/dist/development/src/model/SetVariableCommand.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/model/VariablesQuery.cjs.map +1 -1
- package/dist/development/src/model/VariablesQuery.js.map +1 -1
- package/dist/development/src/triggers/TriggerHandler.cjs +2 -2
- package/dist/development/src/triggers/TriggerHandler.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerHandler.js +2 -2
- 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 +4 -4
- package/dist/development/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerPayloadBuilder.js +4 -4
- 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 +3 -0
- package/dist/development/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
- package/dist/development/src/triggers/TriggerPayloadPersister.js +3 -0
- package/dist/development/src/triggers/TriggerPayloadPersister.js.map +1 -1
- package/dist/development/src/utils/map.cjs.map +1 -1
- package/dist/development/src/utils/map.js.map +1 -1
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/ActionsExecutionContainerHookFactory.cjs +2 -2
- package/dist/production/src/ActionsExecutionContainerHookFactory.cjs.map +1 -1
- package/dist/production/src/ActionsExecutionContainerHookFactory.js +2 -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/ActionsAuthorizationActions.cjs.map +1 -1
- package/dist/production/src/authorization/ActionsAuthorizationActions.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 +1 -1
- package/dist/production/src/dispatch/EventDispatcher.cjs.map +1 -1
- package/dist/production/src/dispatch/EventDispatcher.js +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/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/WebhookFetcher.cjs.map +1 -1
- package/dist/production/src/dispatch/WebhookFetcher.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/SetVariablesMutationResolver.cjs.map +1 -1
- package/dist/production/src/graphql/resolvers/mutation/SetVariablesMutationResolver.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/graphql/schema/actions.graphql.cjs.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/SetVariableCommand.cjs.map +1 -1
- package/dist/production/src/model/SetVariableCommand.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/model/VariablesQuery.cjs.map +1 -1
- package/dist/production/src/model/VariablesQuery.js.map +1 -1
- package/dist/production/src/triggers/TriggerHandler.cjs +2 -2
- package/dist/production/src/triggers/TriggerHandler.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerHandler.js +2 -2
- 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 +4 -4
- package/dist/production/src/triggers/TriggerPayloadBuilder.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerPayloadBuilder.js +4 -4
- 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 +3 -0
- package/dist/production/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
- package/dist/production/src/triggers/TriggerPayloadPersister.js +3 -0
- package/dist/production/src/triggers/TriggerPayloadPersister.js.map +1 -1
- package/dist/production/src/utils/map.cjs.map +1 -1
- package/dist/production/src/utils/map.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/graphql/schema/index.d.ts +71 -39
- package/dist/types/graphql/schema/index.d.ts.map +1 -1
- package/dist/types/triggers/TriggerPayloadPersister.d.ts +2 -2
- package/dist/types/triggers/TriggerPayloadPersister.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/{graphql-actions.codegen.yml → graphql.codegen.yml} +1 -1
- package/package.json +20 -26
- package/src/ActionsExecutionContainerHookFactory.ts +2 -2
- package/src/dispatch/EventDispatcher.ts +1 -1
- package/src/graphql/schema/index.ts +43 -39
- package/src/triggers/TriggerHandler.ts +2 -2
- package/src/triggers/TriggerPayloadBuilder.ts +4 -4
- package/src/triggers/TriggerPayloadPersister.ts +5 -2
- package/tests/cases/unit/generator.test.ts +5 -1
- package/tests/cases/unit/webhookHandler.test.ts +5 -1
- package/tsconfig.settings.json +0 -1
package/package.json
CHANGED
|
@@ -21,39 +21,33 @@
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
|
-
"scripts": {
|
|
25
|
-
"generate": "gql-gen --config graphql-actions.codegen.yml"
|
|
26
|
-
},
|
|
27
24
|
"dependencies": {
|
|
28
|
-
"@contember/authorization": "2.0.0-
|
|
29
|
-
"@contember/database": "2.0.0-
|
|
30
|
-
"@contember/database-migrations": "2.0.0-
|
|
31
|
-
"@contember/engine-common": "2.0.0-
|
|
32
|
-
"@contember/engine-content-api": "2.0.0-
|
|
33
|
-
"@contember/engine-http": "2.0.0-
|
|
34
|
-
"@contember/engine-plugins": "2.0.0-
|
|
35
|
-
"@contember/engine-system-api": "2.0.0-
|
|
36
|
-
"@contember/engine-tenant-api": "2.0.0-
|
|
37
|
-
"@contember/graphql-utils": "2.0.0-
|
|
38
|
-
"@contember/logger": "2.0.0-
|
|
39
|
-
"@contember/schema": "2.0.0-
|
|
40
|
-
"@contember/schema-utils": "2.0.0-
|
|
41
|
-
"@contember/typesafe": "2.0.0-
|
|
42
|
-
"@graphql-tools/schema": "^10.0.
|
|
25
|
+
"@contember/authorization": "2.0.0-beta.2",
|
|
26
|
+
"@contember/database": "2.0.0-beta.2",
|
|
27
|
+
"@contember/database-migrations": "2.0.0-beta.2",
|
|
28
|
+
"@contember/engine-common": "2.0.0-beta.2",
|
|
29
|
+
"@contember/engine-content-api": "2.0.0-beta.2",
|
|
30
|
+
"@contember/engine-http": "2.0.0-beta.2",
|
|
31
|
+
"@contember/engine-plugins": "2.0.0-beta.2",
|
|
32
|
+
"@contember/engine-system-api": "2.0.0-beta.2",
|
|
33
|
+
"@contember/engine-tenant-api": "2.0.0-beta.2",
|
|
34
|
+
"@contember/graphql-utils": "2.0.0-beta.2",
|
|
35
|
+
"@contember/logger": "2.0.0-beta.2",
|
|
36
|
+
"@contember/schema": "2.0.0-beta.2",
|
|
37
|
+
"@contember/schema-utils": "2.0.0-beta.2",
|
|
38
|
+
"@contember/typesafe": "2.0.0-beta.2",
|
|
39
|
+
"@graphql-tools/schema": "^10.0.7",
|
|
43
40
|
"graphql-tag": "^2.12.6"
|
|
44
41
|
},
|
|
45
42
|
"devDependencies": {
|
|
46
|
-
"@
|
|
47
|
-
"@
|
|
48
|
-
"
|
|
49
|
-
"@graphql-codegen/typescript-resolvers": "^4.0.1",
|
|
50
|
-
"@types/ws": "^8.5.9",
|
|
51
|
-
"graphql": "^16.8.1"
|
|
43
|
+
"@types/bun": "^1.1.10",
|
|
44
|
+
"@types/ws": "^8.5.12",
|
|
45
|
+
"graphql": "^16.9.0"
|
|
52
46
|
},
|
|
53
47
|
"peerDependencies": {
|
|
54
48
|
"graphql": ">= 14.6.0",
|
|
55
49
|
"pg": "^8.5.0"
|
|
56
50
|
},
|
|
57
51
|
"type": "module",
|
|
58
|
-
"version": "2.0.0-
|
|
59
|
-
}
|
|
52
|
+
"version": "2.0.0-beta.2"
|
|
53
|
+
}
|
|
@@ -12,9 +12,9 @@ export class ActionsExecutionContainerHookFactory {
|
|
|
12
12
|
|
|
13
13
|
create(): ExecutionContainerHook {
|
|
14
14
|
return builder => {
|
|
15
|
-
return builder.setupService('mapperFactory', (mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project }) => {
|
|
15
|
+
return builder.setupService('mapperFactory', (mapperFactory, { whereBuilder, schema, pathFactory, systemSchema, providers, stage, project, schemaMeta }) => {
|
|
16
16
|
mapperFactory.hooks.push(mapper => {
|
|
17
|
-
const triggerPayloadPersister = new TriggerPayloadPersister(mapper, mapper.db.forSchema(systemSchema), providers, project.slug, stage.id,
|
|
17
|
+
const triggerPayloadPersister = new TriggerPayloadPersister(mapper, mapper.db.forSchema(systemSchema), providers, project.slug, stage.id, schemaMeta.id)
|
|
18
18
|
const triggerPayloadBuilder = new TriggerPayloadBuilder(mapper)
|
|
19
19
|
const payloadManager = new TriggerPayloadManager(triggerPayloadBuilder, triggerPayloadPersister)
|
|
20
20
|
const changesFetcher = new TriggerIndirectChangesFetcher(mapper, whereBuilder, pathFactory)
|
|
@@ -29,7 +29,7 @@ export class EventDispatcher {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
async processBatch({ db, contentSchemaResolver, logger }: ProcessBatchArgs): Promise<ProcessBatchResult> {
|
|
32
|
-
const schema = await contentSchemaResolver.getSchema(db)
|
|
32
|
+
const schema = (await contentSchemaResolver.getSchema({ db, normalize: true })).schema
|
|
33
33
|
const batch = await this.eventsRepository.fetchBatch(schema.actions, db.client)
|
|
34
34
|
const batchId = Math.random().toString().substring(2)
|
|
35
35
|
const batchLogger = logger.child({ loc: 'Actions.EventDispatcher', batchId })
|
|
@@ -4,39 +4,41 @@ export type InputMaybe<T> = Maybe<T>
|
|
|
4
4
|
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] }
|
|
5
5
|
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> }
|
|
6
6
|
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> }
|
|
7
|
+
export type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never }
|
|
8
|
+
export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }
|
|
7
9
|
export type RequireFields<T, K extends keyof T> = Omit<T, K> & { [P in K]-?: NonNullable<T[P]> }
|
|
8
10
|
/** All built-in and custom scalars, mapped to their actual values */
|
|
9
11
|
export type Scalars = {
|
|
10
|
-
ID: string
|
|
11
|
-
String: string
|
|
12
|
-
Boolean: boolean
|
|
13
|
-
Int: number
|
|
14
|
-
Float: number
|
|
15
|
-
DateTime: Date
|
|
16
|
-
Json: any
|
|
17
|
-
Uuid: String
|
|
12
|
+
ID: { input: string; output: string }
|
|
13
|
+
String: { input: string; output: string }
|
|
14
|
+
Boolean: { input: boolean; output: boolean }
|
|
15
|
+
Int: { input: number; output: number }
|
|
16
|
+
Float: { input: number; output: number }
|
|
17
|
+
DateTime: { input: Date; output: Date }
|
|
18
|
+
Json: { input: any; output: any }
|
|
19
|
+
Uuid: { input: String; output: String }
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
export type Event = {
|
|
21
23
|
readonly __typename?: 'Event'
|
|
22
|
-
readonly createdAt: Scalars['DateTime']
|
|
23
|
-
readonly id: Scalars['Uuid']
|
|
24
|
-
readonly lastStateChange: Scalars['DateTime']
|
|
25
|
-
readonly log: Scalars['Json']
|
|
26
|
-
readonly numRetries: Scalars['Int']
|
|
27
|
-
readonly payload: Scalars['Json']
|
|
28
|
-
readonly resolvedAt?: Maybe<Scalars['DateTime']>
|
|
29
|
-
readonly stage: Scalars['String']
|
|
24
|
+
readonly createdAt: Scalars['DateTime']['output']
|
|
25
|
+
readonly id: Scalars['Uuid']['output']
|
|
26
|
+
readonly lastStateChange: Scalars['DateTime']['output']
|
|
27
|
+
readonly log: Scalars['Json']['output']
|
|
28
|
+
readonly numRetries: Scalars['Int']['output']
|
|
29
|
+
readonly payload: Scalars['Json']['output']
|
|
30
|
+
readonly resolvedAt?: Maybe<Scalars['DateTime']['output']>
|
|
31
|
+
readonly stage: Scalars['String']['output']
|
|
30
32
|
readonly state: EventState
|
|
31
|
-
readonly target: Scalars['String']
|
|
32
|
-
readonly transactionId: Scalars['Uuid']
|
|
33
|
-
readonly visibleAt?: Maybe<Scalars['DateTime']>
|
|
33
|
+
readonly target: Scalars['String']['output']
|
|
34
|
+
readonly transactionId: Scalars['Uuid']['output']
|
|
35
|
+
readonly visibleAt?: Maybe<Scalars['DateTime']['output']>
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
export type EventArgs = {
|
|
37
39
|
/** Max 10000 */
|
|
38
|
-
readonly limit?: InputMaybe<Scalars['Int']>
|
|
39
|
-
readonly offset?: InputMaybe<Scalars['Int']>
|
|
40
|
+
readonly limit?: InputMaybe<Scalars['Int']['input']>
|
|
41
|
+
readonly offset?: InputMaybe<Scalars['Int']['input']>
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
export type EventState =
|
|
@@ -60,7 +62,7 @@ export type MutationSetVariablesArgs = {
|
|
|
60
62
|
|
|
61
63
|
export type ProcessBatchResponse = {
|
|
62
64
|
readonly __typename?: 'ProcessBatchResponse'
|
|
63
|
-
readonly ok: Scalars['Boolean']
|
|
65
|
+
readonly ok: Scalars['Boolean']['output']
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
export type Query = {
|
|
@@ -104,18 +106,18 @@ export type SetVariablesMode =
|
|
|
104
106
|
|
|
105
107
|
export type SetVariablesResponse = {
|
|
106
108
|
readonly __typename?: 'SetVariablesResponse'
|
|
107
|
-
readonly ok: Scalars['Boolean']
|
|
109
|
+
readonly ok: Scalars['Boolean']['output']
|
|
108
110
|
}
|
|
109
111
|
|
|
110
112
|
export type Variable = {
|
|
111
113
|
readonly __typename?: 'Variable'
|
|
112
|
-
readonly name: Scalars['String']
|
|
113
|
-
readonly value: Scalars['String']
|
|
114
|
+
readonly name: Scalars['String']['output']
|
|
115
|
+
readonly value: Scalars['String']['output']
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
export type VariableInput = {
|
|
117
|
-
readonly name: Scalars['String']
|
|
118
|
-
readonly value: Scalars['String']
|
|
119
|
+
readonly name: Scalars['String']['input']
|
|
120
|
+
readonly value: Scalars['String']['input']
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
|
|
@@ -185,42 +187,44 @@ export type DirectiveResolverFn<TResult = {}, TParent = {}, TContext = {}, TArgs
|
|
|
185
187
|
info: GraphQLResolveInfo
|
|
186
188
|
) => TResult | Promise<TResult>
|
|
187
189
|
|
|
190
|
+
|
|
191
|
+
|
|
188
192
|
/** Mapping between all available schema types and the resolvers types */
|
|
189
193
|
export type ResolversTypes = {
|
|
190
|
-
Boolean: ResolverTypeWrapper<Scalars['Boolean']>
|
|
191
|
-
DateTime: ResolverTypeWrapper<Scalars['DateTime']>
|
|
194
|
+
Boolean: ResolverTypeWrapper<Scalars['Boolean']['output']>
|
|
195
|
+
DateTime: ResolverTypeWrapper<Scalars['DateTime']['output']>
|
|
192
196
|
Event: ResolverTypeWrapper<Event>
|
|
193
197
|
EventArgs: EventArgs
|
|
194
198
|
EventState: EventState
|
|
195
|
-
Int: ResolverTypeWrapper<Scalars['Int']>
|
|
196
|
-
Json: ResolverTypeWrapper<Scalars['Json']>
|
|
199
|
+
Int: ResolverTypeWrapper<Scalars['Int']['output']>
|
|
200
|
+
Json: ResolverTypeWrapper<Scalars['Json']['output']>
|
|
197
201
|
Mutation: ResolverTypeWrapper<{}>
|
|
198
202
|
ProcessBatchResponse: ResolverTypeWrapper<ProcessBatchResponse>
|
|
199
203
|
Query: ResolverTypeWrapper<{}>
|
|
200
204
|
SetVariablesArgs: SetVariablesArgs
|
|
201
205
|
SetVariablesMode: SetVariablesMode
|
|
202
206
|
SetVariablesResponse: ResolverTypeWrapper<SetVariablesResponse>
|
|
203
|
-
String: ResolverTypeWrapper<Scalars['String']>
|
|
204
|
-
Uuid: ResolverTypeWrapper<Scalars['Uuid']>
|
|
207
|
+
String: ResolverTypeWrapper<Scalars['String']['output']>
|
|
208
|
+
Uuid: ResolverTypeWrapper<Scalars['Uuid']['output']>
|
|
205
209
|
Variable: ResolverTypeWrapper<Variable>
|
|
206
210
|
VariableInput: VariableInput
|
|
207
211
|
}
|
|
208
212
|
|
|
209
213
|
/** Mapping between all available schema types and the resolvers parents */
|
|
210
214
|
export type ResolversParentTypes = {
|
|
211
|
-
Boolean: Scalars['Boolean']
|
|
212
|
-
DateTime: Scalars['DateTime']
|
|
215
|
+
Boolean: Scalars['Boolean']['output']
|
|
216
|
+
DateTime: Scalars['DateTime']['output']
|
|
213
217
|
Event: Event
|
|
214
218
|
EventArgs: EventArgs
|
|
215
|
-
Int: Scalars['Int']
|
|
216
|
-
Json: Scalars['Json']
|
|
219
|
+
Int: Scalars['Int']['output']
|
|
220
|
+
Json: Scalars['Json']['output']
|
|
217
221
|
Mutation: {}
|
|
218
222
|
ProcessBatchResponse: ProcessBatchResponse
|
|
219
223
|
Query: {}
|
|
220
224
|
SetVariablesArgs: SetVariablesArgs
|
|
221
225
|
SetVariablesResponse: SetVariablesResponse
|
|
222
|
-
String: Scalars['String']
|
|
223
|
-
Uuid: Scalars['Uuid']
|
|
226
|
+
String: Scalars['String']['output']
|
|
227
|
+
Uuid: Scalars['Uuid']['output']
|
|
224
228
|
Variable: Variable
|
|
225
229
|
VariableInput: VariableInput
|
|
226
230
|
}
|
|
@@ -72,7 +72,7 @@ export class TriggerHandler {
|
|
|
72
72
|
private async directUpdateHandler(event: AfterUpdateEvent) {
|
|
73
73
|
const updateListeners = this.listenersStore.getUpdateListeners(event.entity.name)
|
|
74
74
|
updateListeners.map(listener => {
|
|
75
|
-
if (event.data.some(it => listener.fields.has(it.fieldName))) {
|
|
75
|
+
if (event.data.some(it => listener.fields.has(it.fieldName) && it.value !== it.old)) {
|
|
76
76
|
this.payloadManager.add({
|
|
77
77
|
listener,
|
|
78
78
|
entity: event.entity,
|
|
@@ -119,7 +119,7 @@ export class TriggerHandler {
|
|
|
119
119
|
private async indirectChangesUpdatesHandlerInner(event: AfterUpdateEvent | BeforeUpdateEvent, type: 'fields' | 'relations') {
|
|
120
120
|
const indirectEntityListeners = this.listenersStore.getIndirectListeners(event.entity.name)
|
|
121
121
|
const promises = indirectEntityListeners.map(listener => {
|
|
122
|
-
if (event.data.some(val => listener[type].has(val.fieldName))) {
|
|
122
|
+
if (event.data.some(val => listener[type].has(val.fieldName) && (!('old' in val) || val.value !== val.old))) {
|
|
123
123
|
return this.collectDeepChanges(event, listener, {
|
|
124
124
|
[event.entity.primary]: { eq: event.id },
|
|
125
125
|
})
|
|
@@ -23,7 +23,7 @@ export class TriggerPayloadBuilder {
|
|
|
23
23
|
const selections = await this.fetchSelection(filteredEvents)
|
|
24
24
|
const triggerType = filteredEvents[0].listener.trigger.type
|
|
25
25
|
if (triggerType === 'basic') {
|
|
26
|
-
return filteredEvents.map(it => ({ trigger: it.listener.trigger.name, ...this.buildBaseEventPayloads(it, selections[it.primary]) }))
|
|
26
|
+
return filteredEvents.map(it => ({ trigger: it.listener.trigger.name, ...this.buildBaseEventPayloads(it, it.selection ?? selections[it.primary]) }))
|
|
27
27
|
}
|
|
28
28
|
if (triggerType === 'watch') {
|
|
29
29
|
return this.buildWatchEventPayloads(filteredEvents, selections)
|
|
@@ -56,7 +56,7 @@ export class TriggerPayloadBuilder {
|
|
|
56
56
|
trigger: events[0].listener.trigger.name,
|
|
57
57
|
entity: events[0].entity.name,
|
|
58
58
|
id: eventsByPrimary.primary,
|
|
59
|
-
selection: events[0].selection ?? selections[eventsByPrimary.primary],
|
|
59
|
+
selection: eventsByPrimary.events[0].selection ?? selections[eventsByPrimary.primary],
|
|
60
60
|
events: eventsByPrimary.events.map(it => this.buildBaseEventPayloads(it)),
|
|
61
61
|
})
|
|
62
62
|
}
|
|
@@ -71,7 +71,7 @@ export class TriggerPayloadBuilder {
|
|
|
71
71
|
entity: event.cause.entity.name,
|
|
72
72
|
id: event.cause.id,
|
|
73
73
|
selection,
|
|
74
|
-
values: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.
|
|
74
|
+
values: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),
|
|
75
75
|
path: 'path' in event.listener ? event.listener.path : undefined,
|
|
76
76
|
}
|
|
77
77
|
case 'AfterUpdateEvent':
|
|
@@ -85,7 +85,7 @@ export class TriggerPayloadBuilder {
|
|
|
85
85
|
entity: event.cause.entity.name,
|
|
86
86
|
id: event.cause.id,
|
|
87
87
|
selection,
|
|
88
|
-
values: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.
|
|
88
|
+
values: Object.fromEntries(event.cause.data.map(it => [it.fieldName, it.value])),
|
|
89
89
|
path: 'path' in event.listener ? event.listener.path : undefined,
|
|
90
90
|
old: Object.fromEntries(afterEvent.data.map(it => [it.fieldName, it.old])),
|
|
91
91
|
}
|
|
@@ -17,12 +17,15 @@ export class TriggerPayloadPersister {
|
|
|
17
17
|
private readonly providers: { uuid: () => string },
|
|
18
18
|
private readonly projectSlug: string,
|
|
19
19
|
private readonly stageId: string,
|
|
20
|
-
private readonly schemaId
|
|
20
|
+
private readonly schemaId?: number,
|
|
21
21
|
) {
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
public async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {
|
|
25
25
|
const chunkSize = 100
|
|
26
|
+
if (!this.schemaId) {
|
|
27
|
+
throw new Error('Schema id is not set')
|
|
28
|
+
}
|
|
26
29
|
for (let i = 0; i < payloads.length; i += chunkSize) {
|
|
27
30
|
const chunk = payloads.slice(i, i + chunkSize)
|
|
28
31
|
await InsertBuilder.create()
|
|
@@ -35,7 +38,7 @@ export class TriggerPayloadPersister {
|
|
|
35
38
|
num_retries: 0,
|
|
36
39
|
state: 'created',
|
|
37
40
|
stage_id: this.stageId,
|
|
38
|
-
schema_id: this.schemaId
|
|
41
|
+
schema_id: this.schemaId!,
|
|
39
42
|
target: trigger.target,
|
|
40
43
|
trigger: trigger.name,
|
|
41
44
|
priority: trigger.priority ?? 0,
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { TriggerListenerBuilder, TriggerListeners } from '../../../src/triggers'
|
|
2
2
|
import { SchemaDefinition as def } from '@contember/schema-definition'
|
|
3
3
|
import { Actions, Model } from '@contember/schema'
|
|
4
|
-
import {
|
|
4
|
+
import { expect, test } from 'bun:test'
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
const assert = {
|
|
8
|
+
equal: (a: any, b: any) => expect(a).toEqual(b),
|
|
9
|
+
deepStrictEqual: (a: any, b: any) => expect(a).toStrictEqual(b),
|
|
10
|
+
}
|
|
7
11
|
const createTrigger = (watchNode: Actions.SelectionNode): Actions.AnyTrigger => ({
|
|
8
12
|
type: 'watch',
|
|
9
13
|
entity: 'Author',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
2
|
import { WebhookTargetHandler } from '../../../src/dispatch/WebhookTargetHandler'
|
|
3
3
|
import { FetcherResponse } from '../../../src/dispatch/WebhookFetcher'
|
|
4
4
|
import { createLogger, Logger, TestLoggerHandler } from '@contember/logger'
|
|
@@ -8,6 +8,10 @@ import { HandledEvent } from '../../../src/dispatch/types'
|
|
|
8
8
|
import { testUuid } from '../../src/uuid'
|
|
9
9
|
|
|
10
10
|
|
|
11
|
+
const assert = {
|
|
12
|
+
equal: (a: any, b: any) => expect(a).toEqual(b),
|
|
13
|
+
deepStrictEqual: (a: any, b: any) => expect(a).toStrictEqual(b),
|
|
14
|
+
}
|
|
11
15
|
const now = new Date('2024-06-20T12:00:00Z')
|
|
12
16
|
const createTestEvent = (i = 0, row: Partial<EventRow> = {}): EventRow => ({
|
|
13
17
|
created_at: now,
|