@contember/engine-actions 1.4.0-rc.2 → 1.4.0-rc.3

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 (34) hide show
  1. package/dist/src/dispatch/WebhookTargetHandler.d.ts +1 -0
  2. package/dist/src/dispatch/WebhookTargetHandler.d.ts.map +1 -1
  3. package/dist/src/dispatch/WebhookTargetHandler.js +14 -4
  4. package/dist/src/dispatch/WebhookTargetHandler.js.map +1 -1
  5. package/dist/src/dispatch/types.d.ts +0 -21
  6. package/dist/src/dispatch/types.d.ts.map +1 -1
  7. package/dist/src/model/types.d.ts +2 -2
  8. package/dist/src/model/types.d.ts.map +1 -1
  9. package/dist/src/triggers/TriggerPayloadBuilder.d.ts +2 -2
  10. package/dist/src/triggers/TriggerPayloadBuilder.d.ts.map +1 -1
  11. package/dist/src/triggers/TriggerPayloadBuilder.js.map +1 -1
  12. package/dist/src/triggers/TriggerPayloadManager.d.ts +1 -7
  13. package/dist/src/triggers/TriggerPayloadManager.d.ts.map +1 -1
  14. package/dist/src/triggers/TriggerPayloadManager.js.map +1 -1
  15. package/dist/src/triggers/TriggerPayloadPersister.d.ts +2 -3
  16. package/dist/src/triggers/TriggerPayloadPersister.d.ts.map +1 -1
  17. package/dist/src/triggers/TriggerPayloadPersister.js.map +1 -1
  18. package/dist/src/tsconfig.tsbuildinfo +1 -1
  19. package/dist/tests/cases/unit/webhookHandler.test.js +103 -9
  20. package/dist/tests/cases/unit/webhookHandler.test.js.map +1 -1
  21. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  22. package/package.json +16 -16
  23. package/src/dispatch/WebhookTargetHandler.ts +16 -8
  24. package/src/dispatch/types.ts +0 -26
  25. package/src/model/types.ts +2 -2
  26. package/src/triggers/TriggerPayloadBuilder.ts +5 -6
  27. package/src/triggers/TriggerPayloadManager.ts +0 -7
  28. package/src/triggers/TriggerPayloadPersister.ts +2 -3
  29. package/tests/cases/unit/webhookHandler.test.ts +114 -13
  30. package/dist/src/triggers/Payload.d.ts +0 -57
  31. package/dist/src/triggers/Payload.d.ts.map +0 -1
  32. package/dist/src/triggers/Payload.js +0 -3
  33. package/dist/src/triggers/Payload.js.map +0 -1
  34. package/src/triggers/Payload.ts +0 -74
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/engine-actions",
3
- "version": "1.4.0-rc.2",
3
+ "version": "1.4.0-rc.3",
4
4
  "license": "proprietary",
5
5
  "main": "dist/src/index.js",
6
6
  "typings": "dist/src/index.d.ts",
@@ -13,25 +13,25 @@
13
13
  "test": "vitest --no-threads"
14
14
  },
15
15
  "dependencies": {
16
- "@contember/authorization": "1.4.0-rc.2",
17
- "@contember/database": "1.4.0-rc.2",
18
- "@contember/database-migrations": "1.4.0-rc.2",
19
- "@contember/engine-common": "1.4.0-rc.2",
20
- "@contember/engine-content-api": "1.4.0-rc.2",
21
- "@contember/engine-http": "1.4.0-rc.2",
22
- "@contember/engine-plugins": "1.4.0-rc.2",
23
- "@contember/engine-system-api": "1.4.0-rc.2",
24
- "@contember/engine-tenant-api": "1.4.0-rc.2",
25
- "@contember/graphql-utils": "1.4.0-rc.2",
26
- "@contember/logger": "1.4.0-rc.2",
27
- "@contember/schema": "1.4.0-rc.2",
28
- "@contember/schema-utils": "1.4.0-rc.2",
29
- "@contember/typesafe": "1.4.0-rc.2",
16
+ "@contember/authorization": "1.4.0-rc.3",
17
+ "@contember/database": "1.4.0-rc.3",
18
+ "@contember/database-migrations": "1.4.0-rc.3",
19
+ "@contember/engine-common": "1.4.0-rc.3",
20
+ "@contember/engine-content-api": "1.4.0-rc.3",
21
+ "@contember/engine-http": "1.4.0-rc.3",
22
+ "@contember/engine-plugins": "1.4.0-rc.3",
23
+ "@contember/engine-system-api": "1.4.0-rc.3",
24
+ "@contember/engine-tenant-api": "1.4.0-rc.3",
25
+ "@contember/graphql-utils": "1.4.0-rc.3",
26
+ "@contember/logger": "1.4.0-rc.3",
27
+ "@contember/schema": "1.4.0-rc.3",
28
+ "@contember/schema-utils": "1.4.0-rc.3",
29
+ "@contember/typesafe": "1.4.0-rc.3",
30
30
  "@graphql-tools/schema": "^10.0.0",
31
31
  "graphql-tag": "^2.12.6"
32
32
  },
