react-semaphor 0.1.555 → 0.1.556

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/analytics-protocol/index.js +10 -10
  2. package/dist/assistant-context/index.js +1 -1
  3. package/dist/assistant-protocol/index.js +5 -5
  4. package/dist/brand-studio/index.js +438 -455
  5. package/dist/briefings/index.js +6 -6
  6. package/dist/chunks/{analytics-base-schemas-BKs3flFS.js → analytics-base-schemas-BUFUoO6G.js} +2 -2
  7. package/dist/chunks/{assistant-chat-8NZP6m-u.js → assistant-chat-C7Acww1T.js} +15 -15
  8. package/dist/chunks/{bookmark-state-BAeGKd3s.js → bookmark-state-7iZErWnR.js} +3 -3
  9. package/dist/chunks/comparison-window-caption-BseG5aOZ.js +1221 -0
  10. package/dist/chunks/{context-BerEBuFR.js → context-DVy4HOU0.js} +1 -1
  11. package/dist/chunks/{custom-visual-inputs-Gw-Ggg3O.js → custom-visual-inputs-ChuKjx27.js} +31 -33
  12. package/dist/chunks/{dashboard-Ds68ckO3.js → dashboard-BU6rE5kV.js} +1 -1
  13. package/dist/chunks/{dashboard-briefing-launcher-DlTr-VGc.js → dashboard-briefing-launcher-qrYd2zkN.js} +15 -15
  14. package/dist/chunks/{dashboard-controls-oNXJZN6x.js → dashboard-controls-BsapXI2H.js} +14 -14
  15. package/dist/chunks/{dashboard-json-CW7Q_efH.js → dashboard-json-CJqPqYnI.js} +5 -5
  16. package/dist/chunks/{document-dashboard-inputs-C21mL3ib.js → document-dashboard-inputs-BNSprf5_.js} +12 -12
  17. package/dist/chunks/{edit-dashboard-visual-BnnT_oKR.js → edit-dashboard-visual-CjAdV-WG.js} +4603 -4687
  18. package/dist/chunks/{filter-reach-copy-DlNPHbE-.js → filter-reach-copy-BTrqtFkh.js} +917 -987
  19. package/dist/chunks/{filter-value-text-DMrpj4h9.js → filter-value-text-CJTJDCym.js} +4 -4
  20. package/dist/chunks/{global-date-filter-utils-7OboTgrM.js → global-date-filter-utils-CTVf3dG3.js} +2904 -3102
  21. package/dist/chunks/{index-B2k6KtUN.js → index-B_vIRa-q.js} +12 -19
  22. package/dist/chunks/{index-CtoK1Lgu.js → index-dIV-Gdsb.js} +159 -161
  23. package/dist/chunks/{matrix-analytical-definition-DPVGg1mU.js → matrix-analytical-definition-Cg0ioFGQ.js} +21 -21
  24. package/dist/chunks/{matrix-card-D9bsdAye.js → matrix-card-yYibXSw1.js} +3 -3
  25. package/dist/chunks/{matrix-formatter-K2OVPJQI.js → matrix-formatter-C2kjsCDf.js} +44 -44
  26. package/dist/chunks/{matrix-member-presentation-DRWcJ8Mi.js → matrix-member-presentation-DEEauKXC.js} +1 -1
  27. package/dist/chunks/{matrix-operation-contract--lMaLlpV.js → matrix-operation-contract-C1G6AJNh.js} +33 -33
  28. package/dist/chunks/{metric-comparison-CYIt2F5X.js → metric-comparison-BfcmwxM1.js} +4 -4
  29. package/dist/chunks/{model-change-B0rAK-5w.js → model-change-CJEj3ZD6.js} +1 -1
  30. package/dist/chunks/pivot-result-contract-expectations-fKBHFPfz.js +56 -0
  31. package/dist/chunks/pivot-result-identity-CWi5WrrY.js +77 -0
  32. package/dist/chunks/{raw-temporal-contract-WuXA8jBP.js → raw-temporal-contract-CjHaUIsE.js} +1 -1
  33. package/dist/chunks/{raw-temporal-presentation-CivONfcO.js → raw-temporal-presentation-DWzLIHc3.js} +8 -8
  34. package/dist/chunks/{report-preferences-dialog-D_KyuEFx.js → report-preferences-dialog-D_wrbIQt.js} +17 -17
  35. package/dist/chunks/{report-runtime-context-BaIKSaja.js → report-runtime-context-BgM-iNWB.js} +2 -2
  36. package/dist/chunks/{resolve-dashboard-input-context-CIm9A8_j.js → resolve-dashboard-input-context-Df8V5QHW.js} +1415 -1567
  37. package/dist/chunks/{saved-dashboard-context-akb9JfOL.js → saved-dashboard-context-VvXI6r03.js} +9 -9
  38. package/dist/chunks/{selection-reducer-yw_JgICP.js → selection-reducer-By4CSmEF.js} +1 -1
  39. package/dist/chunks/{semaphor-ready-indicator-Ba7dwP5_.js → semaphor-ready-indicator-fejZmdq9.js} +49593 -56071
  40. package/dist/chunks/{shelf-drop-preview-context-5rg3pJHW.js → shelf-drop-preview-context-BuTCXe-S.js} +7 -7
  41. package/dist/chunks/{source-entity-resolution-CGymm5td.js → source-entity-resolution-B46EZIzX.js} +1 -1
  42. package/dist/chunks/{switch-B-UTI6v-.js → switch-Bq92UGId.js} +3 -3
  43. package/dist/chunks/{table-export-sheet-CgO6gaSM.js → table-export-sheet-noKl8-en.js} +1 -1
  44. package/dist/chunks/{table-settings-DOT_Bv1m.js → table-settings-PpINOzw8.js} +3 -3
  45. package/dist/chunks/{temporal-bucket-C4rqmwaQ.js → temporal-bucket-DzyadxVY.js} +53 -53
  46. package/dist/chunks/temporal-input-presentation-CJWS4d0L.js +879 -0
  47. package/dist/chunks/{token-types-DYECHYGH.js → token-types--0bgRCaO.js} +1 -1
  48. package/dist/chunks/{use-create-flow-overlay-state-BHNs0wl7.js → use-create-flow-overlay-state-Cz-ve64t.js} +7 -7
  49. package/dist/chunks/{validators-ClKLGDGZ.js → validators-CZo_H4E6.js} +305 -307
  50. package/dist/dashboard/index.js +2 -2
  51. package/dist/dashboard-authoring/index.js +60 -60
  52. package/dist/data-app-sdk/index.js +6 -6
  53. package/dist/data-app-sdk-adapters/index.js +3 -3
  54. package/dist/data-app-sdk-validation/index.js +6 -6
  55. package/dist/format-utils/index.js +207 -223
  56. package/dist/index.js +96 -97
  57. package/dist/layouts/index.js +1 -1
  58. package/dist/pdf-export-policy/index.js +9 -11
  59. package/dist/report-runtime-context/index.js +2 -2
  60. package/dist/style.css +1 -1
  61. package/dist/surfboard/index.js +2 -2
  62. package/dist/types/brand-studio/brand-studio-draft.d.ts +0 -3
  63. package/dist/types/brand-studio/index.d.ts +1 -1
  64. package/dist/types/components/visual/data-table/types/data-table.d.ts +0 -1
  65. package/dist/types/components/visual/shared/utils/table-column-order.d.ts +0 -6
  66. package/dist/types/index.js +27 -28
  67. package/dist/types/lib/api/exports-api.d.ts +1 -1
  68. package/dist/types/lib/charts/table-chart-types.d.ts +1 -1
  69. package/dist/types/lib/charts/types.d.ts +2 -2
  70. package/dist/types/lib/dashboard-viewer/export-table-view.d.ts +0 -3
  71. package/dist/types/lib/document/document-edits.d.ts +1 -1
  72. package/dist/types/lib/document/document-section-kinds.d.ts +2 -4
  73. package/dist/types/lib/document/document-table-data-policy.d.ts +1 -2
  74. package/dist/types/lib/formatters/grouped-temporal-activation.d.ts +3 -3
  75. package/dist/types/lib/formatters/grouped-temporal-presentation.d.ts +0 -6
  76. package/dist/types/lib/query-context/card-server-request.d.ts +0 -1
  77. package/dist/types/lib/table-formatting/table-formatting-types.d.ts +1 -1
  78. package/dist/types/lib/types/common-types.d.ts +0 -7
  79. package/dist/types/lib/types/explorer-types.d.ts +1 -14
  80. package/dist/types/lib/utils/card-config-utils.d.ts +11 -1
  81. package/dist/types/shared/dashboard-authoring/card-export-request.d.ts +1 -2
  82. package/dist/types/shared/dashboard-authoring/legacy-table-routing.d.ts +9 -4
  83. package/dist/types/shared/format-utils/grouped-table-presentation.d.ts +0 -14
  84. package/dist/types/shared/format-utils/index.d.ts +0 -2
  85. package/dist/types/shared/format-utils/pdf-export-policy.d.ts +1 -1
  86. package/dist/types/shared/format-utils/pivot-result-contract-expectations.d.ts +2 -20
  87. package/dist/types/shared/format-utils/pivot-result-identity.d.ts +0 -20
  88. package/dist/types/shared/format-utils/table-export/prepare-table-export.d.ts +0 -1
  89. package/dist/types/shared/format-utils/table-export/table-export-result.d.ts +0 -4
  90. package/package.json +2 -2
  91. package/dist/chunks/comparison-window-caption-C2WNTlxK.js +0 -1433
  92. package/dist/chunks/pivot-header-presentation-CX4fkRuG.js +0 -42
  93. package/dist/chunks/pivot-result-identity-BHJGZwIc.js +0 -94
  94. package/dist/chunks/pivot-result-lifecycle-BygCpOhk.js +0 -1238
  95. package/dist/types/components/visual/pivot-table/types.d.ts +0 -80
  96. package/dist/types/shared/format-utils/aggregate-table-row-presentation.d.ts +0 -85
  97. package/dist/types/shared/format-utils/pivot-result-lifecycle.d.ts +0 -55
