@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.
Files changed (158) hide show
  1. package/README.md +36 -0
  2. package/dist/access-control.d.ts +726 -0
  3. package/dist/access-control.d.ts.map +1 -0
  4. package/dist/accessibility-i18n.d.ts +1017 -0
  5. package/dist/accessibility-i18n.d.ts.map +1 -0
  6. package/dist/ai-assistant.d.ts +263 -0
  7. package/dist/ai-assistant.d.ts.map +1 -0
  8. package/dist/ai-playgrounds.d.ts +842 -0
  9. package/dist/ai-playgrounds.d.ts.map +1 -0
  10. package/dist/alerting-incidents.d.ts +558 -0
  11. package/dist/alerting-incidents.d.ts.map +1 -0
  12. package/dist/api-designer.d.ts +1568 -0
  13. package/dist/api-designer.d.ts.map +1 -0
  14. package/dist/api-testing.d.ts +1146 -0
  15. package/dist/api-testing.d.ts.map +1 -0
  16. package/dist/apm-profiling.d.ts +656 -0
  17. package/dist/apm-profiling.d.ts.map +1 -0
  18. package/dist/artifacts.d.ts +421 -0
  19. package/dist/artifacts.d.ts.map +1 -0
  20. package/dist/audit-compliance.d.ts +752 -0
  21. package/dist/audit-compliance.d.ts.map +1 -0
  22. package/dist/certificates.d.ts +256 -0
  23. package/dist/certificates.d.ts.map +1 -0
  24. package/dist/chart-builder.d.ts +1404 -0
  25. package/dist/chart-builder.d.ts.map +1 -0
  26. package/dist/cloud-instances.d.ts +169 -0
  27. package/dist/cloud-instances.d.ts.map +1 -0
  28. package/dist/config-management.d.ts +350 -0
  29. package/dist/config-management.d.ts.map +1 -0
  30. package/dist/containers.d.ts +256 -0
  31. package/dist/containers.d.ts.map +1 -0
  32. package/dist/dashboard-designer.d.ts +1238 -0
  33. package/dist/dashboard-designer.d.ts.map +1 -0
  34. package/dist/data-management.d.ts +496 -0
  35. package/dist/data-management.d.ts.map +1 -0
  36. package/dist/data-pipeline.d.ts +1105 -0
  37. package/dist/data-pipeline.d.ts.map +1 -0
  38. package/dist/data-warehouse.d.ts +1097 -0
  39. package/dist/data-warehouse.d.ts.map +1 -0
  40. package/dist/dataset-management.d.ts +782 -0
  41. package/dist/dataset-management.d.ts.map +1 -0
  42. package/dist/db-adapters.d.ts +704 -0
  43. package/dist/db-adapters.d.ts.map +1 -0
  44. package/dist/db-admin.d.ts +699 -0
  45. package/dist/db-admin.d.ts.map +1 -0
  46. package/dist/db-designer.d.ts +366 -0
  47. package/dist/db-designer.d.ts.map +1 -0
  48. package/dist/debugger.d.ts +356 -0
  49. package/dist/debugger.d.ts.map +1 -0
  50. package/dist/device-management.d.ts +871 -0
  51. package/dist/device-management.d.ts.map +1 -0
  52. package/dist/distributed-tracing.d.ts +427 -0
  53. package/dist/distributed-tracing.d.ts.map +1 -0
  54. package/dist/dns-management.d.ts +215 -0
  55. package/dist/dns-management.d.ts.map +1 -0
  56. package/dist/download-manager.d.ts +271 -0
  57. package/dist/download-manager.d.ts.map +1 -0
  58. package/dist/download-torrent.d.ts +1062 -0
  59. package/dist/download-torrent.d.ts.map +1 -0
  60. package/dist/edge-computing.d.ts +720 -0
  61. package/dist/edge-computing.d.ts.map +1 -0
  62. package/dist/education.d.ts +1135 -0
  63. package/dist/education.d.ts.map +1 -0
  64. package/dist/email-template.d.ts +1141 -0
  65. package/dist/email-template.d.ts.map +1 -0
  66. package/dist/erp-enterprise.d.ts +1270 -0
  67. package/dist/erp-enterprise.d.ts.map +1 -0
  68. package/dist/form-builder.d.ts +1117 -0
  69. package/dist/form-builder.d.ts.map +1 -0
  70. package/dist/game-engine-advanced.d.ts +1049 -0
  71. package/dist/game-engine-advanced.d.ts.map +1 -0
  72. package/dist/git.d.ts +415 -0
  73. package/dist/git.d.ts.map +1 -0
  74. package/dist/hardware-integration.d.ts +966 -0
  75. package/dist/hardware-integration.d.ts.map +1 -0
  76. package/dist/iac.d.ts +318 -0
  77. package/dist/iac.d.ts.map +1 -0
  78. package/dist/icon-tools.d.ts +1023 -0
  79. package/dist/icon-tools.d.ts.map +1 -0
  80. package/dist/ide.d.ts +322 -0
  81. package/dist/ide.d.ts.map +1 -0
  82. package/dist/index.cjs +2 -0
  83. package/dist/index.cjs.map +1 -0
  84. package/dist/index.d.ts +176 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.mjs +1887 -0
  87. package/dist/index.mjs.map +1 -0
  88. package/dist/integration-platform.d.ts +857 -0
  89. package/dist/integration-platform.d.ts.map +1 -0
  90. package/dist/kubernetes.d.ts +278 -0
  91. package/dist/kubernetes.d.ts.map +1 -0
  92. package/dist/life-management.d.ts +1132 -0
  93. package/dist/life-management.d.ts.map +1 -0
  94. package/dist/log-management.d.ts +473 -0
  95. package/dist/log-management.d.ts.map +1 -0
  96. package/dist/mathematics.d.ts +870 -0
  97. package/dist/mathematics.d.ts.map +1 -0
  98. package/dist/message-queue.d.ts +1006 -0
  99. package/dist/message-queue.d.ts.map +1 -0
  100. package/dist/metrics-dashboard.d.ts +596 -0
  101. package/dist/metrics-dashboard.d.ts.map +1 -0
  102. package/dist/mobile-components.d.ts +766 -0
  103. package/dist/mobile-components.d.ts.map +1 -0
  104. package/dist/model-deployment.d.ts +787 -0
  105. package/dist/model-deployment.d.ts.map +1 -0
  106. package/dist/model-registry.d.ts +740 -0
  107. package/dist/model-registry.d.ts.map +1 -0
  108. package/dist/model-training.d.ts +706 -0
  109. package/dist/model-training.d.ts.map +1 -0
  110. package/dist/network-config.d.ts +334 -0
  111. package/dist/network-config.d.ts.map +1 -0
  112. package/dist/network-monitoring.d.ts +291 -0
  113. package/dist/network-monitoring.d.ts.map +1 -0
  114. package/dist/pdf-tools.d.ts +1003 -0
  115. package/dist/pdf-tools.d.ts.map +1 -0
  116. package/dist/pipelines.d.ts +250 -0
  117. package/dist/pipelines.d.ts.map +1 -0
  118. package/dist/remote-desktop.d.ts +207 -0
  119. package/dist/remote-desktop.d.ts.map +1 -0
  120. package/dist/report-designer.d.ts +1153 -0
  121. package/dist/report-designer.d.ts.map +1 -0
  122. package/dist/scada-industrial.d.ts +848 -0
  123. package/dist/scada-industrial.d.ts.map +1 -0
  124. package/dist/scientific-research.d.ts +1149 -0
  125. package/dist/scientific-research.d.ts.map +1 -0
  126. package/dist/secret-management.d.ts +617 -0
  127. package/dist/secret-management.d.ts.map +1 -0
  128. package/dist/security-scanning.d.ts +714 -0
  129. package/dist/security-scanning.d.ts.map +1 -0
  130. package/dist/self-service-analytics.d.ts +1208 -0
  131. package/dist/self-service-analytics.d.ts.map +1 -0
  132. package/dist/sensor-dashboard.d.ts +845 -0
  133. package/dist/sensor-dashboard.d.ts.map +1 -0
  134. package/dist/server-management.d.ts +331 -0
  135. package/dist/server-management.d.ts.map +1 -0
  136. package/dist/smart-home.d.ts +861 -0
  137. package/dist/smart-home.d.ts.map +1 -0
  138. package/dist/spreadsheet.d.ts +1043 -0
  139. package/dist/spreadsheet.d.ts.map +1 -0
  140. package/dist/sql-editor.d.ts +402 -0
  141. package/dist/sql-editor.d.ts.map +1 -0
  142. package/dist/terminal.d.ts +245 -0
  143. package/dist/terminal.d.ts.map +1 -0
  144. package/dist/testing-qa.d.ts +1013 -0
  145. package/dist/testing-qa.d.ts.map +1 -0
  146. package/dist/torrent-client.d.ts +298 -0
  147. package/dist/torrent-client.d.ts.map +1 -0
  148. package/dist/traceless.d.ts +759 -0
  149. package/dist/traceless.d.ts.map +1 -0
  150. package/dist/virtual-machines.d.ts +199 -0
  151. package/dist/virtual-machines.d.ts.map +1 -0
  152. package/dist/visual-scripting.d.ts +381 -0
  153. package/dist/visual-scripting.d.ts.map +1 -0
  154. package/dist/word-processor.d.ts +1124 -0
  155. package/dist/word-processor.d.ts.map +1 -0
  156. package/dist/workspace.d.ts +333 -0
  157. package/dist/workspace.d.ts.map +1 -0
  158. package/package.json +62 -0