33
33
  "devDependencies": {
34
- "@contember/engine-api-tester": "1.4.0-rc.2",
34
+ "@contember/engine-api-tester": "1.4.0-rc.3",
35
35
  "@graphql-codegen/cli": "^5.0.0",
36
36
  "@graphql-codegen/typescript": "^4.0.1",
37
37
  "@graphql-codegen/typescript-operations": "^4.0.1",
@@ -1,5 +1,5 @@
1
- import { Actions } from '@contember/schema'
2
- import { EventRow, HandledEvent, InvokeHandler, InvokeHandlerArgs, WebhookEvent, WebhookRequestPayload } from './types'
1
+ import { Actions, ActionsPayload } from '@contember/schema'
2
+ import { EventRow, HandledEvent, InvokeHandler, InvokeHandlerArgs } from './types'
3
3
  import { VariablesMap } from '../model/VariablesManager'
4
4
  import * as Typesafe from '@contember/typesafe'
5
5
  import { FetcherResponse, WebhookFetcher } from './WebhookFetcher'
@@ -145,10 +145,6 @@ export class WebhookTargetHandler implements InvokeHandler<Actions.WebhookTarget
145
145
  const resolvedHeaders = Object.fromEntries(Object.entries(target.headers ?? {})
146
146
  .map(([key, value]) => [key, this.resolveVariables(value, variables)]))
147
147
 
148
- const payload: WebhookRequestPayload = {
149
- events: events.map(this.formatEventPayload),
150
- }
151
-
152
148
  return await this.fetcher.fetch(resolvedUrl, {
153
149
  method: 'POST',
154
150
  headers: {
@@ -157,11 +153,23 @@ export class WebhookTargetHandler implements InvokeHandler<Actions.WebhookTarget
157
153
  ['Content-type']: 'application/json',
158
154
  },
159
155
  signal: abortController.signal,
160
- body: JSON.stringify(payload),
156
+ body: this.formatBody(events, target),
161
157
  })
162
158
  }
163
159
 
