react-semaphor 0.1.453 → 0.1.455
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +100 -99
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +4 -4
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +4 -4
- package/dist/chunks/{analyze-result-contract-GHKFwThg.js → analyze-result-contract-BbRJ-C06.js} +1 -1
- package/dist/chunks/{analyze-result-contract-Dxw66nUG.cjs → analyze-result-contract-LPDNldic.cjs} +1 -1
- package/dist/chunks/canonical-result-keys-BA0HCP4e.cjs +1 -0
- package/dist/chunks/{canonical-result-keys-KLk__J_O.js → canonical-result-keys-D6avdjpA.js} +14 -13
- package/dist/chunks/{common-types-Ci66eflG.cjs → common-types-C57kJ59w.cjs} +1 -1
- package/dist/chunks/{common-types-F6qk6PPS.js → common-types-H51FLKB7.js} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-CFpX0WX3.js → dashboard-briefing-launcher-BgBMjAVe.js} +10 -10
- package/dist/chunks/{dashboard-briefing-launcher-mUXWuiOZ.cjs → dashboard-briefing-launcher-BmEHYblf.cjs} +1 -1
- package/dist/chunks/{dashboard-controls-SoNubIu1.cjs → dashboard-controls-BLNG_zHC.cjs} +1 -1
- package/dist/chunks/{dashboard-controls-BeYAmOJc.js → dashboard-controls-C-23EDdr.js} +10 -10
- package/dist/chunks/dashboard-date-comparison-definition-Ces4alFm.cjs +1 -0
- package/dist/chunks/{dashboard-date-comparison-definition-Ba-clViK.js → dashboard-date-comparison-definition-DC3ekV2S.js} +1 -1
- package/dist/chunks/{dashboard-json-BublPnQ4.cjs → dashboard-json-BJ_Z9EaL.cjs} +1 -1
- package/dist/chunks/{dashboard-json-DeLUagVV.js → dashboard-json-BTF-1Iwa.js} +8 -8
- package/dist/chunks/{edit-dashboard-visual-CrvPcO7A.cjs → edit-dashboard-visual-CR832BJc.cjs} +1 -1
- package/dist/chunks/{edit-dashboard-visual-Go0h82DR.js → edit-dashboard-visual-Mw-ZE7P7.js} +12 -12
- package/dist/chunks/{editor-action-buttons-1Lo0fIh7.cjs → editor-action-buttons-BVigIMg0.cjs} +1 -1
- package/dist/chunks/{editor-action-buttons-BFNtjFzO.js → editor-action-buttons-BxbFCerU.js} +6 -6
- package/dist/chunks/{index-BsH32bn1.js → index-B5Oy1eLv.js} +35305 -34883
- package/dist/chunks/index-C99Ow35Y.cjs +4 -0
- package/dist/chunks/{index-q12_nNUS.cjs → index-DIWJALWL.cjs} +231 -231
- package/dist/chunks/{index-B3ZugihZ.js → index-DrYILnh0.js} +799 -808
- package/dist/chunks/matrix-result-contract-CofATICL.js +437 -0
- package/dist/chunks/matrix-result-contract-zamd9euI.cjs +1 -0
- package/dist/chunks/{pivot-header-presentation-DcfPaCiy.cjs → pivot-header-presentation-DhyQXxKq.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-nk604qc1.js → pivot-header-presentation-ckYOQ4aZ.js} +2 -2
- package/dist/chunks/{pivot-result-identity-CRUokNgm.cjs → pivot-result-identity-Bb4EixVN.cjs} +1 -1
- package/dist/chunks/{pivot-result-identity-C43Ai5Kr.js → pivot-result-identity-DU1v-5Xk.js} +1 -1
- package/dist/chunks/pivot-result-lifecycle-DmcF1ris.cjs +1 -0
- package/dist/chunks/{pivot-result-lifecycle-4kSe0Hk1.js → pivot-result-lifecycle-sjzIOpvp.js} +57 -58
- package/dist/chunks/{raw-temporal-contract-CxbRFwnd.cjs → raw-temporal-contract-BtjH_G-d.cjs} +1 -1
- package/dist/chunks/{raw-temporal-contract-BF7PjBY9.js → raw-temporal-contract-CxncLze5.js} +1 -1
- package/dist/chunks/{report-preferences-dialog-BEVZAE3m.cjs → report-preferences-dialog-BgE3Gzsp.cjs} +1 -1
- package/dist/chunks/{report-preferences-dialog-BNV7qXYH.js → report-preferences-dialog-CFenWkcH.js} +6 -6
- package/dist/chunks/{report-runtime-context-DjYqLV-c.cjs → report-runtime-context-DqxS4wbi.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-BJQDu2fV.js → report-runtime-context-SM6YO61_.js} +5 -5
- package/dist/chunks/saved-temporal-bucket-format-CFfWXRl9.cjs +1 -0
- package/dist/chunks/{saved-temporal-bucket-format-DiZdQXOL.js → saved-temporal-bucket-format-SGAV0ivR.js} +33 -35
- package/dist/chunks/{switch-DgLwr7O-.js → switch-BeZW-HnS.js} +367 -369
- package/dist/chunks/{switch-CjJ6FHYJ.cjs → switch-D-CCcfhc.cjs} +28 -28
- package/dist/chunks/temporal-bucket-5UYEotyQ.js +810 -0
- package/dist/chunks/temporal-bucket-DHY1y9lq.cjs +1 -0
- package/dist/chunks/{temporal-bucket-authoring-FIRnJz0e.js → temporal-bucket-authoring-K1kE6R_z.js} +28 -27
- package/dist/chunks/temporal-bucket-authoring-o3Emn05L.cjs +1 -0
- package/dist/chunks/{temporal-bucket-contract-anl4h-vg.cjs → temporal-bucket-contract-D2-93DGr.cjs} +1 -1
- package/dist/chunks/{temporal-bucket-contract-BQOj6Frl.js → temporal-bucket-contract-D5d-xEl3.js} +1 -1
- package/dist/chunks/{token-types-D0i0IUX3.cjs → token-types-D7CaaI80.cjs} +1 -1
- package/dist/chunks/{token-types-CRpQJ4kv.js → token-types-GbxRUozo.js} +1 -1
- package/dist/chunks/{update-policy-C1i9bgsy.cjs → update-policy-BmiOd0PB.cjs} +1 -1
- package/dist/chunks/{update-policy-CaJz9aPG.js → update-policy-hednMF-0.js} +1 -1
- package/dist/chunks/validators-BDYprKI9.cjs +1 -0
- package/dist/chunks/{validators-DeMXwRON.js → validators-DEmd8Sin.js} +1544 -1200
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +2 -2
- package/dist/dashboard-authoring/index.cjs +3 -3
- package/dist/dashboard-authoring/index.js +7 -7
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +2 -2
- package/dist/data-app-codegen/index.cjs +1 -1
- package/dist/data-app-codegen/index.js +2 -2
- package/dist/data-app-codegen-node/index.cjs +1 -1
- package/dist/data-app-codegen-node/index.js +3 -3
- package/dist/data-app-sdk/index.cjs +1 -1
- package/dist/data-app-sdk/index.js +78 -77
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +29 -30
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +21 -21
- package/dist/format-utils/index.cjs +3 -3
- package/dist/format-utils/index.js +39 -40
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -15
- package/dist/report-runtime-context/index.cjs +1 -1
- package/dist/report-runtime-context/index.js +2 -2
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +3 -3
- package/dist/types/analytics-protocol.d.ts +44 -11
- package/dist/types/briefings.d.ts +9 -17
- package/dist/types/dashboard-assistant.d.ts +19 -22
- package/dist/types/dashboard-authoring.d.ts +9 -17
- package/dist/types/dashboard.d.ts +9 -17
- package/dist/types/data-app-builder.d.ts +28 -2
- package/dist/types/data-app-codegen-node.d.ts +29 -3
- package/dist/types/data-app-codegen.d.ts +29 -3
- package/dist/types/data-app-sdk-adapters.d.ts +28 -2
- package/dist/types/data-app-sdk-validation.d.ts +38 -7
- package/dist/types/data-app-sdk.d.ts +42 -10
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/main.d.ts +25 -26
- package/dist/types/shared.d.ts +9 -17
- package/dist/types/surfboard.d.ts +9 -17
- package/dist/types/types.d.ts +19 -22
- package/package.json +1 -1
- package/dist/chunks/canonical-result-keys-Drc2x-lf.cjs +0 -1
- package/dist/chunks/catalog-field-grounding-Bnx-3tE0.cjs +0 -1
- package/dist/chunks/catalog-field-grounding-S2jKwKGD.js +0 -100
- package/dist/chunks/dashboard-date-comparison-definition-DZq0htjG.cjs +0 -1
- package/dist/chunks/dashboard-input-contract-DSt8dGzP.js +0 -18
- package/dist/chunks/dashboard-input-contract-DV3cshjz.cjs +0 -1
- package/dist/chunks/index-DjiIh_9n.cjs +0 -4
- package/dist/chunks/metric-comparison-D0T0MKRK.js +0 -387
- package/dist/chunks/metric-comparison-DYR3RXam.cjs +0 -1
- package/dist/chunks/pivot-result-lifecycle-BiJepH5S.cjs +0 -1
- package/dist/chunks/saved-temporal-bucket-format-Gfbh4IiP.cjs +0 -1
- package/dist/chunks/temporal-bucket-Dnj8qT9l.cjs +0 -1
- package/dist/chunks/temporal-bucket-FBZGrDCe.js +0 -560
- package/dist/chunks/temporal-bucket-authoring-7hv2laOG.cjs +0 -1
- package/dist/chunks/validators-Dm7Kpz6p.cjs +0 -1
|
@@ -1006,11 +1006,6 @@ declare type DefaultDateFilter = RelativeDateFilter | FixedMonthDefaultDateFilte
|
|
|
1006
1006
|
*/
|
|
1007
1007
|
declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
|
|
1008
1008
|
role: 'detail';
|
|
1009
|
-
/**
|
|
1010
|
-
* Query transport policy for ungrouped temporal values. This marker is
|
|
1011
|
-
* projected into executable config and is never persisted authoring state.
|
|
1012
|
-
*/
|
|
1013
|
-
dateValueMode?: 'canonical' | 'formatted';
|
|
1014
1009
|
dateFormat?: DateFormatValue;
|
|
1015
1010
|
customFormat?: string;
|
|
1016
1011
|
/**
|
|
@@ -1776,11 +1771,6 @@ declare interface GroupByColumn extends BaseColumn {
|
|
|
1776
1771
|
declare interface GroupByField extends Field {
|
|
1777
1772
|
role: 'groupby';
|
|
1778
1773
|
granularity?: TimeGranularity;
|
|
1779
|
-
/**
|
|
1780
|
-
* Query transport policy for grouped temporal values. This is projected
|
|
1781
|
-
* into executable card config and is not persisted authoring state.
|
|
1782
|
-
*/
|
|
1783
|
-
dateValueMode?: 'canonical' | 'formatted';
|
|
1784
1774
|
/**
|
|
1785
1775
|
* Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
|
|
1786
1776
|
* If present, used in SELECT and GROUP BY instead of just the column name.
|
|
@@ -2182,11 +2172,6 @@ declare interface PivotByField extends Field {
|
|
|
2182
2172
|
* so existing cards need no migration.
|
|
2183
2173
|
*/
|
|
2184
2174
|
memberOrder?: PivotMemberOrder;
|
|
2185
|
-
/**
|
|
2186
|
-
* Query transport policy for grouped temporal pivot members. This is
|
|
2187
|
-
* projected into executable config and is never persisted authoring state.
|
|
2188
|
-
*/
|
|
2189
|
-
dateValueMode?: 'canonical' | 'formatted';
|
|
2190
2175
|
}
|
|
2191
2176
|
|
|
2192
2177
|
/**
|
|
@@ -2594,6 +2579,8 @@ declare type SemaphorMatrixAxisLevel = {
|
|
|
2594
2579
|
id?: string;
|
|
2595
2580
|
field: SemaphorFieldRef;
|
|
2596
2581
|
grain?: SemaphorMatrixTimeGrain;
|
|
2582
|
+
format?: TemporalBucketFormat;
|
|
2583
|
+
semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
|
|
2597
2584
|
label?: string;
|
|
2598
2585
|
subtotal?: boolean | SemaphorMatrixSubtotalOptions;
|
|
2599
2586
|
sortBy?: SemaphorMatrixAxisSortRule;
|
|
@@ -2602,7 +2589,7 @@ declare type SemaphorMatrixAxisLevel = {
|
|
|
2602
2589
|
declare type SemaphorMatrixAxisSortRule = {
|
|
2603
2590
|
direction: 'asc' | 'desc';
|
|
2604
2591
|
by: {
|
|
2605
|
-
kind: '
|
|
2592
|
+
kind: 'member';
|
|
2606
2593
|
} | {
|
|
2607
2594
|
kind: 'field';
|
|
2608
2595
|
field: SemaphorFieldRef;
|
|
@@ -2657,12 +2644,17 @@ declare type SemaphorMatrixMemberPathSegment = {
|
|
|
2657
2644
|
value: unknown;
|
|
2658
2645
|
};
|
|
2659
2646
|
|
|
2647
|
+
declare type SemaphorMatrixSemanticTemporalPresentation = {
|
|
2648
|
+
granularity: SemaphorMatrixTimeGrain;
|
|
2649
|
+
format: TemporalBucketFormat;
|
|
2650
|
+
};
|
|
2651
|
+
|
|
2660
2652
|
declare type SemaphorMatrixSortRule = {
|
|
2661
2653
|
axis: 'row' | 'column';
|
|
2662
2654
|
targetId?: string;
|
|
2663
2655
|
direction: 'asc' | 'desc';
|
|
2664
2656
|
by: {
|
|
2665
|
-
kind: '
|
|
2657
|
+
kind: 'member';
|
|
2666
2658
|
} | {
|
|
2667
2659
|
kind: 'field';
|
|
2668
2660
|
field: SemaphorFieldRef;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1544,11 +1544,6 @@ export declare type DeleteBriefingRunResponse = {
|
|
|
1544
1544
|
*/
|
|
1545
1545
|
export declare interface DetailField extends Omit<Field, 'role' | 'granularity'> {
|
|
1546
1546
|
role: 'detail';
|
|
1547
|
-
/**
|
|
1548
|
-
* Query transport policy for ungrouped temporal values. This marker is
|
|
1549
|
-
* projected into executable config and is never persisted authoring state.
|
|
1550
|
-
*/
|
|
1551
|
-
dateValueMode?: 'canonical' | 'formatted';
|
|
1552
1547
|
dateFormat?: DateFormatValue;
|
|
1553
1548
|
customFormat?: string;
|
|
1554
1549
|
/**
|
|
@@ -2376,11 +2371,6 @@ declare interface GroupByColumn extends BaseColumn {
|
|
|
2376
2371
|
export declare interface GroupByField extends Field {
|
|
2377
2372
|
role: 'groupby';
|
|
2378
2373
|
granularity?: TimeGranularity;
|
|
2379
|
-
/**
|
|
2380
|
-
* Query transport policy for grouped temporal values. This is projected
|
|
2381
|
-
* into executable card config and is not persisted authoring state.
|
|
2382
|
-
*/
|
|
2383
|
-
dateValueMode?: 'canonical' | 'formatted';
|
|
2384
2374
|
/**
|
|
2385
2375
|
* Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
|
|
2386
2376
|
* If present, used in SELECT and GROUP BY instead of just the column name.
|
|
@@ -2661,6 +2651,7 @@ declare type MatrixAxisLevelDescriptor = {
|
|
|
2661
2651
|
label: string;
|
|
2662
2652
|
field: SemaphorFieldRef;
|
|
2663
2653
|
grain?: SemaphorMatrixTimeGrain;
|
|
2654
|
+
temporalBucket?: TemporalBucketMetadata;
|
|
2664
2655
|
subtotal?: SemaphorMatrixSubtotalOptions;
|
|
2665
2656
|
};
|
|
2666
2657
|
|
|
@@ -2735,7 +2726,8 @@ declare type MatrixFormattingContext = {
|
|
|
2735
2726
|
|
|
2736
2727
|
declare type MatrixGridColumn = {
|
|
2737
2728
|
id: string;
|
|
2738
|
-
|
|
2729
|
+
/** Present only for measure and explicit total headings. */
|
|
2730
|
+
label?: string;
|
|
2739
2731
|
columnNodeId?: string;
|
|
2740
2732
|
columnPath: MatrixMemberPathSegment[];
|
|
2741
2733
|
measureInstanceId: string;
|
|
@@ -2744,7 +2736,8 @@ declare type MatrixGridColumn = {
|
|
|
2744
2736
|
|
|
2745
2737
|
declare type MatrixGridHeaderCell = {
|
|
2746
2738
|
id: string;
|
|
2747
|
-
|
|
2739
|
+
/** Present only for non-member headings and explicit total labels. */
|
|
2740
|
+
label?: string;
|
|
2748
2741
|
role: 'rowHeader' | 'columnHeader' | 'measureHeader' | 'subtotal' | 'grandTotal';
|
|
2749
2742
|
colSpan: number;
|
|
2750
2743
|
rowSpan: number;
|
|
@@ -2806,7 +2799,8 @@ declare type MatrixMemberPathSegment = {
|
|
|
2806
2799
|
instanceId: string;
|
|
2807
2800
|
fieldKey: string;
|
|
2808
2801
|
value: unknown;
|
|
2809
|
-
label
|
|
2802
|
+
/** Display-only source label for non-temporal members. */
|
|
2803
|
+
label?: string;
|
|
2810
2804
|
};
|
|
2811
2805
|
|
|
2812
2806
|
declare type MatrixNode = {
|
|
@@ -2814,7 +2808,8 @@ declare type MatrixNode = {
|
|
|
2814
2808
|
axis: 'row' | 'column';
|
|
2815
2809
|
path: MatrixMemberPathSegment[];
|
|
2816
2810
|
level: number;
|
|
2817
|
-
|
|
2811
|
+
/** Present only for non-temporal members and explicit total labels. */
|
|
2812
|
+
label?: string;
|
|
2818
2813
|
value: unknown;
|
|
2819
2814
|
parentId?: string;
|
|
2820
2815
|
hasChildren: boolean;
|
|
@@ -3069,11 +3064,6 @@ export declare interface PivotByField extends Field {
|
|
|
3069
3064
|
* so existing cards need no migration.
|
|
3070
3065
|
*/
|
|
3071
3066
|
memberOrder?: PivotMemberOrder;
|
|
3072
|
-
/**
|
|
3073
|
-
* Query transport policy for grouped temporal pivot members. This is
|
|
3074
|
-
* projected into executable config and is never persisted authoring state.
|
|
3075
|
-
*/
|
|
3076
|
-
dateValueMode?: 'canonical' | 'formatted';
|
|
3077
3067
|
}
|
|
3078
3068
|
|
|
3079
3069
|
export declare interface PivotColumnSchema {
|
|
@@ -3671,6 +3661,8 @@ declare type SemaphorMatrixAxisLevel = {
|
|
|
3671
3661
|
id?: string;
|
|
3672
3662
|
field: SemaphorFieldRef;
|
|
3673
3663
|
grain?: SemaphorMatrixTimeGrain;
|
|
3664
|
+
format?: TemporalBucketFormat;
|
|
3665
|
+
semanticTemporalPresentation?: SemaphorMatrixSemanticTemporalPresentation;
|
|
3674
3666
|
label?: string;
|
|
3675
3667
|
subtotal?: boolean | SemaphorMatrixSubtotalOptions;
|
|
3676
3668
|
sortBy?: SemaphorMatrixAxisSortRule;
|
|
@@ -3679,7 +3671,7 @@ declare type SemaphorMatrixAxisLevel = {
|
|
|
3679
3671
|
declare type SemaphorMatrixAxisSortRule = {
|
|
3680
3672
|
direction: 'asc' | 'desc';
|
|
3681
3673
|
by: {
|
|
3682
|
-
kind: '
|
|
3674
|
+
kind: 'member';
|
|
3683
3675
|
} | {
|
|
3684
3676
|
kind: 'field';
|
|
3685
3677
|
field: SemaphorFieldRef;
|
|
@@ -3736,7 +3728,7 @@ declare type SemaphorMatrixMemberPathSegment = {
|
|
|
3736
3728
|
|
|
3737
3729
|
declare type SemaphorMatrixResult = SemaphorAnalyticsResultBase & {
|
|
3738
3730
|
kind: 'matrix';
|
|
3739
|
-
schemaVersion:
|
|
3731
|
+
schemaVersion: 2;
|
|
3740
3732
|
intent?: SemaphorMatrixIntent;
|
|
3741
3733
|
shape: MatrixShape;
|
|
3742
3734
|
capabilities: MatrixCapability[];
|
|
@@ -3758,12 +3750,17 @@ declare type SemaphorMatrixResult = SemaphorAnalyticsResultBase & {
|
|
|
3758
3750
|
expansion?: MatrixExpansionResponseHints;
|
|
3759
3751
|
};
|
|
3760
3752
|
|
|
3753
|
+
declare type SemaphorMatrixSemanticTemporalPresentation = {
|
|
3754
|
+
granularity: SemaphorMatrixTimeGrain;
|
|
3755
|
+
format: TemporalBucketFormat;
|
|
3756
|
+
};
|
|
3757
|
+
|
|
3761
3758
|
declare type SemaphorMatrixSortRule = {
|
|
3762
3759
|
axis: 'row' | 'column';
|
|
3763
3760
|
targetId?: string;
|
|
3764
3761
|
direction: 'asc' | 'desc';
|
|
3765
3762
|
by: {
|
|
3766
|
-
kind: '
|
|
3763
|
+
kind: 'member';
|
|
3767
3764
|
} | {
|
|
3768
3765
|
kind: 'field';
|
|
3769
3766
|
field: SemaphorFieldRef;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";require("./validators-Dm7Kpz6p.cjs");require("./analyze-result-contract-Dxw66nUG.cjs");const E=require("./metric-comparison-DYR3RXam.cjs"),_=new Set(["previous_period","same_period_last_year","start_vs_end","target"]),R=new Set([..._,"none",""]);function l(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function L(e){const o=l(e.preferences)?e.preferences:void 0,r=o&&l(o.kpiVisualOptions)?o.kpiVisualOptions:void 0,i=o&&l(o.tableVisualOptions)?o.tableVisualOptions:void 0;return{preferences:o,kpiOptions:r,kpiComparison:r&&l(r.metricComparison)?r.metricComparison:void 0,kpiComparisonPresent:!!r&&"metricComparison"in r,tableOptions:i,tableComparison:i&&l(i.metricComparison)?i.metricComparison:void 0,tableComparisonPresent:!!i&&"metricComparison"in i}}function O(e){const o=[],r=(i,a)=>{if(Array.isArray(i)){i.forEach((n,c)=>r(n,`${a}[${c}]`));return}if(!l(i))return;const m=i.config;if(l(m)){const n=L(i),c=!!(n.kpiComparisonPresent||n.tableComparisonPresent),g=m.metricColumns,p=Array.isArray(g)?g.flatMap((s,t)=>l(s)?[{index:t,metric:s}]:[]):[];if((p.some(({metric:s})=>"comparisonType"in s)||c)&&o.push({path:a,card:i,metrics:p,malformedMetricIndexes:Array.isArray(g)?g.flatMap((s,t)=>l(s)?[]:[t]):[],malformedMetricColumns:"metricColumns"in m&&!Array.isArray(g),hasLegacyPresentation:c}),"metricColumns"in m||c)return}Object.entries(i).forEach(([n,c])=>r(c,a?`${a}.${n}`:n))};return r(e,"$"),o}const I={difference:"difference",change:"percent_change",change_difference:"both",ratio:"ratio"};function w(e,o){if(!e)return;const r=Object.fromEntries(o.flatMap(i=>typeof e[i]=="string"?[[i,e[i]]]:[]));return Object.keys(r).length?r:void 0}function M(e,o,r){if(e!==void 0){if(!l(e)){r.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:o,message:"Legacy comparison formatOptions must be an object."});return}Object.entries(e).forEach(([i,a])=>{if(i==="decimalPlaces"){(typeof a!="number"||!Number.isInteger(a)||a<0||a>6)&&r.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${o}.decimalPlaces`,message:"Legacy comparison decimalPlaces must be an integer from 0 through 6."});return}i==="type"&&(a===void 0||a==="auto")||a!==void 0&&r.push({severity:"error",code:"unsupported_comparison_format",path:`${o}.${i}`,message:`Legacy comparison format option "${i}" has no canonical presentation mapping.`})})}}function v(e,o){const r=o==="kpi"?e.calculationType:e.calculatedAs,i=o==="table"&&r===void 0?"both":I[String(r)],a=l(e.formatOptions)?e.formatOptions:void 0,m=l(e.conditionalLabels)?e.conditionalLabels:void 0,n=l(o==="kpi"?e.colorConfig:e.colors)?o==="kpi"?e.colorConfig:e.colors:void 0,c={};if(i&&(c.displayMode=i),typeof(a==null?void 0:a.decimalPlaces)=="number"&&(c.precision=a.decimalPlaces),o==="kpi"){const s=e.showArrow!==!1,t=e.showColor!==!1;c.indicatorStyle=s?t?"arrow_badge":"arrow":t?"badge":"none",c.showColor=t,(e.position==="left"||e.position==="right"||e.position==="top")&&(c.position=e.position),typeof e.conditionalLabel=="boolean"&&(c.conditionalLabel=e.conditionalLabel),typeof e.labelName=="string"&&(c.labelName=e.labelName)}else(e.indicatorStyle==="arrow_badge"||e.indicatorStyle==="arrow"||e.indicatorStyle==="badge"||e.indicatorStyle==="none")&&(c.indicatorStyle=e.indicatorStyle);const g=m?{...w(m,["increase","decrease"]),...typeof m.noChange=="string"?{neutral:m.noChange}:typeof m.neutral=="string"?{neutral:m.neutral}:{}}:void 0;g&&Object.keys(g).length&&(c.conditionalLabels=g);const p=n?{...w(n,["increase","decrease"]),...typeof n.noChange=="string"?{neutral:n.noChange}:typeof n.neutral=="string"?{neutral:n.neutral}:{}}:void 0;return p&&Object.keys(p).length&&(c.colors=p),c}function $(e){return{...E.COMPARISON_PRESENTATION_DEFAULTS,...e}}function T(e){return e.some(({metric:o})=>o.comparisonType==="previous_period"||o.comparisonType==="same_period_last_year"||o.comparisonType==="target"?!0:l(o.comparison)&&o.comparison.mode==="explicit")}function C(e){const o=e.card.config;return e.metrics.length===2&&(o.groupByColumns===void 0||Array.isArray(o.groupByColumns)&&o.groupByColumns.length===0)}function P(e,o,r,i){const a=o==="kpi"?["enabled","calculationType","formatOptions","showArrow","showColor","conditionalLabel","labelName","position","conditionalLabels","colorConfig","lowerIsBetter"]:["calculatedAs","indicatorStyle","formatOptions","colors","lowerIsBetter"];Object.keys(e).forEach(s=>{a.includes(s)||i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.${s}`,message:`Unknown legacy comparison presentation field "${s}" cannot be dropped automatically.`})});const m=o==="kpi"?"calculationType":"calculatedAs";e[m]!==void 0&&!I[String(e[m])]&&i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.${m}`,message:`Legacy comparison ${m} is unsupported.`}),o==="kpi"&&e.position!==void 0&&!["left","right","top"].includes(String(e.position))&&i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.position`,message:"Legacy comparison position is unsupported."}),o==="kpi"&&e.labelName!==void 0&&typeof e.labelName!="string"&&i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.labelName`,message:"Legacy comparison labelName must be a string."}),(o==="kpi"?[["conditionalLabels",["increase","decrease","noChange"]],["colorConfig",["increase","decrease","noChange"]]]:[["colors",["increase","decrease","neutral"]]]).forEach(([s,t])=>{if(e[s]!==void 0){if(!l(e[s])){i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.${s}`,message:`Legacy comparison ${s} must be an object.`});return}Object.entries(e[s]).forEach(([f,u])=>{t.includes(f)?typeof u!="string"&&i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.${s}.${f}`,message:`Legacy comparison ${s}.${f} must be a string.`}):i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.${s}.${f}`,message:`Unknown legacy comparison ${s} field "${f}" cannot be dropped automatically.`})})}}),(o==="kpi"?["enabled","showArrow","showColor","conditionalLabel","lowerIsBetter"]:["lowerIsBetter"]).forEach(s=>{e[s]!==void 0&&typeof e[s]!="boolean"&&i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.${s}`,message:`Legacy comparison ${s} must be a boolean.`})}),o==="table"&&e.indicatorStyle!==void 0&&!["arrow_badge","arrow","badge","none"].includes(String(e.indicatorStyle))&&i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${r}.indicatorStyle`,message:"Legacy comparison indicatorStyle is unsupported."}),M(e.formatOptions,`${r}.formatOptions`,i);const g=v(e,o);E.validateComparisonPresentationSpec(g,r).errors.forEach(s=>{i.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:s.path||r,message:s.message})})}function S(e){const o=L(e.card),r=o.kpiComparison?v(o.kpiComparison,"kpi"):void 0,i=o.tableComparison?v(o.tableComparison,"table"):void 0;return{namespaces:o,kpi:r,table:i,presentation:r||i}}function B(e){const o=l(e.preferences)?e.preferences:{},r=l(o.kpiVisualOptions)?o.kpiVisualOptions:{},i=l(r.metricComparison)?r.metricComparison:{},a=l(o.tableVisualOptions)?o.tableVisualOptions:{},m=l(a.metricComparison)?a.metricComparison:{};return r.lowerIsBetter===!0||i.lowerIsBetter===!0||m.lowerIsBetter===!0?"lower_is_better":"higher_is_better"}function D(e){switch(e.comparisonType){case"previous_period":return{mode:"explicit",spec:{kind:"previous_period"}};case"same_period_last_year":return{mode:"explicit",spec:{kind:"previous_year"}};case"target":return{mode:"explicit",spec:{kind:"target",targetValue:e.targetValue}};default:return}}function j(e){const o=l(e.preferences)?e.preferences:void 0;if(!o)return;const r=l(o.kpiVisualOptions)?o.kpiVisualOptions:void 0;r&&delete r.lowerIsBetter;const i=l(o.tableVisualOptions)?o.tableVisualOptions:void 0,a=i&&l(i.metricComparison)?i.metricComparison:void 0;a&&delete a.lowerIsBetter}function x(e){const o=O(e);if(!o.length)return{document:e,changed:!1,changes:[],diagnostics:[]};const r=[];if(o.forEach(n=>{var c,g,p,s;if(n.malformedMetricColumns&&r.push({severity:"error",code:"malformed_metric_columns",path:`${n.path}.config.metricColumns`,message:"Metric columns must be an array before comparison migration."}),n.malformedMetricIndexes.forEach(t=>{r.push({severity:"error",code:"malformed_metric_columns",path:`${n.path}.config.metricColumns[${t}]`,message:"Metric columns must contain objects before comparison migration."})}),n.metrics.forEach(({metric:t,index:f})=>{if(!("comparisonType"in t))return;const u=`${n.path}.config.metricColumns[${f}]`,d=String(t.comparisonType||"");"comparison"in t&&r.push({severity:"error",code:"conflicting_comparison_contracts",path:u,message:"Metric contains both legacy and canonical comparison configuration; resolve the conflict before migration."});const h=l(t.parameters)?t.parameters:void 0,b=h&&l(h.windowTransform)?h.windowTransform:void 0;_.has(d)&&(b==null?void 0:b.function)==="previous_period_delta"&&r.push({severity:"error",code:"conflicting_comparison_window_transform",path:u,message:"A metric cannot combine baseline comparison with previous_period_delta; resolve the authoring intent before migration."}),R.has(d)||r.push({severity:"error",code:"unsupported_comparison_type",path:`${u}.comparisonType`,message:`Unsupported legacy metric comparison type "${d}".`}),t.comparisonType==="target"&&(typeof t.targetValue!="number"||!Number.isFinite(t.targetValue))&&r.push({severity:"error",code:"invalid_target_value",path:`${u}.targetValue`,message:"Legacy target comparison requires a finite metric targetValue."}),t.comparisonType==="start_vs_end"&&r.push({severity:"error",code:"unsupported_start_vs_end",path:`${u}.comparisonType`,message:"start_vs_end is retired and cannot be migrated automatically."}),t.targetValue!==void 0&&t.comparisonType!=="target"&&r.push({severity:"warning",code:"stray_target_value",path:`${u}.targetValue`,message:"Dead non-target targetValue will be removed without changing the baseline."})}),n.hasLegacyPresentation){const{namespaces:t,kpi:f,table:u}=S(n),d=[(c=t.kpiOptions)==null?void 0:c.lowerIsBetter,(g=t.kpiComparison)==null?void 0:g.lowerIsBetter,(p=t.tableComparison)==null?void 0:p.lowerIsBetter].filter(h=>typeof h=="boolean");new Set(d).size>1&&r.push({severity:"error",code:"conflicting_legacy_polarity",path:`${n.path}.preferences`,message:"Legacy comparison polarity values disagree; resolve the conflict before migration."}),((s=t.kpiOptions)==null?void 0:s.lowerIsBetter)!==void 0&&typeof t.kpiOptions.lowerIsBetter!="boolean"&&r.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.kpiVisualOptions.lowerIsBetter`,message:"Legacy comparison lowerIsBetter must be a boolean."}),t.kpiComparisonPresent&&!t.kpiComparison&&r.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.kpiVisualOptions.metricComparison`,message:"Legacy KPI comparison presentation must be an object."}),t.tableComparisonPresent&&!t.tableComparison&&r.push({severity:"error",code:"invalid_legacy_comparison_presentation",path:`${n.path}.preferences.tableVisualOptions.metricComparison`,message:"Legacy table comparison presentation must be an object."}),"comparisonPresentation"in(t.preferences||{})&&r.push({severity:"error",code:"conflicting_comparison_presentation_contracts",path:`${n.path}.preferences.comparisonPresentation`,message:"Card contains both legacy and canonical comparison presentation; resolve the conflict before migration."}),t.kpiComparison&&typeof t.kpiComparison.enabled=="boolean"&&"metricPairComparisonEnabled"in(t.preferences||{})&&C(n)&&r.push({severity:"error",code:"conflicting_comparison_presentation_contracts",path:`${n.path}.preferences.metricPairComparisonEnabled`,message:"Card contains both legacy and canonical metric-pair enablement; resolve the conflict before migration."}),t.kpiComparison&&P(t.kpiComparison,"kpi",`${n.path}.preferences.kpiVisualOptions.metricComparison`,r),t.tableComparison&&P(t.tableComparison,"table",`${n.path}.preferences.tableVisualOptions.metricComparison`,r),f&&u&&JSON.stringify($(f))!==JSON.stringify($(u))&&r.push({severity:"error",code:"conflicting_legacy_presentation_namespaces",path:`${n.path}.preferences`,message:"KPI and table comparison presentation values disagree; resolve the conflict before migration."})}}),r.some(n=>n.severity==="error"))return{document:e,changed:!1,changes:[],diagnostics:r};const i=JSON.parse(JSON.stringify(e)),a=O(i),m=[];return a.forEach(n=>{var g;const c=B(n.card);if(n.metrics.forEach(({metric:p,index:s})=>{if(!("comparisonType"in p))return;const t=String(p.comparisonType||""),f=`${n.path}.config.metricColumns[${s}]`,u=D(p),d=["comparisonType"];delete p.comparisonType,"targetValue"in p&&(delete p.targetValue,d.push("targetValue")),"comparisonDisplay"in p&&(delete p.comparisonDisplay,d.push("comparisonDisplay")),u?p.comparison=u:delete p.comparison,_.has(t)&&(p.comparisonPolarity=c),m.push({kind:"metric",path:f,metricId:typeof p.id=="string"?p.id:void 0,legacyType:t,comparison:u,comparisonPolarity:_.has(t)?c:void 0,removedFields:d})}),j(n.card),n.hasLegacyPresentation){const{namespaces:p,presentation:s}=S(n),t=(g=p.kpiComparison)==null?void 0:g.enabled,f={...s};typeof t=="boolean"&&T(n.metrics)&&(f.showComparison=t);const u=typeof t=="boolean"&&C(n)?t:void 0,d=typeof t=="boolean"&&!T(n.metrics)&&!C(n)?["kpiVisualOptions.metricComparison.enabled"]:void 0,h=p.preferences,b=[];n.metrics.forEach(({metric:y})=>{"comparisonPolarity"in y||(y.comparisonPolarity=c,typeof y.id=="string"&&b.push(y.id))}),Object.keys(f).length&&(h.comparisonPresentation=f),u!==void 0&&(h.metricPairComparisonEnabled=u),p.kpiOptions&&delete p.kpiOptions.metricComparison,p.tableOptions&&delete p.tableOptions.metricComparison,m.push({kind:"presentation",path:`${n.path}.preferences`,comparisonPresentation:Object.keys(f).length?f:void 0,metricPairComparisonEnabled:u,comparisonPolarityMetricIds:b,intentionallyDiscardedFields:d,removedFields:[...p.kpiComparison?["kpiVisualOptions.metricComparison"]:[],...p.tableComparison?["tableVisualOptions.metricComparison"]:[]]})}}),{document:i,changed:!0,changes:m,diagnostics:r}}const k=["bar","horizontalBar","line","area","stackedArea","combo","stackedBar","stackedLine"],K=new Set(k);function V(e){return typeof e=="string"&&K.has(e)}function Y(e){return e==="detailTable"||e==="table"||e==="aggregateTable"||e==="pivotTable"||e==="custom"||V(e)}function A(e){return!!(e!=null&&e.trim())}function F(e){return A(e.sql)||A(e.normalizedPython)?"freeform":e.hasExecutableConfig?"config":"none"}const U="SEMAPHOR_CALCULATED_FIELD";function N(e,o,r){if(r&&(o==="groupby"||o==="pivotby"))return r;if(o==="metric"&&e.name==="*"&&!e.expression)return e.alias||"count";if(e.alias)return e.alias;const i=e.entityName&&e.entityName!==U?e.entityName:void 0;if(e.role==="metric"){let a=e.aggregate||"metric";if(e.expression){const m=e.expression.match(/^(COUNT|SUM|AVG|MIN|MAX|MEDIAN|DISTINCT)\s*\(/i);a=m?m[1].toLowerCase():"expr"}else a=a.toLowerCase();return i&&i!==e.name?`${i}_${e.name}_${a}`:`${e.name}_${a}`}return i&&i!==e.name?`${i}_${e.name}`:e.name}function H(e){return N(e,"detail")}function q(e){const o=e.label;return o&&e.labelCount===1&&(o===e.rawKey||!e.rawKeys.has(o))?o:e.rawKey}exports.SEMAPHOR_CARTESIAN_CHART_TYPES=k;exports.isSemaphorCartesianChartType=V;exports.resolveCanonicalDetailResultRawKey=H;exports.resolveCanonicalResultOutputKey=q;exports.resolveCanonicalResultRawKey=N;exports.resolveTemporalResultOwner=F;exports.supportsCanonicalDashboardTemporalResult=Y;exports.transformComparisonDocument=x;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";function l(t){return typeof t=="string"?t.trim().toLowerCase():""}function f(t){return String(t.column_name||t.name||t.qualifiedFieldName||"")}function g(t){return Array.from(new Set([t.column_name,t.name,t.qualifiedFieldName,t.alias].filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>e.trim())))}function d(t){const e=p(t);return e?e.includes("int")||e.includes("uint")||e.includes("bigint")||e.includes("smallint")||e.includes("tinyint")||e.includes("numeric")||e.includes("decimal")||e.includes("double")||e.includes("float")||e.includes("number")||e.includes("real")||e.includes("money")||e.includes("currency")||e.includes("percent")?"number":e.includes("timestamp")||e.includes("datetime")||e.startsWith("time")?"datetime":e.includes("date")?"date":e.includes("bool")?"boolean":"string":"unknown"}function p(t){let e=l(t),i="";for(;e&&e!==i;)i=e,e=y(e,"nullable"),e=y(e,"lowcardinality");return e}function y(t,e){const i=`${e}(`;return!t.startsWith(i)||!t.endsWith(")")?t:t.slice(i.length,-1).trim()}function A(t){const e=d(t);return e==="date"||e==="datetime"}function o(t){return A(t.dataType||t.data_type)}function u(t){const e=C(t);return e==="id"||e==="row_id"}function c(t){const e=C(t);return u(t)||e.endsWith("_id")||e.endsWith("_key")||e.endsWith("_number")}function C(t){return l(f(t)||t.name||t.alias).replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")}function m(t,e={}){const i=l(t.role);return i==="metric"||i==="measure"?!e.excludeIdentifiers||!c(t):i==="groupby"||i==="dimension"||i==="date"||i==="id"?!1:d(t.dataType||t.data_type)==="number"&&(!e.excludeIdentifiers||!c(t))}function D(t){return!m(t)&&!o(t)}function F(t){const e=new Set,i=new Set,s=new Set;for(const a of t){if(u(a))continue;const r=g(a);if(r.length!==0){if(o(a)){r.forEach(n=>i.add(n));continue}if(m(a,{excludeIdentifiers:!0})){r.forEach(n=>e.add(n));continue}r.forEach(n=>s.add(n))}}return{validMeasureCandidates:Array.from(e).sort(),validDateCandidates:Array.from(i).sort(),validDimensionCandidates:Array.from(s).sort()}}exports.buildAnalyticsCatalogFieldSummary=F;exports.getAnalyticsCatalogFieldCandidates=g;exports.getAnalyticsCatalogFieldName=f;exports.isAnalyticsCatalogDateField=o;exports.isAnalyticsCatalogDimensionField=D;exports.isAnalyticsCatalogMetricField=m;exports.isAnalyticsDateLikeDataType=A;exports.isAnalyticsMetricIdentifierField=c;exports.isAnalyticsTechnicalIdentifierField=u;exports.normalizeAnalyticsCatalogDataType=d;exports.normalizeAnalyticsCatalogName=l;
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
function c(n) {
|
|
2
|
-
return typeof n == "string" ? n.trim().toLowerCase() : "";
|
|
3
|
-
}
|
|
4
|
-
function g(n) {
|
|
5
|
-
return String(n.column_name || n.name || n.qualifiedFieldName || "");
|
|
6
|
-
}
|
|
7
|
-
function p(n) {
|
|
8
|
-
return Array.from(
|
|
9
|
-
new Set(
|
|
10
|
-
[
|
|
11
|
-
n.column_name,
|
|
12
|
-
n.name,
|
|
13
|
-
n.qualifiedFieldName,
|
|
14
|
-
n.alias
|
|
15
|
-
].filter(
|
|
16
|
-
(e) => typeof e == "string" && e.trim().length > 0
|
|
17
|
-
).map((e) => e.trim())
|
|
18
|
-
)
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
function o(n) {
|
|
22
|
-
const e = C(n);
|
|
23
|
-
return e ? e.includes("int") || e.includes("uint") || e.includes("bigint") || e.includes("smallint") || e.includes("tinyint") || e.includes("numeric") || e.includes("decimal") || e.includes("double") || e.includes("float") || e.includes("number") || e.includes("real") || e.includes("money") || e.includes("currency") || e.includes("percent") ? "number" : e.includes("timestamp") || e.includes("datetime") || e.startsWith("time") ? "datetime" : e.includes("date") ? "date" : e.includes("bool") ? "boolean" : "string" : "unknown";
|
|
24
|
-
}
|
|
25
|
-
function C(n) {
|
|
26
|
-
let e = c(n), t = "";
|
|
27
|
-
for (; e && e !== t; )
|
|
28
|
-
t = e, e = d(e, "nullable"), e = d(e, "lowcardinality");
|
|
29
|
-
return e;
|
|
30
|
-
}
|
|
31
|
-
function d(n, e) {
|
|
32
|
-
const t = `${e}(`;
|
|
33
|
-
return !n.startsWith(t) || !n.endsWith(")") ? n : n.slice(t.length, -1).trim();
|
|
34
|
-
}
|
|
35
|
-
function A(n) {
|
|
36
|
-
const e = o(n);
|
|
37
|
-
return e === "date" || e === "datetime";
|
|
38
|
-
}
|
|
39
|
-
function u(n) {
|
|
40
|
-
return A(n.dataType || n.data_type);
|
|
41
|
-
}
|
|
42
|
-
function m(n) {
|
|
43
|
-
const e = f(n);
|
|
44
|
-
return e === "id" || e === "row_id";
|
|
45
|
-
}
|
|
46
|
-
function l(n) {
|
|
47
|
-
const e = f(n);
|
|
48
|
-
return m(n) || e.endsWith("_id") || e.endsWith("_key") || e.endsWith("_number");
|
|
49
|
-
}
|
|
50
|
-
function f(n) {
|
|
51
|
-
return c(
|
|
52
|
-
g(n) || n.name || n.alias
|
|
53
|
-
).replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
|
|
54
|
-
}
|
|
55
|
-
function y(n, e = {}) {
|
|
56
|
-
const t = c(n.role);
|
|
57
|
-
return t === "metric" || t === "measure" ? !e.excludeIdentifiers || !l(n) : t === "groupby" || t === "dimension" || t === "date" || t === "id" ? !1 : o(
|
|
58
|
-
n.dataType || n.data_type
|
|
59
|
-
) === "number" && (!e.excludeIdentifiers || !l(n));
|
|
60
|
-
}
|
|
61
|
-
function h(n) {
|
|
62
|
-
return !y(n) && !u(n);
|
|
63
|
-
}
|
|
64
|
-
function D(n) {
|
|
65
|
-
const e = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set(), s = /* @__PURE__ */ new Set();
|
|
66
|
-
for (const a of n) {
|
|
67
|
-
if (m(a))
|
|
68
|
-
continue;
|
|
69
|
-
const r = p(a);
|
|
70
|
-
if (r.length !== 0) {
|
|
71
|
-
if (u(a)) {
|
|
72
|
-
r.forEach((i) => t.add(i));
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (y(a, { excludeIdentifiers: !0 })) {
|
|
76
|
-
r.forEach((i) => e.add(i));
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
r.forEach((i) => s.add(i));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return {
|
|
83
|
-
validMeasureCandidates: Array.from(e).sort(),
|
|
84
|
-
validDateCandidates: Array.from(t).sort(),
|
|
85
|
-
validDimensionCandidates: Array.from(s).sort()
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
export {
|
|
89
|
-
c as a,
|
|
90
|
-
p as b,
|
|
91
|
-
u as c,
|
|
92
|
-
m as d,
|
|
93
|
-
l as e,
|
|
94
|
-
y as f,
|
|
95
|
-
g,
|
|
96
|
-
h,
|
|
97
|
-
A as i,
|
|
98
|
-
D as j,
|
|
99
|
-
o as n
|
|
100
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const I=require("./catalog-field-grounding-Bnx-3tE0.cjs");function b(e,n){const t=e.split(".").map(r=>r.trim()),i=n.split(".").map(r=>r.trim());if(t.length===0||i.length===0||t.some(r=>!r)||i.some(r=>!r))return!1;const[s,o]=t.length<=i.length?[t,i]:[i,t],a=o.length-s.length;return s.every((r,c)=>r===o[c+a])}function C(e,n){const t=e.split("."),i=n.split("."),s=t.pop(),o=i.pop();return!!(s&&s===o&&t.length>0&&i.length>0&&b(t.join("."),i.join(".")))}function N(e){const n=e.map(i=>i.trim()).filter(Boolean);if(n.every((i,s)=>n.slice(s+1).every(o=>b(i,o))))return[...n].sort((i,s)=>s.split(".").length-i.split(".").length)[0]}function u(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function D(e){if(typeof e!="string")return"";const n=e.split(".").map(t=>t.trim());return n.length>1&&n.every(Boolean)?n.join("."):""}function v(e){if(typeof e!="string")return"";const n=e.split(".").map(t=>t.trim());return n.length>0&&n.every(Boolean)?n.join("."):""}function d(e){return typeof e=="string"?e.trim():""}function S(e,n){return e.every((t,i)=>e.slice(i+1).every(s=>n(t,s)))}function q(e,n){const t=d(e.id),i=d(e.name),s=d(n.entityId),o=d(n.entityName);return!i||!s&&!o?!1:(!s||s===t||s===i)&&(!o||o===i)}function E(e){const n=u(e.semanticContext)?e.semanticContext:void 0,t=u(e.fieldMeta)?e.fieldMeta:void 0,i=d(n==null?void 0:n.semanticDomainId),s=Array.isArray(n==null?void 0:n.selectedEntities)?n.selectedEntities.filter(g=>u(g)&&g.type==="dataset"):[];if(!!!(i||s.length>0||(t==null?void 0:t.entityType)==="dataset"))return;if(!i)return{status:"unresolved",reason:"incomplete_source_identity"};const a=d(t==null?void 0:t.entityId),r=d(t==null?void 0:t.entityName),c=!!(a||r),f=c?s.filter(g=>q(g,{entityId:a,entityName:r})):s;if(f.length>1)return{status:"unresolved",reason:"incomplete_source_identity"};if(c&&s.length>0&&f.length===0)return{status:"unresolved",reason:"divergent_source_identity"};const l=f[0],m=d(l==null?void 0:l.domainId),p=d(l==null?void 0:l.id),y=d(l==null?void 0:l.name);if(m&&m!==i)return{status:"unresolved",reason:"divergent_source_identity"};const h=p,_=y||r;return _?{status:"resolved",source:{kind:"semantic",domainId:i,datasetName:_,...h?{datasetId:h}:{}}}:{status:"unresolved",reason:"incomplete_source_identity"}}function A(e,n){const t=d(e.connectionId),i=u(e.semanticContext)?e.semanticContext:void 0,s=d(i==null?void 0:i.connectionId);if(t&&s&&t!==s)return{status:"unresolved",reason:"divergent_source_identity"};const o=t||s,a=u(e.fieldMeta)?e.fieldMeta:void 0,r=n.split(".").slice(0,-1).join("."),c=v(e.qualifiedTableName),f=v(a==null?void 0:a.qualifiedEntityName),l=[c,f,r].filter(Boolean),m=N(l);return!m&&l.length>0?{status:"unresolved",reason:"divergent_source_identity"}:!o||!m?{status:"unresolved",reason:"incomplete_source_identity"}:{status:"resolved",source:{kind:"physical",connectionId:o,tableName:m}}}function B(e,n){const t=u(e.fieldMeta)?e.fieldMeta:void 0,i=typeof(t==null?void 0:t.qualifiedFieldName)=="string"?t.qualifiedFieldName.trim():"",s=D(t==null?void 0:t.qualifiedFieldName),o=typeof e.column=="string"?e.column.trim():"",a=D(o),r=typeof e.qualifiedTableName=="string"?e.qualifiedTableName.trim():"",c=v(e.qualifiedTableName);if(i&&!s||n&&r&&!c||o.includes(".")&&!a)return{status:"unresolved",reason:"incomplete_field_identity"};const f=a.split("."),l=a?f[f.length-1]:o,m=n&&c&&l?`${c}.${l}`:"",p=[s,a,m].filter(Boolean);if(!S(p,C))return{status:"unresolved",reason:"divergent_field_identity"};const y=a||s||m;return y?{status:"resolved",qualifiedFieldName:y}:{status:"unresolved",reason:"incomplete_field_identity"}}function F(e){if(!u(e))return{status:"ineligible",reason:"invalid_input"};if(e.kind==="global-date")return{status:"eligible",kind:"global_date"};const n=I.normalizeAnalyticsCatalogDataType(e.dataType);if(n!=="date"&&n!=="datetime")return{status:"ineligible",reason:"non_date_filter"};const t=u(e.fieldMeta)?e.fieldMeta:void 0,i=I.normalizeAnalyticsCatalogDataType(t==null?void 0:t.dataType);if((t==null?void 0:t.dataType)!==void 0&&i!=="date"&&i!=="datetime")return{status:"ineligible",reason:"non_date_filter"};if(e.customFilterPreferences)return{status:"ineligible",reason:"custom_filter"};if(e.targetColumns!==void 0&&(!Array.isArray(e.targetColumns)||e.targetColumns.length>0))return{status:"ineligible",reason:"multi_target_filter"};const s=E(e),o=B(e,s===void 0);if(o.status==="unresolved")return{status:"ineligible",reason:o.reason};const a=s||A(e,o.qualifiedFieldName);return a.status==="resolved"?{status:"eligible",kind:"field_date",qualifiedFieldName:o.qualifiedFieldName,source:a.source}:{status:"ineligible",reason:a.reason}}function T(e){if(!u(e)||e.kind!=="filter"||!u(e.filter))return{status:"ineligible",reason:"invalid_input"};const n=F(e.filter);return n.status==="ineligible"?n:n.kind==="field_date"&&u(e.compatibility)&&e.compatibility.source==="cardInlineFilter"?{status:"ineligible",reason:"card_inline_filter"}:n}function k(e){return T(e).status==="eligible"}exports.isComparisonCapableDashboardDateInputDefinition=k;exports.qualifiedEntityIdentitiesReferToSameEntity=b;exports.qualifiedFieldIdentitiesReferToSameField=C;exports.resolveDashboardDateComparisonFilterDefinition=F;exports.resolveDashboardDateComparisonInputDefinition=T;exports.selectMostQualifiedCompatibleEntityIdentity=N;exports.semanticDatasetMatchesFieldCoordinates=q;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
function o(t) {
|
|
2
|
-
return `compat-filter:${t}`;
|
|
3
|
-
}
|
|
4
|
-
function r(t) {
|
|
5
|
-
return `compat-control:${t}`;
|
|
6
|
-
}
|
|
7
|
-
function a(t, n) {
|
|
8
|
-
return `compat-inline-filter:${t}:${n}`;
|
|
9
|
-
}
|
|
10
|
-
function e(t, n) {
|
|
11
|
-
return `compat-card-control:${t}:${n}`;
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
r as a,
|
|
15
|
-
a as b,
|
|
16
|
-
e as c,
|
|
17
|
-
o as g
|
|
18
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";function o(t){return`compat-filter:${t}`}function r(t){return`compat-control:${t}`}function a(t,n){return`compat-inline-filter:${t}:${n}`}function e(t,n){return`compat-card-control:${t}:${n}`}exports.getCardControlCompatInputId=e;exports.getCardInlineFilterCompatInputId=a;exports.getDashboardControlCompatInputId=r;exports.getDashboardFilterCompatInputId=o;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";var bt=Object.defineProperty;var It=(e,r,t)=>r in e?bt(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var x=(e,r,t)=>It(e,typeof r!="symbol"?r+"":r,t);const E=require("./pivot-result-lifecycle-BiJepH5S.cjs"),pe=require("../value-format-preferences/index.cjs"),te=require("./validators-Dm7Kpz6p.cjs");require("./analyze-result-contract-Dxw66nUG.cjs");const V=require("./saved-temporal-bucket-format-Gfbh4IiP.cjs"),D=require("./pivot-result-identity-CRUokNgm.cjs"),ke=require("./temporal-bucket-contract-anl4h-vg.cjs"),W=require("./temporal-bucket-Dnj8qT9l.cjs"),Ct=require("./catalog-field-grounding-Bnx-3tE0.cjs"),z=require("./canonical-result-keys-Drc2x-lf.cjs");require("./temporal-bucket-authoring-7hv2laOG.cjs");const Fe=require("./raw-temporal-contract-CxbRFwnd.cjs"),Ae=`import pandas as pd
|
|
2
|
-
df = pd.DataFrame(data) # 'data' contains the query result
|
|
3
|
-
result = df.to_dict('records') # must return 'result' as [dict] type
|
|
4
|
-
`;function Tt(e){return{databaseName:(e==null?void 0:e.lastSelectedDatabase)||"",schemaName:(e==null?void 0:e.lastSelectedSchema)||"",tableName:(e==null?void 0:e.lastSelectedTable)||"",datamodelId:(e==null?void 0:e.datamodelId)||""}}function q(e){return e===Ae?"":e}function Q(e,r=e.config){return z.resolveTemporalResultOwner({hasExecutableConfig:V.hasValidCardConfig(r),sql:e.sql,normalizedPython:q(e.python||"")})}class Be extends Error{constructor(t){super(`ambiguous_temporal_grain: Temporal field "${t}" has saved presentation but no valid grouping grain. Reconfigure and resave the field.`);x(this,"code","ambiguous_temporal_grain");x(this,"fieldId");this.name="AmbiguousGroupedTemporalGrainError",this.fieldId=t}}function wt(e){return V.hasSavedTemporalBucketPresentation(e)||e.semanticTemporalPresentation!=null}function Pe(e){if(!e.id||!["date","datetime"].includes(Ct.normalizeAnalyticsCatalogDataType(e.dataType)))return;if(te.isSemaphorTimeGrain(e.granularity))return e;if(!wt(e))return;if(!V.readSavedTemporalBucketFormat({fieldId:e.id,dataType:e.dataType,granularity:e.granularity,format:e.format,dateFormat:e.dateFormat,customFormat:e.customFormat}).ok)throw new Be(e.id);return{...e,granularity:"day"}}function ye(e){const r=e.cardConfig??e.card.config;if(!r||!e.supportsCardType(e.card.type)||z.resolveTemporalResultOwner({hasExecutableConfig:V.hasValidCardConfig(r),sql:e.card.sql,normalizedPython:q(e.card.python||"")})!=="config")return;const t=[...(r.groupByColumns||[]).map(n=>({...n,role:"groupby"})),...e.card.type==="pivotTable"?(r.pivotByColumns||[]).map(n=>({...n,role:"pivotby"})):[]];return{cardType:e.card.type,cardConfig:r,fields:t.flatMap(n=>{const o=Pe(n);return o?[o]:[]})}}function Et(e){return ye({...e,supportsCardType:r=>r==="table"})}function $t(e){return ye({...e,supportsCardType:z.isSemaphorCartesianChartType})}function De(e){return ye({...e,supportsCardType:r=>r!=="detailTable"&&z.supportsCanonicalDashboardTemporalResult(r)})}const Se=new WeakMap;function Me(e){const r=Se.get(e);if(r)return r;const t=E.parseCanonicalPivotResultTransport(e);return Se.set(e,t),t}function G(e,r){const t=e??[],n=r??[];return t.length===n.length&&t.every((o,a)=>o===n[a])}function Oe(e,r){const t=E.derivePivotResultContractExpectations({groupByFields:r.groupByColumns,metricFields:r.metricColumns,pivotByFields:r.pivotByColumns,detailFields:r.detailColumns});return G(e.expectedRoleFieldIds.groupby,t.expectedRoleFieldIds.groupby)&&G(e.expectedRoleFieldIds.metric,t.expectedRoleFieldIds.metric)&&G(e.expectedRoleFieldIds.pivotby,t.expectedRoleFieldIds.pivotby)&&G(e.expectedRoleFieldIds.detail,t.expectedRoleFieldIds.detail)&&G(e.expectedMetricAliases,t.expectedMetricAliases)}class kt extends Error{constructor(t){super(`missing_resolved_temporal_format: Saved presentation is missing temporal field "${t.fieldId}" for card "${t.cardId}". Resave the report or Briefing to capture the current dashboard presentation.`);x(this,"code","missing_resolved_temporal_format");x(this,"deliveryBlocking",!0);x(this,"dashboardId");x(this,"cardId");x(this,"fieldId");this.name="MissingResolvedTemporalPresentationError",this.dashboardId=t.dashboardId,this.cardId=t.cardId,this.fieldId=t.fieldId}}class ce extends Error{constructor(t){super(`missing_temporal_bucket_metadata: Result column "${t.columnKey}" is missing temporal bucket metadata for field "${t.fieldId}" on card "${t.cardId}". Refresh the report and resave the delivery if the problem persists.`);x(this,"code","missing_temporal_bucket_metadata");x(this,"deliveryBlocking",!0);x(this,"cardId");x(this,"fieldId");x(this,"columnKey");this.name="MissingTemporalResultMetadataError",this.cardId=t.cardId,this.fieldId=t.fieldId,this.columnKey=t.columnKey}}class O extends Error{constructor(t,n,o){super(`${t}: ${n}`);x(this,"deliveryBlocking",!0);this.code=t,this.context=o,this.name="DashboardTemporalBoundaryError"}}function Ke(e,r){return`${r}:${e}`}function Ne(e){var r,t;return(t=(r=e.presentation)==null?void 0:r.byFieldRole)==null?void 0:t.get(Ke(e.fieldId,e.role))}function St(e){var t;if((((t=e.cardConfig.metricColumns)==null?void 0:t.length)||0)>0||e.binding.role!=="metric")return!1;const r=e.binding.outputKey||e.binding.rawKey;return e.columns.some(n=>{var o;return n.role==="measure"&&n.dataType==="number"&&(n.key===r||((o=n.pivotIdentity)==null?void 0:o.metricId)===te.SEMAPHOR_GENERATED_COUNT_METRIC_ID)})}function _t(e,r){return!r||r.byColumnKey.size===0?e.map(t=>({...t})):e.map(t=>{const n={...t};return r.byColumnKey.forEach((o,a)=>{Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=he({value:t[a],presentation:o}))}),n})}function xt(e){var p;if(!e.result||typeof e.result!="object")return!1;const r=e.result;if(e.expectedResultOwner!==void 0&&r.resultOwner!==e.expectedResultOwner)return!1;const t=e.activation;if(!t||t.cardType!=="pivotTable"&&t.fields.length===0)return!0;const n=Array.isArray(r.records)?r.records.length:void 0,o=(t.cardConfig.pivotByColumns||[]).map(d=>d.id);if(t.cardType==="pivotTable")try{const d=Me(r);if(!Oe(d.pivotResultContract,t.cardConfig))return!1;if(d.pivotResultState==="loaded_empty")return!0;const v=d.columns.filter(C=>d.pivotResultContract.columnKinds[C.key]==="pivot_metric"),h=v.filter(C=>{var g;return(((g=C.pivotIdentity)==null?void 0:g.members.length)??0)>0}),I=v.length>0&&v.every(C=>{var g;return((g=C.pivotIdentity)==null?void 0:g.members.length)===0&&D.isPivotEmptyTupleAllowed({expectedPivotFieldIds:o,classification:d.pivotResultContract.columnClassifications[C.key]})});return t.fields.every(C=>{var S;const g=D.resolveQueryColumnKeyMapEntry(d.columnKeyMap,C.id,C.role);if(!g)return!1;if(g.role==="pivotby"){const F=h.flatMap(L=>{var j;return((j=L.pivotIdentity)==null?void 0:j.members.filter(vt=>vt.fieldId===C.id))??[]});return F.length===0?I:F.every(L=>{var j;return((j=L.temporalBucket)==null?void 0:j.granularity)===C.granularity})}const $=d.columns.find(F=>F.key===(g.outputKey||g.rawKey));return((S=$==null?void 0:$.temporalBucket)==null?void 0:S.granularity)===C.granularity})}catch(d){if(d instanceof E.PivotResultLifecycleError)return!1;throw d}if(n===0)return!0;const a=r.columnKeyMap;if(!a||!a.byRole||typeof a.byRole!="object"||Array.isArray(a.byRole))return!1;const i=[...(t.cardConfig.groupByColumns||[]).map(d=>({field:d,role:"groupby"})),...(t.cardConfig.metricColumns||[]).map(d=>({field:d,role:"metric"})),...(t.cardConfig.pivotByColumns||[]).map(d=>({field:d,role:"pivotby"})),...(t.cardConfig.detailColumns||[]).map(d=>({field:d,role:"detail"}))],c=new Set(i.map(({field:d,role:v})=>`${v}:${d.id}`)),m=new Map((r.columns||[]).map(d=>[d.key,d])),l=D.resolveQueryColumnKeyMapEntry(a,te.SEMAPHOR_GENERATED_COUNT_METRIC_ID,"metric");if(l){if(!St({cardConfig:t.cardConfig,binding:l,columns:r.columns||[]}))return!1;c.add(`metric:${te.SEMAPHOR_GENERATED_COUNT_METRIC_ID}`)}const s=Object.entries(a.byRole).flatMap(([d,v])=>Object.keys(v||{}).map(h=>`${d}:${h}`));if(s.length!==c.size||s.some(d=>!c.has(d))||i.some(({field:d,role:v})=>!D.resolveQueryColumnKeyMapEntry(a,d.id,v)))return!1;try{D.requirePivotResultColumnIdentities((r.columns||[]).map(d=>({key:d.key,pivotIdentity:d.pivotIdentity})),{expectedPivotFieldIds:o,columnClassifications:r.columnMetadata})}catch(d){if(d instanceof D.PivotResultIdentityError)return!1;throw d}const u=(r.columns||[]).filter(d=>{const v=d.pivotIdentity;return!!(v&&v.members.length>0)});return n!==0&&((p=t.cardConfig.pivotByColumns)!=null&&p.length)&&u.length===0?!1:t.fields.every(d=>{var I;const v=D.resolveQueryColumnKeyMapEntry(a,d.id,d.role);if(!v)return!1;if(v.role==="pivotby"){const g=u.flatMap($=>{var S;return((S=$.pivotIdentity)==null?void 0:S.members)??[]}).filter($=>$.fieldId===d.id);return u.length===0?n===0:g.length>0&&g.every($=>{var S;return((S=$.temporalBucket)==null?void 0:S.granularity)===d.granularity})}const h=m.get(v.outputKey||v.rawKey);return((I=h==null?void 0:h.temporalBucket)==null?void 0:I.granularity)===d.granularity})}function re(e,r){const t=e.semanticTemporalPresentation,n=r==="card"?{format:e.format,dateFormat:e.dateFormat}:{format:t==null?void 0:t.format};if(!V.hasSavedTemporalBucketPresentation(n))return;const o=V.readSavedTemporalBucketFormat({fieldId:e.id,dataType:e.dataType,granularity:r==="semantic"?t==null?void 0:t.granularity:e.granularity,...r==="card"?{format:e.format,dateFormat:e.dateFormat,customFormat:e.customFormat}:{format:t==null?void 0:t.format}});if(!o.ok)throw new Error(o.error.code);return o.format}function Rt(e,r,t=pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES){const n=re(e,"card"),o=re(e,"semantic"),a=e.semanticTemporalPresentation;return W.resolveTemporalBucketPresentation({metadata:r,...n?{cardFormat:n}:{},...o&&a?{semanticFormat:{granularity:a.granularity,format:o}}:{},locale:t.locale,styles:{dateStyle:t.dateStyle,dateTime:t.dateTime}})}function Ve(e,r=W.DEFAULT_RESOLVED_TEMPORAL_STYLE_SET,t="en-US"){var i;const n=re(e,"card"),o=((i=e.semanticTemporalPresentation)==null?void 0:i.granularity)===e.granularity?re(e,"semantic"):void 0,a=n&&n.presentation.mode!=="auto"?n:o&&o.presentation.mode!=="auto"?o:{presentation:{mode:"auto"}};return a.presentation.mode==="auto"?{type:"temporal_bucket",locale:t,presentation:{mode:"auto",styles:r}}:{type:"temporal_bucket",locale:t,presentation:a.presentation}}function Ft(e){const r=e.activation;if(!r)return{byColumnKey:new Map,byFieldId:new Map,byFieldRole:new Map};if(e.resultRowCount===0)return{byColumnKey:new Map,byFieldId:new Map,byFieldRole:new Map};const t=new Map((e.columns||[]).map(l=>[l.key,l])),n=new Map,o=new Map,a=new Map,i=r.fields.reduce((l,s)=>(l.set(s.id,(l.get(s.id)||0)+1),l),new Map),c=(l,s)=>{a.set(Ke(l.id,l.role),s),i.get(l.id)===1&&o.set(l.id,s)},m=(l,s,u)=>{if(s.granularity!==l.granularity)throw new O("invalid_temporal_bucket_metadata",`Result identity "${u}" declares ${s.granularity} buckets for active ${l.granularity} field "${l.id}".`,{cardId:e.card.id,fieldId:l.id,columnKey:u});const p=e.executionSnapshot&&e.dashboardId?E.findResolvedTemporalBucketFormat({snapshot:e.executionSnapshot,scope:{dashboardId:e.dashboardId,cardId:e.card.id,...e.attachmentIndex!==void 0?{attachmentIndex:e.attachmentIndex}:{}},target:{kind:"field",fieldId:l.id,role:l.role}}):void 0;if(e.executionSnapshot&&!p)throw new kt({dashboardId:e.dashboardId,cardId:e.card.id,fieldId:l.id});return{columnKey:u,fieldId:l.id,role:l.role,metadata:s,resolved:p?W.resolveTemporalBucketPresentation({metadata:s,cardFormat:p,locale:p.locale,...p.presentation.mode==="auto"?{styles:p.presentation.styles}:{}}):Rt(l,s,e.valueFormatPreferences??pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES)}};for(const l of r.fields){const s=D.resolveQueryColumnKeyMapEntry(e.columnKeyMap,l.id,l.role);if(!s){if(e.columns===void 0&&e.columnKeyMap===void 0&&(e.resultRowCount===void 0||e.resultRowCount===0))continue;throw new O("missing_temporal_column_binding",`Activated temporal field "${l.id}" has no authoritative result-column binding.`,{cardId:e.card.id,fieldId:l.id,columnKey:l.name})}if(s.role==="pivotby"){const h=(e.columns||[]).filter(S=>S.pivotIdentity!==void 0),I=h.flatMap(S=>{var F;return(((F=S.pivotIdentity)==null?void 0:F.members)||[]).filter(L=>L.fieldId===l.id).map(L=>({column:S,member:L}))});if(I.length===0){if(h.length===0&&(e.card.type!=="pivotTable"||e.resultRowCount===0))continue;throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:s.outputKey||s.rawKey})}const C=I[0];if(!C.member.temporalBucket)throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:C.column.key});const g=ke.validateTemporalBucketMetadata(C.member.temporalBucket);if(!g.ok||!g.value)throw new O("invalid_temporal_bucket_metadata",g.ok?`Pivot result column "${C.column.key}" has no validated temporal bucket metadata.`:g.error.message,{cardId:e.card.id,fieldId:l.id,columnKey:C.column.key});const $=m(l,g.value,C.column.key);for(const{column:S,member:F}of I)if(!F.temporalBucket||JSON.stringify(F.temporalBucket)!==JSON.stringify(C.member.temporalBucket))throw new O("invalid_temporal_bucket_metadata",`Pivot result column "${S.key}" has contradictory bucket metadata for field "${l.id}".`,{cardId:e.card.id,fieldId:l.id,columnKey:S.key});c(l,$);continue}const u=s.outputKey||s.rawKey,p=t.get(u);if(!(p!=null&&p.temporalBucket))throw new ce({cardId:e.card.id,fieldId:l.id,columnKey:u});const d=ke.validateTemporalBucketResultColumn(p,{metadataRequired:!0});if(!d.ok||!d.value)throw new O("invalid_temporal_bucket_metadata",d.ok?`Result column "${u}" has no validated temporal bucket metadata.`:d.error.message,{cardId:e.card.id,fieldId:l.id,columnKey:u});const v=m(l,d.value,u);n.set(u,v),c(l,v)}return{byColumnKey:n,byFieldId:o,byFieldRole:a}}function At(e){var t,n;const r=e.role?Ne({presentation:e.presentation,fieldId:e.fieldId,role:e.role}):(n=(t=e.presentation)==null?void 0:t.byFieldId)==null?void 0:n.get(e.fieldId);return r?he({value:e.value,presentation:r}):e.value===null||e.value===void 0?"":String(e.value)}function he(e){if(e.value===null||e.value===void 0)return"(Blank)";if(typeof e.value!="string")throw new O("invalid_temporal_bucket_value",`Canonical temporal column "${e.presentation.columnKey}" must contain a string or null.`,{fieldId:e.presentation.fieldId,columnKey:e.presentation.columnKey});try{return W.formatTemporalBucket({value:e.value,metadata:e.presentation.metadata,format:e.presentation.resolved.format})}catch(r){throw r instanceof W.TemporalBucketContractError?new O(r.code,r.message,{fieldId:e.presentation.fieldId,columnKey:e.presentation.columnKey}):r}}class _ extends Error{constructor(r,t,n){super(`${r}: ${t}`),this.code=r,this.context=n,Object.setPrototypeOf(this,_.prototype),this.name="RawTemporalPresentationBoundaryError"}}function Le(){return{type:"raw_temporal",presentation:{mode:"auto"}}}function Bt(e){if(e.locale||e.relative||e.timezone&&e.timezone!=="auto"||e.sourceTimezone&&e.sourceTimezone!=="auto"||e.prefix||e.suffix)throw new _("invalid_raw_temporal_format","Activated raw temporal presentation contains unsupported locale, relative-time, timezone, prefix, or suffix settings.")}function ge(e){const r=e.format;if((r==null?void 0:r.type)==="date"&&(Bt(r),r.pattern))return{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:r.pattern}};if(r)throw new _("invalid_raw_temporal_format",`Raw temporal detail field "${e.id}" has an incompatible authored format.`,{fieldId:e.id});if(e.dateFormat==="custom"){if(!e.customFormat)throw new _("invalid_raw_temporal_format",`Raw temporal detail field "${e.id}" selects a custom pattern but has no customFormat.`,{fieldId:e.id});return{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:e.customFormat}}}return e.dateFormat?{type:"raw_temporal",presentation:{mode:"pattern",dialect:"semaphor_tokens",pattern:e.dateFormat}}:Le()}function ae(e){if(e!=null&&e.useRelativeTime)return;if(!e)return Le();if(e.useCustomFormat&&!e.customFormat)throw new _("invalid_raw_temporal_format","Declared SQL temporal presentation selects a custom pattern but has no customFormat.");const r=e.useCustomFormat&&e.customFormat?e.customFormat:e.format,t=e.timezone,n=e.sourceTimezone,o=t&&t!=="auto"?{timezone:t}:void 0,a=n&&n!=="auto"?{sourceTimezone:n}:void 0;return r?{type:"raw_temporal",...o,...a,presentation:{mode:"pattern",dialect:"date_fns",pattern:r}}:{type:"raw_temporal",...o,...a,presentation:{mode:"auto"}}}function Pt(e){const r=ae(e.settings);if(!r)throw new _("invalid_raw_temporal_format","Relative-time SQL presentation does not have an absolute date preview.");const t=e.valueKind??"date",n={kind:"raw_temporal",valueKind:t},o=e.value??(t==="date"?"2023-05-15":t==="wall_datetime"?"2023-05-15T14:30:45":"2023-05-15T14:30:45Z"),a=E.prepareRawTemporalFormatter({metadata:n,format:E.resolveRawTemporalFormat({format:r,preferences:e.preferences,calendar:{tz:e.calendarTimezone}})})(o);if(!a.ok)throw new _("invalid_raw_temporal_format",a.diagnostic.message);return a.text}function ze(e){var t;const r=e.effectiveCardConfig??e.card.config;return Q(e.card,r)==="freeform"&&!!((t=e.card.sql)!=null&&t.trim())&&!q(e.card.python||"").trim()}function Dt(){return{activatedColumnKeys:new Set,byColumnKey:new Map,byFieldId:new Map}}function ve(e){var r;return e.cardType==="detailTable"&&e.resultOwner==="config"?(((r=e.effectiveCardConfig)==null?void 0:r.detailColumns)||[]).filter(t=>t.dateValueMode==="canonical"):[]}function ue(e,r){return e===void 0?{kind:"invalid",error:r}:{kind:"invalid",error:e instanceof _?e:e instanceof E.RawTemporalFormatContractError?new _(e.code,e.message,r.context):new _(r.code,e instanceof Error?e.message:r.message,r.context)}}function Mt(e){const r=ve(e);if(r.length===0)return{kind:"inactive"};if(!e.result)return{kind:"loading"};const{records:t,columns:n,columnKeyMap:o}=e.result;if(!Array.isArray(t)||!Array.isArray(n)||!o)return ue(void 0,new _("missing_raw_temporal_result_contract","Activated raw temporal detail results require records, columns, and columnKeyMap atomically."));try{const a=new Map,i=new Map;for(const m of r){const l=D.resolveQueryColumnKeyMapEntry(o,m.id,"detail");if(!l||l.role!=="detail"||typeof l.rawKey!="string"||l.rawKey.trim().length===0||l.outputKey!==void 0&&(typeof l.outputKey!="string"||l.outputKey.trim().length===0))throw new _("missing_raw_temporal_column_binding",`Raw temporal detail field "${m.id}" has no valid exact detail result binding.`,{fieldId:m.id});const s=l.outputKey??l.rawKey,u=n.find(h=>h.key===s);if(!u)throw new _("missing_raw_temporal_result_contract",`Raw temporal result column "${s}" is absent.`,{fieldId:m.id,columnKey:s});const p=Fe.validateRawTemporalResultColumn(u,{metadataRequired:!0});if(!p)throw new _("invalid_raw_temporal_metadata",`Raw temporal result column "${s}" has no metadata.`,{fieldId:m.id,columnKey:s});const d=E.resolveRawTemporalFormat({format:ge(m),preferences:e.preferences,calendar:e.calendar}),v={fieldId:m.id,columnKey:s,metadata:p,format:d,formatValue:E.prepareRawTemporalFormatter({metadata:p,format:d})};for(let h=0;h<t.length;h+=1)if(!Object.prototype.hasOwnProperty.call(t[h],s)||t[h][s]===void 0)throw new _("missing_raw_temporal_result_contract",`Raw temporal result row ${h} is missing column "${s}".`,{fieldId:m.id,columnKey:s});a.set(s,v),i.set(m.id,v)}const c={activatedColumnKeys:new Set(a.keys()),byColumnKey:a,byFieldId:i};return t.length===0?{kind:"loaded_empty",presentation:c}:{kind:"loaded_valid",presentation:c}}catch(a){return ue(a,new _("invalid_raw_temporal_metadata","Activated raw temporal result metadata is invalid."))}}function Ue(e){var n,o;const r=e.effectiveCardConfig??e.card.config,t=Q(e.card,r);return e.card.type==="detailTable"&&t==="config"?ve({cardType:e.card.type,resultOwner:t,effectiveCardConfig:r}).length>0&&e.records!==void 0&&(!e.columns||!e.columnKeyMap)?{kind:"invalid",error:new _("missing_raw_temporal_result_contract","Activated raw temporal detail results require records, columns, and columnKeyMap atomically.")}:_e(Mt({cardType:e.card.type,resultOwner:t,effectiveCardConfig:r,result:e.records===void 0||!e.columns||!e.columnKeyMap?void 0:{records:e.records,columns:e.columns,columnKeyMap:e.columnKeyMap},preferences:e.preferences,calendar:e.calendar}),e):_e(Ot({resultOwner:t,sql:e.card.sql,normalizedPython:q(e.card.python||""),records:e.records,columns:e.columns,columnSettings:(o=(n=e.card.preferences)==null?void 0:n.tablePrefs)==null?void 0:o.columnSettingsMap,preferences:e.preferences,calendar:e.calendar}),e)}function qe(e){var n,o;const r=e.effectiveCardConfig??e.card.config,t=Q(e.card,r);return ve({cardType:e.card.type,resultOwner:t,effectiveCardConfig:r}).length>0?!0:ze(e)?Object.values(((o=(n=e.card.preferences)==null?void 0:n.tablePrefs)==null?void 0:o.columnSettingsMap)||{}).some(a=>{var i;return a.type==="date"&&!((i=a.dateFormat)!=null&&i.useRelativeTime)}):!1}function _e(e,r){if(!r.executionSnapshot||e.kind==="inactive"||e.kind==="loading"||e.kind==="invalid")return e;if(!r.dashboardId)return{kind:"invalid",error:new _("missing_raw_temporal_result_contract","A dashboard ID is required to resolve the captured raw temporal presentation.")};const t=new Map,n=new Map;for(const o of e.presentation.activatedColumnKeys){const a=E.findResolvedRawTemporalFormat({snapshot:r.executionSnapshot,scope:{dashboardId:r.dashboardId,cardId:r.card.id,...r.attachmentIndex!==void 0?{attachmentIndex:r.attachmentIndex}:{}},target:{kind:"column",columnKey:o}});if(!a)return{kind:"invalid",error:new E.MissingResolvedRawTemporalFormatError(o)};const i=e.presentation.byColumnKey.get(o);if(!i)continue;const c={...i,format:a,formatValue:E.prepareRawTemporalFormatter({metadata:i.metadata,format:a})};t.set(i.columnKey,c),i.fieldId&&n.set(i.fieldId,c)}return{...e,presentation:{activatedColumnKeys:e.presentation.activatedColumnKeys,byColumnKey:t,byFieldId:n}}}function Ot(e){var t,n;if(e.resultOwner!=="freeform"||!((t=e.sql)!=null&&t.trim())||(n=e.normalizedPython)!=null&&n.trim())return{kind:"inactive"};const r=Object.entries(e.columnSettings||{}).filter(([,o])=>{var a;return o.type==="date"&&!((a=o.dateFormat)!=null&&a.useRelativeTime)});if(r.length===0)return{kind:"inactive"};if(!e.records)return{kind:"loading"};try{const o=new Map,a=new Set(r.map(([l])=>l)),i=new Map,c=[...e.columns||[]];for(const[l,s]of r){const u=ae(s.dateFormat);if(!u)continue;const p=E.classifyDeclaredSqlTemporalColumn({columnKey:l,values:e.records.map(I=>{if(!Object.prototype.hasOwnProperty.call(I,l))throw new _("missing_raw_temporal_result_contract",`Declared SQL temporal column "${l}" is absent from a physical result row.`,{columnKey:l});const C=I[l];return C===null||typeof C=="string"?C:String(C)})});if(i.set(l,p),p.status!=="classified")continue;let d=c.findIndex(I=>I.key===l);if(e.columns&&d<0)throw new _("missing_raw_temporal_result_contract",`Classified SQL temporal column "${l}" is absent from result columns.`,{columnKey:l});d<0&&(d=c.length,c.push({key:l,name:l,label:l,role:"dimension",dataType:"string"}));const v={...c[d],role:"date",dataType:p.metadata.valueKind==="date"?"date":"datetime",rawTemporal:p.metadata};Fe.validateRawTemporalResultColumn(v,{metadataRequired:!0}),c[d]=v;const h=E.resolveRawTemporalFormat({format:u,preferences:e.preferences,calendar:e.calendar});o.set(l,{columnKey:l,metadata:p.metadata,format:h,formatValue:E.prepareRawTemporalFormatter({metadata:p.metadata,format:h})})}const m={...Dt(),activatedColumnKeys:a,byColumnKey:o};return e.records.length===0?{kind:"loaded_empty",presentation:m,adaptedColumns:c,sqlClassifications:i}:{kind:"loaded_valid",presentation:m,adaptedColumns:c,sqlClassifications:i}}catch(o){return ue(o,new _("invalid_raw_temporal_format","Declared SQL raw temporal presentation is invalid."))}}function Kt(e){if(e.value!==null&&typeof e.value!="string")return{value:e.value,label:String(e.value),result:{ok:!1,text:String(e.value),diagnostic:{code:"invalid_raw_temporal_value",message:`Raw temporal column "${e.presentation.columnKey}" must contain a string or null.`}}};const r=e.presentation.formatValue(e.value);return{value:e.value,label:r.text,result:r}}function Nt(e){if(!e.result||typeof e.result!="object")return!1;const r=e.result;if(e.expectedResultOwner!==void 0&&r.resultOwner!==e.expectedResultOwner)return!1;if(!qe({card:e.card,effectiveCardConfig:e.effectiveCardConfig}))return!0;if(!Array.isArray(r.records))return!1;const t=Ue({card:e.card,effectiveCardConfig:e.effectiveCardConfig,records:r.records,columns:r.columns,columnKeyMap:r.columnKeyMap,preferences:pe.DEFAULT_RESOLVED_VALUE_FORMAT_PREFERENCES,calendar:{tz:"UTC"}});return t.kind==="inactive"||t.kind==="loaded_empty"||t.kind==="loaded_valid"}function xe(e){return!e||typeof e!="object"?!1:Array.isArray(e.cards)}function je(e){if(!e)return null;if(typeof e=="string")try{const r=JSON.parse(e);return xe(r)?r:null}catch{return null}return xe(e)?e:null}function be(e){var r;return(r=e==null?void 0:e.cards)!=null&&r.length?e.activeCardId&&e.cards.find(t=>t.id===e.activeCardId)||e.cards[0]:null}function Vt(e){var t;const r=(e==null?void 0:e.frameObject)??((t=e==null?void 0:e.visual)==null?void 0:t.frameObject);return be(je(r))}function ie(e){if(!(e!=null&&e.expectedType))return"table";const r=Array.isArray(e.expectedType)?e.expectedType[0]:e.expectedType;return zt(r)?r:"table"}const Lt=["bar","horizontalBar","line","area","stackedArea","combo","pie","doughnut","radar","polarArea","bubble","scatter","stackedBar","stackedLine","table","pivotTable","aggregateTable","detailTable","tableBuilder","kpi","pyramid","tornado","range","text","map","funnel","bullet","heatmap","treemap","custom"];function zt(e){return Lt.includes(e)}function Y(e){const r=e.position;if(typeof r=="number")return r;if(typeof r=="string"){const t=r.match(/\d+/);if(t){const n=Number(t[0]);if(!Number.isNaN(n))return n}}return Number.POSITIVE_INFINITY}function H(e){if(typeof e=="number")return{kind:"number",start:e,end:e};if(typeof e=="string"){const r=e.match(/^(\d+)$/);if(r){const o=Number(r[1]);return{kind:"number",start:o,end:o}}const t=e.match(/^(\d+)-(\d+)$/);if(t){const o=Number(t[1]),a=Number(t[2]);return{kind:"range",start:o,end:a}}const n=e.match(/^(\d+)\+$/);if(n)return{kind:"dynamic",start:Number(n[1]),end:Number.POSITIVE_INFINITY}}return null}function Ge(e){return!e||e.length===0?void 0:[...e].sort((t,n)=>Y(t)-Y(n))[0]}function Ie(e,r){if(!e||e.length===0)return;const t=[],n=[],o=[];e.forEach(s=>{const u=H(s.position);u&&(u.kind==="number"?t.push(s):u.kind==="range"?n.push(s):u.kind==="dynamic"&&o.push(s))});const a=t.find(s=>{const u=H(s.position);return(u==null?void 0:u.kind)==="number"&&u.start===r});if(a)return a;const c=n.sort((s,u)=>Y(s)-Y(u)).find(s=>{const u=H(s.position);return(u==null?void 0:u.kind)==="range"&&r>=u.start&&r<=u.end});if(c)return c;const l=o.map(s=>({slot:s,parsed:H(s.position)})).filter(s=>{var u;return((u=s.parsed)==null?void 0:u.kind)==="dynamic"}).sort((s,u)=>{var p,d;return(((p=s.parsed)==null?void 0:p.start)??0)-(((d=u.parsed)==null?void 0:d.start)??0)}).filter(s=>{var u;return r>=(((u=s.parsed)==null?void 0:u.start)??0)}).sort((s,u)=>{var p,d;return(((p=u.parsed)==null?void 0:p.start)??0)-(((d=s.parsed)==null?void 0:d.start)??0)})[0];return l==null?void 0:l.slot}function Ut(e,r){const t=Ie(e,r);if(t)return ie(t)}function He(e,r){var n;const t=(n=e==null?void 0:e.customCardPreferences)==null?void 0:n.slotIndex;return typeof t=="number"?t:r}function fe(e,r){var t;if(!((t=e==null?void 0:e.customCardPreferences)!=null&&t.url))return!1;if(e.type==="custom"||e.customCardPreferences.visualType==="multiple"||e.customCardPreferences.dataInputCardIds||(e.customCardPreferences.minInputs||0)>1||(e.customCardPreferences.maxInputs||0)>1)return!0;if(r&&r.length>1){const n=r.filter(o=>{var a;return typeof((a=o.customCardPreferences)==null?void 0:a.slotIndex)=="number"});if(n.length>1&&n.some(o=>o.id!==e.id))return!0}return!1}function We(e){const r=[];let t=-1;e.forEach((n,o)=>{const a=He(n,o);a>t&&(t=a),r[a]=n??null});for(let n=0;n<=t;n+=1)n in r||(r[n]=null);return r}function qt(e){return e.map((r,t)=>!r.customCardPreferences||r.customCardPreferences.slotIndex===t?r:{...r,customCardPreferences:{...r.customCardPreferences,slotIndex:t}})}function jt(e){const r=Ge(e);if(r)return ie(r)}function Gt(e,r,t){if(!e)return;const n=Ut(t,r);return e.type==="custom"&&n?n:e.type}function Ht(e,r,t){var v;const n={dataSource:t.dataSource,connectionId:t.connectionId,lastSelectedDatabase:t.lastSelectedDatabase,lastSelectedSchema:t.lastSelectedSchema,lastSelectedTable:t.lastSelectedTable,lastSelectedDatamodelId:t.lastSelectedDatamodelId,datamodelId:t.datamodelId},o={type:"component",visualType:"multiple",url:r.url,componentName:r.name,icon:r.icon,pluginChartType:r.chartType,minInputs:r.minInputs,maxInputs:r.maxInputs},a=r.minInputs||1,c=e.map(h=>({slot:h,parsed:H(h.position)})).filter(h=>h.parsed!==null).reduce((h,I)=>{const C=I.parsed.end;return Number.isFinite(C)?Math.max(h,C):h},-1),m=Math.max(a,c+1),l=Ge(e),s=l?Y(l):0;let u=!1;const p=[];for(let h=0;h<m;h+=1){const I=Ie(e,h),C=ie(I),g=!u&&h===s,$=h,S={...n,id:V.v4(),title:(g?l==null?void 0:l.label:I==null?void 0:I.label)||`Tab ${h+1}`,tabTitle:(g?l==null?void 0:l.label:I==null?void 0:I.label)||`Tab ${h+1}`,description:(g?l==null?void 0:l.description:I==null?void 0:I.description)||"",type:C,sql:"",preferences:{onClickFilter:[{columnIndex:0,expression:""}]},...g&&{customCardPreferences:{...o,slotIndex:$}},...!g&&{customCardPreferences:{slotIndex:$}}};g&&(u=!0),p.push(S)}if(!u&&p.length>0){const h=((v=p[0].customCardPreferences)==null?void 0:v.slotIndex)??0;p[0]={...p[0],type:p[0].type,customCardPreferences:{...o,slotIndex:h}}}const d=p.findIndex(h=>{var I;return!!((I=h.customCardPreferences)!=null&&I.url)});if(d>0){const[h]=p.splice(d,1);p.unshift(h)}return p}function Ye({frame:e,configCard:r,isMultiInputVisual:t}){var o;if(!t||!r)return e.cards;const n=(o=r.customCardPreferences)==null?void 0:o.dataInputCardIds;return n?Object.keys(n).sort((a,i)=>Number(a)-Number(i)).map(a=>{var c;const i=(c=n[a])==null?void 0:c.cardId;return e.cards.find(m=>m.id===i)||null}):e.cards}function Qe(e,r){return r&&fe(r,e.cards)?r:e.cards.find(t=>fe(t,e.cards))||null}function Je(e,r){var o,a;if(!e)return null;const t=r==null?void 0:r.visualType;if(t)return t;if(r!=null&&r.slots&&r.slots.length>0||((r==null?void 0:r.minInputs)||0)>1||((r==null?void 0:r.maxInputs)||0)>1||((r==null?void 0:r.dataInputs)||[]).length>1)return"multiple";const n=(o=e.customCardPreferences)==null?void 0:o.visualType;return n||((a=e.customCardPreferences)!=null&&a.dataInputCardIds?"multiple":null)}function Wt(e){return e.visualType==="multiple"||e.slots&&e.slots.length>0||(e.minInputs||0)>1||(e.maxInputs||0)>1||(e.dataInputs||[]).length>1?"multiple":"single"}function Yt(e){return Array.isArray(e)?{records:e}:e}class Z extends Error{constructor(t){const n=t.cardId?`card "${t.cardId}"`:t.sheetId?`sheet "${t.sheetId}"`:`dashboard "${t.dashboardId}"`;super(`Unable to resolve ${n} while capturing report presentation. Refresh the authoring page and select the attachment again.`);x(this,"code","temporal_snapshot_target_not_found");x(this,"selection");this.name="TemporalSnapshotSelectionError",this.selection=t}}function Qt(e,r){var o;const t=[],n=new Map;for(const a of r){if(a.dashboardId!==e.id)throw new Z(a);const i=(e.sheets||[]).filter(m=>!a.sheetId||a.sheetId===m.id);if(a.sheetId&&i.length===0)throw new Z(a);let c=!a.cardId;for(const m of i){const l=(((o=m.document)==null?void 0:o.sections)||[]).flatMap(p=>p.type==="table"||p.type==="chart"?[p.card]:[]),s=(m.frames||[]).flatMap(p=>Jt(p,a.cardId));s.length>0&&(c=!0);const u=[...s,...(m.cards||[]).filter(p=>!a.cardId||a.cardId===p.id),...l.filter(p=>!a.cardId||a.cardId===p.id)];for(const p of u){c=!0;const d=n.get(a.attachmentIndex)??new Set;d.has(p.id)||(d.add(p.id),n.set(a.attachmentIndex,d),t.push({card:p,...a.attachmentIndex!==void 0?{attachmentIndex:a.attachmentIndex}:{}}))}}if(!c)throw new Z(a)}return t}function Jt(e,r){var i;const t=r?(i=e.cards)==null?void 0:i.find(c=>c.id===r):be(e);if(!t)return[];const n=Qe(e,t),o=(e.cards||[]).filter(c=>{var m;return typeof((m=c.customCardPreferences)==null?void 0:m.slotIndex)=="number"}).length>1,a=n!=null&&(Je(n)==="multiple"||o);return!n||!a?[t]:We(Ye({frame:e,configCard:n,isMultiInputVisual:!0})).filter(c=>c!==null)}function Zt(e){return Qt(e.dashboard,e.selections).flatMap(({card:r,attachmentIndex:t})=>{var s,u,p,d;const n=((s=e.resolveCardConfig)==null?void 0:s.call(e,r))??r.config,o=De({card:r,cardConfig:n}),a={dashboardId:e.dashboard.id,cardId:r.id,...t!==void 0?{attachmentIndex:t}:{}},i=o?o.fields.map(v=>({scope:a,target:{kind:"field",fieldId:v.id,role:v.role},format:Ve(v,{dateStyle:e.valueFormatPreferences.dateStyle,dateTime:{...e.valueFormatPreferences.dateTime}},e.valueFormatPreferences.locale)})):[],c=[],m=Q(r,n),l=q(r.python||"");if(r.type==="detailTable"&&m==="config"){const v=(n==null?void 0:n.detailColumns)||[],h=[...((n==null?void 0:n.groupByColumns)||[]).map(g=>({field:g,role:"groupby"})),...((n==null?void 0:n.metricColumns)||[]).map(g=>({field:g,role:"metric"})),...((n==null?void 0:n.pivotByColumns)||[]).map(g=>({field:g,role:"pivotby"})),...v.map(g=>({field:g,role:"detail"}))],I=new Map,C=new Set(h.map(({field:g,role:$})=>z.resolveCanonicalResultRawKey(g,$)));for(const{field:g}of h){const $=g.label;$&&I.set($,(I.get($)||0)+1)}for(const g of v){if(g.dateValueMode!=="canonical")continue;const $=z.resolveCanonicalDetailResultRawKey(g),S=g.label,F=z.resolveCanonicalResultOutputKey({label:S,labelCount:S&&I.get(S)||0,rawKey:$,rawKeys:C});if(!F)throw new Z(a);c.push({scope:a,target:{kind:"column",columnKey:F},format:E.resolveRawTemporalFormat({format:ge(g),preferences:e.valueFormatPreferences,calendar:e.calendar})})}}else if(m==="freeform"&&((u=r.sql)!=null&&u.trim())&&!l.trim())for(const[v,h]of Object.entries(((d=(p=r.preferences)==null?void 0:p.tablePrefs)==null?void 0:d.columnSettingsMap)||{})){if(h.type!=="date")continue;const I=ae(h.dateFormat);I&&c.push({scope:a,target:{kind:"column",columnKey:v},format:E.resolveRawTemporalFormat({format:I,preferences:e.valueFormatPreferences,calendar:e.calendar})})}return[...i,...c]})}function Xt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function B(e,r,t){return Xt(e)?e:(t.push({field:r,message:"Expected an object."}),{})}function P(e,r,t,n){const o=new Set(t);Object.keys(e).forEach(a=>{o.has(a)||n.push({field:`${r}.${a}`,message:"Unexpected property."})})}function K(e,r,t,n,o={}){if(e==null)return;if(typeof e!="string"){n.push({field:r,message:"Expected a string."});return}const a=o.trim===!1?e:e.trim();if(!o.allowEmpty&&a.length===0){n.push({field:r,message:"Expected a non-empty string."});return}if(a.length>t){n.push({field:r,message:`Expected ${t} characters or fewer.`});return}return a}function Ce(e,r,t){const n=K(e,r,2e3,t);if(n)try{return new URL(n),n}catch{t.push({field:r,message:"Expected an absolute URL."});return}}function Re(e,r,t){const n=B(e,r,t);P(n,r,["tokens","components"],t);const o={};if(n.tokens!==void 0){const a=B(n.tokens,`${r}.tokens`,t);P(a,`${r}.tokens`,["color","typography"],t);const i={};if(a.color!==void 0){const c=B(a.color,`${r}.tokens.color`,t),m=["background","foreground","muted","mutedForeground","border","primary","primaryForeground","positive","negative","warning","info"];P(c,`${r}.tokens.color`,m,t);const l={};m.forEach(s=>{const u=K(c[s],`${r}.tokens.color.${s}`,120,t);u!==void 0&&(l[s]=u)}),i.color=l}if(a.typography!==void 0){const c=B(a.typography,`${r}.tokens.typography`,t);P(c,`${r}.tokens.typography`,["fontFamily","monoFontFamily"],t);const m=K(c.fontFamily,`${r}.tokens.typography.fontFamily`,500,t,{allowEmpty:!0}),l=K(c.monoFontFamily,`${r}.tokens.typography.monoFontFamily`,500,t,{allowEmpty:!0});i.typography={...m!==void 0?{fontFamily:m}:{},...l!==void 0?{monoFontFamily:l}:{}}}o.tokens=i}if(n.components!==void 0){const a=B(n.components,`${r}.components`,t);if(P(a,`${r}.components`,["chart"],t),a.chart!==void 0){const i=B(a.chart,`${r}.components.chart`,t);P(i,`${r}.components.chart`,["palette"],t);let c;i.palette!==void 0&&(Array.isArray(i.palette)?i.palette.length>20?t.push({field:`${r}.components.chart.palette`,message:"Expected 20 colors or fewer."}):c=i.palette.map((m,l)=>K(m,`${r}.components.chart.palette.${l}`,120,t)).filter(m=>m!==void 0):t.push({field:`${r}.components.chart.palette`,message:"Expected an array."})),o.components={chart:c?{palette:c}:{}}}}return o}function er(e,r){const t="presentation.appearance",n=B(e,t,r);P(n,t,["version","schemes"],r);const o={};if(n.version!==void 0&&(typeof n.version!="number"||!Number.isFinite(n.version)?r.push({field:`${t}.version`,message:"Expected a number."}):o.version=n.version),n.schemes!==void 0){const a=B(n.schemes,`${t}.schemes`,r);P(a,`${t}.schemes`,["light","dark"],r),o.schemes={...a.light!==void 0?{light:Re(a.light,`${t}.schemes.light`,r)}:{},...a.dark!==void 0?{dark:Re(a.dark,`${t}.schemes.dark`,r)}:{}}}return o}function tr(e,r){const t="presentation.brandOverrides",n=B(e,t,r);P(n,t,["brandName","logoUrl","link"],r);const o=K(n.brandName,`${t}.brandName`,200,r),a=Ce(n.logoUrl,`${t}.logoUrl`,r),i=K(n.link,`${t}.link`,120,r);return{...o!==void 0?{brandName:o}:{},...a!==void 0?{logoUrl:a}:{},...i!==void 0?{link:i}:{}}}function rr(e,r){const t="presentation.fragments",n=B(e,t,r),o=["preHeaderText","headerBannerHtml","signatureHtml","footerHtml","disclaimerHtml","unsubscribeUrl"];P(n,t,o,r);const a={};return o.forEach(i=>{const c=i==="unsubscribeUrl"?Ce(n[i],`${t}.${i}`,r):K(n[i],`${t}.${i}`,i==="preHeaderText"?200:5e3,r,{trim:i==="preHeaderText"});c!==void 0&&(a[i]=c)}),a}function nr(e){const r=[],t={};if(e.appearance!==void 0&&(t.appearance=er(e.appearance,r)),e.brandOverrides!==void 0&&(t.brandOverrides=tr(e.brandOverrides,r)),e.fragments!==void 0&&(t.fragments=rr(e.fragments,r)),e.viewUrl!==void 0){const n=Ce(e.viewUrl,"presentation.viewUrl",r);n!==void 0&&(t.viewUrl=n)}return{value:t,issues:r}}const Ze=["SUN","MON","TUE","WED","THU","FRI","SAT"],or=new Map(Ze.map((e,r)=>[e,r])),ar={cadence:"weekly",hour:9,minute:0,weekdays:[1]};function ir(e){if(typeof e!="string"||e.length===0||e!==e.trim()||/^(?:(?:UTC|GMT)[+-]|[+-]\d{2}:\d{2}$)/.test(e))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}function lr(e){return Number.isInteger(e.minute)&&e.minute>=0&&e.minute<=59&&Number.isInteger(e.hour)&&e.hour>=0&&e.hour<=23}function Xe(e){if(e.length===0)return null;const r=[...e].sort((t,n)=>t-n);return r.some((t,n)=>!Number.isInteger(t)||t<0||t>6||n>0&&t===r[n-1])?null:r}function cr(e){if(!lr(e))throw new Error("Choose a valid schedule time.");const r=`${e.minute} ${e.hour}`;switch(e.cadence){case"daily":return`${r} * * *`;case"weekly":{const t=Xe(e.weekdays);if(!t)throw new Error("Choose at least one weekday.");return`${r} * * ${t.map(n=>Ze[n]).join(",")}`}case"twice_monthly":return`${r} 1,15 * *`;case"monthly":return`${r} 1 * *`}}function et(e){if(typeof e!="string"||e.length===0)return{ok:!1,issue:"Choose a supported schedule."};if(e!==e.trim()||e.includes(" "))return{ok:!1,issue:"Choose a supported schedule."};const r=e.split(" ");if(r.length!==5)return{ok:!1,issue:"Choose a supported schedule."};const[t,n,o,a,i]=r;if(!/^(0|[1-9]\d?)$/.test(t)||!/^(0|[1-9]\d?)$/.test(n))return{ok:!1,issue:"Choose a supported schedule."};const c=Number(t),m=Number(n);if(c>59||m>23||a!=="*")return{ok:!1,issue:"Choose a supported schedule."};if(o==="*"&&i==="*")return{ok:!0,value:{cadence:"daily",hour:m,minute:c,weekdays:[]}};if(o==="*"&&i!=="*"){const s=i.split(",").map(d=>or.get(d));if(s.some(d=>d===void 0))return{ok:!1,issue:"Choose a supported schedule."};const u=s,p=Xe(u);return!p||p.some((d,v)=>d!==u[v])?{ok:!1,issue:"Choose a supported schedule."}:{ok:!0,value:{cadence:"weekly",hour:m,minute:c,weekdays:p}}}return o==="1,15"&&i==="*"?{ok:!0,value:{cadence:"twice_monthly",hour:m,minute:c,weekdays:[]}}:o==="1"&&i==="*"?{ok:!0,value:{cadence:"monthly",hour:m,minute:c,weekdays:[]}}:{ok:!1,issue:"Choose a supported schedule."}}function dr(e,r,t){return new Intl.DateTimeFormat(t,{hour:"numeric",minute:"2-digit",timeZone:"UTC"}).format(new Date(Date.UTC(2020,0,1,e,r)))}function sr(e,r){var t;if(e==="UTC")return"UTC";try{return((t=new Intl.DateTimeFormat(r,{timeZone:e,timeZoneName:"longGeneric"}).formatToParts(new Date(Date.UTC(2020,0,1))).find(o=>o.type==="timeZoneName"))==null?void 0:t.value)??e}catch{return null}}function mr(e,r,t="en-US"){const n=et(e);if(!n.ok)return null;try{const o=dr(n.value.hour,n.value.minute,t),a=sr(r,t);if(!a)return null;switch(n.value.cadence){case"daily":return`Daily at ${o} ${a}`;case"weekly":{const i=new Intl.DateTimeFormat(t,{weekday:"long",timeZone:"UTC"});return`${n.value.weekdays.map(m=>i.format(new Date(Date.UTC(2023,0,1+m)))).join(" and ")} at ${o} ${a}`}case"twice_monthly":return`On the 1st and 15th at ${o} ${a}`;case"monthly":return`Monthly on the 1st at ${o} ${a}`}}catch{return null}}const ur=new Set(["table","aggregateTable","pivotTable","detailTable"]),fr=new Set(["bar","horizontalBar","line","area","stackedArea","combo","pie","doughnut","radar","polarArea","bubble","scatter","stackedBar","stackedLine","table","pivotTable","aggregateTable","matrixTable","detailTable","kpi","pyramid","tornado","range","map","funnel","bullet","heatmap","treemap","custom"]);function pr(e){var n,o,a;const r=fr.has(e.type)&&(e.type!=="custom"||!!((n=e.customCardPreferences)!=null&&n.url));return e.type==="text"||!r||V.isCardUnconfigured(e)?{formats:[],defaultFormat:null}:{formats:tt({cardType:e.type,allowDownload:(o=e.preferences)==null?void 0:o.allowDownload}),defaultFormat:rt({cardType:e.type,allowDownload:(a=e.preferences)==null?void 0:a.allowDownload})}}function tt(e){return e.allowDownload===!1?["pdf"]:["pdf","csv"]}function rt(e){return ur.has(e.cardType)&&e.allowDownload!==!1?"csv":"pdf"}function yr(e){return e!=null&&e.role?e.type==="tenant"?e.role==="POWER_USER":["AUTHOR","ADMIN","SUPER_ADMIN"].includes(e.role):!1}function hr(e){return e.canCreate?[...e.scheduledReportAvailable?["scheduled_report"]:[],...e.analyticalBriefingsEnabled?["analytical_briefing"]:[]]:[]}function nt(e){const r=(e==null?void 0:e.channels)??[];return r.length===1&&r[0]==="EMAIL"}function ot(e){return e.body.type==="generated_analysis"?"Analytical briefing":e.body.type==="custom_message"&&e.attachments.length>0&&nt(e.deliveryConfig)?e.scheduleExpr?"Scheduled report":"On-demand report":"Plain briefing"}function gr(e){const r=ot(e),t=r==="Scheduled report"||r==="On-demand report"?"report":"briefing";return{typeLabel:r,noun:t,pluralNoun:t==="report"?"reports":"briefings"}}const ne="BRIEFING",at=["markdown","html"],oe=["markdown"],X=20,y={name:500,description:2e3,instruction:5e4,customMessage:5e4,contentTitle:500,contentSummary:2e4,contentText:5e3,contentSql:5e4,contentItem:2e3,contentCell:500,attachmentTitle:500,presentationAudience:1e3,presentationTone:500,presentationFormat:2e3,id:500},R={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:y.contentCell,maxParagraphCharacters:y.contentText,maxFindingCharacters:y.contentText,maxListItems:100,maxKpiTiles:8};function it(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const r=e;if(typeof r.value!="number"||!Number.isFinite(r.value))return!1;const t=r.target;if(t===null||typeof t!="object"||Array.isArray(t))return!1;const n=t;return(n.kind==="metric"&&typeof n.metricId=="string"&&!!n.metricId.trim()||n.kind==="column"&&typeof n.columnKey=="string"&&!!n.columnKey.trim()||n.kind==="matrix_measure"&&typeof n.measureId=="string"&&!!n.measureId.trim())&&E.parseResolvedNumericCanonicalFormat(r.format).ok}function lt(e){return e==null?"":it(e)?E.formatNumericCanonical(e.value,e.format):String(e)}function vr(e){return[e.delta,e.percentChange].filter(r=>r!=null).map(lt).filter(Boolean).join(" / ")}const ct=new Set(at),br=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),de={maxToolCalls:{min:1,max:100},maxPlanningIterations:{min:1,max:10},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},Ir=new Set(["letter","legal","a4","a3","tabloid"]),Cr=new Set(["portrait","landscape"]),Tr=new Set([",",";"," "]),wr=new Set(["current","all"]),Er=new Set(["concise","balanced","detailed"]),$r=new Set(["info","positive","warning","critical"]),kr=new Set(["text","number","currency","percent","date","boolean"]),Sr=new Set(["left","center","right"]),_r=["pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","allowDownload","theme"];class J extends Error{constructor(t){super(t.map(n=>`${n.field}: ${n.message}`).join("; "));x(this,"issues");this.name="BriefingContractError",this.issues=t}}function dt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function f(e,r,t){e.push({field:r,message:t})}function k(e,r,t){return dt(e)?e:(f(t,r,"Expected an object."),{})}function b(e,r,t,n){const o=new Set(t);Object.keys(e).forEach(a=>{o.has(a)||f(n,r?`${r}.${a}`:a,`Unexpected field "${a}".`)})}function T(e,r,t,n){if(typeof e!="string")return f(n,r,"Expected a string."),"";const o=e.trim();return o?(o.length>t&&f(n,r,`Must be ${t} characters or fewer.`),o):(f(n,r,"Required value cannot be empty."),"")}function w(e,r,t,n){if(e==null)return;if(typeof e!="string"){f(n,r,"Expected a string.");return}const o=e.trim();if(o)return o.length>t&&f(n,r,`Must be ${t} characters or fewer.`),o}function xr(e,r,t,n){if(typeof e!="string")return f(n,r,"Expected a string."),"";const o=e.trim();return o.length>t&&f(n,r,`Must be ${t} characters or fewer.`),o}function Rr(e,r,t){if(e!=null){if(!Number.isInteger(e)||Number(e)<0){f(t,r,"Expected a non-negative integer.");return}return Number(e)}}function A(e,r,t,n={}){if(e==null)return n.required?(f(t,r,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(e))return f(t,r,"Expected an array."),n.required?[]:void 0;const o=[];return e.forEach((a,i)=>{const c=T(a,`${r}.${i}`,y.id,t);c&&!o.includes(c)&&o.push(c)}),n.required&&o.length===0&&f(t,r,"Expected at least one evidence id."),o.length>0||n.required?o:void 0}function U(e,r,t,n){return e==null?r:typeof e!="boolean"?(f(n,t,"Expected a boolean."),r):e}function Fr(e,r){return e==null?"ACTIVE":e==="ACTIVE"||e==="PAUSED"||e==="DISABLED"?e:(f(r,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function Ar(e){return e.includes("@")&&e.includes(".")&&!e.includes(" ")}function st(e,r){if(e==null)return{type:"project"};const t=k(e,"source",r),n=t.type;return n==="project"?(b(t,"source",["type"],r),{type:"project"}):n==="dashboard"?(b(t,"source",["type","dashboardId"],r),{type:"dashboard",dashboardId:T(t.dashboardId,"source.dashboardId",y.id,r)}):(f(r,"source.type","Expected project or dashboard."),{type:"project"})}function mt(e,r){const t=k(e,"body",r),n=t.type;return n==="generated_analysis"?(b(t,"body",["type","instruction"],r),{type:"generated_analysis",instruction:T(t.instruction,"body.instruction",y.instruction,r)}):n==="custom_message"?(b(t,"body",["type","message"],r),{type:"custom_message",message:xr(t.message,"body.message",y.customMessage,r)}):n==="none"?(b(t,"body",["type"],r),{type:"none"}):(f(r,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function Br(e,r){if(e==null)return[...oe];if(!Array.isArray(e))return f(r,"presentation.artifactFormats","Expected an array."),[...oe];if(e.length===0)return f(r,"presentation.artifactFormats","Choose at least one artifact format."),[];const t=[];return e.forEach((n,o)=>{if(typeof n!="string"||!ct.has(n)){f(r,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}t.includes(n)||t.push(n)}),t}function ut(e,r){if(e==null)return{artifactFormats:[...oe],includeEvidence:!0,includeSql:!0};const t=k(e,"presentation",r);b(t,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format","appearance","brandOverrides","fragments","viewUrl"],r);const n={artifactFormats:Br(t.artifactFormats,r),includeEvidence:U(t.includeEvidence,!0,"presentation.includeEvidence",r),includeSql:U(t.includeSql,!0,"presentation.includeSql",r)},o=w(t.audience,"presentation.audience",y.presentationAudience,r),a=w(t.tone,"presentation.tone",y.presentationTone,r),i=w(t.format,"presentation.format",y.presentationFormat,r);o&&(n.audience=o),a&&(n.tone=a),i&&(n.format=i);const c=nr(t);return c.issues.forEach(m=>f(r,m.field,m.message)),Object.assign(n,c.value),n}function Pr(e,r,t){return Array.isArray(e)?(e.length===0&&f(t,r,"Expected at least one item."),e.length>R.maxListItems&&f(t,r,`Must have ${R.maxListItems} items or fewer.`),e.slice(0,R.maxListItems).map((n,o)=>T(n,`${r}.${o}`,y.contentItem,t)).filter(Boolean)):(f(t,r,"Expected an array."),[])}function Dr(e,r,t){const n=k(e,r,t);if(n.kind==="metric")return b(n,r,["kind","metricId"],t),{kind:"metric",metricId:T(n.metricId,`${r}.metricId`,y.id,t)};if(n.kind==="column")return b(n,r,["kind","columnKey"],t),{kind:"column",columnKey:T(n.columnKey,`${r}.columnKey`,y.id,t)};if(n.kind==="matrix_measure")return b(n,r,["kind","measureId"],t),{kind:"matrix_measure",measureId:T(n.measureId,`${r}.measureId`,y.id,t)};f(t,`${r}.kind`,"Expected metric, column, or matrix_measure.")}function ft(e,r,t){if(e===null||typeof e!="object"||Array.isArray(e))return;const n=k(e,r,t);if(!Object.prototype.hasOwnProperty.call(n,"target")&&!Object.prototype.hasOwnProperty.call(n,"format"))return;b(n,r,["value","target","format"],t),(typeof n.value!="number"||!Number.isFinite(n.value))&&f(t,`${r}.value`,"Expected a finite number.");const o=Dr(n.target,`${r}.target`,t),a=E.parseResolvedNumericCanonicalFormat(n.format);if(a.ok||a.issues.forEach(i=>f(t,i.path==="$"?`${r}.format`:`${r}.format.${i.path}`,i.message)),!(typeof n.value!="number"||!Number.isFinite(n.value)||!o||!a.ok))return{value:n.value,target:o,format:a.value}}function M(e,r,t){if(typeof e=="string")return e;if(typeof e=="number"){if(!Number.isFinite(e)){f(t,r,"Expected a finite number.");return}return e}const n=ft(e,r,t);if(n)return n;f(t,r,"Expected a string, number, or structured numeric value.")}function Mr(e,r,t){if(e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean")return typeof e=="string"&&e.length>y.contentCell?(f(t,r,`Must be ${y.contentCell} characters or fewer.`),e.slice(0,y.contentCell)):typeof e=="number"&&!Number.isFinite(e)?(f(t,r,"Expected a finite number."),null):e;const n=ft(e,r,t);return n||(f(t,r,"Expected a string, number, boolean, structured numeric value, or null."),null)}function Or(e,r,t){if(!Array.isArray(e))return f(t,r,"Expected an array."),[];e.length===0&&f(t,r,"Expected at least one column."),e.length>R.maxTableColumns&&f(t,r,`Must have ${R.maxTableColumns} columns or fewer.`);const n=new Set;return e.slice(0,R.maxTableColumns).map((o,a)=>{const i=`${r}.${a}`,c=k(o,i,t);b(c,i,["key","label","kind","align"],t);const m=T(c.key,`${i}.key`,y.id,t);m&&(n.has(m)&&f(t,`${i}.key`,"Column key must be unique."),n.add(m));const l=T(c.label,`${i}.label`,y.contentTitle,t),s=N(c.kind,`${i}.kind`,kr,"text, number, currency, percent, date, or boolean",t),u=N(c.align,`${i}.align`,Sr,"left, center, or right",t);return{key:m,label:l,...s?{kind:s}:{},...u?{align:u}:{}}})}function Kr(e,r,t,n){if(!Array.isArray(e))return f(n,r,"Expected an array."),[];e.length>R.maxTableRows&&f(n,r,`Must have ${R.maxTableRows} rows or fewer.`);const o=new Set(t.map(a=>a.key).filter(Boolean));return e.slice(0,R.maxTableRows).map((a,i)=>{const c=`${r}.${i}`,m=k(a,c,n);return Object.keys(m).forEach(l=>{o.has(l)||f(n,`${c}.${l}`,`Unexpected table cell "${l}".`)}),Object.fromEntries(t.map(l=>[l.key,Mr(m[l.key]??null,`${c}.${l.key}`,n)]))})}function Nr(e,r,t){const n=`content.blocks.${r}`,o=k(e,n,t),a=o.type;if(a==="heading"){b(o,n,["type","text","level","evidenceIds"],t);const i=o.level===void 0||o.level===null?void 0:o.level===2||o.level===3?o.level:void 0;o.level!==void 0&&o.level!==null&&i===void 0&&f(t,`${n}.level`,"Expected 2 or 3.");const c=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"heading",text:T(o.text,`${n}.text`,y.contentTitle,t),...i?{level:i}:{},...c?{evidenceIds:c}:{}}}if(a==="paragraph"){b(o,n,["type","text","evidenceIds"],t);const i=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"paragraph",text:T(o.text,`${n}.text`,y.contentText,t),...i?{evidenceIds:i}:{}}}if(a==="finding"){b(o,n,["type","title","text","severity","evidenceIds"],t);const i=w(o.title,`${n}.title`,y.contentTitle,t),c=N(o.severity,`${n}.severity`,$r,"info, positive, warning, or critical",t);return{type:"finding",...i?{title:i}:{},text:T(o.text,`${n}.text`,y.contentText,t),...c?{severity:c}:{},evidenceIds:A(o.evidenceIds,`${n}.evidenceIds`,t,{required:!0})??[]}}if(a==="bullets"||a==="actions"||a==="limitations"){b(o,n,["type","title","items","evidenceIds"],t);const i=w(o.title,`${n}.title`,y.contentTitle,t),c=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:a,...i?{title:i}:{},items:Pr(o.items,`${n}.items`,t),...c?{evidenceIds:c}:{}}}if(a==="metric"){b(o,n,["type","label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const i=M(o.value,`${n}.value`,t)??"";i===""&&f(t,`${n}.value`,"Expected a non-empty string, number, or structured numeric value.");const c=o.previousValue===void 0||o.previousValue===null?o.previousValue:M(o.previousValue,`${n}.previousValue`,t),m=o.delta===void 0||o.delta===null?o.delta:M(o.delta,`${n}.delta`,t),l=o.percentChange===void 0||o.percentChange===null?o.percentChange:M(o.percentChange,`${n}.percentChange`,t),s=w(o.unit,`${n}.unit`,y.contentTitle,t),u=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"metric",label:T(o.label,`${n}.label`,y.contentTitle,t),value:i,...c!==void 0?{previousValue:c}:{},...m!==void 0?{delta:m}:{},...l!==void 0?{percentChange:l}:{},...s?{unit:s}:{},...u?{evidenceIds:u}:{}}}if(a==="kpi_grid"){b(o,n,["type","title","tiles","evidenceIds"],t);const i=w(o.title,`${n}.title`,y.contentTitle,t),c=Array.isArray(o.tiles)?o.tiles:[];Array.isArray(o.tiles)||f(t,`${n}.tiles`,"Expected an array."),c.length===0&&f(t,`${n}.tiles`,"Expected at least one tile."),c.length>R.maxKpiTiles&&f(t,`${n}.tiles`,`Must have ${R.maxKpiTiles} tiles or fewer.`);const m=c.slice(0,R.maxKpiTiles).map((s,u)=>{const p=`${n}.tiles.${u}`,d=k(s,p,t);b(d,p,["label","value","previousValue","delta","percentChange","unit","evidenceIds"],t);const v=M(d.value,`${p}.value`,t)??"";v===""&&f(t,`${p}.value`,"Expected a non-empty string, number, or structured numeric value.");const h=d.previousValue===void 0||d.previousValue===null?d.previousValue:M(d.previousValue,`${p}.previousValue`,t),I=d.delta===void 0||d.delta===null?d.delta:M(d.delta,`${p}.delta`,t),C=d.percentChange===void 0||d.percentChange===null?d.percentChange:M(d.percentChange,`${p}.percentChange`,t),g=w(d.unit,`${p}.unit`,y.contentTitle,t),$=A(d.evidenceIds,`${p}.evidenceIds`,t);return{label:T(d.label,`${p}.label`,y.contentTitle,t),value:v,...h!==void 0?{previousValue:h}:{},...I!==void 0?{delta:I}:{},...C!==void 0?{percentChange:C}:{},...g?{unit:g}:{},...$?{evidenceIds:$}:{}}}),l=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"kpi_grid",...i?{title:i}:{},tiles:m,...l?{evidenceIds:l}:{}}}if(a==="progress"){b(o,n,["type","label","value","detail","evidenceIds"],t);const i=typeof o.value=="number"&&Number.isFinite(o.value)?o.value:0;(typeof o.value!="number"||!Number.isFinite(o.value))&&f(t,`${n}.value`,"Expected a finite number.");const c=w(o.detail,`${n}.detail`,y.contentText,t),m=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"progress",label:T(o.label,`${n}.label`,y.contentTitle,t),value:i,...c?{detail:c}:{},...m?{evidenceIds:m}:{}}}if(a==="table"){b(o,n,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],t);const i=Or(o.columns,`${n}.columns`,t),c=w(o.title,`${n}.title`,y.contentTitle,t),m=w(o.id,`${n}.id`,y.id,t),l=w(o.caption,`${n}.caption`,y.contentItem,t),s=Rr(o.totalRows,`${n}.totalRows`,t),u=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"table",...m?{id:m}:{},...c?{title:c}:{},columns:i,rows:Kr(o.rows,`${n}.rows`,i,t),...l?{caption:l}:{},...s!==void 0?{totalRows:s}:{},...u?{evidenceIds:u}:{}}}if(a==="evidence_appendix"){b(o,n,["type","title","evidenceIds"],t);const i=w(o.title,`${n}.title`,y.contentTitle,t);return{type:"evidence_appendix",...i?{title:i}:{},evidenceIds:A(o.evidenceIds,`${n}.evidenceIds`,t,{required:!0})??[]}}if(a==="sql"){b(o,n,["type","title","sql","evidenceIds"],t);const i=w(o.title,`${n}.title`,y.contentTitle,t),c=T(o.sql,`${n}.sql`,y.contentSql,t),m=A(o.evidenceIds,`${n}.evidenceIds`,t);return{type:"sql",...i?{title:i}:{},sql:c,...m?{evidenceIds:m}:{}}}return f(t,`${n}.type`,"Expected heading, paragraph, finding, bullets, metric, kpi_grid, progress, table, actions, limitations, sql, or evidence_appendix."),{type:"paragraph",text:""}}function pt(e){const r=[],t=k(e,"content",r);b(t,"content",["version","title","summary","blocks"],r),t.version!==1&&f(r,"content.version","Expected version 1.");const n=w(t.title,"content.title",y.contentTitle,r),o=w(t.summary,"content.summary",y.contentSummary,r);Array.isArray(t.blocks)||f(r,"content.blocks","Expected an array.");const a=Array.isArray(t.blocks)?t.blocks:[];a.length===0&&f(r,"content.blocks","Expected at least one block."),a.length>R.maxBlocks&&f(r,"content.blocks",`Must have ${R.maxBlocks} blocks or fewer.`);const i=a.slice(0,R.maxBlocks).map((c,m)=>Nr(c,m,r));return Te(r),{version:1,...n?{title:n}:{},...o?{summary:o}:{},blocks:i}}function Vr(e){try{return{valid:!0,value:pt(e),issues:[]}}catch(r){if(r instanceof J)return{valid:!1,issues:r.issues};throw r}}function ee(e,r,t,n){return typeof e=="string"&&t.includes(e)?e:(f(n,r,`Expected ${t.join(" or ")}.`),t[0])}function N(e,r,t,n,o){if(e!=null){if(typeof e=="string"&&t.has(e))return e;f(o,r,`Expected ${n}.`)}}function Lr(e,r,t){if(e!=null){if(!Array.isArray(e)){f(t,r,"Expected an array.");return}return e}}function zr(e,r,t){if(e!=null){if(!dt(e)){f(t,r,"Expected an object.");return}return e}}function Ur(e,r,t){if(e==null)return;const n=k(e,r,t);b(n,r,_r,t);const o={},a=N(n.pageSize,`${r}.pageSize`,Ir,"letter, legal, a4, a3, or tabloid",t),i=N(n.orientation,`${r}.orientation`,Cr,"portrait or landscape",t),c=N(n.delimiter,`${r}.delimiter`,Tr,"comma, semicolon, or tab",t),m=N(n.sheetSelection,`${r}.sheetSelection`,wr,"current or all",t);a&&(o.pageSize=a),i&&(o.orientation=i),c&&(o.delimiter=c),m&&(o.sheetSelection=m);for(const l of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues","allowDownload"])if(!(n[l]===void 0||n[l]===null)){if(typeof n[l]!="boolean"){f(t,`${r}.${l}`,"Expected a boolean.");continue}o[l]=n[l]}for(const l of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const s=w(n[l],`${r}.${l}`,y.id,t);s&&(o[l]=s)}for(const l of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const s=Lr(n[l],`${r}.${l}`,t);s&&(o[l]=s)}for(const l of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const s=zr(n[l],`${r}.${l}`,t);s&&(o[l]=s)}return Object.keys(o).length>0?o:void 0}function se(e,r,t,n){const o=w(r,t,y.attachmentTitle,n);return o&&(e.title=o),e}function me(e,r,t,n){const o=Ur(r,t,n);return o&&(e.settings=o),e}function qr(e,r,t){const n=`attachments.${r}`,o=k(e,n,t),a=o.type;if(a==="dashboard"){b(o,n,["type","dashboardId","format","title","settings"],t);const i=se({type:"dashboard",dashboardId:T(o.dashboardId,`${n}.dashboardId`,y.id,t),format:ee(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return me(i,o.settings,`${n}.settings`,t)}if(a==="dashboard_sheet"||a==="document_sheet"){b(o,n,["type","dashboardId","sheetId","format","title","settings"],t);const i=se({type:a,dashboardId:T(o.dashboardId,`${n}.dashboardId`,y.id,t),sheetId:T(o.sheetId,`${n}.sheetId`,y.id,t),format:ee(o.format,`${n}.format`,["pdf"],t)},o.title,`${n}.title`,t);return me(i,o.settings,`${n}.settings`,t)}if(a==="card"){b(o,n,["type","dashboardId","cardId","format","title","settings"],t);const i=se({type:"card",dashboardId:T(o.dashboardId,`${n}.dashboardId`,y.id,t),cardId:T(o.cardId,`${n}.cardId`,y.id,t),format:ee(o.format,`${n}.format`,["csv","pdf"],t)},o.title,`${n}.title`,t);return me(i,o.settings,`${n}.settings`,t)}return f(t,`${n}.type`,"Expected dashboard, dashboard_sheet, document_sheet, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function jr(e){switch(e.type){case"dashboard":return`${e.type}:${e.dashboardId}:${e.format}`;case"dashboard_sheet":case"document_sheet":return`${e.type}:${e.dashboardId}:${e.sheetId}:${e.format}`;case"card":return`${e.type}:${e.dashboardId}:${e.cardId}:${e.format}`}}function yt(e,r){if(e==null)return[];if(!Array.isArray(e))return f(r,"attachments","Expected an array."),[];e.length>X&&f(r,"attachments",`Choose ${X} attachments or fewer.`);const t=e.slice(0,X).map((o,a)=>qr(o,a,r)),n=new Set;return t.forEach((o,a)=>{const i=jr(o);n.has(i)&&f(r,`attachments.${a}`,"Duplicate attachment."),n.add(i)}),t}function ht(e,r){if(e==null)return;const t=k(e,"limits",r);b(t,"limits",Object.keys(de),r);const n={};return Object.keys(de).forEach(o=>{const a=t[o];if(a==null)return;const i=de[o];if(typeof a!="number"||!Number.isInteger(a)||a<i.min||a>i.max){f(r,`limits.${o}`,`Expected an integer between ${i.min} and ${i.max}.`);return}n[o]=a}),Object.keys(n).length>0?n:void 0}function Te(e){if(e.length>0)throw new J(e)}function gt(e,r,t){!(e.type==="generated_analysis"||e.type==="custom_message"&&!!e.message.trim())&&r.length===0&&f(t,"body","Add briefing instructions, a custom message, or at least one attachment.")}function Gr(e,r,t){e==null||e.forEach((n,o)=>{const a=`${t}.${o}.scope`,i=n.scope.attachmentIndex;if(i===void 0)throw new E.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify the attachment that owns this presentation entry.`);const c=r[i];if(!c)throw new E.PresentationExecutionSnapshotError(`${a}.attachmentIndex must identify an existing attachment.`);if(n.scope.dashboardId!==c.dashboardId)throw new E.PresentationExecutionSnapshotError(`${a}.dashboardId must match the dashboard selected by the referenced attachment.`);if(c.type==="card"&&n.scope.cardId!==c.cardId)throw new E.PresentationExecutionSnapshotError(`${a}.cardId must match the card selected by the referenced attachment.`)})}function we(e){const r=[],t=k(e,"jobConfig",r);b(t,"jobConfig",["kind","presentationExecutionSnapshot","source","body","attachments","presentation","limits"],r),t.kind!==ne&&f(r,"kind","Expected BRIEFING.");let n;try{n=E.parsePresentationExecutionSnapshot(t.presentationExecutionSnapshot)}catch(l){if(l instanceof E.PresentationExecutionSnapshotError)throw l;f(r,"jobConfig.presentationExecutionSnapshot",l instanceof Error?l.message:"Invalid presentation snapshot.")}const o=st(t.source,r),a=mt(t.body,r),i=yt(t.attachments,r),c=ut(t.presentation,r),m=ht(t.limits,r);return gt(a,i,r),Gr(n==null?void 0:n.resolvedFormats,i,"jobConfig.presentationExecutionSnapshot.resolvedFormats"),Te(r),{kind:ne,presentationExecutionSnapshot:n,source:o,body:a,attachments:i,presentation:c,...m?{limits:m}:{}}}function Hr(e){return we({...e,kind:ne})}function Ee(e,r,t,n="deliveryConfig.recipients"){const o=`${n}.${r}`,a=k(e,o,t),i=a.type;if(i==="email"){b(a,o,["type","address","name"],t);const c=T(a.address,`${o}.address`,y.id,t),m=w(a.name,`${o}.name`,y.attachmentTitle,t);return c&&!Ar(c)&&f(t,`${o}.address`,"Email address is invalid."),{type:"email",address:c,...m?{name:m}:{}}}return i==="user"?(b(a,o,["type","userId"],t),{type:"user",userId:T(a.userId,`${o}.userId`,y.id,t)}):i==="tenant_user"?(b(a,o,["type","tenantUserId"],t),{type:"tenant_user",tenantUserId:T(a.tenantUserId,`${o}.tenantUserId`,y.id,t)}):i==="group"?(b(a,o,["type","groupId"],t),{type:"group",groupId:T(a.groupId,`${o}.groupId`,y.id,t)}):(f(t,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function Wr(e,r){return e==null?[]:Array.isArray(e)?e.map((t,n)=>Ee(t,n,r)):(f(r,"deliveryConfig.recipients","Expected an array."),[])}function Yr(e,r){if(!Array.isArray(e))return f(r,"deliveryConfig.channels","Expected an array."),[];const t=[];return e.forEach((n,o)=>{if(!$e(n)){f(r,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}t.includes(n)||t.push(n)}),t}function Qr(e,r,t){if(e==null)return;const n=k(e,r,t),o={};return Object.entries(n).forEach(([a,i])=>{if(typeof i!="string"){f(t,`${r}.${a}`,"Expected a string.");return}o[a]=i.trim()}),Object.keys(o).length>0?o:void 0}function Jr(e,r,t){if(e==null)return;const n=k(e,r,t);b(n,r,["url","method","headers","secretEncrypted"],t);const o=n.method===void 0||n.method===null?void 0:ee(n.method,`${r}.method`,["POST","PUT"],t),a=Qr(n.headers,`${r}.headers`,t),i=w(n.secretEncrypted,`${r}.secretEncrypted`,2e3,t);return{url:T(n.url,`${r}.url`,2e3,t),...o?{method:o}:{},...a?{headers:a}:{},...i?{secretEncrypted:i}:{}}}function Zr(e,r,t){const n=k(e,r,t),o=n.type;if(o==="channel"){b(n,r,["type","channelId","channelName","isPrivate"],t);const a=w(n.channelName,`${r}.channelName`,y.attachmentTitle,t),i=n.isPrivate===void 0||n.isPrivate===null?void 0:U(n.isPrivate,!1,`${r}.isPrivate`,t);return{type:"channel",channelId:T(n.channelId,`${r}.channelId`,y.id,t),...a?{channelName:a}:{},...i!==void 0?{isPrivate:i}:{}}}return o==="dm"?(b(n,r,["type","recipient"],t),f(t,`${r}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:Ee(n.recipient,0,t,`${r}.recipient`)}):(f(t,`${r}.type`,"Expected channel."),{type:"channel",channelId:""})}function Xr(e,r,t){if(e==null)return;if(!Array.isArray(e)){f(t,r,"Expected an array.");return}const n=e.map((o,a)=>Ee(o,a,t,r));return n.length>0?n:void 0}function en(e,r,t){if(e==null)return;const n=k(e,r,t);b(n,r,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],t);const o=Xr(n.threadMentions,`${r}.threadMentions`,t),a=U(n.postThreadDetail,!0,`${r}.postThreadDetail`,t),i=U(n.includeDashboardLink,!0,`${r}.includeDashboardLink`,t),c=U(n.includeBriefingLink,!0,`${r}.includeBriefingLink`,t);return{destination:Zr(n.destination,`${r}.destination`,t),...o?{threadMentions:o}:{},...n.postThreadDetail!==void 0?{postThreadDetail:a}:{},...n.includeDashboardLink!==void 0?{includeDashboardLink:i}:{},...n.includeBriefingLink!==void 0?{includeBriefingLink:c}:{}}}function tn(e,r,t){const n=k(e,r,t);b(n,r,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],t);const o=N(n.formatProfile,`${r}.formatProfile`,Er,"concise, balanced, or detailed",t),a=w(n.subjectOverride,`${r}.subjectOverride`,500,t),i=w(n.titleOverride,`${r}.titleOverride`,500,t),c=w(n.summaryOverride,`${r}.summaryOverride`,2e3,t),m=U(n.actionBlockVisible,!0,`${r}.actionBlockVisible`,t),l=Jr(n.webhookConfig,`${r}.webhookConfig`,t),s=en(n.slackConfig,`${r}.slackConfig`,t);return{...o?{formatProfile:o}:{},...a?{subjectOverride:a}:{},...i?{titleOverride:i}:{},...c?{summaryOverride:c}:{},...n.actionBlockVisible!==void 0?{actionBlockVisible:m}:{},...s?{slackConfig:s}:{},...l?{webhookConfig:l}:{}}}function rn(e,r){if(e==null)return;const t=k(e,"deliveryConfig.channelConfigs",r),n={};return Object.entries(t).forEach(([o,a])=>{if(!$e(o)){f(r,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}n[o]=tn(a,`deliveryConfig.channelConfigs.${o}`,r)}),Object.keys(n).length>0?n:void 0}function nn(e,r){var m,l,s;if(e==null)return null;const t=k(e,"deliveryConfig",r);b(t,"deliveryConfig",["recipients","channels","channelConfigs"],r);const n=rn(t.channelConfigs,r),o=Wr(t.recipients,r),a=Yr(t.channels,r),i=((l=(m=n==null?void 0:n.SLACK)==null?void 0:m.slackConfig)==null?void 0:l.destination.type)==="channel"&&!!n.SLACK.slackConfig.destination.channelId.trim();return a.some(u=>u!=="SLACK")&&o.length===0&&f(r,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),a.length===0&&f(r,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),a.includes("SLACK")&&!i&&f(r,"deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId","Choose a Slack channel destination."),!a.includes("SLACK")&&((s=n==null?void 0:n.SLACK)!=null&&s.slackConfig)&&f(r,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:a,...n?{channelConfigs:n}:{}}}function le(e){const r=[],t=k(e,"draft",r);b(t,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],r);const n=T(t.name,"name",y.name,r),o=w(t.description,"description",y.description,r)??null,a=w(t.scheduleExpr,"scheduleExpr",500,r)??null,i=w(t.timezone,"timezone",200,r)??"UTC",c=Fr(t.status,r),m=st(t.source,r),l=mt(t.body,r),s=yt(t.attachments,r),u=ut(t.presentation,r),p=ht(t.limits,r),d=nn(t.deliveryConfig,r);return gt(l,s,r),Te(r),{name:n,description:o,status:c,scheduleExpr:a,timezone:i,source:m,body:l,attachments:s,presentation:u,...p?{limits:p}:{},deliveryConfig:d}}function on(e){return le(e)}function an(e){return le(e)}function ln(e){try{return{valid:!0,value:le(e),issues:[]}}catch(r){if(r instanceof J)return{valid:!1,issues:r.issues};throw r}}function cn(e){try{return{valid:!0,value:we(e),issues:[]}}catch(r){if(r instanceof J)return{valid:!1,issues:r.issues};throw r}}function dn(e){return typeof e=="string"&&ct.has(e)}function $e(e){return typeof e=="string"&&br.has(e)}exports.AmbiguousGroupedTemporalGrainError=Be;exports.BRIEFING_ARTIFACT_FORMATS=at;exports.BRIEFING_CONTENT_LIMITS=R;exports.BRIEFING_KIND=ne;exports.BRIEFING_TEXT_LIMITS=y;exports.BriefingContractError=J;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=oe;exports.DEFAULT_BRIEFING_SCHEDULE=ar;exports.DashboardTemporalBoundaryError=O;exports.MAX_BRIEFING_ATTACHMENTS=X;exports.PYTHON_DEFAULT_CODE=Ae;exports.buildBriefingJobConfig=Hr;exports.buildBriefingScheduleExpr=cr;exports.buildCreateBriefingRequest=on;exports.buildDashboardCardTableConfig=Tt;exports.buildDashboardTemporalSnapshotEntries=Zt;exports.buildSlotOrderedCards=We;exports.buildUpdateBriefingRequest=an;exports.canCreateBriefingForUser=yr;exports.createCardsFromSlots=Ht;exports.describeBriefingSchedule=mr;exports.findCustomVisualConfigCard=Qe;exports.formatBriefingComparisonValues=vr;exports.formatBriefingDisplayValue=lt;exports.formatGroupedTemporalFieldValue=At;exports.formatGroupedTemporalRecords=_t;exports.formatGroupedTemporalValue=he;exports.getActiveCardFromVisualResource=Vt;exports.getActiveFrameCard=be;exports.getBriefingCardAttachmentCapability=pr;exports.getBriefingCardAttachmentFormats=tt;exports.getBriefingCreationIntents=hr;exports.getBriefingDisplayTypeLabel=ot;exports.getBriefingPresentation=gr;exports.getConfigSlotExpectedType=jt;exports.getCustomVisualInputCards=Ye;exports.getDefaultBriefingCardAttachmentFormat=rt;exports.getEffectiveCardTypeForSlot=Gt;exports.getSlotDefinitionForIndex=Ie;exports.getSlotExpectedChartType=ie;exports.getSlotIndexForCard=He;exports.isBriefingArtifactFormat=dn;exports.isBriefingDeliveryChannel=$e;exports.isBriefingNumericValue=it;exports.isCardRawTemporalPresentationActivated=qe;exports.isCardRawTemporalResultCompatible=Nt;exports.isCustomVisualConfigCard=fe;exports.isDeclaredSqlRawTemporalPresentationCard=ze;exports.isEmailOnlyBriefingDelivery=nt;exports.isGroupedTemporalResultCompatible=xt;exports.isPivotResultContractCompatibleWithCardConfig=Oe;exports.isValidBriefingTimezone=ir;exports.normalizeBriefingContentDocument=pt;exports.normalizeBriefingDraft=le;exports.normalizeBriefingJobConfig=we;exports.normalizeDashboardCardPythonCode=q;exports.normalizeGroupedTemporalField=Pe;exports.normalizeMultiInputPayload=Yt;exports.parseBriefingScheduleExpr=et;exports.parseCanonicalPivotResultTransportOnce=Me;exports.parseFrameObject=je;exports.presentRawTemporalCell=Kt;exports.previewDeclaredSqlRawTemporalFormat=Pt;exports.reindexSlotCards=qt;exports.resolveAuthoredDetailRawTemporalFormat=ge;exports.resolveCardRawTemporalPresentation=Ue;exports.resolveCartesianTemporalActivation=$t;exports.resolveDashboardCardResultOwner=Q;exports.resolveDashboardTemporalActivation=De;exports.resolveDeclaredSqlRawTemporalFormat=ae;exports.resolveGroupedTemporalFieldPresentationByRole=Ne;exports.resolveGroupedTemporalFieldSnapshotFormat=Ve;exports.resolveGroupedTemporalPresentation=Ft;exports.resolveMultiInputType=Je;exports.resolveMultiInputTypeFromVisual=Wt;exports.resolveRegularTableTemporalActivation=Et;exports.validateBriefingContentDocument=Vr;exports.validateBriefingDraft=ln;exports.validateBriefingJobConfig=cn;
|