@transai/connector-runner-mkg 0.2.0 → 0.4.0

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 (151) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/index.cjs +2 -0
  3. package/index.cjs.map +7 -0
  4. package/index.js +2 -0
  5. package/index.js.map +7 -0
  6. package/libs/connector-runner-mkg/src/lib/actions-handler.d.ts +7 -0
  7. package/libs/connector-runner-mkg/src/lib/connector-runner-mkg.d.ts +8 -0
  8. package/libs/connector-runner-mkg/src/lib/extractor.service.d.ts +8 -0
  9. package/libs/connector-runner-mkg/src/lib/tables/_all.d.ts +4 -0
  10. package/libs/connector-runner-mkg/src/lib/tables/artg.d.ts +2 -0
  11. package/libs/connector-runner-mkg/src/lib/tables/arti.d.ts +2 -0
  12. package/libs/connector-runner-mkg/src/lib/tables/base/action.d.ts +21 -0
  13. package/libs/connector-runner-mkg/src/lib/tables/base/table.d.ts +15 -0
  14. package/libs/connector-runner-mkg/src/lib/tables/bwrg.d.ts +2 -0
  15. package/libs/connector-runner-mkg/src/lib/tables/bwrk.d.ts +2 -0
  16. package/libs/connector-runner-mkg/src/lib/tables/clch.d.ts +2 -0
  17. package/libs/connector-runner-mkg/src/lib/tables/debi.d.ts +2 -0
  18. package/libs/connector-runner-mkg/src/lib/tables/magl.d.ts +2 -0
  19. package/libs/connector-runner-mkg/src/lib/tables/magz.d.ts +2 -0
  20. package/libs/connector-runner-mkg/src/lib/tables/medw.d.ts +2 -0
  21. package/libs/connector-runner-mkg/src/lib/tables/parl.d.ts +2 -0
  22. package/libs/connector-runner-mkg/src/lib/tables/plnb.d.ts +2 -0
  23. package/libs/connector-runner-mkg/src/lib/tables/prbv.d.ts +2 -0
  24. package/libs/connector-runner-mkg/src/lib/tables/prdh.d.ts +2 -0
  25. package/libs/connector-runner-mkg/src/lib/tables/prdr.d.ts +2 -0
  26. package/libs/connector-runner-mkg/src/lib/tables/prmv.d.ts +2 -0
  27. package/libs/connector-runner-mkg/src/lib/tables/rela.d.ts +2 -0
  28. package/libs/connector-runner-mkg/src/lib/tables/rgrs.d.ts +2 -0
  29. package/libs/connector-runner-mkg/src/lib/tables/rsrc.d.ts +2 -0
  30. package/libs/connector-runner-mkg/src/lib/tables/rsrd.d.ts +2 -0
  31. package/libs/connector-runner-mkg/src/lib/tables/rsrg.d.ts +2 -0
  32. package/libs/connector-runner-mkg/src/lib/tables/stlh.d.ts +2 -0
  33. package/libs/connector-runner-mkg/src/lib/tables/stlm.d.ts +2 -0
  34. package/libs/connector-runner-mkg/src/lib/tables/stlr.d.ts +2 -0
  35. package/libs/connector-runner-mkg/src/lib/tables/vrdg.d.ts +2 -0
  36. package/libs/connector-runner-mkg/src/lib/types.d.ts +34 -0
  37. package/libs/connector-runtime-sdk/src/index.d.ts +3 -0
  38. package/libs/connector-runtime-sdk/src/lib/connector-runtime.d.ts +16 -0
  39. package/libs/connector-runtime-sdk/src/lib/connector-runtime.interface.d.ts +5 -0
  40. package/libs/connector-runtime-sdk/src/lib/sdk/files.sdk.interface.d.ts +18 -0
  41. package/libs/connector-runtime-sdk/src/lib/sdk/http-client.interface.d.ts +38 -0
  42. package/libs/connector-runtime-sdk/src/lib/sdk/index.d.ts +10 -0
  43. package/libs/connector-runtime-sdk/src/lib/sdk/logger.sdk.interface.d.ts +7 -0
  44. package/libs/connector-runtime-sdk/src/lib/sdk/offset-store.sdk.interface.d.ts +12 -0
  45. package/libs/connector-runtime-sdk/src/lib/sdk/processing.sdk.interface.d.ts +13 -0
  46. package/libs/connector-runtime-sdk/src/lib/sdk/receiver.sdk.interface.d.ts +14 -0
  47. package/libs/connector-runtime-sdk/src/lib/sdk/sdk.interface.d.ts +31 -0
  48. package/libs/connector-runtime-sdk/src/lib/sdk/sender.sdk.interface.d.ts +22 -0
  49. package/libs/connector-runtime-sdk/src/lib/sdk/telemetry.sdk.interface.d.ts +15 -0
  50. package/libs/connector-runtime-sdk/src/lib/sdk/templating.sdk.interface.d.ts +12 -0
  51. package/libs/types/src/index.d.ts +7 -0
  52. package/libs/types/src/lib/cube-query-config.types.d.ts +20 -0
  53. package/libs/types/src/lib/file-action.types.d.ts +5 -0
  54. package/libs/types/src/lib/http-status-codes.enum.d.ts +64 -0
  55. package/libs/types/src/lib/management-api/action-definition.interface.d.ts +12 -0
  56. package/libs/types/src/lib/management-api/chart.interface.d.ts +9 -0
  57. package/libs/types/src/lib/management-api/connector/connector.interface.d.ts +140 -0
  58. package/libs/types/src/lib/management-api/connector/connectors.interface.d.ts +126 -0
  59. package/libs/types/src/lib/management-api/connector-orchestrator-config.interface.d.ts +14 -0
  60. package/libs/types/src/lib/management-api/cube-dataset.interface.d.ts +93 -0
  61. package/libs/types/src/lib/management-api/dashboard.interface.d.ts +35 -0
  62. package/libs/types/src/lib/management-api/dataset/collection.interface.d.ts +16 -0
  63. package/libs/types/src/lib/management-api/dataset/dataset-record.interface.d.ts +5 -0
  64. package/libs/types/src/lib/management-api/dataset/dataset.interface.d.ts +730 -0
  65. package/libs/types/src/lib/management-api/dataset/datasets.interface.d.ts +710 -0
  66. package/libs/types/src/lib/management-api/dataset/dimension.interface.d.ts +205 -0
  67. package/libs/types/src/lib/management-api/dataset/dimensions.interface.d.ts +186 -0
  68. package/libs/types/src/lib/management-api/dataset/filter-group.interface.d.ts +8 -0
  69. package/libs/types/src/lib/management-api/dataset/filter.interface.d.ts +34 -0
  70. package/libs/types/src/lib/management-api/dataset/filters.interface.d.ts +7 -0
  71. package/libs/types/src/lib/management-api/dataset/measure.interface.d.ts +65 -0
  72. package/libs/types/src/lib/management-api/dataset/measures.interface.d.ts +56 -0
  73. package/libs/types/src/lib/management-api/dataset/meta.interface.d.ts +9 -0
  74. package/libs/types/src/lib/management-api/dataset/pre-aggregate.interface.d.ts +69 -0
  75. package/libs/types/src/lib/management-api/dataset/pre-aggregations.interface.d.ts +54 -0
  76. package/libs/types/src/lib/management-api/dataset/relation.interface.d.ts +40 -0
  77. package/libs/types/src/lib/management-api/dataset/relations.interface.d.ts +36 -0
  78. package/libs/types/src/lib/management-api/dataset/segment.interface.d.ts +45 -0
  79. package/libs/types/src/lib/management-api/dataset/segments.interface.d.ts +43 -0
  80. package/libs/types/src/lib/management-api/dataset/switch.interface.d.ts +70 -0
  81. package/libs/types/src/lib/management-api/dataset/when-item.interface.d.ts +41 -0
  82. package/libs/types/src/lib/management-api/dataset/when-items.interface.d.ts +40 -0
  83. package/libs/types/src/lib/management-api/event-origin.interface.d.ts +24 -0
  84. package/libs/types/src/lib/management-api/index.d.ts +39 -0
  85. package/libs/types/src/lib/management-api/semantic-trigger/custom-cron-trigger-record.interface.d.ts +6 -0
  86. package/libs/types/src/lib/management-api/semantic-trigger/index.d.ts +6 -0
  87. package/libs/types/src/lib/management-api/semantic-trigger/semantic-trigger-filter.interface.d.ts +20 -0
  88. package/libs/types/src/lib/management-api/semantic-trigger/semantic-trigger-filters.interface.d.ts +18 -0
  89. package/libs/types/src/lib/management-api/semantic-trigger/semantic-trigger-record.interface.d.ts +6 -0
  90. package/libs/types/src/lib/management-api/semantic-trigger/semantic-trigger.interface.d.ts +75 -0
  91. package/libs/types/src/lib/management-api/semantic-trigger/semantic-triggers.interface.d.ts +62 -0
  92. package/libs/types/src/lib/management-api/template-implementation-overrides.interface.d.ts +1152 -0
  93. package/libs/types/src/lib/management-api/template-implementation.interface.d.ts +2860 -0
  94. package/libs/types/src/lib/management-api/template.interface.d.ts +1191 -0
  95. package/libs/types/src/lib/management-api/tenant.interface.d.ts +8 -0
  96. package/libs/types/src/lib/management-api/type-enums.d.ts +85 -0
  97. package/libs/types/src/lib/management-api/web/generic-filter.dto.d.ts +37 -0
  98. package/libs/types/src/lib/management-api/web/index.d.ts +2 -0
  99. package/libs/types/src/lib/management-api/web/paginated-response.interface.d.ts +17 -0
  100. package/libs/types/src/lib/management-api/workflow/action.interface.d.ts +85 -0
  101. package/libs/types/src/lib/management-api/workflow/index.d.ts +6 -0
  102. package/libs/types/src/lib/management-api/workflow/offset.interface.d.ts +14 -0
  103. package/libs/types/src/lib/management-api/workflow/trigger-types.interface.d.ts +14 -0
  104. package/libs/types/src/lib/management-api/workflow/workflow-definition.interface.d.ts +57 -0
  105. package/libs/types/src/lib/management-api/workflow/workflow-run.d.ts +70 -0
  106. package/libs/types/src/lib/management-api/workflow/workflow.drawing.d.ts +102 -0
  107. package/libs/types/src/lib/message.types.d.ts +59 -0
  108. package/libs/types/src/lib/response.types.d.ts +27 -0
  109. package/libs/types/src/lib/types.d.ts +116 -0
  110. package/package.json +1 -1
  111. package/.eslintrc.json +0 -30
  112. package/jest.config.ts +0 -10
  113. package/project.json +0 -29
  114. package/src/lib/actions-handler.spec.ts +0 -177
  115. package/src/lib/actions-handler.ts +0 -143
  116. package/src/lib/connector-runner-mkg.spec.ts +0 -219
  117. package/src/lib/connector-runner-mkg.ts +0 -155
  118. package/src/lib/extractor.service.spec.ts +0 -123
  119. package/src/lib/extractor.service.ts +0 -125
  120. package/src/lib/tables/_all.ts +0 -60
  121. package/src/lib/tables/artg.ts +0 -12
  122. package/src/lib/tables/arti.ts +0 -99
  123. package/src/lib/tables/base/action.ts +0 -70
  124. package/src/lib/tables/base/table.ts +0 -57
  125. package/src/lib/tables/bwrg.ts +0 -13
  126. package/src/lib/tables/bwrk.ts +0 -60
  127. package/src/lib/tables/clch.ts +0 -42
  128. package/src/lib/tables/debi.ts +0 -62
  129. package/src/lib/tables/magl.ts +0 -15
  130. package/src/lib/tables/magz.ts +0 -14
  131. package/src/lib/tables/medw.ts +0 -97
  132. package/src/lib/tables/parl.ts +0 -24
  133. package/src/lib/tables/plnb.ts +0 -46
  134. package/src/lib/tables/prbv.ts +0 -31
  135. package/src/lib/tables/prdh.ts +0 -46
  136. package/src/lib/tables/prdr.ts +0 -25
  137. package/src/lib/tables/prmv.ts +0 -31
  138. package/src/lib/tables/rela.ts +0 -40
  139. package/src/lib/tables/rgrs.ts +0 -68
  140. package/src/lib/tables/rsrc.ts +0 -23
  141. package/src/lib/tables/rsrd.ts +0 -98
  142. package/src/lib/tables/rsrg.ts +0 -6
  143. package/src/lib/tables/stlh.ts +0 -24
  144. package/src/lib/tables/stlm.ts +0 -80
  145. package/src/lib/tables/stlr.ts +0 -60
  146. package/src/lib/tables/vrdg.ts +0 -27
  147. package/src/lib/types.ts +0 -45
  148. package/tsconfig.json +0 -22
  149. package/tsconfig.lib.json +0 -10
  150. package/tsconfig.spec.json +0 -14
  151. /package/{src/index.ts → libs/connector-runner-mkg/src/index.d.ts} +0 -0