164
- private formatEventPayload(it: EventRow): WebhookEvent {
160
+ private formatBody(events: EventRow[], target: Actions.WebhookTarget): string {
161
+ const body = target.body ?? {}
162
+ const path = target.payloadPath ?? []
163
+ let current: any = body
164
+ for (let i = 0; i < path.length; i++) {
165
+ current[path[i]] ??= {}
166
+ current = current[path[i]]
167
+ }
168
+ current['events'] = events.map(this.formatEventPayload)
169
+ return JSON.stringify(body)
170
+ }
171
+
172
+ private formatEventPayload(it: EventRow): ActionsPayload.WebhookEvent {
165
173
  return {
166
174
  meta: {
167
175
  eventId: it.id,
@@ -2,7 +2,6 @@ import { Logger } from '@contember/logger'
2
2
  import { Actions } from '@contember/schema'
3
3
  import { EventRow } from '../model/types'
4
4
  import { VariablesMap } from '../model/VariablesManager'
5
- import { AnyEventPayload } from '../triggers/Payload'
6
5
 
7
6
  export { EventRow }
8
7
 
@@ -31,28 +30,3 @@ export type InvocationResult = {
31
30
  response?: string
32
31
  }
33
32
 
34
-
35
- export type WebhookEvent =
36
- & AnyEventPayload
37
- & {
38
- meta: {
39
- eventId: string
40
- transactionId: string
41
- createdAt: string
42
- lastStateChange: string
43
- numRetries: number
44
- trigger: string
45
- target: string
46
- }
47
- }
48
-
49
- export type WebhookRequestPayload = {
50
- events: WebhookEvent[]
51
- }
52
-
53
- export type WebhookResponsePayload = {
54
- failures: {
55
- eventId: string
56
- error?: string
57
- }
58
- }
@@ -1,4 +1,4 @@
1
- import { AnyEventPayload } from '../triggers/Payload'
1
+ import { ActionsPayload } from '@contember/schema'
2
2
 
3
3
  export type EventRow = {
4
4
  id: string
@@ -14,6 +14,6 @@ export type EventRow = {
14
14
  target: string
15
15
  priority: number
16
16
  trigger: string
17
- payload: AnyEventPayload
17
+ payload: ActionsPayload.AnyEventPayload
18
18
  log: any[]
19
19
  }
@@ -1,8 +1,7 @@
1
- import { AnyEventPayload, BaseEventPayload, WatchEventPayload } from './Payload'
2
1
  import { ImplementationException } from '../ImplementationException'
3
2
  import { assertNever } from '../utils/assertNever'
4
3
  import { FiredEvent } from './TriggerPayloadManager'
5
- import { Actions, Input } from '@contember/schema'
4
+ import { Actions, ActionsPayload, Input } from '@contember/schema'
6
5
  import { FieldNode, Mapper, ObjectNode } from '@contember/engine-content-api'
7
6
 
8
7
  type Selections = Record<Input.PrimaryValue, any>
@@ -13,7 +12,7 @@ export class TriggerPayloadBuilder {
13
12
  ) {
14
13
  }
15
14
 
16
- public async build(events: FiredEvent[]): Promise<AnyEventPayload[]> {
15
+ public async build(events: FiredEvent[]): Promise<ActionsPayload.AnyEventPayload[]> {
17
16
  const filteredEvents = events.filter(it => {
18
17
  return it.cause.type !== 'BeforeUpdateEvent'
19
18
  || it.cause.afterEvent?.hasChanges === true
@@ -44,13 +43,13 @@ export class TriggerPayloadBuilder {
44
43
  return event
45
44
  }
46
45
 
47
- private buildWatchEventPayloads(events: FiredEvent[], selections: Selections): WatchEventPayload[] {
46
+ private buildWatchEventPayloads(events: FiredEvent[], selections: Selections): ActionsPayload.WatchEventPayload[] {
48
47
  const byPrimary: Record<Input.PrimaryValue, { primary: Input.PrimaryValue; events: FiredEvent[] }> = {}
49
48
  for (const event of events) {
50
49
  byPrimary[event.primary] ??= { primary: event.primary, events: [] }
51
50
  byPrimary[event.primary].events.push(event)
52
51
  }
53
- const payloads: WatchEventPayload[] = []
52
+ const payloads: ActionsPayload.WatchEventPayload[] = []
54
53
  for (const eventsByPrimary of Object.values(byPrimary)) {
55
54
  payloads.push({
56
55
  operation: 'watch',
@@ -64,7 +63,7 @@ export class TriggerPayloadBuilder {
64
63
  return payloads
65
64
  }
66
65
 
67
- private buildBaseEventPayloads(event: FiredEvent, selection?: any): BaseEventPayload {
66
+ private buildBaseEventPayloads(event: FiredEvent, selection?: any): ActionsPayload.BaseEventPayload {
68
67
  switch (event.cause.type) {
69
68
  case 'AfterInsertEvent':
70
69
  return {
@@ -1,5 +1,4 @@
1
1
  import { Actions, Input, Model } from '@contember/schema'
2
- import { AnyEventPayload } from './Payload'
3
2
  import { AnyListener } from './TriggerListenersStore'
4
3
  import { EventCause } from './TriggerHandler'
5
4
  import { TriggerPayloadBuilder } from './TriggerPayloadBuilder'
@@ -14,12 +13,6 @@ export interface FiredEvent {
14
13
  selection?: any
15
14
  }
16
15
 
17
- export type GroupedPayloads = {
18
- trigger: Actions.AnyTrigger
19
- entity: Model.Entity
20
- payloads: AnyEventPayload[]
21
- }
22
-
23
16
  export class TriggerPayloadManager {
24
17
  private eventsByTrigger: Record<string, FiredEvent[]> = {}
25
18
 
@@ -1,7 +1,6 @@
1
1
  import { Client, InsertBuilder } from '@contember/database'
2
- import { AnyEventPayload } from './Payload'
3
2
  import { Mapper } from '@contember/engine-content-api'
4
- import { Actions } from '@contember/schema'
3
+ import { Actions, ActionsPayload } from '@contember/schema'
5
4
  import { EventRow } from '../model/types'
6
5
 
7
6
  export const NOTIFY_CHANNEL_NAME = 'actions_event'
@@ -22,7 +21,7 @@ export class TriggerPayloadPersister {
22
21
  ) {
23
22
  }
24
23
 
25
- public async persist(trigger: Actions.AnyTrigger, payloads: AnyEventPayload[]): Promise<void> {
24
+ public async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {
26
25
  const chunkSize = 100
27
26
  for (let i = 0; i < payloads.length; i += chunkSize) {
28
27
  const chunk = payloads.slice(i, i + chunkSize)
@@ -1,15 +1,14 @@
1
1
  import { assert, describe, expect, test } from 'vitest'
2
2
  import { WebhookTargetHandler } from '../../../src/dispatch/WebhookTargetHandler'
3
3
  import { FetcherResponse } from '../../../src/dispatch/WebhookFetcher'
4
- import { createLogger, TestLoggerHandler } from '@contember/logger'
4
+ import { createLogger, Logger, TestLoggerHandler } from '@contember/logger'
5
5
  import { testUuid } from '@contember/engine-api-tester'
6
- import { AnyEventPayload } from '../../../src/triggers/Payload'
7
6
  import { EventRow } from '../../../src/model/types'
8
- import { Actions } from '@contember/schema'
7
+ import { Actions, ActionsPayload } from '@contember/schema'
9
8
  import { HandledEvent } from '../../../src/dispatch/types'
10
9
 
11
10
 
12
- const now = new Date()
11
+ const now = new Date('2024-06-20T12:00:00Z')
13
12
  const createTestEvent = (i = 0, row: Partial<EventRow> = {}): EventRow => ({
14
13
  created_at: now,
15
14
  id: testUuid(i * 10 + 1),
@@ -22,7 +21,7 @@ const createTestEvent = (i = 0, row: Partial<EventRow> = {}): EventRow => ({
22
21
  transaction_id: testUuid(i * 10 + 2),
23
22
  stage_id: testUuid(i * 10 + 3),
24
23
  visible_at: now,
25
- payload: { foo: 'bar' } as unknown as AnyEventPayload,
24
+ payload: { foo: 'bar' } as unknown as ActionsPayload.AnyEventPayload,
26
25
  priority: 1,
27
26
  schema_id: 1,
28
27
  state: 'created',
@@ -33,7 +32,115 @@ const dropDuration = (events: HandledEvent[]): HandledEvent[] => {
33
32
  return events.map(it => ({ ...it, result: { ...it.result, durationMs: -1 } }))
34
33
  }
35
34
 
36
- describe('webhook handler', () => {
35
+ const okResponse = Promise.resolve({
36
+ ok: true,
37
+ headers: new Headers(),
38
+ responseText: '',
39
+ status: 200,
40
+ statusText: 'OK',
41
+ })
42
+
43
+ describe('webhook request', () => {
44
+ test('default request', async () => {
45
+ let fetchCalled = false
46
+ const webhookHandler = new WebhookTargetHandler({
47
+ fetch(url: string, init: RequestInit): Promise<FetcherResponse> {
48
+ fetchCalled = true
49
+ assert.equal(url, 'http://localhost')
50
+ assert.equal(init.body, JSON.stringify({
51
+ events: [{
52
+ meta: {
53
+ eventId: testUuid(1),
54
+ transactionId: testUuid(2),
55
+ createdAt: now.toISOString(),
56
+ lastStateChange: now.toISOString(),
57
+ numRetries: 0,
58
+ trigger: 'test',
59
+ target: 'test_target',
60
+ },
61
+ foo: 'bar',
62
+ }],
63
+ }))
64
+
65
+ return okResponse
66
+ },
67
+ })
68
+
69
+ const target: Actions.AnyTarget = {
70
+ name: 'test_target',
71
+ type: 'webhook',
72
+ url: 'http://localhost',
73
+ }
74
+
75
+ const event1 = createTestEvent(0)
76
+ await webhookHandler.handle({
77
+ logger: {
78
+ warn: (e: any) => {
79
+ throw e
80
+ },
81
+ } as unknown as Logger,
82
+ target: target,
83
+ events: [event1],
84
+ variables: {},
85
+ })
86
+ assert.equal(fetchCalled, true)
87
+ })
88
+
89
+ test('custom body', async () => {
90
+ let fetchCalled = false
91
+ const webhookHandler = new WebhookTargetHandler({
92
+ fetch(url: string, init: RequestInit): Promise<FetcherResponse> {
93
+ fetchCalled = true
94
+ assert.equal(url, 'http://localhost')
95
+ assert.equal(init.body, JSON.stringify({
96
+ options: 'value',
97
+ payload: {
98
+ json: {
99
+ events: [{
100
+ meta: {
101
+ eventId: testUuid(1),
102
+ transactionId: testUuid(2),
103
+ createdAt: now.toISOString(),
104
+ lastStateChange: now.toISOString(),
105
+ numRetries: 0,
106
+ trigger: 'test',
107
+ target: 'test_target',
108
+ },
109
+ foo: 'bar',
110
+ }],
111
+ },
112
+ },
113
+ }))
114
+
115
+ return okResponse
116
+ },
117
+ })
118
+
119
+ const target: Actions.AnyTarget = {
120
+ name: 'test_target',
121
+ type: 'webhook',
122
+ url: 'http://localhost',
123
+ body: {
124
+ options: 'value',
125
+ },
126
+ payloadPath: ['payload', 'json'],
127
+ }
128
+
129
+ const event1 = createTestEvent(0)
130
+ await webhookHandler.handle({
131
+ logger: {
132
+ warn: (e: any) => {
133
+ throw e
134
+ },
135
+ } as unknown as Logger,
136
+ target: target,
137
+ events: [event1],
138
+ variables: {},
139
+ })
140
+ assert.equal(fetchCalled, true)
141
+ })
142
+ })
143
+ describe('webhook response', () => {
37
144
  test('successful response', async () => {
38
145
  const testLoggerHandler = new TestLoggerHandler()
39
146
  const logger = createLogger(testLoggerHandler)
@@ -44,13 +151,7 @@ describe('webhook handler', () => {
44
151
  fetchCalled = true
45
152
  assert.equal(url, 'http://localhost')
46
153
 
47
- return Promise.resolve({
48
- ok: true,
49
- headers: new Headers(),
50
- responseText: '',
51
- status: 200,
52
- statusText: 'OK',
53
- })
154
+ return okResponse
54
155
  },
55
156
  })
56
157
 
@@ -1,57 +0,0 @@
1
- import { Input, JSONObject } from '@contember/schema';
2
- export type UpdateEvent = {
3
- operation: 'update';
4
- entity: string;
5
- id: Input.PrimaryValue;
6
- values: JSONObject;
7
- old?: JSONObject;
8
- selection?: any;
9
- path?: string[];
10
- };
11
- export type CreateEvent = {
12
- operation: 'create';
13
- entity: string;
14
- id: Input.PrimaryValue;
15
- values: JSONObject;
16
- selection?: any;
17
- path?: string[];
18
- };
19
- export type DeleteEvent = {
20
- operation: 'delete';
21
- entity: string;
22
- id: Input.PrimaryValue;
23
- selection?: any;
24
- path?: string[];
25
- };
26
- export type JunctionConnectEvent = {
27
- operation: 'junction_connect';
28
- entity: string;
29
- id: Input.PrimaryValue;
30
- relation: string;
31
- inverseId: Input.PrimaryValue;
32
- selection?: any;
33
- path?: string[];
34
- };
35
- export type JunctionDisconnectEvent = {
36
- operation: 'junction_disconnect';
37
- entity: string;
38
- id: Input.PrimaryValue;
39
- relation: string;
40
- inverseId: Input.PrimaryValue;
41
- selection?: any;
42
- path?: string[];
43
- };
44
- export type WatchEventPayload = {
45
- operation: 'watch';
46
- trigger: string;
47
- entity: string;
48
- id: Input.PrimaryValue;
49
- events: BaseEventPayload[];
50
- selection?: any;
51
- };
52
- export type BaseEventPayload = CreateEvent | UpdateEvent | DeleteEvent | JunctionConnectEvent | JunctionDisconnectEvent;
53
- export type BasicEventPayload = BaseEventPayload & {
54
- trigger: string;
55
- };
56
- export type AnyEventPayload = BasicEventPayload | WatchEventPayload;
57
- //# sourceMappingURL=Payload.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../../src/triggers/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAa,MAAM,mBAAmB,CAAA;AAEhE,MAAM,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,QAAQ,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,KAAK,CAAC,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,QAAQ,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,KAAK,CAAC,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,QAAQ,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,KAAK,CAAC,YAAY,CAAA;IACtB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,kBAAkB,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,KAAK,CAAC,YAAY,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAA;IAC7B,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,qBAAqB,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,KAAK,CAAC,YAAY,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAA;IAC7B,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,KAAK,CAAC,YAAY,CAAA;IACtB,MAAM,EAAE,gBAAgB,EAAE,CAAA;IAC1B,SAAS,CAAC,EAAE,GAAG,CAAA;CACf,CAAA;AAED,MAAM,MAAM,gBAAgB,GACzB,WAAW,GACX,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,uBAAuB,CAAA;AAE1B,MAAM,MAAM,iBAAiB,GAC1B,gBAAgB,GAChB;IACD,OAAO,EAAE,MAAM,CAAA;CACf,CAAA;AAEF,MAAM,MAAM,eAAe,GACxB,iBAAiB,GACjB,iBAAiB,CAAA"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=Payload.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Payload.js","sourceRoot":"","sources":["../../../src/triggers/Payload.ts"],"names":[],"mappings":""}
@@ -1,74 +0,0 @@
1
- import { Input, JSONObject, JSONValue } from '@contember/schema'
2
-
3
- export type UpdateEvent = {
4
- operation: 'update'
5
- entity: string
6
- id: Input.PrimaryValue
7
- values: JSONObject
8
- old?: JSONObject
9
- selection?: any
10
- path?: string[]
11
- }
12
-
13
- export type CreateEvent = {
14
- operation: 'create'
15
- entity: string
16
- id: Input.PrimaryValue
17
- values: JSONObject
18
- selection?: any
19
- path?: string[]
20
- }
21
-
22
- export type DeleteEvent = {
23
- operation: 'delete'
24
- entity: string
25
- id: Input.PrimaryValue
26
- selection?: any
27
- path?: string[]
28
- }
29
-
30
- export type JunctionConnectEvent = {
31
- operation: 'junction_connect'
32
- entity: string
33
- id: Input.PrimaryValue
34
- relation: string
35
- inverseId: Input.PrimaryValue
36
- selection?: any
37
- path?: string[]
38
- }
39
-
40
- export type JunctionDisconnectEvent = {
41
- operation: 'junction_disconnect'
42
- entity: string
43
- id: Input.PrimaryValue
44
- relation: string
45
- inverseId: Input.PrimaryValue
46
- selection?: any
47
- path?: string[]
48
- }
49
-
50
- export type WatchEventPayload = {
51
- operation: 'watch'
52
- trigger: string
53
- entity: string
54
- id: Input.PrimaryValue
55
- events: BaseEventPayload[]
56
- selection?: any
57
- }
58
-
59
- export type BaseEventPayload =
60
- | CreateEvent
61
- | UpdateEvent
62
- | DeleteEvent
63
- | JunctionConnectEvent
64
- | JunctionDisconnectEvent
65
-
66
- export type BasicEventPayload =
67
- & BaseEventPayload
68
- & {
69
- trigger: string
70
- }
71
-
72
- export type AnyEventPayload =
73
- | BasicEventPayload
74
- | WatchEventPayload