@@ -1,5 +1,5 @@
1
- import { a, R as s, D as o } from "../chunks/report-preferences-dialog-D_KyuEFx.js";
2
- import { C as f, E as D } from "../chunks/table-settings-DOT_Bv1m.js";
1
+ import { a, R as s, D as o } from "../chunks/report-preferences-dialog-D_wrbIQt.js";
2
+ import { C as f, E as D } from "../chunks/table-settings-PpINOzw8.js";
3
3
  export {
4
4
  f as CONTROL_CARD_DEFAULT_VALUE,
5
5
  a as DisplayFormatPreferencesFields,
@@ -34,8 +34,6 @@ type RequiredBrandStudioComponents = {
34
34
  interactive: NonNullable<AppearanceComponents['interactive']>;
35
35
  chart: Required<NonNullable<AppearanceComponents['chart']>>;
36
36
  table: RequiredTableAppearance;
37
- aggregateTable: RequiredTableAppearance;
38
- pivotTable: RequiredTableAppearance;
39
37
  pagination: NonNullable<AppearanceComponents['pagination']>;
40
38
  };
41
39
  type RequiredTableAppearance = {
@@ -77,7 +75,6 @@ export declare const BRAND_STUDIO_PRESETS: BrandStudioPreset[];
77
75
  export declare function createBrandStudioDraft(appearance?: AppearanceSpec | null): BrandStudioDraft;
78
76
  export declare function buildAppearanceSpecFromDraft(draft: BrandStudioDraft): AppearanceSpec;
79
77
  export declare function applyBrandStudioPreset(draft: BrandStudioDraft, presetId: string): BrandStudioDraft;
80
- export declare function mirrorTableAppearance(scheme: RequiredBrandStudioScheme, target: 'aggregateTable' | 'pivotTable'): void;
81
78
  export declare function applyBrandStudioColorToken(scheme: RequiredBrandStudioScheme, token: BrandStudioColorToken, value: string): void;
82
79
  export declare function applyBrandStudioRadiusToken(scheme: RequiredBrandStudioScheme, token: BrandStudioRadiusToken, value: number): void;
83
80
  export {};
@@ -1,2 +1,2 @@
1
1
  export { BrandStudioEditor, type BrandStudioEditorProps, } from './brand-studio-editor.js';
2
- export { applyBrandStudioPreset, BRAND_STUDIO_PRESETS, buildAppearanceSpecFromDraft, createBrandStudioDraft, mirrorTableAppearance, type BrandStudioDraft, type RequiredBrandStudioScheme, } from './brand-studio-draft.js';
2
+ export { applyBrandStudioPreset, BRAND_STUDIO_PRESETS, buildAppearanceSpecFromDraft, createBrandStudioDraft, type BrandStudioDraft, type RequiredBrandStudioScheme, } from './brand-studio-draft.js';
@@ -210,7 +210,6 @@ export interface DataTableColumnSettingsProps {
210
210
  open: boolean;
211
211
  onOpenChange: (open: boolean) => void;
212
212
  availableColumns?: string[];
213
- tableType?: 'data' | 'pivot' | 'aggregate';
214
213
  /** Whether this is a raw SQL card (bypasses timezone-aware query pipeline) */
215
214
  isSqlCard?: boolean;
216
215
  /** Sparse authored bytes before default hydration. */
@@ -1,6 +1,5 @@
1
1
  import { TCard } from '../../../../lib/types/common-types.js';
2
2
  import { CardConfig, DetailField, GroupByField, MetricField, QueryColumnKeyMap, QueryColumnKeyRole } from '../../../../lib/types/explorer-types.js';
3
- import { PivotColumnSchema } from '../../pivot-table/types.js';
4
3
  import { ComparisonMetadataMap } from '../../../../lib/types/query-types.js';
5
4
  import { SemaphorResultColumn } from '../../../../shared/analytics-protocol/index.js';
6
5
  import { GroupedTemporalPresentation } from '../../../../lib/formatters/grouped-temporal-presentation.js';
@@ -12,12 +11,10 @@ export interface ColumnReorderRequest {
12
11
  }
13
12
  export declare function resolveTablePresentationCard(card: TCard, effectiveCardConfig?: CardConfig): TCard;
14
13
  type ConfigField = DetailField | GroupByField | MetricField;
15
- export declare function getMetricSchemaOrderIndex(schema: PivotColumnSchema, metricFields: MetricField[]): number;
16
14
  export declare function reorderTableCardConfig(card: TCard, request: ColumnReorderRequest, columnKeyMap?: QueryColumnKeyMap): CardConfig | null;
17
15
  export declare function hasConfigOwnedTableFields(card: TCard | undefined): boolean;
18
16
  export declare function hasConfigBackedTableColumnOrder(card: TCard | undefined, columnKeyMap: QueryColumnKeyMap | undefined): boolean;
19
17
  export declare function getConfigBackedTableOutputColumnIds(card: TCard | undefined, columnKeyMap: QueryColumnKeyMap | undefined): string[];
20
- export declare function reorderAggregateCardConfig(card: TCard, request: ColumnReorderRequest, columnKeyMap?: QueryColumnKeyMap): CardConfig | null;
21
18
  export declare function resolveDataTableFieldOutputKey(field: ConfigField, role: QueryColumnKeyRole, availableKeys: string[], columnKeyMap?: QueryColumnKeyMap): string | undefined;
22
19
  export declare function resolveDataTableColumnDisplayLabel(columnId: string, card: TCard | undefined, columnKeyMap?: QueryColumnKeyMap): string | undefined;
23
20
  export declare function buildDataTableColumnDisplayLabels(columnIds: readonly string[], card: TCard | undefined, columnKeyMap?: QueryColumnKeyMap, resultColumns?: readonly SemaphorResultColumn[], temporalPresentation?: GroupedTemporalPresentation): {
@@ -45,7 +42,6 @@ export declare function resolvePivotColumnDisplayLabel(input: {
45
42
  /** A viewer's name for the metric; replaces the metric part of the header. */
46
43
  metricLabelOverride?: string;
47
44
  }): string | undefined;
48
- export declare function resolveMetricSchemaDisplayLabel(schema: PivotColumnSchema | undefined, card: TCard | undefined, columnKeyMap?: QueryColumnKeyMap, fallback?: string): string;
49
45
  export declare function orderDataTableKeysByCardConfig(keys: string[], card: TCard | undefined, getComparisonKey?: (metricLabel: string) => string | null, columnKeyMap?: QueryColumnKeyMap): string[];
50
46
  export type DataTableColumnOrderInput = {
51
47
  keys: readonly string[];
@@ -55,6 +51,4 @@ export type DataTableColumnOrderInput = {
55
51
  resultColumns?: readonly SemaphorResultColumn[];
56
52
  };
57
53
  export declare function orderDataTableOutputKeys(input: DataTableColumnOrderInput): string[];
58
- export declare function orderGroupByColumnsByCardConfig(groupByColumns: GroupByField[], card: TCard | undefined, columnKeyMap?: QueryColumnKeyMap): GroupByField[];
59
- export declare function orderPivotSchemaByCardConfig(pivotSchema: PivotColumnSchema[], card: TCard | undefined, columnKeyMap?: QueryColumnKeyMap): PivotColumnSchema[];
60
54
  export {};
@@ -1,9 +1,9 @@
1
- import { C as s, E as r, V as l, i as o, c as i, g as n, f as d, b as m, e as u, d as E, a as c, u as p, s as C, h as T, j as D, q as A, o as I, m as _, n as F, p as S, k as b, l as L, r as f, t as N } from "../chunks/table-settings-DOT_Bv1m.js";
2
- import { C as y, D as M, L as g, P as h, e as x, g as O, j as V, h as k, k as w, d as U, b as B, i as K, c as z, n as v, f as P } from "../chunks/validators-ClKLGDGZ.js";
3
- import { D as q } from "../chunks/token-types-DYECHYGH.js";
4
- import { B as Q, a as j, p as W, r as J } from "../chunks/bookmark-state-BAeGKd3s.js";
5
- import { r as H, a as Z } from "../chunks/pivot-result-identity-BHJGZwIc.js";
6
- import { D as ee } from "../chunks/report-runtime-context-BaIKSaja.js";
1
+ import { C as s, E as r, V as l, i as o, c as i, g as n, f as d, b as m, e as u, d as c, a as E, u as p, s as C, h as T, j as D, q as A, o as I, m as _, n as F, p as S, k as b, l as L, r as f, t as N } from "../chunks/table-settings-PpINOzw8.js";
2
+ import { C as y, D as g, L as h, e as x, g as M, j as O, h as V, k, d as w, b as U, i as B, c as K, n as z, f as v } from "../chunks/validators-CZo_H4E6.js";
3
+ import { D as q } from "../chunks/token-types--0bgRCaO.js";
4
+ import { B as P, a as Q, p as j, r as W } from "../chunks/bookmark-state-7iZErWnR.js";
5
+ import { r as X, a as H } from "../chunks/pivot-result-identity-CWi5WrrY.js";
6
+ import { D as $ } from "../chunks/report-runtime-context-BgM-iNWB.js";
7
7
  const e = [
8
8
  "concatenate",
9
9
  "conditional-category",
@@ -37,17 +37,16 @@ const e = [
37
37
  "is-blank"
38
38
  ];
39
39
  export {
40
- Q as BOOKMARK_STATE_VERSION,
41
- j as BOOKMARK_VISIBILITIES,
40
+ P as BOOKMARK_STATE_VERSION,
41
+ Q as BOOKMARK_VISIBILITIES,
42
42
  y as CALCULATED_FIELD_ENTITY_MARKER,
43
43
  e as CALCULATED_FIELD_TEMPLATE_IDS,
44
44
  s as CONTROL_CARD_DEFAULT_VALUE,
45
- M as DATE_FORMAT_VALUES,
46
- ee as DEFAULT_CALENDAR_CONTEXT,
45
+ g as DATE_FORMAT_VALUES,
46
+ $ as DEFAULT_CALENDAR_CONTEXT,
47
47
  q as DEFAULT_SEMANTIC_DOMAIN_ACCESS,
48
48
  r as EMPTY_SELECTION,
49
- g as LEGACY_CALCULATED_FIELD_ENTITY_MARKER,
50
- h as PivotMarkerEnum,
49
+ h as LEGACY_CALCULATED_FIELD_ENTITY_MARKER,
51
50
  l as VIEWER_LIMITS,
52
51
  o as VIEWER_TABLE_SETTINGS_VERSION,
53
52
  i as collectDatasetNamesFromExplorerField,
@@ -55,34 +54,34 @@ export {
55
54
  d as collectExecutionDatasetNamesFromExplorerField,
56
55
  m as collectPreferredDatasetNamesFromExplorerField,
57
56
  u as collectQualifiedDatasetNamesFromExplorerField,
58
- E as datasetRefFromSource,
59
- c as dependencyDisplayIdentity,
57
+ c as datasetRefFromSource,
58
+ E as dependencyDisplayIdentity,
60
59
  x as getCalculatedFieldComputeStage,
61
60
  p as getCustomizableTableCardIds,
62
- O as getFieldRuntimeColumnName,
61
+ M as getFieldRuntimeColumnName,
63
62
  C as getSortableTableCardIds,
64
- V as hasCalculatedFieldMarker,
65
- k as hasCalculatedFormulaInputs,
66
- w as hasSyntheticCalculatedFieldOwner,
63
+ O as hasCalculatedFieldMarker,
64
+ V as hasCalculatedFormulaInputs,
65
+ k as hasSyntheticCalculatedFieldOwner,
67
66
  T as humanizeDatasetName,
68
- U as inspectCalculatedField,
69
- B as isCalculatedDimension,
70
- K as isCalculatedMetric,
71
- z as isDerivedField,
67
+ w as inspectCalculatedField,
68
+ U as isCalculatedDimension,
69
+ B as isCalculatedMetric,
70
+ K as isDerivedField,
72
71
  D as isEmptyViewerTableSettings,
73
72
  A as isTableCardCustomizable,
74
73
  I as isTableCardSortable,
75
74
  _ as measureJsonBytes,
76
- v as normalizeCalculatedFieldRepresentation,
75
+ z as normalizeCalculatedFieldRepresentation,
77
76
  F as normalizeViewerTableSettings,
78
- W as parseBookmarkState,
77
+ j as parseBookmarkState,
79
78
  S as parseTableColumnId,
80
79
  b as parseViewerTableSettings,
81
80
  L as parseViewerTableSettingsMap,
82
- J as readBookmarkState,
81
+ W as readBookmarkState,
83
82
  f as resolveFieldDatasetDependencies,
84
- H as resolveQueryColumnKeyMapEntry,
85
- Z as resolveUniqueQueryColumnKeyMapEntry,
86
- P as shouldDropInheritedCalculationAggregate,
83
+ X as resolveQueryColumnKeyMapEntry,
84
+ H as resolveUniqueQueryColumnKeyMapEntry,
85
+ v as shouldDropInheritedCalculationAggregate,
87
86
  N as toTableColumnId
88
87
  };
@@ -2,7 +2,7 @@ import { ExportFileFormat } from '../../shared/format-utils/index.js';
2
2
  import { MatrixFileExportRequest } from '../matrix-table/matrix-delivery.js';
3
3
  import { CreateExportRequest } from '../../shared/dashboard-authoring/card-export-request.js';
4
4
  export type ExportStatus = 'pending' | 'processing' | 'chunking' | 'compacting' | 'completed' | 'failed' | 'cancelled';
5
- export type CardType = 'table' | 'aggregateTable' | 'pivotTable' | 'detailTable';
5
+ export type CardType = 'table' | 'detailTable';
6
6
  /** Response from creating an export job */
7
7
  export interface CreateExportResponse {
8
8
  exportId: string;
@@ -1,4 +1,4 @@
1
1
  import { TChartType } from './types.js';
2
2
  /** The chart types that render as tables. No runtime imports: server-safe code reads these. */
3
- export declare const TABLE_CHART_TYPES: readonly ["table", "pivotTable", "aggregateTable", "matrixTable", "detailTable"];
3
+ export declare const TABLE_CHART_TYPES: readonly ["table", "matrixTable", "detailTable"];
4
4
  export declare function isTableChartType(chartType: TChartType | string | undefined | null): boolean;
@@ -49,10 +49,10 @@ export type BlurEffectProps = {
49
49
  apply: boolean;
50
50
  blurColor?: string;
51
51
  };
52
- export type TChartType = 'bar' | 'horizontalBar' | 'line' | 'area' | 'stackedArea' | 'combo' | 'pie' | 'doughnut' | 'radar' | 'polarArea' | 'bubble' | 'scatter' | 'stackedBar' | 'stackedLine' | 'table' | 'pivotTable' | 'aggregateTable' | 'matrixTable' | 'detailTable' | 'kpi' | 'pyramid' | 'tornado' | 'range' | 'text' | 'map' | 'funnel' | 'bullet' | 'heatmap' | 'treemap' | 'custom';
52
+ export type TChartType = 'bar' | 'horizontalBar' | 'line' | 'area' | 'stackedArea' | 'combo' | 'pie' | 'doughnut' | 'radar' | 'polarArea' | 'bubble' | 'scatter' | 'stackedBar' | 'stackedLine' | 'table' | 'matrixTable' | 'detailTable' | 'kpi' | 'pyramid' | 'tornado' | 'range' | 'text' | 'map' | 'funnel' | 'bullet' | 'heatmap' | 'treemap' | 'custom';
53
53
  export { TABLE_CHART_TYPES, isTableChartType };
54
54
  export declare function isChartJsVisualType(chartType: TChartType | string | undefined | null): boolean;
55
- export declare const REGULAR_TABLE_SETTINGS_CHART_TYPES: readonly ["table", "matrixTable", "pivotTable", "aggregateTable", "detailTable"];
55
+ export declare const REGULAR_TABLE_SETTINGS_CHART_TYPES: readonly ["table", "matrixTable", "detailTable"];
56
56
  export declare function supportsRegularTableSettings(chartType: TChartType | string | undefined | null): boolean;
57
57
  /**
58
58
  * Chart types that support comparison mode.
@@ -1,5 +1,4 @@
1
1
  import { TCard, TDashboard } from '../types/common-types.js';
2
- import { TablePreferences } from '../../components/visual/data-table/types/data-table.js';
3
2
  import { QueryColumnKeyMap } from '../types/explorer-types.js';
4
3
  import { ComparisonMetadataMap } from '../types/query-types.js';
5
4
  import { SemaphorResultColumn } from '../../shared/analytics-protocol/index.js';
@@ -41,5 +40,3 @@ export declare function resolveExportTableView(input: {
41
40
  readonly comparisonMetadata?: ComparisonMetadataMap;
42
41
  readonly viewerTable?: ExportViewerTable;
43
42
  }): TableView;
44
- /** The card with the author's table preferences an export was given (they decide what the author hid). */
45
- export declare function withTablePreferences(card: TCard, tablePreferences: TablePreferences | undefined): TCard;
@@ -108,7 +108,7 @@ export declare function clampDocumentSpacerHeight(heightPx: number): number;
108
108
  */
109
109
  export declare function getDocumentSectionDropIndex(sections: readonly Pick<DocumentSection, 'id'>[], sectionId: string, targetSectionId: string, placement: 'before' | 'after'): number;
110
110
  /**
111
- * Cards a Document can copy: every executable table, pivot table, Matrix or KPI in
111
+ * Cards a Document can copy: every executable table, Matrix or KPI in
112
112
  * the dashboard, including other document sections, except the given
113
113
  * section's own cards. Linked library visuals are not offered: their stored
114
114
  * card is completed by hydration, so a copy could be incomplete.
@@ -2,12 +2,10 @@ import { TChartType } from '../charts/types.js';
2
2
  import { DocumentSection, TCard } from '../types/common-types.js';
3
3
  /**
4
4
  * Author-facing identity of a Document section. It differs from the storage
5
- * `type`: Table, Pivot and Matrix are all stored as `type: 'table'` and are
6
- * told apart by `card.type`.
5
+ * `type`: Table and Matrix are both stored as `type: 'table'` and are told
6
+ * apart by `card.type`.
7
7
  */
8
8
  export type DocumentSectionKindId = 'text' | 'table' | 'matrix' | 'kpi' | 'spacer' | 'page_break'
9
- /** Existing sections only. */
10
- | 'pivot'
11
9
  /** Contract-only: not addable, not rendered. */
12
10
  | 'chart';
13
11
  export type DocumentIdFactory = {
@@ -6,10 +6,9 @@ export declare const DOCUMENT_TABLE_PREVIEW_QUERY_CHUNK_SIZE = 250;
6
6
  export declare function isDocumentFlatTableAcquisitionCard(card: TCard): boolean;
7
7
  export declare function isDocumentSqlTablePaginationEnabled(card: TCard): boolean;
8
8
  export declare function getDocumentTableQueryPageSize(policy: DocumentTableDataPolicy): 500 | 250;
9
- export declare function shouldUseServerPaginationForDashboardCardQuery({ card, isTablePrintMode, isPrintDisplayMode, isDocumentSectionRuntime, documentTableDataPolicy, }: {
9
+ export declare function shouldUseServerPaginationForDashboardCardQuery({ card, isTablePrintMode, isDocumentSectionRuntime, documentTableDataPolicy, }: {
10
10
  card: TCard;
11
11
  isTablePrintMode: boolean;
12
- isPrintDisplayMode: boolean;
13
12
  isDocumentSectionRuntime: boolean;
14
13
  documentTableDataPolicy?: DocumentTableDataPolicy;
15
14
  }): boolean;
@@ -1,10 +1,10 @@
1
1
  import { TCard } from '../types/common-types.js';
2
- import { CardConfig, GroupByField, PivotByField } from '../types/explorer-types.js';
2
+ import { CardConfig, GroupByField } from '../types/explorer-types.js';
3
3
  import { ShelfCard } from '../utils/card-definition.js';
4
4
  export type GroupedTemporalActivation = {
5
5
  cardType: string;
6
6
  cardConfig: CardConfig;
7
- fields: Array<GroupByField | PivotByField>;
7
+ fields: GroupByField[];
8
8
  };
9
9
  export declare class AmbiguousGroupedTemporalGrainError extends Error {
10
10
  readonly code = "ambiguous_temporal_grain";
@@ -16,7 +16,7 @@ export declare class AmbiguousGroupedTemporalGrainError extends Error {
16
16
  * dashboard families. DATE plus saved presentation and no grain is an
17
17
  * unambiguous day bucket; DATETIME/timestamp remains ambiguous.
18
18
  */
19
- export declare function normalizeGroupedTemporalField<T extends GroupByField | PivotByField>(field: T): T | undefined;
19
+ export declare function normalizeGroupedTemporalField<T extends GroupByField>(field: T): T | undefined;
20
20
  export declare function resolveShelfTemporalActivation(input: {
21
21
  card: ShelfCard;
22
22
  cardConfig?: CardConfig;
@@ -111,12 +111,6 @@ export declare function resolveGroupedTemporalPresentation(input: {
111
111
  attachmentIndex?: number;
112
112
  valueFormatPreferences?: GroupedTemporalViewerPreferences | null;
113
113
  }): GroupedTemporalPresentation;
114
- export declare function formatGroupedTemporalFieldValue(input: {
115
- fieldId: string;
116
- role?: GroupByField['role'] | PivotByField['role'];
117
- value: unknown;
118
- presentation: GroupedTemporalPresentation | undefined;
119
- }): string;
120
114
  export declare function formatGroupedTemporalValue(input: {
121
115
  value: unknown;
122
116
  presentation: GroupedTemporalColumnPresentation;
@@ -45,7 +45,6 @@ export declare function resolveCardRequestExtras(input: {
45
45
  */
46
46
  display?: {
47
47
  isTablePrintMode: boolean;
48
- isPrintDisplayMode: boolean;
49
48
  deliveryStrict?: boolean;
50
49
  };
51
50
  /** Present for a card in a Document section, with the section's table policy. */
@@ -3,7 +3,7 @@ import { ExactNumericValue } from '../../shared/analytics-protocol/scalar-value.
3
3
  import { MatrixAxis, MatrixPath } from '../../shared/analytics-protocol/matrix-path-contract.js';
4
4
  import { ColumnSettings, ColumnSettingsMap, TablePreferences } from '../../components/visual/data-table/types/data-table.js';
5
5
  export type TableFormattingVersion = 1;
6
- export type TableKind = 'table' | 'detailTable' | 'aggregateTable' | 'pivotTable' | 'matrixTable';
6
+ export type TableKind = 'table' | 'detailTable' | 'matrixTable';
7
7
  export type TablePart = 'body' | 'header' | 'footer' | 'subtotal' | 'grandTotal';
8
8
  export type ConditionalFormatValueType = 'text' | 'number' | 'date' | 'boolean' | 'unknown';
9
9
  export type ConditionalFormatColumn = {
@@ -765,13 +765,6 @@ export type TCardPreferences = {
765
765
  */
766
766
  queryComparisonPolarity?: MetricComparisonPolarity;
767
767
  };
768
- pivotTableOptions?: {
769
- showRowTotals?: boolean;
770
- showColumnTotals?: boolean;
771
- showGrandTotal?: boolean;
772
- sortRowsBy?: 'label' | 'total' | 'metric';
773
- sortColumnsBy?: 'label' | 'total' | 'metric';
774
- };
775
768
  displayOptions?: {
776
769
  showFilterInfo?: boolean;
777
770
  showCardToolbar?: boolean;
@@ -1,6 +1,6 @@
1
1
  import { TimeDrillStep } from './interaction-types.js';
2
2
  import { SemaphorDerivedFieldDefinition, MatrixConfig, SemaphorSourceRef, SemaphorResultColumn, SemaphorPivotValue, SemaphorTimeGrain, SemanticGroupedTemporalInput, TemporalBucketMetadata, TemporalBucketFormat, MetricComparisonConfig, MetricComparisonPolarity } from '../../shared/analytics-protocol/index.js';
3
- import { CanonicalPivotResultContract, CanonicalPivotResultState, FlatTableExportTotalsBehavior, FlatTableExportTotalsRequest, QueryColumnKeyMap as SharedQueryColumnKeyMap } from '../../shared/format-utils/index.js';
3
+ import { FlatTableExportTotalsBehavior, FlatTableExportTotalsRequest, QueryColumnKeyMap as SharedQueryColumnKeyMap } from '../../shared/format-utils/index.js';
4
4
  import { CardQuerySourceRowEvidence, TemporalResultOwner } from '../../shared/dashboard-authoring/index.js';
5
5
  import { RelativeDateFilter } from '../../shared/analytics-protocol/relative-date-filter.js';
6
6
  /**
@@ -620,11 +620,6 @@ const config: CardConfig = {
620
620
  }
621
621
  };
622
622
  */
623
- export declare enum PivotMarkerEnum {
624
- SUBTOTAL = "__SUBTOTAL__",
625
- TOTAL = "__TOTAL__",
626
- ALL = "__ALL__"
627
- }
628
623
  export interface CardConfig {
629
624
  /** Sole persisted Matrix definition; runtime windows are not card configuration. */
630
625
  matrix?: MatrixConfig;
@@ -688,9 +683,6 @@ export interface PivotColumnSchema {
688
683
  pivotFieldIds?: string[];
689
684
  pivotFields?: string[];
690
685
  displayLabel?: string;
691
- isPivotColumn?: boolean;
692
- isMetricColumn?: boolean;
693
- isGroupByColumn?: boolean;
694
686
  aggregate?: AggregateFunction;
695
687
  }
696
688
  /**
@@ -728,8 +720,6 @@ export interface QueryExecutionResponse extends CardQuerySourceRowEvidence {
728
720
  records: any[];
729
721
  /** Execution owner captured with these exact result rows. */
730
722
  resultOwner?: TemporalResultOwner;
731
- pivotResultState?: CanonicalPivotResultState;
732
- pivotResultContract?: CanonicalPivotResultContract;
733
723
  columns?: SemaphorResultColumn[];
734
724
  output: string;
735
725
  rowLimitExceeded: boolean;
@@ -737,9 +727,6 @@ export interface QueryExecutionResponse extends CardQuerySourceRowEvidence {
737
727
  userSql?: string;
738
728
  pivotSchema?: any;
739
729
  pagination?: PaginationMetadata;
740
- subtotalColumns?: string[];
741
- columnSubtotalMeta?: any;
742
- columnMetadata?: Record<string, any>;
743
730
  columnKeyMap?: QueryColumnKeyMap;
744
731
  tableTotalsByColumnId?: Record<string, string | number | null>;
745
732
  documentTableTotalsBaseSql?: string;
@@ -7,7 +7,17 @@ export declare function hasEditorInfoView(cardType: TCard['type']): boolean;
7
7
  /** The deprecated table types every saved card of which loads as Matrix (pivot-aggregate-to-matrix). */
8
8
  export declare const LEGACY_TABLE_CARD_TYPES: readonly ["pivotTable", "aggregateTable"];
9
9
  export type LegacyTableCardType = (typeof LEGACY_TABLE_CARD_TYPES)[number];
10
- export declare function isLegacyTableCard(card: Pick<TCard, 'type'>): card is Pick<TCard, 'type'> & {
10
+ /**
11
+ * A card as stored. Saved templates may still hold the retired table types,
12
+ * which no runtime reader handles: routing turns each into Matrix or Table on
13
+ * read (pivot-aggregate-removal LR-D10), so only routing takes this type.
14
+ */
15
+ export type StoredCard = Omit<TCard, 'type'> & {
16
+ type: TCard['type'] | LegacyTableCardType;
17
+ };
18
+ export declare function isLegacyTableCard<T extends {
19
+ type: string;
20
+ }>(card: T): card is T & {
11
21
  type: LegacyTableCardType;
12
22
  };
13
23
  /**
@@ -6,7 +6,7 @@ import { ResolvedPrimaryDateField } from '../../lib/types/semantic-runtime-types
6
6
  import { ComparisonMetadataMap } from '../../lib/types/query-types.js';
7
7
  import { ComparisonPresentationSpec, GlobalDateComparisonContext, SemaphorResultColumn } from '../analytics-protocol/index.js';
8
8
  import { ReportRuntimeContext } from '../report-runtime-context/index.js';
9
- import { CanonicalPivotResultTransport, CsvDelimiter, CsvEncoding, ExportFileFormat, PresentationExecutionSnapshot } from '../format-utils/index.js';
9
+ import { CsvDelimiter, CsvEncoding, ExportFileFormat, PresentationExecutionSnapshot } from '../format-utils/index.js';
10
10
  import { TemporalResultOwner } from './temporal-result-owner.js';
11
11
  import { ExportViewerTable } from '../../lib/dashboard-viewer/export-table-view.js';
12
12
  /** Formatting configuration passed to the export job */
@@ -127,7 +127,6 @@ type CardExportPresentationParams = {
127
127
  requestPayloadBase: DashboardCardQueryRequestPayloadBase;
128
128
  resultColumns?: SemaphorResultColumn[];
129
129
  columnKeyMap?: QueryColumnKeyMap;
130
- canonicalPivotResult?: CanonicalPivotResultTransport;
131
130
  effectiveCardConfig?: CardConfig;
132
131
  };
133
132
  /**
@@ -1,7 +1,8 @@
1
1
  import { TCard, TDashboard, TFrame } from '../../lib/types/common-types.js';
2
2
  import { CardTypeChangeGap } from '../../lib/utils/card-type-change.js';
3
+ import { StoredCard } from '../../lib/utils/card-config-utils.js';
3
4
  import { DashboardCardLocation } from './document-section-cards.js';
4
- export { LEGACY_TABLE_CARD_TYPES, isLegacyTableCard, type LegacyTableCardType, } from '../../lib/utils/card-config-utils.js';
5
+ export { LEGACY_TABLE_CARD_TYPES, isLegacyTableCard, type LegacyTableCardType, type StoredCard, } from '../../lib/utils/card-config-utils.js';
5
6
  /**
6
7
  * Load routing of Pivot and Hierarchical cards
7
8
  * (semaphor-app docs/implementation-plans/pivot-aggregate-to-matrix). Every
@@ -43,9 +44,13 @@ export type LegacyTableCardRouting =
43
44
  * query builder compiles the same SQL for both types). Every other Pivot and
44
45
  * every Hierarchical card becomes Matrix.
45
46
  */
46
- export declare function legacyTableRoutingTarget(card: TCard): 'table' | 'matrixTable';
47
- /** One card: always routed, with what the conversion could not keep (PM-D3). */
48
- export declare function routeLegacyTableCard(card: TCard): LegacyTableCardRouting;
47
+ export declare function legacyTableRoutingTarget(card: StoredCard): 'table' | 'matrixTable';
48
+ /**
49
+ * One card: always routed, with what the conversion could not keep (PM-D3).
50
+ * It takes a stored card, the one place a retired table type is accepted
51
+ * (LR-D10); every card it returns is a runtime card.
52
+ */
53
+ export declare function routeLegacyTableCard(input: TCard | StoredCard): LegacyTableCardRouting;
49
54
  /** Each card of a library frame. Returns the input object when nothing routed. */
50
55
  export declare function routeLegacyTableFrame<T extends Pick<TFrame, 'cards'>>(frame: T): T;
51
56
  /** A routed card that dropped data parts, where it sits, and what it dropped. */
@@ -1,15 +1 @@
1
1
  export declare const PDF_GROUP_CONTINUATION_CLASS = "pdf-group-continuation";
2
- /**
3
- * Show a label when its canonical hierarchy prefix changes. Compare only
4
- * adjacent rows and never suppress across subtotal or grand-total boundaries.
5
- * Adapters supply canonical values, not formatted labels or serialized keys.
6
- */
7
- export declare function shouldPresentGroupedTableValue<T extends {
8
- isSubtotal?: unknown;
9
- isGrandTotal?: unknown;
10
- }>(input: {
11
- row: T;
12
- previousRow?: T;
13
- levelIndex: number;
14
- getValue: (row: T, index: number) => unknown;
15
- }): boolean;
@@ -37,11 +37,9 @@ export * from './attachment-filter-line.js';
37
37
  export { describeFilterValueInFullDetail, type FullDetailFilterValue, } from './filter-value-text.js';
38
38
  export { describeConditionInFullDetail, type FilterClauseText } from './filter-detail.js';
39
39
  export { formatCanonicalComparisonRange } from '../../lib/utils/comparison-window-caption.js';
40
- export * from './aggregate-table-row-presentation.js';
41
40
  export { PDF_GROUP_CONTINUATION_CLASS } from './grouped-table-presentation.js';
42
41
  export { SEMAPHOR_GENERATED_COUNT_METRIC_ID } from '../analytics-protocol/contracts.js';
43
42
  export { resolveMetricResultAlias } from '../analytics-protocol/metric-comparison.js';
44
43
  export * from './pivot-header-presentation.js';
45
44
  export * from './pivot-result-identity.js';
46
45
  export * from './pivot-result-contract-expectations.js';
47
- export * from './pivot-result-lifecycle.js';
@@ -18,7 +18,7 @@ export declare const PDF_SAFETY_LIMIT_EXCEEDED: "PDF_SAFETY_LIMIT_EXCEEDED";
18
18
  * fast path, the print views and scheduled attachments (report attachment
19
19
  * delivery RA-D1).
20
20
  */
21
- export declare const PDF_TABLE_CARD_TYPES: readonly ["table", "detailTable", "aggregateTable", "pivotTable"];
21
+ export declare const PDF_TABLE_CARD_TYPES: readonly ["table", "detailTable"];
22
22
  export type PdfTableCardType = (typeof PDF_TABLE_CARD_TYPES)[number];
23
23
  export declare function isPdfTableCardType(cardType: unknown): cardType is PdfTableCardType;
24
24
  /** Exact UTF-8 bytes used by the structured POST body. */
@@ -1,28 +1,10 @@
1
1
  import { MetricResultAliasInput } from '../analytics-protocol/index.js';
2
- import { PivotResultExpectedRoleFieldIds } from './pivot-result-lifecycle.js';
3
- type IdentifiedField = {
2
+ type IdentifiedMetricField = {
4
3
  id?: string;
5
- };
6
- type IdentifiedMetricField = IdentifiedField & MetricResultAliasInput;
7
- export type PivotResultContractExpectations = {
8
- expectedRoleFieldIds: PivotResultExpectedRoleFieldIds;
9
- expectedMetricAliases: string[];
10
- };
4
+ } & MetricResultAliasInput;
11
5
  /**
12
6
  * Returns the stable aliases required to distinguish repeated instances of
13
7
  * one metric field. Unique metric fields remain role/field scoped.
14
8
  */
15
9
  export declare function deriveMetricInstanceAliasExpectations(metrics: readonly IdentifiedMetricField[]): string[];
16
- /**
17
- * Derives the authored identity expectations stored in a canonical pivot
18
- * lifecycle contract. Producers and cache-compatibility consumers must use
19
- * this same projection so generated Count and repeated metric instances cannot
20
- * drift across the transport seam.
21
- */
22
- export declare function derivePivotResultContractExpectations(input: {
23
- groupByFields?: readonly IdentifiedField[];
24
- metricFields?: readonly IdentifiedMetricField[];
25
- pivotByFields?: readonly IdentifiedField[];
26
- detailFields?: readonly IdentifiedField[];
27
- }): PivotResultContractExpectations;
28
10
  export {};
@@ -12,15 +12,6 @@ export interface QueryColumnKeyMap {
12
12
  byRole: QueryColumnKeyMapByRole;
13
13
  byMetricAlias?: Record<string, QueryColumnKeyMapEntry>;
14
14
  }
15
- export type PivotResultColumnClassification = {
16
- isSubtotal?: boolean;
17
- subtotalScope?: 'base' | 'pivot-value' | 'grand-total';
18
- };
19
- export declare function isPivotSubtotalPrefix(classification: PivotResultColumnClassification | undefined): boolean;
20
- export declare function isPivotEmptyTupleAllowed(input: {
21
- expectedPivotFieldIds: readonly string[];
22
- classification?: PivotResultColumnClassification;
23
- }): boolean;
24
15
  export declare class PivotResultIdentityError extends Error {
25
16
  readonly deliveryBlocking = true;
26
17
  readonly code: "missing_pivot_member_identity";
@@ -30,23 +21,12 @@ export declare function requirePivotHeaderMembers(input: {
30
21
  identity: SemaphorPivotResultColumnIdentity;
31
22
  columnKey: string;
32
23
  expectedPivotFieldIds?: readonly string[];
33
- allowPrefix?: boolean;
34
- allowEmpty?: boolean;
35
24
  }): readonly SemaphorPivotResultMember[];
36
25
  export declare function requirePivotResultColumnIdentities(columns: readonly {
37
26
  key: string;
38
27
  pivotIdentity?: SemaphorPivotResultColumnIdentity;
39
28
  }[], options: {
40
29
  expectedPivotFieldIds: readonly string[];
41
- columnClassifications?: Readonly<Record<string, PivotResultColumnClassification | undefined>>;
42
- allowPrefixForColumn?: (column: {
43
- key: string;
44
- pivotIdentity?: SemaphorPivotResultColumnIdentity;
45
- }) => boolean;
46
- allowEmptyForColumn?: (column: {
47
- key: string;
48
- pivotIdentity?: SemaphorPivotResultColumnIdentity;
49
- }) => boolean;
50
30
  }): void;
51
31
  export declare function resolveQueryColumnKeyMapEntry(columnKeyMap: QueryColumnKeyMap | undefined, fieldId: string, role: QueryColumnKeyRole): QueryColumnKeyMapEntry | undefined;
52
32
  export declare function resolveUniqueQueryColumnKeyMapEntry(columnKeyMap: QueryColumnKeyMap | undefined, fieldId: string): QueryColumnKeyMapEntry | undefined;
@@ -44,7 +44,6 @@ export type TableExportFormatter = {
44
44
  };
45
45
  export declare function prepareTableExport(input: {
46
46
  formatting: TableExportFormatting;
47
- cardType: 'table' | 'detailTable' | 'pivotTable' | 'aggregateTable';
48
47
  /** The /api/v1/query body the rows came from (a background job's `queryPayload`). Read for the effective card config, result owner, SQL and Python flags. */
49
48
  queryPayload: Record<string, unknown>;
50
49
  }): TableExportFormatter;
@@ -24,8 +24,4 @@ export type TableExportResult = {
24
24
  /** Authoritative data types (SemaphorResultColumn.dataType), from the same response. Missing columns are 'unknown'. */
25
25
  resultColumns: readonly Pick<SemaphorResultColumn, 'key' | 'dataType'>[];
26
26
  columnKeyMap?: QueryColumnKeyMap;
27
- /** Pivot column classifications (deprecated pivot results only). */
28
- columnMetadata?: unknown;
29
- /** 'not_pivot' for Table and Detail Table; the other values only for deprecated pivot results. */
30
- pivotResultKind: 'not_pivot' | 'canonical' | 'legacy_raw';
31
27
  };
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "support@semaphor.cloud"
6
6
  },
7
7
  "license": "MIT",
8
- "version": "0.1.555",
8
+ "version": "0.1.556",
9
9
  "description": "Fully interactive and customizable dashboards for your apps.",
10
10
  "keywords": [
11
11
  "react",
@@ -127,7 +127,7 @@
127
127
  "build": "node scripts/build.mjs",
128
128
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
129
129
  "lint:regressions": "node scripts/lint-regressions.mjs",
130
- "check:guards": "node scripts/card-config-consumers.mjs && node scripts/components-entry-imports.mjs && node scripts/types-entry-imports.mjs && node scripts/card-query-assembly-imports.mjs && node scripts/matrix-conversion-imports.mjs && node scripts/assistant-chat-imports.mjs && node scripts/filter-model-reads.mjs && node scripts/layout-engine.mjs",
130
+ "check:guards": "node scripts/card-config-consumers.mjs && node scripts/components-entry-imports.mjs && node scripts/types-entry-imports.mjs && node scripts/card-query-assembly-imports.mjs && node scripts/matrix-conversion-imports.mjs && node scripts/legacy-table-type-references.mjs && node scripts/assistant-chat-imports.mjs && node scripts/filter-model-reads.mjs && node scripts/layout-engine.mjs",
131
131
  "preview": "vite preview",
132
132
  "test": "vitest run",
133
133
  "test:changed": "vitest run --changed",