react-semaphor 0.1.325 → 0.1.326

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 (57) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +260 -226
  3. package/dist/brand-studio/index.cjs +2 -2
  4. package/dist/brand-studio/index.js +7 -6
  5. package/dist/chunks/{braces-C7BeIXvM.js → braces-DVaMJoCd.js} +1 -1
  6. package/dist/chunks/{braces-ZjRH2Kl7.js → braces-dHeaioTd.js} +1 -1
  7. package/dist/chunks/{calendar-preferences-dialog-DHhT6Sja.js → calendar-preferences-dialog--2jD-eKu.js} +6 -5
  8. package/dist/chunks/calendar-preferences-dialog-mqU_uOmY.js +1 -0
  9. package/dist/chunks/{chevrons-up-down-CA-XvN1o.js → chevrons-up-down-CLbzBHoI.js} +1 -1
  10. package/dist/chunks/{chevrons-up-down-Cuilz9aY.js → chevrons-up-down-DNQE-uEp.js} +1 -1
  11. package/dist/chunks/{dashboard-briefing-launcher-DZiFMK8I.js → dashboard-briefing-launcher-DguNfFr8.js} +1 -1
  12. package/dist/chunks/{dashboard-briefing-launcher-BzIxRlzW.js → dashboard-briefing-launcher-DsjXUPFq.js} +29 -28
  13. package/dist/chunks/{dashboard-controls-DVwsWny9.js → dashboard-controls-DgNkM1yT.js} +10 -9
  14. package/dist/chunks/{dashboard-controls-BX693lE0.js → dashboard-controls-XCa9PZuU.js} +1 -1
  15. package/dist/chunks/dashboard-json-DiBd65Xf.js +1 -0
  16. package/dist/chunks/{dashboard-json-D15C_I9e.js → dashboard-json-DkA6Bf0Y.js} +7 -6
  17. package/dist/chunks/{edit-dashboard-visual-90_qEgRc.js → edit-dashboard-visual-BC9eOc4U.js} +2 -2
  18. package/dist/chunks/{edit-dashboard-visual-wQyJEcVH.js → edit-dashboard-visual-Q5hW5MXk.js} +11 -9
  19. package/dist/chunks/{index-YTk9Hab2.js → index-B1-46PoR.js} +213 -213
  20. package/dist/chunks/index-BxM99sFL.js +1 -0
  21. package/dist/chunks/index-CuHybtft.js +51 -0
  22. package/dist/chunks/{index-CffvIaZO.js → index-DwfDwtv2.js} +20578 -20474
  23. package/dist/chunks/{palette-CanPG11m.js → palette-DpcvHAiY.js} +1 -1
  24. package/dist/chunks/{palette-D96DOM7E.js → palette-DtmNws9a.js} +1 -1
  25. package/dist/chunks/{resource-management-panel-DlnrD0y-.js → resource-management-panel-CGwWKZOP.js} +1 -1
  26. package/dist/chunks/{resource-management-panel-CLoO2DL3.js → resource-management-panel-D2oAQkKi.js} +6 -5
  27. package/dist/chunks/{save-DxkSzUTZ.js → save-BY7WF62U.js} +1 -1
  28. package/dist/chunks/{save-CqrBQKG6.js → save-Cv_XRb94.js} +1 -1
  29. package/dist/chunks/{switch-BXICAlvS.js → switch-5aQ_jcLH.js} +39 -39
  30. package/dist/chunks/{switch-Deo2Ltmj.js → switch-j3AThLFk.js} +2580 -2628
  31. package/dist/chunks/{use-create-flow-overlay-state-DocFanjO.js → use-create-flow-overlay-state-BQPXP0AM.js} +1 -1
  32. package/dist/chunks/{use-create-flow-overlay-state-DsPoCfMu.js → use-create-flow-overlay-state-CP6GDQAX.js} +29 -28
  33. package/dist/chunks/{use-visual-utils-BdO22fQZ.js → use-visual-utils-CSXU-96k.js} +2 -2
  34. package/dist/chunks/{use-visual-utils-DSbXQQD1.js → use-visual-utils-NpOW5uZ1.js} +1 -1
  35. package/dist/chunks/validators-DJUMR5An.js +2 -0
  36. package/dist/chunks/validators-DvTxl9i0.js +352 -0
  37. package/dist/dashboard/index.cjs +1 -1
  38. package/dist/dashboard/index.js +1 -1
  39. package/dist/dashboard-authoring/index.cjs +3 -3
  40. package/dist/dashboard-authoring/index.js +168 -136
  41. package/dist/data-app-sdk/index.cjs +1 -0
  42. package/dist/data-app-sdk/index.js +512 -0
  43. package/dist/index.cjs +1 -1
  44. package/dist/index.js +141 -140
  45. package/dist/surfboard/index.cjs +1 -1
  46. package/dist/surfboard/index.js +2 -2
  47. package/dist/types/analytics-protocol.d.ts +325 -2
  48. package/dist/types/dashboard-authoring.d.ts +23 -1
  49. package/dist/types/dashboard.d.ts +6 -1
  50. package/dist/types/data-app-sdk.d.ts +378 -0
  51. package/dist/types/main.d.ts +117 -2
  52. package/dist/types/shared.d.ts +1 -0
  53. package/dist/types/surfboard.d.ts +6 -1
  54. package/dist/types/types.d.ts +6 -1
  55. package/package.json +6 -1
  56. package/dist/chunks/calendar-preferences-dialog-BxeROxyq.js +0 -1
  57. package/dist/chunks/dashboard-json-DxNEFM-p.js +0 -1