@@ -0,0 +1,116 @@
1
+ export interface MessageMonitorConfig {
2
+ type: 'in-memory' | 'redis' | 'disabled';
3
+ }
4
+ export declare enum ConfiguredConnectorTypes {
5
+ API = "api",
6
+ API_SINK = "api-sink",
7
+ API_SOURCE = "api-source",
8
+ DUMMY_NODE = "dummy-node",
9
+ FILE_COPY = "file-copy",
10
+ FILE = "file",
11
+ FILE_SINK = "file-sink",
12
+ FILE_SOURCE = "file-source",
13
+ SAMBA_SINK = "samba-sink",
14
+ SAMBA_SOURCE = "samba-source",
15
+ SQL_SINK = "sql-sink",
16
+ SQL_SOURCE = "sql-source",
17
+ MQTT = "mqtt",
18
+ CUBE_QUERY_RUNNER = "cube-query-runner",
19
+ FACTORY_NEBULA_SOURCE = "factory-nebula-source",
20
+ BYSTRONIC = "bystronic",
21
+ IMAP_SOURCE = "imap-source",
22
+ IMAP_SINK = "imap-sink",
23
+ OPCUA_SOURCE = "opcua-source",
24
+ OPCUA_SINK = "opcua-sink",
25
+ AI_AGENT = "ai-agent",
26
+ MICROSOFT_OFFICE365_EMAIL = "microsoft-office365-email",
27
+ MKG = "mkg"
28
+ }
29
+ export interface ConnectorConfig {
30
+ type: ConfiguredConnectorTypes;
31
+ identifier: string;
32
+ }
33
+ export interface RedisMessageMonitorConfig extends MessageMonitorConfig {
34
+ type: 'redis';
35
+ url: string;
36
+ ttl?: number;
37
+ }
38
+ export interface InMemoryMessageMonitorConfig extends MessageMonitorConfig {
39
+ type: 'in-memory';
40
+ messagesToKeep: number;
41
+ }
42
+ export interface DisabledMessageMonitorConfig extends MessageMonitorConfig {
43
+ type: 'disabled';
44
+ }
45
+ export interface TopicRegex {
46
+ pattern: string;
47
+ flags: string;
48
+ }
49
+ export interface FileRegex {
50
+ pattern: string;
51
+ flags: string;
52
+ }
53
+ export declare function isTopicRegex(obj: TopicRegex | string): obj is TopicRegex;
54
+ export interface CubeConfigHeaders {
55
+ Authorization: string;
56
+ }
57
+ export interface CubeConfig {
58
+ auth0_client_secret?: string;
59
+ auth0_client_id?: string;
60
+ auth0_audience?: string;
61
+ auth0_token_url?: string;
62
+ authorization?: string;
63
+ apiUrl: string;
64
+ headers?: CubeConfigHeaders;
65
+ redis_url?: string;
66
+ }
67
+ export declare function isCubeConfigType(obj: CubeConfig): obj is CubeConfig;
68
+ export interface AwsKafkaSaslConfig {
69
+ region?: string;
70
+ accessKeyId?: string;
71
+ secretAccessKey?: string;
72
+ mechanism: 'aws';
73
+ }
74
+ export declare function isAwsKafkaSalsConfig(obj: AwsKafkaSaslConfig): obj is AwsKafkaSaslConfig;
75
+ export interface DatabaseConfig {
76
+ uri: string;
77
+ ssl?: boolean;
78
+ tenantPassword?: string;
79
+ }
80
+ export interface ActionConfig {
81
+ timeSensitive: boolean;
82
+ }
83
+ export interface KafkaBrokerConfig {
84
+ groupId: string;
85
+ clientId: string;
86
+ brokers: Array<string>;
87
+ consumerTopics?: Array<string | TopicRegex>;
88
+ sasl?: AwsKafkaSaslConfig;
89
+ intervalCheckForNewTopics?: number;
90
+ disableLogs?: boolean;
91
+ autoCommitThreshold?: number;
92
+ autoCommitInterval?: number;
93
+ partitionsConsumedConcurrently?: number;
94
+ messageMonitor?: RedisMessageMonitorConfig | InMemoryMessageMonitorConfig | DisabledMessageMonitorConfig;
95
+ useConfluentLibrary?: boolean;
96
+ newConsumerProtocol?: boolean;
97
+ }
98
+ export declare function isKafkaBrokerConfigType(obj: KafkaBrokerConfig): obj is KafkaBrokerConfig;
99
+ export declare function isActionConfigType(obj: any): obj is ActionConfig;
100
+ export declare function isDatabaseConfigType(obj: DatabaseConfig): obj is DatabaseConfig;
101
+ export interface BaseConnectorConfig {
102
+ processIdentifier: string;
103
+ tenantIdentifier: string;
104
+ datasourceIdentifier: string;
105
+ kafka: KafkaBrokerConfig;
106
+ action?: ActionConfig;
107
+ }
108
+ export declare function isBaseConnectorConfigType(obj: BaseConnectorConfig): obj is BaseConnectorConfig;
109
+ export interface AiAgentConfig {
110
+ openai: {
111
+ apiKey: string;
112
+ model: 'gpt-3.5-turbo' | 'gpt-4' | 'gpt-4-turbo' | 'gpt-4o' | 'gpt-4o-mini' | 'o1-preview' | 'o1-mini';
113
+ temperature?: number;
114
+ timeout?: number;
115
+ };
116
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transai/connector-runner-mkg",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/.eslintrc.json DELETED
@@ -1,30 +0,0 @@
1
- {
2
- "extends": ["../../.eslintrc.json"],
3
- "ignorePatterns": ["!**/*"],
4
- "overrides": [
5
- {
6
- "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
7
- "rules": {}
8
- },
9
- {
10
- "files": ["*.ts", "*.tsx"],
11
- "rules": {}
12
- },
13
- {
14
- "files": ["*.js", "*.jsx"],
15
- "rules": {}
16
- },
17
- {
18
- "files": ["*.json"],
19
- "parser": "jsonc-eslint-parser",
20
- "rules": {
21
- "@nx/dependency-checks": [
22
- "error",
23
- {
24
- "ignoredFiles": ["{projectRoot}/eslint.config.{js,cjs,mjs}"]
25
- }
26
- ]
27
- }
28
- }
29
- ]
30
- }
package/jest.config.ts DELETED
@@ -1,10 +0,0 @@
1
- export default {
2
- displayName: 'connector-runner-mkg',
3
- preset: '../../jest.preset.js',
4
- testEnvironment: 'node',
5
- transform: {
6
- '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
7
- },
8
- moduleFileExtensions: ['ts', 'js', 'html'],
9
- coverageDirectory: '../../coverage/libs/connector-runner-mkg',
10
- };
package/project.json DELETED
@@ -1,29 +0,0 @@
1
- {
2
- "name": "connector-runner-mkg",
3
- "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
- "sourceRoot": "libs/connector-runner-mkg/src",
5
- "projectType": "library",
6
- "tags": [
7
- "connector:runner",
8
- "connector:runner-sdk",
9
- "connector:mkg",
10
- "connector:source",
11
- "provider:@transai"
12
- ],
13
- "targets": {
14
- "build": {
15
- "executor": "@transai/tools:connector",
16
- "outputs": ["{options.outputPath}"]
17
- },
18
- "lint": {
19
- "executor": "@nx/eslint:lint"
20
- },
21
- "test": {
22
- "executor": "@nx/jest:jest",
23
- "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
24
- "options": {
25
- "jestConfig": "libs/connector-runner-mkg/jest.config.ts"
26
- }
27
- }
28
- }
29
- }
@@ -1,177 +0,0 @@
1
- import {
2
- ConnectorSDKInterface,
3
- HttpClientSDKInterface,
4
- } from '@transai/connector-runtime-sdk';
5
- import { ActionInterface, XodJobType } from '@xip-online-data/types';
6
-
7
- import { ActionsHandler } from './actions-handler';
8
-
9
- describe('ActionsHandler', () => {
10
- let handler: ActionsHandler;
11
-
12
- const sdkMock = {
13
- logger: {
14
- warn: jest.fn(),
15
- info: jest.fn(),
16
- debug: jest.fn(),
17
- error: jest.fn(),
18
- verbose: jest.fn(),
19
- },
20
- receiver: {
21
- responses: {
22
- created: jest.fn().mockReturnValue(
23
- jest.fn().mockReturnValue({
24
- statusCode: 201,
25
- }),
26
- ),
27
- badRequest: jest.fn().mockReturnValue(
28
- jest.fn().mockReturnValue({
29
- statusCode: 400,
30
- }),
31
- ),
32
- internalServerError: jest.fn().mockReturnValue(
33
- jest.fn().mockReturnValue({
34
- statusCode: 500,
35
- }),
36
- ),
37
- },
38
- emitEventType: jest.fn().mockReturnValue(
39
- jest.fn().mockReturnValue({
40
- statusCode: 201,
41
- }),
42
- ),
43
- },
44
- } as unknown as ConnectorSDKInterface;
45
- let httpClientMock: HttpClientSDKInterface;
46
-
47
- beforeEach(() => {
48
- httpClientMock = {
49
- request: jest.fn().mockResolvedValue({
50
- success: true,
51
- statusCode: 201,
52
- }),
53
- } as unknown as HttpClientSDKInterface;
54
-
55
- handler = new ActionsHandler(sdkMock, httpClientMock);
56
- });
57
-
58
- afterEach(() => {
59
- jest.clearAllMocks();
60
- });
61
-
62
- it('should be defined', () => {
63
- expect(handler).toBeDefined();
64
- });
65
-
66
- describe('JOB actions', () => {
67
- const action = {
68
- config: {
69
- parsedTemplates: {
70
- action: jest.fn().mockReturnValue('prmv.create.prdh_prdr'),
71
- params: jest.fn().mockReturnValue(
72
- JSON.stringify({
73
- prmv_oms_1: 'API materiaal test',
74
- cred_num: 'some-cred_num',
75
- prdh_num: '56',
76
- prdr_num: '78',
77
- }),
78
- ),
79
- },
80
- },
81
- } as unknown as ActionInterface;
82
-
83
- const jobMessage = {
84
- type: 'JOB',
85
- actionIdentifier: 'action-1',
86
- actionVersion: 'latest',
87
- payload: { some: 'data' },
88
- } as unknown as XodJobType;
89
-
90
- it('should execute request on action', async () => {
91
- const response = await handler.callbackFunctionChain(jobMessage, action);
92
-
93
- expect(response.statusCode).toBe(201);
94
- expect(httpClientMock.request).toHaveBeenCalledWith(
95
- 'POST',
96
- '/web/v3/MKG/Documents/prdr/1+56+78/prdr_prmv',
97
- {
98
- data: {
99
- request: {
100
- InputData: {
101
- prmv: [
102
- {
103
- prmv_oms_1: 'API materiaal test',
104
- cred_num: 'some-cred_num',
105
- },
106
- ],
107
- },
108
- },
109
- },
110
- },
111
- );
112
- });
113
-
114
- it('should handle test run without firing request', async () => {
115
- const testRunMessage = {
116
- ...jobMessage,
117
- testRun: true,
118
- } as XodJobType;
119
-
120
- const response = await handler.callbackFunctionChain(
121
- testRunMessage,
122
- action,
123
- );
124
-
125
- expect(response.statusCode).toBe(201);
126
- expect(httpClientMock.request).not.toHaveBeenCalled();
127
- });
128
-
129
- it('should reject on unknown action', async () => {
130
- const action = {
131
- config: {
132
- parsedTemplates: {
133
- action: jest.fn().mockReturnValue('prmv.blaat'),
134
- params: jest.fn().mockReturnValue(JSON.stringify({})),
135
- },
136
- },
137
- } as unknown as ActionInterface;
138
-
139
- const response = await handler.callbackFunctionChain(jobMessage, action);
140
-
141
- expect(response.statusCode).toBe(400);
142
- expect(httpClientMock.request).not.toHaveBeenCalled();
143
- });
144
-
145
- it('should reject on unknown table', async () => {
146
- const action = {
147
- config: {
148
- parsedTemplates: {
149
- action: jest.fn().mockReturnValue('blaat.blaat'),
150
- params: jest.fn().mockReturnValue(JSON.stringify({})),
151
- },
152
- },
153
- } as unknown as ActionInterface;
154
-
155
- const response = await handler.callbackFunctionChain(jobMessage, action);
156
-
157
- expect(response.statusCode).toBe(400);
158
- expect(httpClientMock.request).not.toHaveBeenCalled();
159
- });
160
-
161
- it('should not fail on unsupported action format', async () => {
162
- const action = {
163
- config: {
164
- parsedTemplates: {
165
- action: jest.fn().mockReturnValue('blaat'),
166
- params: jest.fn().mockReturnValue(JSON.stringify({})),
167
- },
168
- },
169
- } as unknown as ActionInterface;
170
-
171
- const response = await handler.callbackFunctionChain(jobMessage, action);
172
-
173
- expect(response.statusCode).toBe(400);
174
- expect(httpClientMock.request).not.toHaveBeenCalled();
175
- });
176
- });
177
- });
@@ -1,143 +0,0 @@
1
- import {
2
- CompileDelegate,
3
- ConnectorSDKInterface,
4
- HttpClientSDKInterface,
5
- HttpError,
6
- } from '@transai/connector-runtime-sdk';
7
- import {
8
- ActionInterface,
9
- KafkaCallbackResponse,
10
- XodJobType,
11
- } from '@xip-online-data/types';
12
-
13
- import { MKG_TABLES } from './tables/_all';
14
-
15
- export class ActionsHandler {
16
- readonly #connectorSDK: ConnectorSDKInterface;
17
-
18
- readonly #httpClient: HttpClientSDKInterface;
19
-
20
- constructor(
21
- connectorSDK: ConnectorSDKInterface,
22
- httpClient: HttpClientSDKInterface,
23
- ) {
24
- this.#connectorSDK = connectorSDK;
25
- this.#httpClient = httpClient;
26
- }
27
-
28
- get callbackFunctionChain(): (
29
- message: XodJobType,
30
- action: ActionInterface,
31
- ) => Promise<KafkaCallbackResponse> {
32
- return this.#jobCallbackFunction(
33
- this.#connectorSDK.receiver.emitEventType(
34
- this.#connectorSDK.receiver.responses.created(),
35
- ),
36
- );
37
- }
38
-
39
- #jobCallbackFunction(
40
- callbackFunction: (message: XodJobType) => Promise<KafkaCallbackResponse>,
41
- ) {
42
- return async (
43
- message: XodJobType,
44
- action: ActionInterface,
45
- ): Promise<KafkaCallbackResponse> => {
46
- try {
47
- this.#connectorSDK.logger.debug(
48
- `[MKG] Apply templates on payload: ${JSON.stringify(message.payload)}, action: ${JSON.stringify(action)}`,
49
- );
50
-
51
- const handleBars = action.config['parsedTemplates'] as {
52
- action: CompileDelegate;
53
- params: CompileDelegate;
54
- };
55
-
56
- const parsedAction = handleBars
57
- .action({
58
- inputs: message.payload,
59
- })
60
- .trim();
61
-
62
- const parsedParams = handleBars
63
- .params({
64
- inputs: message.payload,
65
- })
66
- .trim();
67
-
68
- const parsedParamsJson = JSON.parse(parsedParams);
69
- this.#connectorSDK.logger.debug(
70
- `[MKG] Parsed action: ${parsedAction}, params json: ${JSON.stringify(parsedParamsJson)}`,
71
- );
72
-
73
- const [tableIdentifier, ...rest] = parsedAction.split('.');
74
- const actionIdentifier = rest.join('.');
75
- // eslint-disable-next-line security/detect-object-injection
76
- const mkgTable = MKG_TABLES[tableIdentifier];
77
- if (!mkgTable) {
78
- this.#connectorSDK.logger.warn(
79
- `[MKG] Unknown table identifier "${tableIdentifier}" in message ${message.eventId}`,
80
- );
81
- return this.#connectorSDK.receiver.responses.badRequest(
82
- `[MKG] Unknown table identifier "${tableIdentifier}"`,
83
- )(message);
84
- }
85
-
86
- const mkgAction = mkgTable.action(actionIdentifier);
87
- if (!mkgAction) {
88
- const logMessage = `[MKG] Unknown action identifier "${actionIdentifier}" within table "${tableIdentifier}" in message ${message.eventId}`;
89
- this.#connectorSDK.logger.warn(logMessage);
90
- return this.#connectorSDK.receiver.responses.badRequest(logMessage)(
91
- message,
92
- );
93
- }
94
-
95
- if (message.testRun) {
96
- this.#connectorSDK.logger.info(
97
- `[MKG] Test run for ${message.eventId} with payload ${parsedParams} to action ${parsedAction}`,
98
- );
99
- return callbackFunction(message);
100
- }
101
-
102
- try {
103
- const response = await this.#httpClient.request(
104
- mkgAction.method,
105
- `/web/v3/MKG/Documents/${mkgAction.path(parsedParamsJson)}`,
106
- {
107
- ...(['POST', 'PUT'].includes(mkgAction.method)
108
- ? {
109
- data: {
110
- request: {
111
- InputData: {
112
- [tableIdentifier]: [
113
- mkgAction.fieldSet(parsedParamsJson),
114
- ],
115
- },
116
- },
117
- },
118
- }
119
- : {}),
120
- },
121
- );
122
-
123
- this.#connectorSDK.logger.debug(
124
- `[MKG] Got action "${actionIdentifier}" of table "${tableIdentifier}" response from MKG: ${JSON.stringify(response)}`,
125
- );
126
- } catch (error: HttpError | unknown) {
127
- const logMessage = `[MKG] Failed to perform action "${actionIdentifier}" of table "${tableIdentifier}": (${(error as HttpError)?.status}) ${(error as HttpError)?.error ?? (error as Error)?.message}`;
128
- this.#connectorSDK.logger.error(logMessage);
129
-
130
- return this.#connectorSDK.receiver.responses.unprocessableEntity(
131
- logMessage,
132
- )(message);
133
- }
134
-
135
- return callbackFunction(message);
136
- } catch (error: unknown) {
137
- return this.#connectorSDK.receiver.responses.internalServerError(
138
- error instanceof Error ? error.message : 'Unknown error occurred',
139
- )(message);
140
- }
141
- };
142
- }
143
- }