@@ -0,0 +1,1105 @@
1
+ /**
2
+ * @file data-pipeline.ts
3
+ * @module @nice2dev/ui-tools
4
+ * @description PRO-15.3 — Data Pipeline (ETL)
5
+ *
6
+ * Types for visual ETL designer: source connectors, transformations, data cleansing,
7
+ * data quality, scheduling, incremental load, error handling, lineage tracking.
8
+ */
9
+ /** Pipeline status */
10
+ export type PipelineStatus = 'draft' | 'scheduled' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
11
+ /** Node status */
12
+ export type NodeStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'warning';
13
+ /** Data type */
14
+ export type DataType = 'string' | 'number' | 'integer' | 'float' | 'boolean' | 'date' | 'datetime' | 'timestamp' | 'time' | 'binary' | 'array' | 'object' | 'json' | 'uuid' | 'null';
15
+ /** Pipeline designer configuration */
16
+ export interface PipelineDesignerConfig {
17
+ /** Initial pipeline */
18
+ pipeline?: Pipeline;
19
+ /** Editor mode */
20
+ mode?: PipelineEditorMode;
21
+ /** Theme */
22
+ theme?: PipelineTheme;
23
+ /** Locale */
24
+ locale?: string;
25
+ /** Available source connectors */
26
+ sourceConnectors?: SourceConnectorDefinition[];
27
+ /** Available transformations */
28
+ transformations?: TransformationDefinition[];
29
+ /** Available destination writers */
30
+ destinationWriters?: DestinationWriterDefinition[];
31
+ /** Custom nodes */
32
+ customNodes?: CustomNodeDefinition[];
33
+ /** Enable preview */
34
+ preview?: boolean;
35
+ /** Enable debugging */
36
+ debug?: boolean;
37
+ /** Toolbar configuration */
38
+ toolbar?: PipelineToolbarConfig;
39
+ /** Sidebar configuration */
40
+ sidebar?: PipelineSidebarConfig;
41
+ /** Canvas configuration */
42
+ canvas?: CanvasConfig;
43
+ /** Validation rules */
44
+ validationRules?: ValidationRule[];
45
+ }
46
+ /** Pipeline editor mode */
47
+ export type PipelineEditorMode = 'visual' | 'code' | 'split';
48
+ /** Pipeline theme */
49
+ export interface PipelineTheme {
50
+ name?: string;
51
+ background?: string;
52
+ canvas?: string;
53
+ grid?: string;
54
+ node?: NodeColors;
55
+ edge?: EdgeColors;
56
+ text?: string;
57
+ }
58
+ /** Node colors */
59
+ export interface NodeColors {
60
+ source?: string;
61
+ transform?: string;
62
+ destination?: string;
63
+ custom?: string;
64
+ error?: string;
65
+ warning?: string;
66
+ success?: string;
67
+ running?: string;
68
+ }
69
+ /** Edge colors */
70
+ export interface EdgeColors {
71
+ default?: string;
72
+ active?: string;
73
+ error?: string;
74
+ warning?: string;
75
+ }
76
+ /** Pipeline toolbar configuration */
77
+ export interface PipelineToolbarConfig {
78
+ visible?: boolean;
79
+ items?: PipelineToolbarItem[];
80
+ customItems?: CustomToolbarItem[];
81
+ }
82
+ /** Pipeline toolbar item */
83
+ export type PipelineToolbarItem = 'save' | 'run' | 'stop' | 'schedule' | 'debug' | 'preview' | 'validate' | 'undo' | 'redo' | 'zoomIn' | 'zoomOut' | 'fitView' | 'export' | 'import' | 'settings' | 'separator';
84
+ /** Custom toolbar item */
85
+ export interface CustomToolbarItem {
86
+ id: string;
87
+ label?: string;
88
+ icon?: string;
89
+ tooltip?: string;
90
+ handler: () => void;
91
+ disabled?: boolean;
92
+ position?: number;
93
+ }
94
+ /** Pipeline sidebar configuration */
95
+ export interface PipelineSidebarConfig {
96
+ visible?: boolean;
97
+ position?: 'left' | 'right';
98
+ width?: number;
99
+ tabs?: ('nodes' | 'properties' | 'data' | 'logs' | 'lineage')[];
100
+ }
101
+ /** Canvas configuration */
102
+ export interface CanvasConfig {
103
+ width?: number;
104
+ height?: number;
105
+ minZoom?: number;
106
+ maxZoom?: number;
107
+ gridSize?: number;
108
+ showGrid?: boolean;
109
+ snapToGrid?: boolean;
110
+ connectionType?: 'bezier' | 'straight' | 'step' | 'smoothstep';
111
+ nodeSpacing?: number;
112
+ layerSpacing?: number;
113
+ }
114
+ /** Validation rule */
115
+ export interface ValidationRule {
116
+ id: string;
117
+ name: string;
118
+ type: 'error' | 'warning' | 'info';
119
+ check: (pipeline: Pipeline) => ValidationResult[];
120
+ }
121
+ /** Validation result */
122
+ export interface ValidationResult {
123
+ nodeId?: string;
124
+ edgeId?: string;
125
+ type: 'error' | 'warning' | 'info';
126
+ message: string;
127
+ details?: string;
128
+ }
129
+ /** Pipeline */
130
+ export interface Pipeline {
131
+ id: string;
132
+ name: string;
133
+ description?: string;
134
+ nodes: PipelineNode[];
135
+ edges: PipelineEdge[];
136
+ parameters?: PipelineParameter[];
137
+ variables?: PipelineVariable[];
138
+ schedule?: PipelineSchedule;
139
+ settings?: PipelineSettings;
140
+ metadata?: PipelineMetadata;
141
+ version?: string;
142
+ }
143
+ /** Pipeline node */
144
+ export interface PipelineNode {
145
+ id: string;
146
+ type: NodeType;
147
+ name: string;
148
+ description?: string;
149
+ position: NodePosition;
150
+ config: NodeConfig;
151
+ schema?: NodeSchema;
152
+ validations?: NodeValidation[];
153
+ status?: NodeStatus;
154
+ metrics?: NodeMetrics;
155
+ }
156
+ /** Node type */
157
+ export type NodeType = 'source' | 'transform' | 'destination' | 'junction' | 'filter' | 'aggregate' | 'join' | 'union' | 'lookup' | 'script' | 'branch' | 'merge' | 'custom';
158
+ /** Node position */
159
+ export interface NodePosition {
160
+ x: number;
161
+ y: number;
162
+ }
163
+ /** Node configuration */
164
+ export type NodeConfig = SourceNodeConfig | TransformNodeConfig | DestinationNodeConfig | JunctionNodeConfig | FilterNodeConfig | AggregateNodeConfig | JoinNodeConfig | UnionNodeConfig | LookupNodeConfig | ScriptNodeConfig | BranchNodeConfig | MergeNodeConfig | CustomNodeConfig;
165
+ /** Node schema */
166
+ export interface NodeSchema {
167
+ fields: SchemaField[];
168
+ partitionBy?: string[];
169
+ sortBy?: SortField[];
170
+ }
171
+ /** Schema field */
172
+ export interface SchemaField {
173
+ name: string;
174
+ type: DataType;
175
+ nullable?: boolean;
176
+ metadata?: Record<string, unknown>;
177
+ source?: string;
178
+ expression?: string;
179
+ }
180
+ /** Sort field */
181
+ export interface SortField {
182
+ field: string;
183
+ direction: 'asc' | 'desc';
184
+ nullsFirst?: boolean;
185
+ }
186
+ /** Node validation */
187
+ export interface NodeValidation {
188
+ field?: string;
189
+ rule: ValidationRuleType;
190
+ params?: Record<string, unknown>;
191
+ errorAction?: 'reject' | 'default' | 'null' | 'skip';
192
+ defaultValue?: unknown;
193
+ }
194
+ /** Validation rule type */
195
+ export type ValidationRuleType = 'notNull' | 'unique' | 'type' | 'range' | 'regex' | 'enum' | 'length' | 'email' | 'url' | 'date' | 'custom';
196
+ /** Node metrics */
197
+ export interface NodeMetrics {
198
+ rowsRead?: number;
199
+ rowsWritten?: number;
200
+ rowsRejected?: number;
201
+ bytesRead?: number;
202
+ bytesWritten?: number;
203
+ startTime?: Date;
204
+ endTime?: Date;
205
+ duration?: number;
206
+ errors?: number;
207
+ warnings?: number;
208
+ }
209
+ /** Pipeline edge */
210
+ export interface PipelineEdge {
211
+ id: string;
212
+ source: string;
213
+ sourceHandle?: string;
214
+ target: string;
215
+ targetHandle?: string;
216
+ label?: string;
217
+ type?: EdgeType;
218
+ condition?: EdgeCondition;
219
+ style?: EdgeStyle;
220
+ }
221
+ /** Edge type */
222
+ export type EdgeType = 'default' | 'conditional' | 'error' | 'loop';
223
+ /** Edge condition */
224
+ export interface EdgeCondition {
225
+ type: 'expression' | 'success' | 'failure' | 'always';
226
+ expression?: string;
227
+ }
228
+ /** Edge style */
229
+ export interface EdgeStyle {
230
+ color?: string;
231
+ strokeWidth?: number;
232
+ animated?: boolean;
233
+ dashArray?: string;
234
+ }
235
+ /** Pipeline parameter */
236
+ export interface PipelineParameter {
237
+ name: string;
238
+ type: DataType;
239
+ defaultValue?: unknown;
240
+ required?: boolean;
241
+ description?: string;
242
+ options?: ParameterOption[];
243
+ validation?: ParameterValidation;
244
+ }
245
+ /** Parameter option */
246
+ export interface ParameterOption {
247
+ value: unknown;
248
+ label: string;
249
+ }
250
+ /** Parameter validation */
251
+ export interface ParameterValidation {
252
+ min?: number;
253
+ max?: number;
254
+ pattern?: string;
255
+ custom?: string;
256
+ }
257
+ /** Pipeline variable */
258
+ export interface PipelineVariable {
259
+ name: string;
260
+ type: DataType;
261
+ value?: unknown;
262
+ expression?: string;
263
+ scope?: 'pipeline' | 'node';
264
+ }
265
+ /** Pipeline schedule */
266
+ export interface PipelineSchedule {
267
+ enabled: boolean;
268
+ type: 'cron' | 'interval' | 'event' | 'manual';
269
+ cron?: string;
270
+ interval?: number;
271
+ intervalUnit?: 'minutes' | 'hours' | 'days';
272
+ timezone?: string;
273
+ startDate?: Date;
274
+ endDate?: Date;
275
+ retryPolicy?: RetryPolicy;
276
+ concurrency?: ConcurrencyPolicy;
277
+ }
278
+ /** Retry policy */
279
+ export interface RetryPolicy {
280
+ maxRetries: number;
281
+ retryDelay: number;
282
+ backoffMultiplier?: number;
283
+ maxDelay?: number;
284
+ retryableErrors?: string[];
285
+ }
286
+ /** Concurrency policy */
287
+ export interface ConcurrencyPolicy {
288
+ maxConcurrent: number;
289
+ queueOverflow: 'skip' | 'queue' | 'replace';
290
+ }
291
+ /** Pipeline settings */
292
+ export interface PipelineSettings {
293
+ executionMode?: 'batch' | 'streaming' | 'micro-batch';
294
+ batchSize?: number;
295
+ parallelism?: number;
296
+ timeout?: number;
297
+ memoryLimit?: number;
298
+ checkpointing?: CheckpointConfig;
299
+ logging?: LoggingConfig;
300
+ notifications?: NotificationConfig[];
301
+ incrementalLoad?: IncrementalLoadConfig;
302
+ }
303
+ /** Checkpoint config */
304
+ export interface CheckpointConfig {
305
+ enabled: boolean;
306
+ interval?: number;
307
+ storage?: string;
308
+ maxCheckpoints?: number;
309
+ }
310
+ /** Logging config */
311
+ export interface LoggingConfig {
312
+ level: 'debug' | 'info' | 'warn' | 'error';
313
+ destination?: string;
314
+ retentionDays?: number;
315
+ includeData?: boolean;
316
+ sampleRate?: number;
317
+ }
318
+ /** Notification config */
319
+ export interface NotificationConfig {
320
+ event: 'start' | 'success' | 'failure' | 'warning' | 'sla';
321
+ channel: 'email' | 'slack' | 'teams' | 'webhook' | 'pager';
322
+ recipients?: string[];
323
+ config?: Record<string, unknown>;
324
+ }
325
+ /** Incremental load config */
326
+ export interface IncrementalLoadConfig {
327
+ enabled: boolean;
328
+ strategy: 'timestamp' | 'id' | 'cdc' | 'hash';
329
+ watermarkColumn?: string;
330
+ initialLoad?: 'full' | 'none' | 'delta';
331
+ lookbackWindow?: number;
332
+ }
333
+ /** Pipeline metadata */
334
+ export interface PipelineMetadata {
335
+ created?: Date;
336
+ createdBy?: string;
337
+ modified?: Date;
338
+ modifiedBy?: string;
339
+ status?: PipelineStatus;
340
+ lastRun?: Date;
341
+ lastRunStatus?: 'success' | 'failure' | 'warning';
342
+ nextRun?: Date;
343
+ runCount?: number;
344
+ successCount?: number;
345
+ failureCount?: number;
346
+ tags?: string[];
347
+ folder?: string;
348
+ owner?: string;
349
+ team?: string;
350
+ }
351
+ /** Source node config */
352
+ export interface SourceNodeConfig {
353
+ connector: string;
354
+ connection: ConnectionConfig;
355
+ extraction: ExtractionConfig;
356
+ sampling?: SamplingConfig;
357
+ caching?: CachingConfig;
358
+ }
359
+ /** Connection config */
360
+ export interface ConnectionConfig {
361
+ type: ConnectorType;
362
+ host?: string;
363
+ port?: number;
364
+ database?: string;
365
+ schema?: string;
366
+ username?: string;
367
+ password?: string;
368
+ connectionString?: string;
369
+ sslEnabled?: boolean;
370
+ sslConfig?: SSLConfig;
371
+ timeout?: number;
372
+ poolSize?: number;
373
+ options?: Record<string, unknown>;
374
+ }
375
+ /** Connector type */
376
+ export type ConnectorType = 'postgresql' | 'mysql' | 'sqlserver' | 'oracle' | 'mongodb' | 'elasticsearch' | 'redis' | 'dynamodb' | 's3' | 'gcs' | 'azure-blob' | 'hdfs' | 'kafka' | 'kinesis' | 'pubsub' | 'rabbitmq' | 'rest-api' | 'graphql' | 'sftp' | 'ftp' | 'file' | 'csv' | 'json' | 'parquet' | 'avro' | 'orc' | 'xml' | 'excel' | 'salesforce' | 'hubspot' | 'stripe' | 'shopify' | 'google-sheets' | 'airtable' | 'snowflake' | 'bigquery' | 'redshift' | 'databricks' | 'custom';
377
+ /** SSL config */
378
+ export interface SSLConfig {
379
+ mode: 'disable' | 'require' | 'verify-ca' | 'verify-full';
380
+ certPath?: string;
381
+ keyPath?: string;
382
+ caPath?: string;
383
+ serverName?: string;
384
+ }
385
+ /** Extraction config */
386
+ export interface ExtractionConfig {
387
+ method: 'table' | 'query' | 'file' | 'api' | 'stream';
388
+ table?: string;
389
+ query?: string;
390
+ filePath?: string;
391
+ filePattern?: string;
392
+ apiEndpoint?: string;
393
+ apiMethod?: 'GET' | 'POST';
394
+ apiHeaders?: Record<string, string>;
395
+ apiBody?: unknown;
396
+ apiPagination?: PaginationConfig;
397
+ streamTopic?: string;
398
+ streamPartitions?: number[];
399
+ streamOffset?: 'earliest' | 'latest' | 'timestamp';
400
+ streamTimestamp?: Date;
401
+ columns?: string[];
402
+ excludeColumns?: string[];
403
+ whereClause?: string;
404
+ orderBy?: SortField[];
405
+ limit?: number;
406
+ }
407
+ /** Pagination config */
408
+ export interface PaginationConfig {
409
+ type: 'offset' | 'cursor' | 'page' | 'link';
410
+ pageSize?: number;
411
+ offsetParam?: string;
412
+ limitParam?: string;
413
+ cursorParam?: string;
414
+ cursorPath?: string;
415
+ pageParam?: string;
416
+ totalPath?: string;
417
+ hasMorePath?: string;
418
+ nextLinkPath?: string;
419
+ }
420
+ /** Sampling config */
421
+ export interface SamplingConfig {
422
+ enabled: boolean;
423
+ method: 'random' | 'first' | 'stratified';
424
+ size: number;
425
+ seed?: number;
426
+ stratifyBy?: string;
427
+ }
428
+ /** Caching config */
429
+ export interface CachingConfig {
430
+ enabled: boolean;
431
+ ttl?: number;
432
+ storage?: 'memory' | 'disk' | 'redis';
433
+ key?: string;
434
+ }
435
+ /** Transform node config */
436
+ export interface TransformNodeConfig {
437
+ transformType: TransformType;
438
+ config: TransformSpecificConfig;
439
+ }
440
+ /** Transform type */
441
+ export type TransformType = 'select' | 'filter' | 'rename' | 'cast' | 'derive' | 'aggregate' | 'join' | 'union' | 'lookup' | 'pivot' | 'unpivot' | 'window' | 'rank' | 'deduplicate' | 'sort' | 'limit' | 'sample' | 'split' | 'normalize' | 'denormalize' | 'flatten' | 'explode' | 'fill' | 'replace' | 'hash' | 'encrypt' | 'decrypt' | 'mask' | 'validate' | 'standardize' | 'geocode' | 'sentiment' | 'ml-predict' | 'custom';
442
+ /** Transform specific configuration */
443
+ export type TransformSpecificConfig = SelectTransformConfig | FilterTransformConfig | RenameTransformConfig | CastTransformConfig | DeriveTransformConfig | AggregateTransformConfig | JoinTransformConfig | UnionTransformConfig | LookupTransformConfig | PivotTransformConfig | UnpivotTransformConfig | WindowTransformConfig | RankTransformConfig | DeduplicateTransformConfig | SortTransformConfig | LimitTransformConfig | SampleTransformConfig | SplitTransformConfig | FillTransformConfig | ReplaceTransformConfig | HashTransformConfig | MaskTransformConfig | ValidateTransformConfig | StandardizeTransformConfig | CustomTransformConfig;
444
+ /** Select transform config */
445
+ export interface SelectTransformConfig {
446
+ columns: ColumnSelection[];
447
+ }
448
+ /** Column selection */
449
+ export interface ColumnSelection {
450
+ source: string;
451
+ alias?: string;
452
+ expression?: string;
453
+ }
454
+ /** Filter transform config */
455
+ export interface FilterTransformConfig {
456
+ conditions: FilterCondition[];
457
+ logic: 'and' | 'or';
458
+ }
459
+ /** Filter condition */
460
+ export interface FilterCondition {
461
+ field: string;
462
+ operator: FilterOperator;
463
+ value: unknown;
464
+ caseSensitive?: boolean;
465
+ }
466
+ /** Filter operator */
467
+ export type FilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'contains' | 'notContains' | 'startsWith' | 'endsWith' | 'matches' | 'isNull' | 'isNotNull' | 'between';
468
+ /** Rename transform config */
469
+ export interface RenameTransformConfig {
470
+ mappings: RenameMapping[];
471
+ }
472
+ /** Rename mapping */
473
+ export interface RenameMapping {
474
+ from: string;
475
+ to: string;
476
+ }
477
+ /** Cast transform config */
478
+ export interface CastTransformConfig {
479
+ casts: CastOperation[];
480
+ }
481
+ /** Cast operation */
482
+ export interface CastOperation {
483
+ field: string;
484
+ targetType: DataType;
485
+ format?: string;
486
+ errorHandling?: 'fail' | 'null' | 'default';
487
+ defaultValue?: unknown;
488
+ }
489
+ /** Derive transform config */
490
+ export interface DeriveTransformConfig {
491
+ derivations: Derivation[];
492
+ }
493
+ /** Derivation */
494
+ export interface Derivation {
495
+ name: string;
496
+ expression: string;
497
+ type?: DataType;
498
+ }
499
+ /** Aggregate transform config */
500
+ export interface AggregateTransformConfig {
501
+ groupBy: string[];
502
+ aggregations: Aggregation[];
503
+ having?: FilterCondition[];
504
+ }
505
+ /** Aggregation */
506
+ export interface Aggregation {
507
+ field: string;
508
+ function: AggregateFunction;
509
+ alias: string;
510
+ distinct?: boolean;
511
+ filter?: FilterCondition;
512
+ }
513
+ /** Aggregate function */
514
+ export type AggregateFunction = 'count' | 'countDistinct' | 'sum' | 'avg' | 'min' | 'max' | 'first' | 'last' | 'median' | 'mode' | 'stddev' | 'variance' | 'percentile' | 'collect' | 'collectSet';
515
+ /** Join transform config */
516
+ export interface JoinTransformConfig {
517
+ joinType: JoinType;
518
+ leftKey: string[];
519
+ rightKey: string[];
520
+ condition?: string;
521
+ selectColumns?: JoinColumnSelection[];
522
+ conflictResolution?: 'left' | 'right' | 'both' | 'coalesce';
523
+ }
524
+ /** Join type */
525
+ export type JoinType = 'inner' | 'left' | 'right' | 'full' | 'cross' | 'semi' | 'anti';
526
+ /** Join column selection */
527
+ export interface JoinColumnSelection {
528
+ source: 'left' | 'right';
529
+ column: string;
530
+ alias?: string;
531
+ }
532
+ /** Union transform config */
533
+ export interface UnionTransformConfig {
534
+ unionType: 'all' | 'distinct';
535
+ positionBased?: boolean;
536
+ mappings?: UnionMapping[];
537
+ }
538
+ /** Union mapping */
539
+ export interface UnionMapping {
540
+ target: string;
541
+ sources: {
542
+ input: number;
543
+ column: string;
544
+ }[];
545
+ }
546
+ /** Lookup transform config */
547
+ export interface LookupTransformConfig {
548
+ lookupSource: string;
549
+ lookupKey: string[];
550
+ sourceKey: string[];
551
+ returnColumns: LookupReturnColumn[];
552
+ matchType: 'first' | 'last' | 'all';
553
+ noMatchAction: 'null' | 'default' | 'reject';
554
+ defaultValues?: Record<string, unknown>;
555
+ }
556
+ /** Lookup return column */
557
+ export interface LookupReturnColumn {
558
+ source: string;
559
+ alias?: string;
560
+ }
561
+ /** Pivot transform config */
562
+ export interface PivotTransformConfig {
563
+ groupBy: string[];
564
+ pivotColumn: string;
565
+ valueColumn: string;
566
+ aggregation: AggregateFunction;
567
+ pivotValues?: unknown[];
568
+ }
569
+ /** Unpivot transform config */
570
+ export interface UnpivotTransformConfig {
571
+ idColumns: string[];
572
+ valueColumns: string[];
573
+ variableName: string;
574
+ valueName: string;
575
+ }
576
+ /** Window transform config */
577
+ export interface WindowTransformConfig {
578
+ windows: WindowDefinition[];
579
+ }
580
+ /** Window definition */
581
+ export interface WindowDefinition {
582
+ name: string;
583
+ function: WindowFunction;
584
+ field?: string;
585
+ partitionBy?: string[];
586
+ orderBy?: SortField[];
587
+ frameType?: 'rows' | 'range';
588
+ frameStart?: FrameBound;
589
+ frameEnd?: FrameBound;
590
+ }
591
+ /** Window function */
592
+ export type WindowFunction = 'row_number' | 'rank' | 'dense_rank' | 'ntile' | 'lag' | 'lead' | 'first_value' | 'last_value' | 'nth_value' | 'sum' | 'avg' | 'count' | 'min' | 'max' | 'stddev' | 'variance' | 'percent_rank' | 'cume_dist';
593
+ /** Frame bound */
594
+ export interface FrameBound {
595
+ type: 'unbounded' | 'current' | 'preceding' | 'following';
596
+ offset?: number;
597
+ }
598
+ /** Rank transform config */
599
+ export interface RankTransformConfig {
600
+ partitionBy?: string[];
601
+ orderBy: SortField[];
602
+ rankType: 'rank' | 'dense_rank' | 'row_number' | 'percent_rank';
603
+ outputColumn: string;
604
+ }
605
+ /** Deduplicate transform config */
606
+ export interface DeduplicateTransformConfig {
607
+ keys: string[];
608
+ keepStrategy: 'first' | 'last' | 'any';
609
+ orderBy?: SortField[];
610
+ windowDuration?: number;
611
+ }
612
+ /** Sort transform config */
613
+ export interface SortTransformConfig {
614
+ sortFields: SortField[];
615
+ nullsPosition?: 'first' | 'last';
616
+ }
617
+ /** Limit transform config */
618
+ export interface LimitTransformConfig {
619
+ limit: number;
620
+ offset?: number;
621
+ }
622
+ /** Sample transform config */
623
+ export interface SampleTransformConfig {
624
+ method: 'random' | 'systematic' | 'stratified';
625
+ size: number;
626
+ fraction?: number;
627
+ seed?: number;
628
+ stratifyColumn?: string;
629
+ withReplacement?: boolean;
630
+ }
631
+ /** Split transform config */
632
+ export interface SplitTransformConfig {
633
+ column: string;
634
+ delimiter?: string;
635
+ pattern?: string;
636
+ outputColumns: string[];
637
+ expandRows?: boolean;
638
+ }
639
+ /** Fill transform config */
640
+ export interface FillTransformConfig {
641
+ columns: FillColumn[];
642
+ }
643
+ /** Fill column */
644
+ export interface FillColumn {
645
+ column: string;
646
+ method: 'value' | 'forward' | 'backward' | 'mean' | 'median' | 'mode' | 'interpolate';
647
+ value?: unknown;
648
+ limit?: number;
649
+ }
650
+ /** Replace transform config */
651
+ export interface ReplaceTransformConfig {
652
+ replacements: ReplacementRule[];
653
+ }
654
+ /** Replacement rule */
655
+ export interface ReplacementRule {
656
+ column: string;
657
+ find: unknown;
658
+ replace: unknown;
659
+ regex?: boolean;
660
+ caseSensitive?: boolean;
661
+ }
662
+ /** Hash transform config */
663
+ export interface HashTransformConfig {
664
+ columns: HashColumn[];
665
+ }
666
+ /** Hash column */
667
+ export interface HashColumn {
668
+ source: string;
669
+ output: string;
670
+ algorithm: 'md5' | 'sha1' | 'sha256' | 'sha512' | 'murmur3';
671
+ salt?: string;
672
+ }
673
+ /** Mask transform config */
674
+ export interface MaskTransformConfig {
675
+ masks: MaskRule[];
676
+ }
677
+ /** Mask rule */
678
+ export interface MaskRule {
679
+ column: string;
680
+ type: 'partial' | 'full' | 'hash' | 'random' | 'custom';
681
+ showFirst?: number;
682
+ showLast?: number;
683
+ maskChar?: string;
684
+ pattern?: string;
685
+ replacement?: string;
686
+ }
687
+ /** Validate transform config */
688
+ export interface ValidateTransformConfig {
689
+ validations: FieldValidation[];
690
+ onError: 'reject' | 'flag' | 'fix';
691
+ errorColumn?: string;
692
+ }
693
+ /** Field validation */
694
+ export interface FieldValidation {
695
+ field: string;
696
+ rules: ValidationRuleConfig[];
697
+ }
698
+ /** Validation rule config */
699
+ export interface ValidationRuleConfig {
700
+ type: ValidationRuleType;
701
+ params?: Record<string, unknown>;
702
+ message?: string;
703
+ fixAction?: 'null' | 'default' | 'truncate' | 'clamp';
704
+ fixValue?: unknown;
705
+ }
706
+ /** Standardize transform config */
707
+ export interface StandardizeTransformConfig {
708
+ standardizations: StandardizationRule[];
709
+ }
710
+ /** Standardization rule */
711
+ export interface StandardizationRule {
712
+ column: string;
713
+ type: StandardizationType;
714
+ options?: Record<string, unknown>;
715
+ }
716
+ /** Standardization type */
717
+ export type StandardizationType = 'trim' | 'lowercase' | 'uppercase' | 'titlecase' | 'removeAccents' | 'removeSpecialChars' | 'normalizeWhitespace' | 'phoneNumber' | 'email' | 'address' | 'date' | 'currency' | 'unit' | 'custom';
718
+ /** Custom transform config */
719
+ export interface CustomTransformConfig {
720
+ language: 'sql' | 'python' | 'javascript' | 'scala';
721
+ code: string;
722
+ inputs?: string[];
723
+ outputs?: SchemaField[];
724
+ dependencies?: string[];
725
+ }
726
+ /** Destination node config */
727
+ export interface DestinationNodeConfig {
728
+ connector: string;
729
+ connection: ConnectionConfig;
730
+ loading: LoadingConfig;
731
+ errorHandling?: ErrorHandlingConfig;
732
+ }
733
+ /** Loading config */
734
+ export interface LoadingConfig {
735
+ method: 'insert' | 'upsert' | 'merge' | 'replace' | 'append' | 'overwrite';
736
+ target: TargetConfig;
737
+ batchSize?: number;
738
+ parallelism?: number;
739
+ preLoad?: PrePostLoadAction[];
740
+ postLoad?: PrePostLoadAction[];
741
+ }
742
+ /** Target config */
743
+ export interface TargetConfig {
744
+ type: 'table' | 'file' | 'api' | 'stream';
745
+ table?: string;
746
+ schema?: string;
747
+ filePath?: string;
748
+ fileFormat?: FileFormat;
749
+ apiEndpoint?: string;
750
+ apiMethod?: 'POST' | 'PUT' | 'PATCH';
751
+ apiHeaders?: Record<string, string>;
752
+ streamTopic?: string;
753
+ partitionBy?: string[];
754
+ createIfNotExists?: boolean;
755
+ truncateBeforeLoad?: boolean;
756
+ }
757
+ /** File format */
758
+ export interface FileFormat {
759
+ type: 'csv' | 'json' | 'parquet' | 'avro' | 'orc' | 'xml' | 'excel';
760
+ delimiter?: string;
761
+ quote?: string;
762
+ escape?: string;
763
+ header?: boolean;
764
+ encoding?: string;
765
+ compression?: 'none' | 'gzip' | 'snappy' | 'lz4' | 'zstd';
766
+ dateFormat?: string;
767
+ timestampFormat?: string;
768
+ nullValue?: string;
769
+ schema?: string;
770
+ }
771
+ /** Pre/Post load action */
772
+ export interface PrePostLoadAction {
773
+ type: 'sql' | 'api' | 'script';
774
+ content: string;
775
+ parameters?: Record<string, unknown>;
776
+ }
777
+ /** Error handling config */
778
+ export interface ErrorHandlingConfig {
779
+ maxErrors?: number;
780
+ errorThreshold?: number;
781
+ onError: 'fail' | 'skip' | 'log';
782
+ errorTable?: string;
783
+ deadLetterQueue?: string;
784
+ }
785
+ /** Junction node config */
786
+ export interface JunctionNodeConfig {
787
+ type: 'split' | 'merge';
788
+ }
789
+ /** Filter node config */
790
+ export interface FilterNodeConfig {
791
+ conditions: FilterCondition[];
792
+ logic: 'and' | 'or';
793
+ }
794
+ /** Aggregate node config */
795
+ export interface AggregateNodeConfig {
796
+ groupBy: string[];
797
+ aggregations: Aggregation[];
798
+ having?: FilterCondition[];
799
+ }
800
+ /** Join node config */
801
+ export interface JoinNodeConfig {
802
+ joinType: JoinType;
803
+ leftKey: string[];
804
+ rightKey: string[];
805
+ condition?: string;
806
+ }
807
+ /** Union node config */
808
+ export interface UnionNodeConfig {
809
+ unionType: 'all' | 'distinct';
810
+ }
811
+ /** Lookup node config */
812
+ export interface LookupNodeConfig {
813
+ lookupSource: string;
814
+ lookupKey: string[];
815
+ sourceKey: string[];
816
+ returnColumns: string[];
817
+ }
818
+ /** Script node config */
819
+ export interface ScriptNodeConfig {
820
+ language: 'sql' | 'python' | 'javascript' | 'scala';
821
+ code: string;
822
+ timeout?: number;
823
+ }
824
+ /** Branch node config */
825
+ export interface BranchNodeConfig {
826
+ conditions: BranchCondition[];
827
+ defaultBranch?: string;
828
+ }
829
+ /** Branch condition */
830
+ export interface BranchCondition {
831
+ name: string;
832
+ expression: string;
833
+ outputHandle: string;
834
+ }
835
+ /** Merge node config */
836
+ export interface MergeNodeConfig {
837
+ mergeType: 'union' | 'intersect' | 'except';
838
+ distinct?: boolean;
839
+ }
840
+ /** Custom node config */
841
+ export interface CustomNodeConfig {
842
+ nodeType: string;
843
+ options: Record<string, unknown>;
844
+ }
845
+ /** Source connector definition */
846
+ export interface SourceConnectorDefinition {
847
+ id: string;
848
+ name: string;
849
+ type: ConnectorType;
850
+ icon?: string;
851
+ category?: string;
852
+ description?: string;
853
+ configSchema: ConnectorConfigSchema;
854
+ authTypes?: AuthType[];
855
+ capabilities?: ConnectorCapabilities;
856
+ }
857
+ /** Connector config schema */
858
+ export interface ConnectorConfigSchema {
859
+ properties: ConnectorProperty[];
860
+ groups?: PropertyGroup[];
861
+ }
862
+ /** Connector property */
863
+ export interface ConnectorProperty {
864
+ name: string;
865
+ label: string;
866
+ type: 'string' | 'number' | 'boolean' | 'select' | 'password' | 'json' | 'code';
867
+ required?: boolean;
868
+ defaultValue?: unknown;
869
+ options?: PropertyOption[];
870
+ description?: string;
871
+ group?: string;
872
+ advanced?: boolean;
873
+ dependsOn?: PropertyDependency;
874
+ }
875
+ /** Property option */
876
+ export interface PropertyOption {
877
+ value: unknown;
878
+ label: string;
879
+ }
880
+ /** Property group */
881
+ export interface PropertyGroup {
882
+ id: string;
883
+ label: string;
884
+ collapsed?: boolean;
885
+ }
886
+ /** Property dependency */
887
+ export interface PropertyDependency {
888
+ property: string;
889
+ operator: 'eq' | 'neq' | 'in';
890
+ value: unknown;
891
+ }
892
+ /** Auth type */
893
+ export type AuthType = 'none' | 'basic' | 'apiKey' | 'bearer' | 'oauth2' | 'aws' | 'gcp' | 'azure';
894
+ /** Connector capabilities */
895
+ export interface ConnectorCapabilities {
896
+ incrementalRead?: boolean;
897
+ fullRefresh?: boolean;
898
+ cdc?: boolean;
899
+ streaming?: boolean;
900
+ preview?: boolean;
901
+ schemaDiscovery?: boolean;
902
+ pushDown?: boolean;
903
+ }
904
+ /** Transformation definition */
905
+ export interface TransformationDefinition {
906
+ id: string;
907
+ name: string;
908
+ type: TransformType;
909
+ icon?: string;
910
+ category?: string;
911
+ description?: string;
912
+ configSchema: TransformConfigSchema;
913
+ inputPorts?: PortDefinition[];
914
+ outputPorts?: PortDefinition[];
915
+ }
916
+ /** Transform config schema */
917
+ export interface TransformConfigSchema {
918
+ properties: TransformProperty[];
919
+ groups?: PropertyGroup[];
920
+ }
921
+ /** Transform property */
922
+ export interface TransformProperty {
923
+ name: string;
924
+ label: string;
925
+ type: 'string' | 'number' | 'boolean' | 'select' | 'multiSelect' | 'field' | 'fieldList' | 'expression' | 'json' | 'code';
926
+ required?: boolean;
927
+ defaultValue?: unknown;
928
+ options?: PropertyOption[];
929
+ description?: string;
930
+ group?: string;
931
+ advanced?: boolean;
932
+ dependsOn?: PropertyDependency;
933
+ }
934
+ /** Port definition */
935
+ export interface PortDefinition {
936
+ id: string;
937
+ label?: string;
938
+ maxConnections?: number;
939
+ }
940
+ /** Destination writer definition */
941
+ export interface DestinationWriterDefinition {
942
+ id: string;
943
+ name: string;
944
+ type: ConnectorType;
945
+ icon?: string;
946
+ category?: string;
947
+ description?: string;
948
+ configSchema: ConnectorConfigSchema;
949
+ loadMethods?: LoadMethod[];
950
+ capabilities?: WriterCapabilities;
951
+ }
952
+ /** Load method */
953
+ export type LoadMethod = 'insert' | 'upsert' | 'merge' | 'replace' | 'append' | 'overwrite';
954
+ /** Writer capabilities */
955
+ export interface WriterCapabilities {
956
+ batch?: boolean;
957
+ streaming?: boolean;
958
+ transactions?: boolean;
959
+ parallelWrite?: boolean;
960
+ schemaEvolution?: boolean;
961
+ }
962
+ /** Custom node definition */
963
+ export interface CustomNodeDefinition {
964
+ id: string;
965
+ name: string;
966
+ icon?: string;
967
+ category?: string;
968
+ description?: string;
969
+ configSchema: TransformConfigSchema;
970
+ inputPorts?: PortDefinition[];
971
+ outputPorts?: PortDefinition[];
972
+ execute?: (inputs: unknown[], config: Record<string, unknown>) => unknown;
973
+ }
974
+ /** Data lineage */
975
+ export interface DataLineage {
976
+ nodes: LineageNode[];
977
+ edges: LineageEdge[];
978
+ metadata?: LineageMetadata;
979
+ }
980
+ /** Lineage node */
981
+ export interface LineageNode {
982
+ id: string;
983
+ type: 'dataset' | 'pipeline' | 'column' | 'transformation';
984
+ name: string;
985
+ qualifiedName?: string;
986
+ description?: string;
987
+ metadata?: Record<string, unknown>;
988
+ }
989
+ /** Lineage edge */
990
+ export interface LineageEdge {
991
+ id: string;
992
+ source: string;
993
+ target: string;
994
+ type: 'dataFlow' | 'derivation' | 'dependency';
995
+ transformation?: string;
996
+ }
997
+ /** Lineage metadata */
998
+ export interface LineageMetadata {
999
+ captureTime?: Date;
1000
+ pipelineId?: string;
1001
+ runId?: string;
1002
+ version?: string;
1003
+ }
1004
+ /** Pipeline run */
1005
+ export interface PipelineRun {
1006
+ id: string;
1007
+ pipelineId: string;
1008
+ pipelineVersion?: string;
1009
+ status: PipelineStatus;
1010
+ startTime?: Date;
1011
+ endTime?: Date;
1012
+ duration?: number;
1013
+ parameters?: Record<string, unknown>;
1014
+ nodeRuns: NodeRun[];
1015
+ metrics?: PipelineRunMetrics;
1016
+ logs?: RunLog[];
1017
+ checkpoints?: Checkpoint[];
1018
+ error?: RunError;
1019
+ }
1020
+ /** Node run */
1021
+ export interface NodeRun {
1022
+ nodeId: string;
1023
+ status: NodeStatus;
1024
+ startTime?: Date;
1025
+ endTime?: Date;
1026
+ duration?: number;
1027
+ metrics?: NodeMetrics;
1028
+ error?: RunError;
1029
+ retries?: number;
1030
+ }
1031
+ /** Pipeline run metrics */
1032
+ export interface PipelineRunMetrics {
1033
+ totalRows?: number;
1034
+ totalBytes?: number;
1035
+ totalErrors?: number;
1036
+ totalWarnings?: number;
1037
+ nodesExecuted?: number;
1038
+ nodesSkipped?: number;
1039
+ nodesFailed?: number;
1040
+ }
1041
+ /** Run log */
1042
+ export interface RunLog {
1043
+ timestamp: Date;
1044
+ level: 'debug' | 'info' | 'warn' | 'error';
1045
+ nodeId?: string;
1046
+ message: string;
1047
+ details?: Record<string, unknown>;
1048
+ }
1049
+ /** Checkpoint */
1050
+ export interface Checkpoint {
1051
+ id: string;
1052
+ timestamp: Date;
1053
+ nodeId: string;
1054
+ state: Record<string, unknown>;
1055
+ }
1056
+ /** Run error */
1057
+ export interface RunError {
1058
+ code?: string;
1059
+ message: string;
1060
+ stack?: string;
1061
+ nodeId?: string;
1062
+ details?: Record<string, unknown>;
1063
+ }
1064
+ /** Data quality check */
1065
+ export interface DataQualityCheck {
1066
+ id: string;
1067
+ name: string;
1068
+ type: QualityCheckType;
1069
+ config: QualityCheckConfig;
1070
+ severity: 'info' | 'warning' | 'error' | 'critical';
1071
+ enabled: boolean;
1072
+ }
1073
+ /** Quality check type */
1074
+ export type QualityCheckType = 'completeness' | 'uniqueness' | 'validity' | 'accuracy' | 'consistency' | 'timeliness' | 'custom';
1075
+ /** Quality check config */
1076
+ export interface QualityCheckConfig {
1077
+ column?: string;
1078
+ expression?: string;
1079
+ threshold?: number;
1080
+ referenceValue?: unknown;
1081
+ referenceDataset?: string;
1082
+ customQuery?: string;
1083
+ }
1084
+ /** Quality result */
1085
+ export interface QualityResult {
1086
+ checkId: string;
1087
+ passed: boolean;
1088
+ score: number;
1089
+ details?: QualityDetails;
1090
+ timestamp: Date;
1091
+ }
1092
+ /** Quality details */
1093
+ export interface QualityDetails {
1094
+ totalRecords?: number;
1095
+ passedRecords?: number;
1096
+ failedRecords?: number;
1097
+ nullCount?: number;
1098
+ distinctCount?: number;
1099
+ minValue?: unknown;
1100
+ maxValue?: unknown;
1101
+ avgValue?: number;
1102
+ stddev?: number;
1103
+ samples?: unknown[];
1104
+ }
1105
+ //# sourceMappingURL=data-pipeline.d.ts.map