@@ -1,5 +1,265 @@
1
+ export declare type AnalyticsCatalogDataType = 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'unknown';
2
+
3
+ export declare type AnalyticsCatalogField = {
4
+ id?: unknown;
5
+ column_name?: unknown;
6
+ name?: unknown;
7
+ label?: unknown;
8
+ alias?: unknown;
9
+ qualifiedFieldName?: unknown;
10
+ data_type?: unknown;
11
+ dataType?: unknown;
12
+ role?: unknown;
13
+ };
14
+
15
+ export declare type AnalyticsCatalogFieldSummary = {
16
+ validMetricCandidates: string[];
17
+ validDateCandidates: string[];
18
+ validDimensionCandidates: string[];
19
+ };
20
+
21
+ export declare type AnalyticsMetricFormat = {
22
+ type: 'number' | 'currency' | 'percent' | 'scientific';
23
+ locale?: string;
24
+ minimumFractionDigits?: number;
25
+ maximumFractionDigits?: number;
26
+ useGrouping?: boolean;
27
+ prefix?: string;
28
+ suffix?: string;
29
+ negativeStyle?: 'minus' | 'parentheses';
30
+ compact?: boolean;
31
+ scale?: number;
32
+ currency?: string;
33
+ percentValueMode?: 'fraction' | 'whole';
34
+ } | {
35
+ type: 'date';
36
+ locale?: string;
37
+ pattern?: string;
38
+ relative?: boolean;
39
+ timezone?: string;
40
+ sourceTimezone?: string;
41
+ prefix?: string;
42
+ suffix?: string;
43
+ } | {
44
+ type: 'string';
45
+ prefix?: string;
46
+ suffix?: string;
47
+ };
48
+
49
+ export declare function buildAnalyticsCatalogFieldSummary(fields: AnalyticsCatalogField[]): AnalyticsCatalogFieldSummary;
50
+
51
+ export declare function getAnalyticsCatalogFieldCandidates(field: AnalyticsCatalogField): string[];
52
+
53
+ export declare function getAnalyticsCatalogFieldName(field: AnalyticsCatalogField): string;
54
+
55
+ export declare function inferAnalyticsMetricFormat(field: AnalyticsCatalogField): AnalyticsMetricFormat | undefined;
56
+
57
+ export declare function isAnalyticsCatalogDateField(field: AnalyticsCatalogField): boolean;
58
+
59
+ export declare function isAnalyticsCatalogDimensionField(field: AnalyticsCatalogField): boolean;
60
+
61
+ export declare function isAnalyticsCatalogMetricField(field: AnalyticsCatalogField, options?: {
62
+ excludeIdentifiers?: boolean;
63
+ }): boolean;
64
+
65
+ export declare function isAnalyticsDateLikeDataType(value: unknown): boolean;
66
+
67
+ export declare function isAnalyticsMetricIdentifierField(field: AnalyticsCatalogField): boolean;
68
+
69
+ export declare function isAnalyticsTechnicalIdentifierField(field: AnalyticsCatalogField): boolean;
70
+
71
+ export declare function normalizeAnalyticsCatalogDataType(value: unknown): AnalyticsCatalogDataType;
72
+
73
+ export declare function normalizeAnalyticsCatalogName(value: unknown): string;
74
+
75
+ export declare const SEMAPHOR_ANALYTICS_INTENT_FIXTURES: {
76
+ revenueKpi: {
77
+ version: 1;
78
+ kind: "metric";
79
+ id: string;
80
+ label: string;
81
+ source: {
82
+ readonly kind: "semantic";
83
+ readonly domainId: "domain_sales";
84
+ readonly datasetName: "orders";
85
+ readonly connectionId: "conn_sales";
86
+ readonly label: "Orders";
87
+ };
88
+ metric: string;
89
+ comparison: {
90
+ kind: "previous_period";
91
+ };
92
+ limit: number;
93
+ };
94
+ revenueTrend: {
95
+ version: 1;
96
+ kind: "records";
97
+ id: string;
98
+ label: string;
99
+ source: {
100
+ readonly kind: "semantic";
101
+ readonly domainId: "domain_sales";
102
+ readonly datasetName: "orders";
103
+ readonly connectionId: "conn_sales";
104
+ readonly label: "Orders";
105
+ };
106
+ fields: {
107
+ name: string;
108
+ role: "date";
109
+ dataType: "date";
110
+ label: string;
111
+ }[];
112
+ measures: string[];
113
+ dateField: {
114
+ name: string;
115
+ role: "date";
116
+ dataType: "date";
117
+ };
118
+ timeGrain: "month";
119
+ limit: number;
120
+ };
121
+ topCustomersRecords: {
122
+ version: 1;
123
+ kind: "records";
124
+ id: string;
125
+ label: string;
126
+ source: {
127
+ readonly kind: "semantic";
128
+ readonly domainId: "domain_sales";
129
+ readonly datasetName: "orders";
130
+ readonly connectionId: "conn_sales";
131
+ readonly label: "Orders";
132
+ };
133
+ fields: ({
134
+ name: string;
135
+ role: "dimension";
136
+ dataType: "string";
137
+ } | {
138
+ name: string;
139
+ role: "measure";
140
+ dataType: "number";
141
+ })[];
142
+ measures: string[];
143
+ orderBy: {
144
+ field: string;
145
+ direction: "desc";
146
+ };
147
+ limit: number;
148
+ };
149
+ regionInputOptions: {
150
+ version: 1;
151
+ kind: "inputOptions";
152
+ id: string;
153
+ label: string;
154
+ source: {
155
+ readonly kind: "semantic";
156
+ readonly domainId: "domain_sales";
157
+ readonly datasetName: "orders";
158
+ readonly connectionId: "conn_sales";
159
+ readonly label: "Orders";
160
+ };
161
+ field: {
162
+ name: string;
163
+ role: "dimension";
164
+ dataType: "string";
165
+ };
166
+ limit: number;
167
+ };
168
+ previousPeriodRevenueComparison: {
169
+ version: 1;
170
+ kind: "metric";
171
+ id: string;
172
+ label: string;
173
+ source: {
174
+ readonly kind: "semantic";
175
+ readonly domainId: "domain_sales";
176
+ readonly datasetName: "orders";
177
+ readonly connectionId: "conn_sales";
178
+ readonly label: "Orders";
179
+ };
180
+ metric: string;
181
+ dateField: {
182
+ name: string;
183
+ role: "date";
184
+ dataType: "date";
185
+ };
186
+ timeGrain: "week";
187
+ comparison: {
188
+ kind: "previous_period";
189
+ };
190
+ limit: number;
191
+ };
192
+ boundedSqlRanking: {
193
+ version: 1;
194
+ kind: "sql";
195
+ id: string;
196
+ label: string;
197
+ source: {
198
+ kind: "physical";
199
+ connectionId: string;
200
+ databaseName: string;
201
+ schemaName: string;
202
+ tableName: string;
203
+ dialect: "postgres";
204
+ };
205
+ sql: string;
206
+ limit: number;
207
+ rationale: string;
208
+ fields: ({
209
+ name: string;
210
+ role: "dimension";
211
+ dataType: "string";
212
+ } | {
213
+ name: string;
214
+ role: "measure";
215
+ dataType: "number";
216
+ })[];
217
+ };
218
+ };
219
+
220
+ export declare type SemaphorAnalyticsFieldRole = 'metric' | 'dateField' | 'dimension' | 'input' | 'source' | 'sql';
221
+
1
222
  export declare type SemaphorAnalyticsIntent = SemaphorMetricIntent | SemaphorRecordsIntent | SemaphorInputOptionsIntent | SemaphorSqlIntent;
