@nice2dev/ui-tools 1.0.10
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/README.md +36 -0
- package/dist/access-control.d.ts +726 -0
- package/dist/access-control.d.ts.map +1 -0
- package/dist/accessibility-i18n.d.ts +1017 -0
- package/dist/accessibility-i18n.d.ts.map +1 -0
- package/dist/ai-assistant.d.ts +263 -0
- package/dist/ai-assistant.d.ts.map +1 -0
- package/dist/ai-playgrounds.d.ts +842 -0
- package/dist/ai-playgrounds.d.ts.map +1 -0
- package/dist/alerting-incidents.d.ts +558 -0
- package/dist/alerting-incidents.d.ts.map +1 -0
- package/dist/api-designer.d.ts +1568 -0
- package/dist/api-designer.d.ts.map +1 -0
- package/dist/api-testing.d.ts +1146 -0
- package/dist/api-testing.d.ts.map +1 -0
- package/dist/apm-profiling.d.ts +656 -0
- package/dist/apm-profiling.d.ts.map +1 -0
- package/dist/artifacts.d.ts +421 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/audit-compliance.d.ts +752 -0
- package/dist/audit-compliance.d.ts.map +1 -0
- package/dist/certificates.d.ts +256 -0
- package/dist/certificates.d.ts.map +1 -0
- package/dist/chart-builder.d.ts +1404 -0
- package/dist/chart-builder.d.ts.map +1 -0
- package/dist/cloud-instances.d.ts +169 -0
- package/dist/cloud-instances.d.ts.map +1 -0
- package/dist/config-management.d.ts +350 -0
- package/dist/config-management.d.ts.map +1 -0
- package/dist/containers.d.ts +256 -0
- package/dist/containers.d.ts.map +1 -0
- package/dist/dashboard-designer.d.ts +1238 -0
- package/dist/dashboard-designer.d.ts.map +1 -0
- package/dist/data-management.d.ts +496 -0
- package/dist/data-management.d.ts.map +1 -0
- package/dist/data-pipeline.d.ts +1105 -0
- package/dist/data-pipeline.d.ts.map +1 -0
- package/dist/data-warehouse.d.ts +1097 -0
- package/dist/data-warehouse.d.ts.map +1 -0
- package/dist/dataset-management.d.ts +782 -0
- package/dist/dataset-management.d.ts.map +1 -0
- package/dist/db-adapters.d.ts +704 -0
- package/dist/db-adapters.d.ts.map +1 -0
- package/dist/db-admin.d.ts +699 -0
- package/dist/db-admin.d.ts.map +1 -0
- package/dist/db-designer.d.ts +366 -0
- package/dist/db-designer.d.ts.map +1 -0
- package/dist/debugger.d.ts +356 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/device-management.d.ts +871 -0
- package/dist/device-management.d.ts.map +1 -0
- package/dist/distributed-tracing.d.ts +427 -0
- package/dist/distributed-tracing.d.ts.map +1 -0
- package/dist/dns-management.d.ts +215 -0
- package/dist/dns-management.d.ts.map +1 -0
- package/dist/download-manager.d.ts +271 -0
- package/dist/download-manager.d.ts.map +1 -0
- package/dist/download-torrent.d.ts +1062 -0
- package/dist/download-torrent.d.ts.map +1 -0
- package/dist/edge-computing.d.ts +720 -0
- package/dist/edge-computing.d.ts.map +1 -0
- package/dist/education.d.ts +1135 -0
- package/dist/education.d.ts.map +1 -0
- package/dist/email-template.d.ts +1141 -0
- package/dist/email-template.d.ts.map +1 -0
- package/dist/erp-enterprise.d.ts +1270 -0
- package/dist/erp-enterprise.d.ts.map +1 -0
- package/dist/form-builder.d.ts +1117 -0
- package/dist/form-builder.d.ts.map +1 -0
- package/dist/game-engine-advanced.d.ts +1049 -0
- package/dist/game-engine-advanced.d.ts.map +1 -0
- package/dist/git.d.ts +415 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/hardware-integration.d.ts +966 -0
- package/dist/hardware-integration.d.ts.map +1 -0
- package/dist/iac.d.ts +318 -0
- package/dist/iac.d.ts.map +1 -0
- package/dist/icon-tools.d.ts +1023 -0
- package/dist/icon-tools.d.ts.map +1 -0
- package/dist/ide.d.ts +322 -0
- package/dist/ide.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +1887 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integration-platform.d.ts +857 -0
- package/dist/integration-platform.d.ts.map +1 -0
- package/dist/kubernetes.d.ts +278 -0
- package/dist/kubernetes.d.ts.map +1 -0
- package/dist/life-management.d.ts +1132 -0
- package/dist/life-management.d.ts.map +1 -0
- package/dist/log-management.d.ts +473 -0
- package/dist/log-management.d.ts.map +1 -0
- package/dist/mathematics.d.ts +870 -0
- package/dist/mathematics.d.ts.map +1 -0
- package/dist/message-queue.d.ts +1006 -0
- package/dist/message-queue.d.ts.map +1 -0
- package/dist/metrics-dashboard.d.ts +596 -0
- package/dist/metrics-dashboard.d.ts.map +1 -0
- package/dist/mobile-components.d.ts +766 -0
- package/dist/mobile-components.d.ts.map +1 -0
- package/dist/model-deployment.d.ts +787 -0
- package/dist/model-deployment.d.ts.map +1 -0
- package/dist/model-registry.d.ts +740 -0
- package/dist/model-registry.d.ts.map +1 -0
- package/dist/model-training.d.ts +706 -0
- package/dist/model-training.d.ts.map +1 -0
- package/dist/network-config.d.ts +334 -0
- package/dist/network-config.d.ts.map +1 -0
- package/dist/network-monitoring.d.ts +291 -0
- package/dist/network-monitoring.d.ts.map +1 -0
- package/dist/pdf-tools.d.ts +1003 -0
- package/dist/pdf-tools.d.ts.map +1 -0
- package/dist/pipelines.d.ts +250 -0
- package/dist/pipelines.d.ts.map +1 -0
- package/dist/remote-desktop.d.ts +207 -0
- package/dist/remote-desktop.d.ts.map +1 -0
- package/dist/report-designer.d.ts +1153 -0
- package/dist/report-designer.d.ts.map +1 -0
- package/dist/scada-industrial.d.ts +848 -0
- package/dist/scada-industrial.d.ts.map +1 -0
- package/dist/scientific-research.d.ts +1149 -0
- package/dist/scientific-research.d.ts.map +1 -0
- package/dist/secret-management.d.ts +617 -0
- package/dist/secret-management.d.ts.map +1 -0
- package/dist/security-scanning.d.ts +714 -0
- package/dist/security-scanning.d.ts.map +1 -0
- package/dist/self-service-analytics.d.ts +1208 -0
- package/dist/self-service-analytics.d.ts.map +1 -0
- package/dist/sensor-dashboard.d.ts +845 -0
- package/dist/sensor-dashboard.d.ts.map +1 -0
- package/dist/server-management.d.ts +331 -0
- package/dist/server-management.d.ts.map +1 -0
- package/dist/smart-home.d.ts +861 -0
- package/dist/smart-home.d.ts.map +1 -0
- package/dist/spreadsheet.d.ts +1043 -0
- package/dist/spreadsheet.d.ts.map +1 -0
- package/dist/sql-editor.d.ts +402 -0
- package/dist/sql-editor.d.ts.map +1 -0
- package/dist/terminal.d.ts +245 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/testing-qa.d.ts +1013 -0
- package/dist/testing-qa.d.ts.map +1 -0
- package/dist/torrent-client.d.ts +298 -0
- package/dist/torrent-client.d.ts.map +1 -0
- package/dist/traceless.d.ts +759 -0
- package/dist/traceless.d.ts.map +1 -0
- package/dist/virtual-machines.d.ts +199 -0
- package/dist/virtual-machines.d.ts.map +1 -0
- package/dist/visual-scripting.d.ts +381 -0
- package/dist/visual-scripting.d.ts.map +1 -0
- package/dist/word-processor.d.ts +1124 -0
- package/dist/word-processor.d.ts.map +1 -0
- package/dist/workspace.d.ts +333 -0
- package/dist/workspace.d.ts.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,857 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file integration-platform.ts
|
|
3
|
+
* @module @nice2dev/ui-tools
|
|
4
|
+
* @description PRO-13.3 — Integration Platform (iPaaS)
|
|
5
|
+
*
|
|
6
|
+
* Types for integration workflows: visual flow builder, connectors,
|
|
7
|
+
* data mapping, transformations, triggers, error handling, and monitoring.
|
|
8
|
+
*/
|
|
9
|
+
/** Flow execution status */
|
|
10
|
+
export type FlowStatus = 'draft' | 'active' | 'paused' | 'error' | 'archived';
|
|
11
|
+
/** Step execution status */
|
|
12
|
+
export type StepStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'cancelled';
|
|
13
|
+
/** Data type for mapping */
|
|
14
|
+
export type DataType = 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'array' | 'object' | 'binary' | 'null' | 'any';
|
|
15
|
+
/** Integration flow definition */
|
|
16
|
+
export interface IntegrationFlow {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
version: string;
|
|
21
|
+
status: FlowStatus;
|
|
22
|
+
trigger: FlowTrigger;
|
|
23
|
+
steps: FlowStep[];
|
|
24
|
+
errorHandler?: ErrorHandler;
|
|
25
|
+
settings: FlowSettings;
|
|
26
|
+
variables?: FlowVariable[];
|
|
27
|
+
tags?: string[];
|
|
28
|
+
folder?: string;
|
|
29
|
+
createdAt: Date;
|
|
30
|
+
updatedAt: Date;
|
|
31
|
+
createdBy?: string;
|
|
32
|
+
updatedBy?: string;
|
|
33
|
+
}
|
|
34
|
+
/** Flow settings */
|
|
35
|
+
export interface FlowSettings {
|
|
36
|
+
/** Timeout in seconds */
|
|
37
|
+
timeout?: number;
|
|
38
|
+
/** Maximum retries */
|
|
39
|
+
maxRetries?: number;
|
|
40
|
+
/** Retry delay in seconds */
|
|
41
|
+
retryDelay?: number;
|
|
42
|
+
/** Retry backoff multiplier */
|
|
43
|
+
retryBackoff?: number;
|
|
44
|
+
/** Maximum concurrent executions */
|
|
45
|
+
maxConcurrency?: number;
|
|
46
|
+
/** Log level */
|
|
47
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
48
|
+
/** Store execution data */
|
|
49
|
+
storeData?: boolean;
|
|
50
|
+
/** Data retention days */
|
|
51
|
+
dataRetentionDays?: number;
|
|
52
|
+
/** Notifications */
|
|
53
|
+
notifications?: FlowNotification[];
|
|
54
|
+
}
|
|
55
|
+
/** Flow notification */
|
|
56
|
+
export interface FlowNotification {
|
|
57
|
+
event: 'success' | 'failure' | 'timeout' | 'warning';
|
|
58
|
+
channels: NotificationChannel[];
|
|
59
|
+
}
|
|
60
|
+
/** Notification channel */
|
|
61
|
+
export interface NotificationChannel {
|
|
62
|
+
type: 'email' | 'slack' | 'teams' | 'webhook' | 'sms' | 'pagerduty';
|
|
63
|
+
target: string;
|
|
64
|
+
template?: string;
|
|
65
|
+
}
|
|
66
|
+
/** Flow variable */
|
|
67
|
+
export interface FlowVariable {
|
|
68
|
+
name: string;
|
|
69
|
+
type: DataType;
|
|
70
|
+
description?: string;
|
|
71
|
+
defaultValue?: unknown;
|
|
72
|
+
required?: boolean;
|
|
73
|
+
secret?: boolean;
|
|
74
|
+
}
|
|
75
|
+
/** Flow trigger */
|
|
76
|
+
export type FlowTrigger = ScheduleTrigger | WebhookTrigger | EventTrigger | ManualTrigger | FileTrigger | EmailTrigger | DatabaseTrigger;
|
|
77
|
+
/** Schedule trigger (cron) */
|
|
78
|
+
export interface ScheduleTrigger {
|
|
79
|
+
type: 'schedule';
|
|
80
|
+
schedule: CronSchedule;
|
|
81
|
+
timezone?: string;
|
|
82
|
+
enabled: boolean;
|
|
83
|
+
nextRunAt?: Date;
|
|
84
|
+
lastRunAt?: Date;
|
|
85
|
+
}
|
|
86
|
+
/** Cron schedule */
|
|
87
|
+
export interface CronSchedule {
|
|
88
|
+
expression: string;
|
|
89
|
+
description?: string;
|
|
90
|
+
}
|
|
91
|
+
/** Webhook trigger */
|
|
92
|
+
export interface WebhookTrigger {
|
|
93
|
+
type: 'webhook';
|
|
94
|
+
path: string;
|
|
95
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'ANY';
|
|
96
|
+
authentication?: WebhookAuth;
|
|
97
|
+
responseMode?: 'immediate' | 'deferred';
|
|
98
|
+
responseMapping?: DataMapping;
|
|
99
|
+
url?: string;
|
|
100
|
+
}
|
|
101
|
+
/** Webhook authentication */
|
|
102
|
+
export interface WebhookAuth {
|
|
103
|
+
type: 'none' | 'basic' | 'bearer' | 'api-key' | 'hmac' | 'oauth2';
|
|
104
|
+
config?: Record<string, unknown>;
|
|
105
|
+
}
|
|
106
|
+
/** Event trigger (message queue) */
|
|
107
|
+
export interface EventTrigger {
|
|
108
|
+
type: 'event';
|
|
109
|
+
source: EventSource;
|
|
110
|
+
filter?: EventFilter;
|
|
111
|
+
batchSize?: number;
|
|
112
|
+
batchTimeout?: number;
|
|
113
|
+
}
|
|
114
|
+
/** Event source */
|
|
115
|
+
export interface EventSource {
|
|
116
|
+
connector: string;
|
|
117
|
+
connectionId: string;
|
|
118
|
+
topic?: string;
|
|
119
|
+
queue?: string;
|
|
120
|
+
subscription?: string;
|
|
121
|
+
}
|
|
122
|
+
/** Event filter */
|
|
123
|
+
export interface EventFilter {
|
|
124
|
+
conditions: FilterCondition[];
|
|
125
|
+
logic: 'and' | 'or';
|
|
126
|
+
}
|
|
127
|
+
/** Filter condition */
|
|
128
|
+
export interface FilterCondition {
|
|
129
|
+
field: string;
|
|
130
|
+
operator: FilterOperator;
|
|
131
|
+
value: unknown;
|
|
132
|
+
}
|
|
133
|
+
/** Filter operator */
|
|
134
|
+
export type FilterOperator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'greater_than' | 'less_than' | 'greater_than_or_equal' | 'less_than_or_equal' | 'in' | 'not_in' | 'is_null' | 'is_not_null' | 'matches_regex';
|
|
135
|
+
/** Manual trigger */
|
|
136
|
+
export interface ManualTrigger {
|
|
137
|
+
type: 'manual';
|
|
138
|
+
inputSchema?: DataSchema;
|
|
139
|
+
}
|
|
140
|
+
/** File trigger */
|
|
141
|
+
export interface FileTrigger {
|
|
142
|
+
type: 'file';
|
|
143
|
+
connector: string;
|
|
144
|
+
connectionId: string;
|
|
145
|
+
path: string;
|
|
146
|
+
events: FileEvent[];
|
|
147
|
+
pattern?: string;
|
|
148
|
+
recursive?: boolean;
|
|
149
|
+
pollInterval?: number;
|
|
150
|
+
}
|
|
151
|
+
/** File event type */
|
|
152
|
+
export type FileEvent = 'created' | 'modified' | 'deleted' | 'renamed';
|
|
153
|
+
/** Email trigger */
|
|
154
|
+
export interface EmailTrigger {
|
|
155
|
+
type: 'email';
|
|
156
|
+
connectionId: string;
|
|
157
|
+
folder?: string;
|
|
158
|
+
filter?: EmailFilter;
|
|
159
|
+
markAsRead?: boolean;
|
|
160
|
+
pollInterval?: number;
|
|
161
|
+
}
|
|
162
|
+
/** Email filter */
|
|
163
|
+
export interface EmailFilter {
|
|
164
|
+
from?: string;
|
|
165
|
+
subject?: string;
|
|
166
|
+
hasAttachment?: boolean;
|
|
167
|
+
isUnread?: boolean;
|
|
168
|
+
}
|
|
169
|
+
/** Database trigger */
|
|
170
|
+
export interface DatabaseTrigger {
|
|
171
|
+
type: 'database';
|
|
172
|
+
connectionId: string;
|
|
173
|
+
table: string;
|
|
174
|
+
events: DatabaseEvent[];
|
|
175
|
+
columns?: string[];
|
|
176
|
+
pollInterval?: number;
|
|
177
|
+
watermarkColumn?: string;
|
|
178
|
+
}
|
|
179
|
+
/** Database event type */
|
|
180
|
+
export type DatabaseEvent = 'insert' | 'update' | 'delete';
|
|
181
|
+
/** Flow step */
|
|
182
|
+
export type FlowStep = ConnectorStep | TransformStep | ConditionStep | LoopStep | ParallelStep | DelayStep | SubflowStep | CodeStep | HttpStep | VariableStep | LogStep | ErrorStep;
|
|
183
|
+
/** Base step properties */
|
|
184
|
+
export interface BaseStep {
|
|
185
|
+
id: string;
|
|
186
|
+
name: string;
|
|
187
|
+
description?: string;
|
|
188
|
+
enabled?: boolean;
|
|
189
|
+
condition?: StepCondition;
|
|
190
|
+
errorBehavior?: StepErrorBehavior;
|
|
191
|
+
timeout?: number;
|
|
192
|
+
retries?: number;
|
|
193
|
+
}
|
|
194
|
+
/** Step condition */
|
|
195
|
+
export interface StepCondition {
|
|
196
|
+
expression: string;
|
|
197
|
+
language?: 'javascript' | 'jsonata' | 'jmespath';
|
|
198
|
+
}
|
|
199
|
+
/** Step error behavior */
|
|
200
|
+
export interface StepErrorBehavior {
|
|
201
|
+
action: 'fail' | 'continue' | 'retry' | 'goto';
|
|
202
|
+
gotoStepId?: string;
|
|
203
|
+
retryAttempts?: number;
|
|
204
|
+
retryDelay?: number;
|
|
205
|
+
}
|
|
206
|
+
/** Connector step (action) */
|
|
207
|
+
export interface ConnectorStep extends BaseStep {
|
|
208
|
+
type: 'connector';
|
|
209
|
+
connector: string;
|
|
210
|
+
connectionId: string;
|
|
211
|
+
action: string;
|
|
212
|
+
inputMapping: DataMapping;
|
|
213
|
+
outputMapping?: DataMapping;
|
|
214
|
+
pagination?: PaginationConfig;
|
|
215
|
+
}
|
|
216
|
+
/** Pagination configuration */
|
|
217
|
+
export interface PaginationConfig {
|
|
218
|
+
enabled: boolean;
|
|
219
|
+
type: 'offset' | 'cursor' | 'page';
|
|
220
|
+
pageSize: number;
|
|
221
|
+
maxPages?: number;
|
|
222
|
+
pageSizeParam?: string;
|
|
223
|
+
pageParam?: string;
|
|
224
|
+
cursorParam?: string;
|
|
225
|
+
cursorPath?: string;
|
|
226
|
+
hasMorePath?: string;
|
|
227
|
+
aggregateResults?: boolean;
|
|
228
|
+
}
|
|
229
|
+
/** Transform step */
|
|
230
|
+
export interface TransformStep extends BaseStep {
|
|
231
|
+
type: 'transform';
|
|
232
|
+
transformType: 'map' | 'filter' | 'aggregate' | 'sort' | 'flatten' | 'group' | 'custom';
|
|
233
|
+
config: TransformConfig;
|
|
234
|
+
}
|
|
235
|
+
/** Transform configuration */
|
|
236
|
+
export type TransformConfig = MapTransformConfig | FilterTransformConfig | AggregateTransformConfig | SortTransformConfig | FlattenTransformConfig | GroupTransformConfig | CustomTransformConfig;
|
|
237
|
+
/** Map transform */
|
|
238
|
+
export interface MapTransformConfig {
|
|
239
|
+
type: 'map';
|
|
240
|
+
mapping: DataMapping;
|
|
241
|
+
}
|
|
242
|
+
/** Filter transform */
|
|
243
|
+
export interface FilterTransformConfig {
|
|
244
|
+
type: 'filter';
|
|
245
|
+
condition: string;
|
|
246
|
+
language?: 'javascript' | 'jsonata' | 'jmespath';
|
|
247
|
+
}
|
|
248
|
+
/** Aggregate transform */
|
|
249
|
+
export interface AggregateTransformConfig {
|
|
250
|
+
type: 'aggregate';
|
|
251
|
+
groupBy?: string[];
|
|
252
|
+
aggregations: Aggregation[];
|
|
253
|
+
}
|
|
254
|
+
/** Aggregation */
|
|
255
|
+
export interface Aggregation {
|
|
256
|
+
field: string;
|
|
257
|
+
operation: 'sum' | 'avg' | 'min' | 'max' | 'count' | 'first' | 'last' | 'concat';
|
|
258
|
+
alias: string;
|
|
259
|
+
}
|
|
260
|
+
/** Sort transform */
|
|
261
|
+
export interface SortTransformConfig {
|
|
262
|
+
type: 'sort';
|
|
263
|
+
sortBy: SortField[];
|
|
264
|
+
}
|
|
265
|
+
/** Sort field */
|
|
266
|
+
export interface SortField {
|
|
267
|
+
field: string;
|
|
268
|
+
direction: 'asc' | 'desc';
|
|
269
|
+
nullsFirst?: boolean;
|
|
270
|
+
}
|
|
271
|
+
/** Flatten transform */
|
|
272
|
+
export interface FlattenTransformConfig {
|
|
273
|
+
type: 'flatten';
|
|
274
|
+
path: string;
|
|
275
|
+
depth?: number;
|
|
276
|
+
}
|
|
277
|
+
/** Group transform */
|
|
278
|
+
export interface GroupTransformConfig {
|
|
279
|
+
type: 'group';
|
|
280
|
+
groupBy: string[];
|
|
281
|
+
outputField?: string;
|
|
282
|
+
}
|
|
283
|
+
/** Custom transform */
|
|
284
|
+
export interface CustomTransformConfig {
|
|
285
|
+
type: 'custom';
|
|
286
|
+
code: string;
|
|
287
|
+
language: 'javascript' | 'python';
|
|
288
|
+
inputSchema?: DataSchema;
|
|
289
|
+
outputSchema?: DataSchema;
|
|
290
|
+
}
|
|
291
|
+
/** Condition step (branching) */
|
|
292
|
+
export interface ConditionStep extends BaseStep {
|
|
293
|
+
type: 'condition';
|
|
294
|
+
branches: ConditionalBranch[];
|
|
295
|
+
defaultBranch?: FlowStep[];
|
|
296
|
+
}
|
|
297
|
+
/** Conditional branch */
|
|
298
|
+
export interface ConditionalBranch {
|
|
299
|
+
name: string;
|
|
300
|
+
condition: string;
|
|
301
|
+
steps: FlowStep[];
|
|
302
|
+
}
|
|
303
|
+
/** Loop step */
|
|
304
|
+
export interface LoopStep extends BaseStep {
|
|
305
|
+
type: 'loop';
|
|
306
|
+
loopType: 'foreach' | 'while' | 'until' | 'times';
|
|
307
|
+
collection?: string;
|
|
308
|
+
/** Loop termination condition (for while/until loops) */
|
|
309
|
+
loopCondition?: string;
|
|
310
|
+
times?: number;
|
|
311
|
+
itemVariable?: string;
|
|
312
|
+
indexVariable?: string;
|
|
313
|
+
steps: FlowStep[];
|
|
314
|
+
maxIterations?: number;
|
|
315
|
+
batchSize?: number;
|
|
316
|
+
parallelism?: number;
|
|
317
|
+
}
|
|
318
|
+
/** Parallel step */
|
|
319
|
+
export interface ParallelStep extends BaseStep {
|
|
320
|
+
type: 'parallel';
|
|
321
|
+
branches: ParallelBranch[];
|
|
322
|
+
waitForAll?: boolean;
|
|
323
|
+
failFast?: boolean;
|
|
324
|
+
maxParallel?: number;
|
|
325
|
+
}
|
|
326
|
+
/** Parallel branch */
|
|
327
|
+
export interface ParallelBranch {
|
|
328
|
+
name: string;
|
|
329
|
+
steps: FlowStep[];
|
|
330
|
+
}
|
|
331
|
+
/** Delay step */
|
|
332
|
+
export interface DelayStep extends BaseStep {
|
|
333
|
+
type: 'delay';
|
|
334
|
+
duration: number;
|
|
335
|
+
unit: 'seconds' | 'minutes' | 'hours' | 'days';
|
|
336
|
+
until?: string;
|
|
337
|
+
}
|
|
338
|
+
/** Subflow step */
|
|
339
|
+
export interface SubflowStep extends BaseStep {
|
|
340
|
+
type: 'subflow';
|
|
341
|
+
flowId: string;
|
|
342
|
+
inputMapping: DataMapping;
|
|
343
|
+
outputMapping?: DataMapping;
|
|
344
|
+
waitForCompletion?: boolean;
|
|
345
|
+
}
|
|
346
|
+
/** Code step */
|
|
347
|
+
export interface CodeStep extends BaseStep {
|
|
348
|
+
type: 'code';
|
|
349
|
+
language: 'javascript' | 'python' | 'sql';
|
|
350
|
+
code: string;
|
|
351
|
+
inputVariables?: string[];
|
|
352
|
+
outputVariable?: string;
|
|
353
|
+
}
|
|
354
|
+
/** HTTP step */
|
|
355
|
+
export interface HttpStep extends BaseStep {
|
|
356
|
+
type: 'http';
|
|
357
|
+
url: string;
|
|
358
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
|
|
359
|
+
headers?: Record<string, string>;
|
|
360
|
+
queryParams?: Record<string, string>;
|
|
361
|
+
body?: unknown;
|
|
362
|
+
bodyType?: 'json' | 'form' | 'xml' | 'text' | 'binary';
|
|
363
|
+
authentication?: HttpAuthentication;
|
|
364
|
+
followRedirects?: boolean;
|
|
365
|
+
validateCertificate?: boolean;
|
|
366
|
+
timeout?: number;
|
|
367
|
+
responseMapping?: DataMapping;
|
|
368
|
+
}
|
|
369
|
+
/** HTTP authentication */
|
|
370
|
+
export interface HttpAuthentication {
|
|
371
|
+
type: 'none' | 'basic' | 'bearer' | 'api-key' | 'oauth2' | 'aws-signature';
|
|
372
|
+
config: Record<string, unknown>;
|
|
373
|
+
}
|
|
374
|
+
/** Variable step */
|
|
375
|
+
export interface VariableStep extends BaseStep {
|
|
376
|
+
type: 'variable';
|
|
377
|
+
operation: 'set' | 'increment' | 'append' | 'clear';
|
|
378
|
+
variable: string;
|
|
379
|
+
value?: unknown;
|
|
380
|
+
expression?: string;
|
|
381
|
+
}
|
|
382
|
+
/** Log step */
|
|
383
|
+
export interface LogStep extends BaseStep {
|
|
384
|
+
type: 'log';
|
|
385
|
+
level: 'debug' | 'info' | 'warn' | 'error';
|
|
386
|
+
message: string;
|
|
387
|
+
data?: unknown;
|
|
388
|
+
}
|
|
389
|
+
/** Error step (throw) */
|
|
390
|
+
export interface ErrorStep extends BaseStep {
|
|
391
|
+
type: 'error';
|
|
392
|
+
errorCode: string;
|
|
393
|
+
message: string;
|
|
394
|
+
data?: unknown;
|
|
395
|
+
}
|
|
396
|
+
/** Data mapping */
|
|
397
|
+
export interface DataMapping {
|
|
398
|
+
fields: FieldMapping[];
|
|
399
|
+
defaultBehavior?: 'passthrough' | 'drop';
|
|
400
|
+
validation?: MappingValidation;
|
|
401
|
+
}
|
|
402
|
+
/** Field mapping */
|
|
403
|
+
export interface FieldMapping {
|
|
404
|
+
target: string;
|
|
405
|
+
source?: string;
|
|
406
|
+
expression?: string;
|
|
407
|
+
type?: DataType;
|
|
408
|
+
defaultValue?: unknown;
|
|
409
|
+
transform?: FieldTransform[];
|
|
410
|
+
condition?: string;
|
|
411
|
+
}
|
|
412
|
+
/** Field transform */
|
|
413
|
+
export interface FieldTransform {
|
|
414
|
+
type: FieldTransformType;
|
|
415
|
+
config?: Record<string, unknown>;
|
|
416
|
+
}
|
|
417
|
+
/** Field transform type */
|
|
418
|
+
export type FieldTransformType = 'uppercase' | 'lowercase' | 'trim' | 'truncate' | 'pad' | 'replace' | 'split' | 'join' | 'substring' | 'concat' | 'format_date' | 'parse_date' | 'format_number' | 'parse_number' | 'round' | 'floor' | 'ceil' | 'abs' | 'base64_encode' | 'base64_decode' | 'url_encode' | 'url_decode' | 'json_stringify' | 'json_parse' | 'hash' | 'encrypt' | 'decrypt' | 'custom';
|
|
419
|
+
/** Mapping validation */
|
|
420
|
+
export interface MappingValidation {
|
|
421
|
+
enabled: boolean;
|
|
422
|
+
rules: ValidationRule[];
|
|
423
|
+
onError: 'fail' | 'warn' | 'skip';
|
|
424
|
+
}
|
|
425
|
+
/** Validation rule */
|
|
426
|
+
export interface ValidationRule {
|
|
427
|
+
field: string;
|
|
428
|
+
rule: ValidationType;
|
|
429
|
+
config?: Record<string, unknown>;
|
|
430
|
+
message?: string;
|
|
431
|
+
}
|
|
432
|
+
/** Validation type */
|
|
433
|
+
export type ValidationType = 'required' | 'type' | 'min_length' | 'max_length' | 'pattern' | 'email' | 'url' | 'uuid' | 'date' | 'min' | 'max' | 'enum' | 'custom';
|
|
434
|
+
/** Data schema */
|
|
435
|
+
export interface DataSchema {
|
|
436
|
+
type: 'object' | 'array';
|
|
437
|
+
properties?: Record<string, SchemaProperty>;
|
|
438
|
+
items?: SchemaProperty;
|
|
439
|
+
required?: string[];
|
|
440
|
+
additionalProperties?: boolean;
|
|
441
|
+
}
|
|
442
|
+
/** Schema property */
|
|
443
|
+
export interface SchemaProperty {
|
|
444
|
+
type: DataType;
|
|
445
|
+
format?: string;
|
|
446
|
+
description?: string;
|
|
447
|
+
enum?: unknown[];
|
|
448
|
+
default?: unknown;
|
|
449
|
+
properties?: Record<string, SchemaProperty>;
|
|
450
|
+
items?: SchemaProperty;
|
|
451
|
+
required?: string[];
|
|
452
|
+
}
|
|
453
|
+
/** Connector definition */
|
|
454
|
+
export interface ConnectorDefinition {
|
|
455
|
+
id: string;
|
|
456
|
+
name: string;
|
|
457
|
+
description?: string;
|
|
458
|
+
category: ConnectorCategory;
|
|
459
|
+
icon?: string;
|
|
460
|
+
authTypes: AuthType[];
|
|
461
|
+
connectionFields: ConnectionField[];
|
|
462
|
+
triggers: TriggerDefinition[];
|
|
463
|
+
actions: ActionDefinition[];
|
|
464
|
+
version: string;
|
|
465
|
+
status: 'stable' | 'beta' | 'deprecated';
|
|
466
|
+
}
|
|
467
|
+
/** Connector category */
|
|
468
|
+
export type ConnectorCategory = 'crm' | 'erp' | 'marketing' | 'sales' | 'support' | 'communication' | 'collaboration' | 'database' | 'file-storage' | 'analytics' | 'payment' | 'ecommerce' | 'hr' | 'productivity' | 'developer-tools' | 'infrastructure' | 'iot' | 'social' | 'custom';
|
|
469
|
+
/** Authentication type */
|
|
470
|
+
export type AuthType = 'none' | 'api_key' | 'basic' | 'oauth2' | 'oauth2_client_credentials' | 'jwt' | 'session' | 'custom';
|
|
471
|
+
/** Connection field */
|
|
472
|
+
export interface ConnectionField {
|
|
473
|
+
name: string;
|
|
474
|
+
label: string;
|
|
475
|
+
type: 'string' | 'number' | 'boolean' | 'select' | 'password' | 'textarea' | 'file';
|
|
476
|
+
required: boolean;
|
|
477
|
+
description?: string;
|
|
478
|
+
placeholder?: string;
|
|
479
|
+
defaultValue?: unknown;
|
|
480
|
+
options?: SelectOption[];
|
|
481
|
+
validation?: FieldValidation;
|
|
482
|
+
dependsOn?: FieldDependency;
|
|
483
|
+
}
|
|
484
|
+
/** Select option */
|
|
485
|
+
export interface SelectOption {
|
|
486
|
+
label: string;
|
|
487
|
+
value: string | number;
|
|
488
|
+
}
|
|
489
|
+
/** Field validation */
|
|
490
|
+
export interface FieldValidation {
|
|
491
|
+
pattern?: string;
|
|
492
|
+
minLength?: number;
|
|
493
|
+
maxLength?: number;
|
|
494
|
+
min?: number;
|
|
495
|
+
max?: number;
|
|
496
|
+
}
|
|
497
|
+
/** Field dependency */
|
|
498
|
+
export interface FieldDependency {
|
|
499
|
+
field: string;
|
|
500
|
+
value: unknown;
|
|
501
|
+
condition?: 'equals' | 'not_equals' | 'in' | 'not_in';
|
|
502
|
+
}
|
|
503
|
+
/** Trigger definition */
|
|
504
|
+
export interface TriggerDefinition {
|
|
505
|
+
id: string;
|
|
506
|
+
name: string;
|
|
507
|
+
description?: string;
|
|
508
|
+
type: 'polling' | 'webhook' | 'realtime';
|
|
509
|
+
inputFields?: ConnectionField[];
|
|
510
|
+
outputSchema: DataSchema;
|
|
511
|
+
pollInterval?: number;
|
|
512
|
+
}
|
|
513
|
+
/** Action definition */
|
|
514
|
+
export interface ActionDefinition {
|
|
515
|
+
id: string;
|
|
516
|
+
name: string;
|
|
517
|
+
description?: string;
|
|
518
|
+
inputFields: ConnectionField[];
|
|
519
|
+
inputSchema?: DataSchema;
|
|
520
|
+
outputSchema: DataSchema;
|
|
521
|
+
dynamicInputFields?: boolean;
|
|
522
|
+
dynamicOutputFields?: boolean;
|
|
523
|
+
bulkSupport?: boolean;
|
|
524
|
+
pagination?: boolean;
|
|
525
|
+
}
|
|
526
|
+
/** Connection instance */
|
|
527
|
+
export interface ConnectionInstance {
|
|
528
|
+
id: string;
|
|
529
|
+
connectorId: string;
|
|
530
|
+
name: string;
|
|
531
|
+
description?: string;
|
|
532
|
+
status: 'active' | 'error' | 'expired' | 'pending';
|
|
533
|
+
authType: AuthType;
|
|
534
|
+
credentials: Record<string, unknown>;
|
|
535
|
+
settings?: Record<string, unknown>;
|
|
536
|
+
metadata?: ConnectionMetadata;
|
|
537
|
+
createdAt: Date;
|
|
538
|
+
updatedAt: Date;
|
|
539
|
+
lastUsedAt?: Date;
|
|
540
|
+
error?: string;
|
|
541
|
+
}
|
|
542
|
+
/** Connection metadata */
|
|
543
|
+
export interface ConnectionMetadata {
|
|
544
|
+
accountId?: string;
|
|
545
|
+
accountName?: string;
|
|
546
|
+
environment?: string;
|
|
547
|
+
region?: string;
|
|
548
|
+
apiVersion?: string;
|
|
549
|
+
}
|
|
550
|
+
/** Error handler */
|
|
551
|
+
export interface ErrorHandler {
|
|
552
|
+
type: 'global' | 'step';
|
|
553
|
+
strategies: ErrorStrategy[];
|
|
554
|
+
fallbackSteps?: FlowStep[];
|
|
555
|
+
notifications?: ErrorNotification[];
|
|
556
|
+
}
|
|
557
|
+
/** Error strategy */
|
|
558
|
+
export interface ErrorStrategy {
|
|
559
|
+
errorTypes: ErrorType[];
|
|
560
|
+
action: ErrorAction;
|
|
561
|
+
config?: Record<string, unknown>;
|
|
562
|
+
}
|
|
563
|
+
/** Error type */
|
|
564
|
+
export type ErrorType = 'timeout' | 'connection' | 'authentication' | 'rate_limit' | 'validation' | 'not_found' | 'permission' | 'server_error' | 'unknown';
|
|
565
|
+
/** Error action */
|
|
566
|
+
export type ErrorAction = 'retry' | 'retry_exponential' | 'skip' | 'fail' | 'goto' | 'callback' | 'dead_letter';
|
|
567
|
+
/** Error notification */
|
|
568
|
+
export interface ErrorNotification {
|
|
569
|
+
channels: NotificationChannel[];
|
|
570
|
+
includeDetails?: boolean;
|
|
571
|
+
throttle?: number;
|
|
572
|
+
}
|
|
573
|
+
/** Dead letter queue config */
|
|
574
|
+
export interface DeadLetterConfig {
|
|
575
|
+
enabled: boolean;
|
|
576
|
+
queueName: string;
|
|
577
|
+
retentionDays: number;
|
|
578
|
+
maxRetries?: number;
|
|
579
|
+
}
|
|
580
|
+
/** Flow execution */
|
|
581
|
+
export interface FlowExecution {
|
|
582
|
+
id: string;
|
|
583
|
+
flowId: string;
|
|
584
|
+
flowVersion: string;
|
|
585
|
+
status: ExecutionStatus;
|
|
586
|
+
trigger: TriggerExecution;
|
|
587
|
+
steps: StepExecution[];
|
|
588
|
+
variables: Record<string, unknown>;
|
|
589
|
+
input?: unknown;
|
|
590
|
+
output?: unknown;
|
|
591
|
+
error?: ExecutionError;
|
|
592
|
+
startTime: Date;
|
|
593
|
+
endTime?: Date;
|
|
594
|
+
duration?: number;
|
|
595
|
+
retryCount?: number;
|
|
596
|
+
parentExecutionId?: string;
|
|
597
|
+
}
|
|
598
|
+
/** Execution status */
|
|
599
|
+
export type ExecutionStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled' | 'timeout' | 'waiting';
|
|
600
|
+
/** Trigger execution */
|
|
601
|
+
export interface TriggerExecution {
|
|
602
|
+
type: string;
|
|
603
|
+
timestamp: Date;
|
|
604
|
+
input: unknown;
|
|
605
|
+
source?: string;
|
|
606
|
+
}
|
|
607
|
+
/** Step execution */
|
|
608
|
+
export interface StepExecution {
|
|
609
|
+
id: string;
|
|
610
|
+
stepId: string;
|
|
611
|
+
stepName: string;
|
|
612
|
+
type: string;
|
|
613
|
+
status: StepStatus;
|
|
614
|
+
input?: unknown;
|
|
615
|
+
output?: unknown;
|
|
616
|
+
error?: ExecutionError;
|
|
617
|
+
startTime?: Date;
|
|
618
|
+
endTime?: Date;
|
|
619
|
+
duration?: number;
|
|
620
|
+
retryCount?: number;
|
|
621
|
+
logs?: ExecutionLog[];
|
|
622
|
+
}
|
|
623
|
+
/** Execution error */
|
|
624
|
+
export interface ExecutionError {
|
|
625
|
+
code: string;
|
|
626
|
+
message: string;
|
|
627
|
+
type: ErrorType;
|
|
628
|
+
details?: unknown;
|
|
629
|
+
stack?: string;
|
|
630
|
+
stepId?: string;
|
|
631
|
+
retryable?: boolean;
|
|
632
|
+
}
|
|
633
|
+
/** Execution log */
|
|
634
|
+
export interface ExecutionLog {
|
|
635
|
+
timestamp: Date;
|
|
636
|
+
level: 'debug' | 'info' | 'warn' | 'error';
|
|
637
|
+
message: string;
|
|
638
|
+
data?: unknown;
|
|
639
|
+
}
|
|
640
|
+
/** Flow version */
|
|
641
|
+
export interface FlowVersion {
|
|
642
|
+
id: string;
|
|
643
|
+
flowId: string;
|
|
644
|
+
version: string;
|
|
645
|
+
status: 'draft' | 'published' | 'archived';
|
|
646
|
+
changelog?: string;
|
|
647
|
+
definition: IntegrationFlow;
|
|
648
|
+
createdAt: Date;
|
|
649
|
+
createdBy?: string;
|
|
650
|
+
publishedAt?: Date;
|
|
651
|
+
publishedBy?: string;
|
|
652
|
+
}
|
|
653
|
+
/** Version comparison */
|
|
654
|
+
export interface VersionComparison {
|
|
655
|
+
oldVersion: string;
|
|
656
|
+
newVersion: string;
|
|
657
|
+
changes: VersionChange[];
|
|
658
|
+
compatible: boolean;
|
|
659
|
+
}
|
|
660
|
+
/** Version change */
|
|
661
|
+
export interface VersionChange {
|
|
662
|
+
type: 'added' | 'removed' | 'modified';
|
|
663
|
+
path: string;
|
|
664
|
+
description: string;
|
|
665
|
+
breaking?: boolean;
|
|
666
|
+
oldValue?: unknown;
|
|
667
|
+
newValue?: unknown;
|
|
668
|
+
}
|
|
669
|
+
/** Flow test case */
|
|
670
|
+
export interface FlowTestCase {
|
|
671
|
+
id: string;
|
|
672
|
+
flowId: string;
|
|
673
|
+
name: string;
|
|
674
|
+
description?: string;
|
|
675
|
+
trigger: TestTrigger;
|
|
676
|
+
mockResponses?: MockResponse[];
|
|
677
|
+
assertions: TestAssertion[];
|
|
678
|
+
enabled: boolean;
|
|
679
|
+
}
|
|
680
|
+
/** Test trigger */
|
|
681
|
+
export interface TestTrigger {
|
|
682
|
+
type: string;
|
|
683
|
+
input: unknown;
|
|
684
|
+
}
|
|
685
|
+
/** Mock response */
|
|
686
|
+
export interface MockResponse {
|
|
687
|
+
stepId: string;
|
|
688
|
+
response: unknown;
|
|
689
|
+
error?: ExecutionError;
|
|
690
|
+
delay?: number;
|
|
691
|
+
}
|
|
692
|
+
/** Test assertion */
|
|
693
|
+
export interface TestAssertion {
|
|
694
|
+
type: 'status' | 'output' | 'step_status' | 'variable' | 'duration' | 'error' | 'custom';
|
|
695
|
+
config: AssertionConfig;
|
|
696
|
+
}
|
|
697
|
+
/** Assertion config */
|
|
698
|
+
export interface AssertionConfig {
|
|
699
|
+
path?: string;
|
|
700
|
+
operator?: 'equals' | 'not_equals' | 'contains' | 'matches' | 'greater_than' | 'less_than';
|
|
701
|
+
value?: unknown;
|
|
702
|
+
stepId?: string;
|
|
703
|
+
expression?: string;
|
|
704
|
+
}
|
|
705
|
+
/** Test result */
|
|
706
|
+
export interface FlowTestResult {
|
|
707
|
+
id: string;
|
|
708
|
+
testCaseId: string;
|
|
709
|
+
flowId: string;
|
|
710
|
+
status: 'passed' | 'failed' | 'error';
|
|
711
|
+
execution: FlowExecution;
|
|
712
|
+
assertionResults: AssertionResult[];
|
|
713
|
+
duration: number;
|
|
714
|
+
timestamp: Date;
|
|
715
|
+
}
|
|
716
|
+
/** Assertion result */
|
|
717
|
+
export interface AssertionResult {
|
|
718
|
+
assertion: TestAssertion;
|
|
719
|
+
passed: boolean;
|
|
720
|
+
message?: string;
|
|
721
|
+
actual?: unknown;
|
|
722
|
+
expected?: unknown;
|
|
723
|
+
}
|
|
724
|
+
/** Flow statistics */
|
|
725
|
+
export interface FlowStatistics {
|
|
726
|
+
flowId: string;
|
|
727
|
+
period: StatisticsPeriod;
|
|
728
|
+
executions: ExecutionStats;
|
|
729
|
+
steps: StepStats[];
|
|
730
|
+
errors: ErrorStats;
|
|
731
|
+
performance: PerformanceStats;
|
|
732
|
+
}
|
|
733
|
+
/** Statistics period */
|
|
734
|
+
export interface StatisticsPeriod {
|
|
735
|
+
start: Date;
|
|
736
|
+
end: Date;
|
|
737
|
+
granularity: 'minute' | 'hour' | 'day' | 'week' | 'month';
|
|
738
|
+
}
|
|
739
|
+
/** Execution statistics */
|
|
740
|
+
export interface ExecutionStats {
|
|
741
|
+
total: number;
|
|
742
|
+
completed: number;
|
|
743
|
+
failed: number;
|
|
744
|
+
cancelled: number;
|
|
745
|
+
running: number;
|
|
746
|
+
successRate: number;
|
|
747
|
+
timeSeries: TimeSeriesPoint[];
|
|
748
|
+
}
|
|
749
|
+
/** Time series point */
|
|
750
|
+
export interface TimeSeriesPoint {
|
|
751
|
+
timestamp: Date;
|
|
752
|
+
value: number;
|
|
753
|
+
}
|
|
754
|
+
/** Step statistics */
|
|
755
|
+
export interface StepStats {
|
|
756
|
+
stepId: string;
|
|
757
|
+
stepName: string;
|
|
758
|
+
executions: number;
|
|
759
|
+
failures: number;
|
|
760
|
+
avgDuration: number;
|
|
761
|
+
p50Duration: number;
|
|
762
|
+
p95Duration: number;
|
|
763
|
+
p99Duration: number;
|
|
764
|
+
}
|
|
765
|
+
/** Error statistics */
|
|
766
|
+
export interface ErrorStats {
|
|
767
|
+
total: number;
|
|
768
|
+
byType: Record<ErrorType, number>;
|
|
769
|
+
byStep: Record<string, number>;
|
|
770
|
+
topErrors: TopError[];
|
|
771
|
+
}
|
|
772
|
+
/** Top error */
|
|
773
|
+
export interface TopError {
|
|
774
|
+
code: string;
|
|
775
|
+
message: string;
|
|
776
|
+
count: number;
|
|
777
|
+
lastOccurrence: Date;
|
|
778
|
+
}
|
|
779
|
+
/** Performance statistics */
|
|
780
|
+
export interface PerformanceStats {
|
|
781
|
+
avgDuration: number;
|
|
782
|
+
p50Duration: number;
|
|
783
|
+
p95Duration: number;
|
|
784
|
+
p99Duration: number;
|
|
785
|
+
maxDuration: number;
|
|
786
|
+
minDuration: number;
|
|
787
|
+
throughput: number;
|
|
788
|
+
}
|
|
789
|
+
/** Flow canvas configuration */
|
|
790
|
+
export interface FlowCanvasConfig {
|
|
791
|
+
zoom: number;
|
|
792
|
+
panX: number;
|
|
793
|
+
panY: number;
|
|
794
|
+
gridSize: number;
|
|
795
|
+
snapToGrid: boolean;
|
|
796
|
+
showMinimap: boolean;
|
|
797
|
+
showGrid: boolean;
|
|
798
|
+
layout: 'auto' | 'manual';
|
|
799
|
+
theme: 'light' | 'dark';
|
|
800
|
+
}
|
|
801
|
+
/** Flow node (visual) */
|
|
802
|
+
export interface FlowNode {
|
|
803
|
+
id: string;
|
|
804
|
+
type: string;
|
|
805
|
+
position: NodePosition;
|
|
806
|
+
data: FlowStep;
|
|
807
|
+
selected?: boolean;
|
|
808
|
+
dragging?: boolean;
|
|
809
|
+
width?: number;
|
|
810
|
+
height?: number;
|
|
811
|
+
}
|
|
812
|
+
/** Node position */
|
|
813
|
+
export interface NodePosition {
|
|
814
|
+
x: number;
|
|
815
|
+
y: number;
|
|
816
|
+
}
|
|
817
|
+
/** Flow edge (connection) */
|
|
818
|
+
export interface FlowEdge {
|
|
819
|
+
id: string;
|
|
820
|
+
source: string;
|
|
821
|
+
target: string;
|
|
822
|
+
sourceHandle?: string;
|
|
823
|
+
targetHandle?: string;
|
|
824
|
+
label?: string;
|
|
825
|
+
type?: 'default' | 'success' | 'error' | 'loop';
|
|
826
|
+
animated?: boolean;
|
|
827
|
+
}
|
|
828
|
+
/** Flow builder state */
|
|
829
|
+
export interface FlowBuilderState {
|
|
830
|
+
flow: IntegrationFlow;
|
|
831
|
+
nodes: FlowNode[];
|
|
832
|
+
edges: FlowEdge[];
|
|
833
|
+
canvas: FlowCanvasConfig;
|
|
834
|
+
selectedNodes: string[];
|
|
835
|
+
selectedEdges: string[];
|
|
836
|
+
clipboard?: FlowNode[];
|
|
837
|
+
history: FlowHistoryEntry[];
|
|
838
|
+
historyIndex: number;
|
|
839
|
+
isDirty: boolean;
|
|
840
|
+
validationErrors: FlowValidationError[];
|
|
841
|
+
}
|
|
842
|
+
/** Flow history entry */
|
|
843
|
+
export interface FlowHistoryEntry {
|
|
844
|
+
timestamp: Date;
|
|
845
|
+
action: string;
|
|
846
|
+
nodes: FlowNode[];
|
|
847
|
+
edges: FlowEdge[];
|
|
848
|
+
}
|
|
849
|
+
/** Flow validation error */
|
|
850
|
+
export interface FlowValidationError {
|
|
851
|
+
nodeId?: string;
|
|
852
|
+
edgeId?: string;
|
|
853
|
+
field?: string;
|
|
854
|
+
message: string;
|
|
855
|
+
severity: 'error' | 'warning';
|
|
856
|
+
}
|
|
857
|
+
//# sourceMappingURL=integration-platform.d.ts.map
|