@contember/engine-actions 1.4.0-rc.2 → 1.4.0-rc.4
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/src/dispatch/WebhookTargetHandler.d.ts +1 -0
- package/dist/src/dispatch/WebhookTargetHandler.d.ts.map +1 -1
- package/dist/src/dispatch/WebhookTargetHandler.js +14 -4
- package/dist/src/dispatch/WebhookTargetHandler.js.map +1 -1
- package/dist/src/dispatch/types.d.ts +0 -21
- package/dist/src/dispatch/types.d.ts.map +1 -1
- package/dist/src/model/types.d.ts +2 -2
- package/dist/src/model/types.d.ts.map +1 -1
- package/dist/src/triggers/TriggerPayloadBuilder.d.ts +2 -2
- package/dist/src/triggers/TriggerPayloadBuilder.d.ts.map +1 -1
- package/dist/src/triggers/TriggerPayloadBuilder.js.map +1 -1
- package/dist/src/triggers/TriggerPayloadManager.d.ts +1 -7
- package/dist/src/triggers/TriggerPayloadManager.d.ts.map +1 -1
- package/dist/src/triggers/TriggerPayloadManager.js.map +1 -1
- package/dist/src/triggers/TriggerPayloadPersister.d.ts +2 -3
- package/dist/src/triggers/TriggerPayloadPersister.d.ts.map +1 -1
- package/dist/src/triggers/TriggerPayloadPersister.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/tests/cases/unit/webhookHandler.test.js +103 -9
- package/dist/tests/cases/unit/webhookHandler.test.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -16
- package/src/dispatch/WebhookTargetHandler.ts +16 -8
- package/src/dispatch/types.ts +0 -26
- package/src/model/types.ts +2 -2
- package/src/triggers/TriggerPayloadBuilder.ts +5 -6
- package/src/triggers/TriggerPayloadManager.ts +0 -7
- package/src/triggers/TriggerPayloadPersister.ts +2 -3
- package/tests/cases/unit/webhookHandler.test.ts +114 -13
- package/dist/src/triggers/Payload.d.ts +0 -57
- package/dist/src/triggers/Payload.d.ts.map +0 -1
- package/dist/src/triggers/Payload.js +0 -3
- package/dist/src/triggers/Payload.js.map +0 -1
- 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.
|
|
3
|
+
"version": "1.4.0-rc.4",
|
|
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.
|
|
17
|
-
"@contember/database": "1.4.0-rc.
|
|
18
|
-
"@contember/database-migrations": "1.4.0-rc.
|
|
19
|
-
"@contember/engine-common": "1.4.0-rc.
|
|
20
|
-
"@contember/engine-content-api": "1.4.0-rc.
|
|
21
|
-
"@contember/engine-http": "1.4.0-rc.
|
|
22
|
-
"@contember/engine-plugins": "1.4.0-rc.
|
|
23
|
-
"@contember/engine-system-api": "1.4.0-rc.
|
|
24
|
-
"@contember/engine-tenant-api": "1.4.0-rc.
|
|
25
|
-
"@contember/graphql-utils": "1.4.0-rc.
|
|
26
|
-
"@contember/logger": "1.4.0-rc.
|
|
27
|
-
"@contember/schema": "1.4.0-rc.
|
|
28
|
-
"@contember/schema-utils": "1.4.0-rc.
|
|
29
|
-
"@contember/typesafe": "1.4.0-rc.
|
|
16
|
+
"@contember/authorization": "1.4.0-rc.4",
|
|
17
|
+
"@contember/database": "1.4.0-rc.4",
|
|
18
|
+
"@contember/database-migrations": "1.4.0-rc.4",
|
|
19
|
+
"@contember/engine-common": "1.4.0-rc.4",
|
|
20
|
+
"@contember/engine-content-api": "1.4.0-rc.4",
|
|
21
|
+
"@contember/engine-http": "1.4.0-rc.4",
|
|
22
|
+
"@contember/engine-plugins": "1.4.0-rc.4",
|
|
23
|
+
"@contember/engine-system-api": "1.4.0-rc.4",
|
|
24
|
+
"@contember/engine-tenant-api": "1.4.0-rc.4",
|
|
25
|
+
"@contember/graphql-utils": "1.4.0-rc.4",
|
|
26
|
+
"@contember/logger": "1.4.0-rc.4",
|
|
27
|
+
"@contember/schema": "1.4.0-rc.4",
|
|
28
|
+
"@contember/schema-utils": "1.4.0-rc.4",
|
|
29
|
+
"@contember/typesafe": "1.4.0-rc.4",
|
|
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.
|
|
34
|
+
"@contember/engine-api-tester": "1.4.0-rc.4",
|
|
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
|
|
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:
|
|
156
|
+
body: this.formatBody(events, target),
|
|
161
157
|
})
|
|
162
158
|
}
|
|
163
159
|
|
|
164
|
-
private
|
|
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,
|
package/src/dispatch/types.ts
CHANGED
|
@@ -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
|
-
}
|
package/src/model/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Payload.js","sourceRoot":"","sources":["../../../src/triggers/Payload.ts"],"names":[],"mappings":""}
|
package/src/triggers/Payload.ts
DELETED
|
@@ -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
|