2
223
 
224
+ export declare type SemaphorAnalyticsIntentFixtureName = keyof typeof SEMAPHOR_ANALYTICS_INTENT_FIXTURES;
225
+
226
+ export declare type SemaphorAnalyticsRepairHint = {
227
+ code: SemaphorAnalyticsValidationCode | string;
228
+ message?: string;
229
+ invalidField?: string;
230
+ fieldRole?: SemaphorAnalyticsFieldRole;
231
+ validMetricCandidates?: string[];
232
+ validDateCandidates?: string[];
233
+ validDimensionCandidates?: string[];
234
+ recommendedNextStep: string;
235
+ };
236
+
237
+ export declare type SemaphorAnalyticsResult = SemaphorMetricResult | SemaphorRecordsResult | SemaphorInputOptionsResult | SemaphorSqlResult;
238
+
239
+ export declare type SemaphorAnalyticsResultBase = {
240
+ intentId?: string;
241
+ queryPath: SemaphorQueryPath;
242
+ warnings?: string[];
243
+ rowCount?: number;
244
+ rowLimitExceeded?: boolean;
245
+ limit?: number;
246
+ };
247
+
248
+ export declare type SemaphorAnalyticsValidationCode = 'missing_source' | 'invalid_source_kind' | 'missing_semantic_domain' | 'missing_dataset_name' | 'missing_connection_id' | 'missing_table_name' | 'missing_sql' | 'missing_metric' | 'missing_record_fields' | 'missing_input_options_field' | 'invalid_metric' | 'invalid_metric_list' | 'invalid_date_field' | 'invalid_dimension' | 'invalid_metric_dimensions' | 'conflicting_sql' | 'sql_policy_violation' | 'unsupported_intent_for_adapter' | 'invalid_analytics_kind' | 'invalid_analytics_intent';
249
+
250
+ export declare type SemaphorAnalyticsValidationIssue = SemaphorProtocolIssue & {
251
+ code: SemaphorAnalyticsValidationCode | string;
252
+ fieldRole?: SemaphorAnalyticsFieldRole;
253
+ repairHint?: SemaphorAnalyticsRepairHint;
254
+ };
255
+
256
+ export declare type SemaphorAnalyticsValidationResult = {
257
+ ok: boolean;
258
+ errors: SemaphorAnalyticsValidationIssue[];
259
+ warnings: SemaphorAnalyticsValidationIssue[];
260
+ repairHints: SemaphorAnalyticsRepairHint[];
261
+ };
262
+
3
263
  export declare type SemaphorDashboardIntent = {
4
264
  version: SemaphorProtocolVersion;
5
265
  kind: 'dashboard';
@@ -45,12 +305,24 @@ export declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'cont
45
305
 
46
306
  export declare type SemaphorInputOptionsIntent = {
47
307
  kind: 'inputOptions';
308
+ version?: SemaphorProtocolVersion;
309
+ id?: string;
310
+ label?: string;
48
311
  source: SemaphorSourceRef;
49
312
  field: SemaphorFieldRef;
50
313
  search?: string;
51
314
  limit?: number;
52
315
  };
53
316
 
317
+ export declare type SemaphorInputOptionsResult = SemaphorAnalyticsResultBase & {
318
+ kind: 'inputOptions';
319
+ options: Array<{
320
+ label: string;
321
+ value: unknown;
322
+ count?: number;
323
+ }>;
324
+ };
325
+
54
326
  export declare type SemaphorInputScope = {
55
327
  level: 'dashboard';
56
328
  excludeViewIds?: string[];
@@ -77,15 +349,32 @@ export declare type SemaphorInputSpec = {
77
349
 
78
350
  export declare type SemaphorMetricIntent = {
79
351
  kind: 'metric';
352
+ version?: SemaphorProtocolVersion;
353
+ id?: string;
80
354
  source: SemaphorSourceRef;
81
355
  metric: string;
356
+ metrics?: string[];
82
357
  label?: string;
83
358
  dateField?: SemaphorFieldRef;
359
+ timeGrain?: SemaphorTimeGrain;
360
+ dimensions?: SemaphorFieldRef[];
84
361
  comparison?: {
85
362
  kind: 'previous_period' | 'previous_year' | 'target';
86
363
  targetValue?: number;
87
364
  };
88
365
  inputs?: SemaphorInputBinding[];
366
+ limit?: number;
367
+ };
368
+
369
+ export declare type SemaphorMetricResult = SemaphorAnalyticsResultBase & {
370
+ kind: 'metric';
371
+ value: number | string | null;
372
+ comparison?: {
373
+ kind: NonNullable<SemaphorMetricIntent['comparison']>['kind'];
374
+ value?: number | string | null;
375
+ delta?: number | null;
376
+ deltaPercent?: number | null;
377
+ };
89
378
  };
90
379
 
91
380
  export declare type SemaphorProtocolIssue = {
@@ -96,9 +385,14 @@ export declare type SemaphorProtocolIssue = {
96
385
 
97
386
  export declare type SemaphorProtocolVersion = 1;
98
387
 
388
+ export declare type SemaphorQueryPath = 'query_spec' | 'sql' | 'sql_python';
389
+
99
390
  export declare type SemaphorRecordsIntent = {
100
391
  kind: 'records';
392
+ version?: SemaphorProtocolVersion;
101
393
  source: SemaphorSourceRef;
394
+ id?: string;
395
+ label?: string;
102
396
  fields: SemaphorFieldRef[];
103
397
  measures?: string[];
104
398
  dateField?: SemaphorFieldRef;
@@ -111,6 +405,16 @@ export declare type SemaphorRecordsIntent = {
111
405
  inputs?: SemaphorInputBinding[];
112
406
  };
113
407
 
408
+ export declare type SemaphorRecordsResult = SemaphorAnalyticsResultBase & {
409
+ kind: 'records';
410
+ columns: Array<{
411
+ name: string;
412
+ label?: string;
413
+ dataType?: SemaphorFieldRef['dataType'];
414
+ }>;
415
+ records: Array<Record<string, unknown>>;
416
+ };
417
+
114
418
  export declare type SemaphorSourceRef = {
115
419
  kind: 'semantic';
116
420
  domainId: string;
@@ -136,13 +440,32 @@ export declare type SemaphorSourceRef = {
136
440
 
137
441
  export declare type SemaphorSqlIntent = {
138
442
  kind: 'sql';
443
+ version?: SemaphorProtocolVersion;
444
+ id?: string;
445
+ label?: string;
139
446
  source: Extract<SemaphorSourceRef, {
140
- kind: 'sql';
447
+ kind: 'sql' | 'physical';
141
448
  }>;
449
+ sql?: string;
450
+ parameters?: Record<string, unknown>;
451
+ pythonCode?: string;
452
+ limit?: number;
453
+ rationale?: string;
142
454
  fields?: SemaphorFieldRef[];
143
455
  inputs?: SemaphorInputBinding[];
144
456
  };
145
457
 
458
+ export declare type SemaphorSqlResult = SemaphorAnalyticsResultBase & {
459
+ kind: 'sql';
460
+ columns: SemaphorRecordsResult['columns'];
461
+ records: SemaphorRecordsResult['records'];
462
+ sqlShape?: {
463
+ statementType?: string;
464
+ explicitLimit?: number;
465
+ hasPythonCode?: boolean;
466
+ };
467
+ };
468
+
146
469
  export declare type SemaphorTimeGrain = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
147
470
 
148
471
  export declare type SemaphorValidationResult = {
@@ -165,7 +488,7 @@ export declare type SemaphorViewPresentation = {
165
488
  kind: 'text';
166
489
  };
167
490
 
168
- export declare function validateSemaphorAnalyticsIntent(intent: SemaphorAnalyticsIntent): SemaphorValidationResult;
491
+ export declare function validateSemaphorAnalyticsIntent(intent: SemaphorAnalyticsIntent): SemaphorAnalyticsValidationResult;
169
492
 
170
493
  export declare function validateSemaphorDashboardIntent(intent: SemaphorDashboardIntent): SemaphorValidationResult;
171
494
 
@@ -732,6 +732,7 @@ export declare type DashboardPlanCard = {
732
732
  priority: number;
733
733
  section?: string;
734
734
  query?: DashboardCardQueryIntent;
735
+ analyticsIntent?: SemaphorAnalyticsIntent;
735
736
  text?: string;
736
737
  };
737
738
 
@@ -800,6 +801,7 @@ declare interface DataModelEntityReference extends DatabaseEntityReference {
800
801
  declare interface DatasetEntityReference extends DatabaseEntityReference {
801
802
  type: 'dataset';
802
803
  datasetType: 'physical' | 'virtual';
804
+ table?: string | null;
803
805
  datamodelId?: string | null;
804
806
  sql?: string | null;
805
807
  id: string;
@@ -1804,6 +1806,9 @@ declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' |
1804
1806
 
1805
1807
  declare type SemaphorInputOptionsIntent = {
1806
1808
  kind: 'inputOptions';
1809
+ version?: SemaphorProtocolVersion;
1810
+ id?: string;
1811
+ label?: string;
1807
1812
  source: SemaphorSourceRef;
1808
1813
  field: SemaphorFieldRef;
1809
1814
  search?: string;
@@ -1836,22 +1841,31 @@ declare type SemaphorInputSpec = {
1836
1841
 
1837
1842
  declare type SemaphorMetricIntent = {
1838
1843
  kind: 'metric';
1844
+ version?: SemaphorProtocolVersion;
1845
+ id?: string;
1839
1846
  source: SemaphorSourceRef;
1840
1847
  metric: string;
1848
+ metrics?: string[];
1841
1849
  label?: string;
1842
1850
  dateField?: SemaphorFieldRef;
1851
+ timeGrain?: SemaphorTimeGrain;
1852
+ dimensions?: SemaphorFieldRef[];
1843
1853
  comparison?: {
1844
1854
  kind: 'previous_period' | 'previous_year' | 'target';
1845
1855
  targetValue?: number;
1846
1856
  };
1847
1857
  inputs?: SemaphorInputBinding[];
1858
+ limit?: number;
1848
1859
  };
1849
1860
 
1850
1861
  declare type SemaphorProtocolVersion = 1;
1851
1862
 
1852
1863
  declare type SemaphorRecordsIntent = {
1853
1864
  kind: 'records';
1865
+ version?: SemaphorProtocolVersion;
1854
1866
  source: SemaphorSourceRef;
1867
+ id?: string;
1868
+ label?: string;
1855
1869
  fields: SemaphorFieldRef[];
1856
1870
  measures?: string[];
1857
1871
  dateField?: SemaphorFieldRef;
@@ -1889,9 +1903,17 @@ declare type SemaphorSourceRef = {
1889
1903
 
1890
1904
  declare type SemaphorSqlIntent = {
1891
1905
  kind: 'sql';
1906
+ version?: SemaphorProtocolVersion;
1907
+ id?: string;
1908
+ label?: string;
1892
1909
  source: Extract<SemaphorSourceRef, {
1893
- kind: 'sql';
1910
+ kind: 'sql' | 'physical';
1894
1911
  }>;
1912
+ sql?: string;
1913
+ parameters?: Record<string, unknown>;
1914
+ pythonCode?: string;
1915
+ limit?: number;
1916
+ rationale?: string;
1895
1917
  fields?: SemaphorFieldRef[];
1896
1918
  inputs?: SemaphorInputBinding[];
1897
1919
  };
@@ -812,6 +812,7 @@ declare interface DataModelEntityReference extends DatabaseEntityReference {
812
812
  declare interface DatasetEntityReference extends DatabaseEntityReference {
813
813
  type: 'dataset';
814
814
  datasetType: 'physical' | 'virtual';
815
+ table?: string | null;
815
816
  datamodelId?: string | null;
816
817
  sql?: string | null;
817
818
  id: string;
@@ -2500,7 +2501,11 @@ export declare type TDataColumn = {
2500
2501
  label?: string;
2501
2502
  description?: string;
2502
2503
  qualifiedFieldName?: string;
2503
- role?: 'metric';
2504
+ qualifiedEntityName?: string;
2505
+ entityId?: string;
2506
+ entityName?: string;
2507
+ entityType?: EntityType;
2508
+ role?: 'groupby' | 'metric' | 'sortby' | 'pivotby' | 'detail';
2504
2509
  expression?: string;
2505
2510
  calculatedFormula?: CalculatedFieldFormula;
2506
2511
  format?: FormatSpec;