@sisense/sdk-ui 2.29.0 → 2.31.0

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 (249) hide show
  1. package/dist/ai.cjs +57 -57
  2. package/dist/ai.js +767 -797
  3. package/dist/analytics-composer/node.cjs +1 -1
  4. package/dist/analytics-composer/node.js +1871 -1324
  5. package/dist/analytics-composer.cjs +2 -2
  6. package/dist/analytics-composer.js +8 -8
  7. package/dist/apply-styled-options-to-query-BddNnNsW.js +7028 -0
  8. package/dist/apply-styled-options-to-query-BrP6xVFh.cjs +1 -0
  9. package/dist/index-BcggtLDg.js +847 -0
  10. package/dist/{index-C77YCBVd.js → index-DCYw3JUB.js} +29 -7
  11. package/dist/index-DTvxJdqZ.cjs +1 -0
  12. package/dist/index-DhUTJSni.cjs +1 -0
  13. package/dist/index.cjs +614 -495
  14. package/dist/index.js +27269 -26507
  15. package/dist/index.umd.js +1035 -810
  16. package/dist/packages/sdk-ui/src/domains/dashboarding/common-filters/utils.d.ts +1 -1
  17. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-container.d.ts +1 -1
  18. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header/constants.d.ts +16 -0
  19. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header/dashboard-header-config.d.ts +122 -0
  20. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header/dashboard-header-targets.d.ts +26 -0
  21. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header/dashboard-header-title.d.ts +20 -0
  22. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header/dashboard-header.d.ts +9 -0
  23. package/dist/packages/sdk-ui/src/domains/dashboarding/components/toolbar/edit-toggle.d.ts +5 -0
  24. package/dist/packages/sdk-ui/src/domains/dashboarding/components/toolbar/filter-toggle.d.ts +5 -0
  25. package/dist/packages/sdk-ui/src/domains/dashboarding/constants.d.ts +2 -2
  26. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-helpers.d.ts +21 -0
  27. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/translate-dashboard-utils.d.ts +43 -1
  28. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/persist-dashboard-model-middleware.d.ts +10 -0
  29. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/types.d.ts +7 -0
  30. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/utils.d.ts +2 -0
  31. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-module/dashboard-module.d.ts +34 -0
  32. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-module/types.d.ts +65 -0
  33. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard.d.ts +0 -1
  34. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/duplicate-widget/use-duplicate-widget-menu-item.d.ts +7 -0
  35. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-dashboard-header-menu-item.d.ts +9 -0
  36. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-edit-mode-with-history.d.ts +0 -1
  37. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-widget-updates-persistence.d.ts +2 -1
  38. package/dist/packages/sdk-ui/src/domains/dashboarding/persistence/types.d.ts +11 -1
  39. package/dist/packages/sdk-ui/src/domains/dashboarding/persistence/update-types.d.ts +4 -1
  40. package/dist/packages/sdk-ui/src/domains/dashboarding/types.d.ts +44 -16
  41. package/dist/packages/sdk-ui/src/domains/dashboarding/utils.d.ts +33 -1
  42. package/dist/packages/sdk-ui/src/domains/data-browser/add-measure-popover/add-measure-data-browser.d.ts +11 -0
  43. package/dist/packages/sdk-ui/src/domains/data-browser/add-measure-popover/add-measure-popover.d.ts +14 -0
  44. package/dist/packages/sdk-ui/src/domains/data-browser/add-measure-popover/measure-ranking-title.d.ts +21 -0
  45. package/dist/packages/sdk-ui/src/domains/data-browser/add-measure-popover/measures.d.ts +13 -0
  46. package/dist/packages/sdk-ui/src/domains/filters/components/criteria-filter-tile/criteria-filter-menu.d.ts +2 -1
  47. package/dist/packages/sdk-ui/src/domains/filters/components/criteria-filter-tile/criteria-filter-operations.d.ts +1 -0
  48. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/filter-editor-context.d.ts +1 -0
  49. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/filter-editor-popover.d.ts +2 -1
  50. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/filter-editor.d.ts +2 -1
  51. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/sections/numeric-condition-section/types.d.ts +5 -0
  52. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/sections/ranking-condition/index.d.ts +3 -0
  53. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/sections/ranking-condition/ranking-condition-controls.d.ts +33 -0
  54. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/sections/ranking-condition/ranking-condition-utils.d.ts +13 -0
  55. package/dist/packages/sdk-ui/src/domains/filters/components/filters-panel/filters-panel.d.ts +0 -1
  56. package/dist/packages/sdk-ui/src/domains/filters/components/filters-panel/hooks/use-existing-filter-editing.d.ts +2 -1
  57. package/dist/packages/sdk-ui/src/domains/narrative/components/narrative-collapsible.d.ts +22 -4
  58. package/dist/packages/sdk-ui/src/domains/narrative/components/narrative-top-slot-shell.d.ts +2 -0
  59. package/dist/packages/sdk-ui/src/domains/narrative/components/narrative-trigger-button.d.ts +17 -0
  60. package/dist/packages/sdk-ui/src/domains/narrative/components/widget-narrative-interactive.d.ts +20 -2
  61. package/dist/packages/sdk-ui/src/domains/narrative/components/widget-narrative.d.ts +11 -9
  62. package/dist/packages/sdk-ui/src/domains/narrative/core/build-narrative-request.d.ts +1 -1
  63. package/dist/packages/sdk-ui/src/domains/narrative/core/get-narrative-dimensions-and-measures.d.ts +2 -2
  64. package/dist/packages/sdk-ui/src/domains/narrative/core/get-widget-narrative-from-widget-props.d.ts +18 -0
  65. package/dist/packages/sdk-ui/src/domains/narrative/core/to-nlg-api-verbosity.d.ts +7 -0
  66. package/dist/packages/sdk-ui/src/domains/narrative/core/widget-narrative-config.d.ts +114 -0
  67. package/dist/packages/sdk-ui/src/domains/narrative/core/widget-props-to-narrative-params.d.ts +35 -32
  68. package/dist/packages/sdk-ui/src/domains/narrative/hooks/use-get-widget-narrative.d.ts +11 -22
  69. package/dist/packages/sdk-ui/src/domains/narrative/hooks/use-line-height.d.ts +10 -0
  70. package/dist/packages/sdk-ui/src/domains/narrative/hooks/use-widget-narrative-state.d.ts +8 -9
  71. package/dist/packages/sdk-ui/src/domains/query-execution/core/execute-query.d.ts +34 -1
  72. package/dist/packages/sdk-ui/src/domains/query-execution/hooks/use-execute-excel-query/excel-export/build-jaql-excel-export.d.ts +13 -5
  73. package/dist/packages/sdk-ui/src/domains/query-execution/hooks/use-execute-excel-query/excel-export/build-xlsx-export-payload.d.ts +5 -0
  74. package/dist/packages/sdk-ui/src/domains/query-execution/hooks/use-execute-query-by-widget-id/use-execute-query-by-widget-id.d.ts +2 -1
  75. package/dist/packages/sdk-ui/src/domains/query-execution/types.d.ts +55 -3
  76. package/dist/packages/sdk-ui/src/domains/shared/header/header-item-cell.d.ts +25 -0
  77. package/dist/packages/sdk-ui/src/domains/shared/header/header-item-size.d.ts +31 -0
  78. package/dist/packages/sdk-ui/src/domains/shared/header/header-items-renderer.d.ts +23 -0
  79. package/dist/packages/sdk-ui/src/domains/shared/header/header-spacer-item.d.ts +9 -0
  80. package/dist/packages/sdk-ui/src/domains/shared/header/index.d.ts +7 -0
  81. package/dist/packages/sdk-ui/src/domains/shared/header/resolve-header-items.d.ts +17 -0
  82. package/dist/packages/sdk-ui/src/domains/shared/header/types.d.ts +98 -0
  83. package/dist/packages/sdk-ui/src/domains/shared/header/use-resolved-header-items.d.ts +10 -0
  84. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/areamap-chart/data/areamap-data.d.ts +3 -1
  85. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/cartesians/helpers/data.d.ts +3 -1
  86. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/cartesians/stackable/streamgraph-chart/helpers/chart-data.d.ts +3 -1
  87. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/categoricals/helpers/data.d.ts +3 -1
  88. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/categoricals/sunburst-chart/data/index.d.ts +3 -1
  89. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/categoricals/treemap-chart/data/index.d.ts +3 -1
  90. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/highcharts-based-chart-renderer/build-highchart-options.d.ts +1 -0
  91. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/alerts/index.d.ts +5 -0
  92. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/data/index.d.ts +22 -0
  93. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/data-options/index.d.ts +33 -0
  94. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/design-options/index.d.ts +21 -0
  95. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/highchart-options/highcharts-options-builder.d.ts +3 -0
  96. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/sankey-chart-builder.d.ts +3 -0
  97. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/sankey-node-colors.d.ts +10 -0
  98. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/types.d.ts +38 -0
  99. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/types.d.ts +2 -1
  100. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/types.d.ts +12 -9
  101. package/dist/packages/sdk-ui/src/domains/visualizations/components/pivot-table/formatters/data-cell-formatters/data-cell-value-formatter.d.ts +1 -1
  102. package/dist/packages/sdk-ui/src/domains/visualizations/components/pivot-table/formatters/header-cell-formatters/header-cell-value-formatter.d.ts +1 -1
  103. package/dist/packages/sdk-ui/src/domains/visualizations/components/pivot-table/hooks/use-pivot-data-loading.d.ts +1 -0
  104. package/dist/packages/sdk-ui/src/domains/visualizations/components/pivot-table/resolve-pivot-container-size.d.ts +28 -0
  105. package/dist/packages/sdk-ui/src/domains/visualizations/components/sankey-chart.d.ts +30 -0
  106. package/dist/packages/sdk-ui/src/domains/visualizations/components/table/pure-table/helpers/calc-column-widths.d.ts +19 -1
  107. package/dist/packages/sdk-ui/src/domains/visualizations/components/table/pure-table/helpers/format-numbers.d.ts +1 -1
  108. package/dist/packages/sdk-ui/src/domains/visualizations/components/table/pure-table/styles/style-constants.d.ts +1 -1
  109. package/dist/packages/sdk-ui/src/domains/visualizations/components/table/pure-table/types.d.ts +5 -0
  110. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/cartesian-data.d.ts +1 -1
  111. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/categorical-data.d.ts +1 -1
  112. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/chart-data-service.d.ts +1 -1
  113. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/scatter-data.d.ts +2 -2
  114. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/types.d.ts +2 -1
  115. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data-options/apply-styled-options-to-query.d.ts +4 -4
  116. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data-options/types.d.ts +46 -7
  117. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/chart-options-service.d.ts +4 -0
  118. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/tooltip.d.ts +1 -1
  119. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/design-options.d.ts +40 -1
  120. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/funnel-plot-options.d.ts +1 -1
  121. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/number-format-config.d.ts +12 -0
  122. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/pie-plot-options.d.ts +2 -1
  123. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/sunburst/sunburst-levels.d.ts +2 -2
  124. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/sunburst/sunburst-options.d.ts +3 -3
  125. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/sunburst/sunburst-series.d.ts +1 -1
  126. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/treemap/treemap-tooltip.d.ts +2 -2
  127. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/types.d.ts +12 -3
  128. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/types.d.ts +1 -2
  129. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/use-chart-widget-excel-download.d.ts +2 -3
  130. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/use-chart-widget-narrative.d.ts +28 -0
  131. package/dist/packages/sdk-ui/src/domains/widgets/components/custom-widget/use-custom-widget-excel-download.d.ts +3 -3
  132. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/pivot-table-widget.d.ts +4 -4
  133. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/types.d.ts +1 -2
  134. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/use-pivot-widget-excel-download.d.ts +2 -3
  135. package/dist/packages/sdk-ui/src/domains/widgets/components/widget/types.d.ts +25 -9
  136. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-dashboard-filters.d.ts +1 -0
  137. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/categorical-labels-style.d.ts +94 -0
  138. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/index.d.ts +1 -0
  139. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/series-label-affix-style.d.ts +59 -0
  140. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/tabber.d.ts +17 -1
  141. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/to-widget-dto-style.d.ts +13 -1
  142. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/widget-narrative-style.d.ts +31 -0
  143. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/types.d.ts +102 -2
  144. package/dist/packages/sdk-ui/src/domains/widgets/helpers/excel-export-map-dimensions-measures.d.ts +17 -2
  145. package/dist/packages/sdk-ui/src/domains/widgets/helpers/number-format-config-to-numeric-mask.d.ts +5 -0
  146. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-container/widget-container.d.ts +7 -1
  147. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/widget-model.d.ts +6 -2
  148. package/dist/packages/sdk-ui/src/infra/api/narrative/narrative-endpoints.d.ts +2 -2
  149. package/dist/packages/sdk-ui/src/infra/app/settings/settings.d.ts +11 -0
  150. package/dist/packages/sdk-ui/src/infra/app/settings/types/features.d.ts +1 -3
  151. package/dist/packages/sdk-ui/src/infra/app/types.d.ts +17 -0
  152. package/dist/packages/sdk-ui/src/infra/decorators/component-decorators/with-tracking/use-track-component-init.d.ts +8 -0
  153. package/dist/packages/sdk-ui/src/infra/modules/types.d.ts +24 -5
  154. package/dist/packages/sdk-ui/src/infra/plugins/types.d.ts +34 -6
  155. package/dist/packages/sdk-ui/src/infra/plugins/widget-plugins/types.d.ts +180 -54
  156. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/de-de.d.ts +22 -0
  157. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/en-us.d.ts +22 -0
  158. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/es-ar.d.ts +22 -0
  159. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/es-es.d.ts +22 -0
  160. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/fr-fr.d.ts +22 -0
  161. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/it-it.d.ts +22 -0
  162. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ja-jp.d.ts +22 -0
  163. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ko-kr.d.ts +22 -0
  164. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/nl-nl.d.ts +22 -0
  165. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/pt-br.d.ts +22 -0
  166. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ru-ru.d.ts +22 -0
  167. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/tr-tr.d.ts +22 -0
  168. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/zh-cn.d.ts +22 -0
  169. package/dist/packages/sdk-ui/src/infra/translation/resources/en.d.ts +22 -0
  170. package/dist/packages/sdk-ui/src/infra/translation/resources/index.d.ts +44 -0
  171. package/dist/packages/sdk-ui/src/modules/ai/common/collapsible.d.ts +38 -2
  172. package/dist/packages/sdk-ui/src/modules/ai/get-nlg-insights-from-widget.d.ts +4 -13
  173. package/dist/packages/sdk-ui/src/modules/ai/index.d.ts +1 -1
  174. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/expression/custom-formula/validate-custom-formula.d.ts +11 -0
  175. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/expression/datetime-filter-processors.d.ts +6 -0
  176. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/expression/measure-processors.d.ts +16 -0
  177. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/expression/process-measured-value.d.ts +14 -0
  178. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/utils/schema-index.d.ts +4 -0
  179. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/validation/datetime-member-validation.d.ts +2 -0
  180. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/validation/datetime-range-validation.d.ts +2 -0
  181. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/validation/datetime-relative-validation.d.ts +1 -0
  182. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/validation/datetime-validation-utils.d.ts +40 -0
  183. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/validation/flatten-filters.d.ts +5 -0
  184. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/validation/normalize-member-for-granularity.d.ts +5 -0
  185. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/validation/query-datetime-validation.d.ts +7 -0
  186. package/dist/packages/sdk-ui/src/modules/analytics-composer/types.d.ts +16 -1
  187. package/dist/packages/sdk-ui/src/modules/analytics-composer/widget/to-widget-code.d.ts +1 -1
  188. package/dist/packages/sdk-ui/src/props.d.ts +46 -3
  189. package/dist/packages/sdk-ui/src/public-api/alpha.d.ts +0 -2
  190. package/dist/packages/sdk-ui/src/public-api/beta.d.ts +8 -0
  191. package/dist/packages/sdk-ui/src/public-api/internal.d.ts +1 -1
  192. package/dist/packages/sdk-ui/src/public-api/public.d.ts +4 -1
  193. package/dist/packages/sdk-ui/src/public-api/sisense-internal.d.ts +4 -3
  194. package/dist/packages/sdk-ui/src/shared/components/alert/alert.d.ts +1 -50
  195. package/dist/packages/sdk-ui/src/shared/components/alert/index.d.ts +2 -2
  196. package/dist/packages/sdk-ui/src/shared/components/no-results-overlay/images/index.d.ts +1 -1
  197. package/dist/packages/sdk-ui/src/shared/components/quota-notification/quota-notification.d.ts +3 -10
  198. package/dist/packages/sdk-ui/src/shared/components/radio.d.ts +1 -0
  199. package/dist/packages/sdk-ui/src/shared/hooks/use-synced-state.d.ts +6 -7
  200. package/dist/packages/sdk-ui/src/shared/icons/warning-icon.d.ts +2 -3
  201. package/dist/packages/sdk-ui/src/shared/icons/x-circle-icon.d.ts +2 -3
  202. package/dist/packages/sdk-ui/src/shared/utils/color/color-interpolation.d.ts +1 -1
  203. package/dist/packages/sdk-ui/src/shared/utils/color/colorjs.d.ts +36 -0
  204. package/dist/packages/sdk-ui/src/shared/utils/gradient.d.ts +3 -2
  205. package/dist/packages/sdk-ui/src/types.d.ts +89 -6
  206. package/dist/{use-hover-Dju4Dcv3.js → quota-notification-BMxiL8zu.js} +23452 -22126
  207. package/dist/quota-notification-CsGmQ05h.cjs +750 -0
  208. package/dist/translations/de-de.cjs +1 -1
  209. package/dist/translations/de-de.js +27 -5
  210. package/dist/translations/en-us.cjs +1 -1
  211. package/dist/translations/en-us.js +1 -1
  212. package/dist/translations/es-ar.cjs +1 -1
  213. package/dist/translations/es-ar.js +27 -5
  214. package/dist/translations/es-es.cjs +1 -1
  215. package/dist/translations/es-es.js +27 -5
  216. package/dist/translations/fr-fr.cjs +1 -1
  217. package/dist/translations/fr-fr.js +27 -5
  218. package/dist/translations/it-it.cjs +1 -1
  219. package/dist/translations/it-it.js +29 -7
  220. package/dist/translations/ja-jp.cjs +1 -1
  221. package/dist/translations/ja-jp.js +27 -5
  222. package/dist/translations/ko-kr.cjs +1 -1
  223. package/dist/translations/ko-kr.js +27 -5
  224. package/dist/translations/nl-nl.cjs +1 -1
  225. package/dist/translations/nl-nl.js +29 -7
  226. package/dist/translations/pt-br.cjs +1 -1
  227. package/dist/translations/pt-br.js +27 -5
  228. package/dist/translations/ru-ru.cjs +1 -1
  229. package/dist/translations/ru-ru.js +27 -5
  230. package/dist/translations/tr-tr.cjs +1 -1
  231. package/dist/translations/tr-tr.js +27 -5
  232. package/dist/translations/zh-cn.cjs +1 -1
  233. package/dist/translations/zh-cn.js +27 -5
  234. package/dist/{types-7YG0uOzO.js → types-BB6n10Af.js} +1 -1
  235. package/dist/{types-DlYJ_DZ0.cjs → types-CMUXHDie.cjs} +1 -1
  236. package/dist/{utils-BKRpWUGm.js → utils-C39pRlFD.js} +14298 -13977
  237. package/dist/utils-CL2eytnK.cjs +180 -0
  238. package/dist/{widget-composer-BXEyx308.cjs → widget-composer-DDulWu8l.cjs} +85 -10
  239. package/dist/{widget-composer-DRDw1oBF.js → widget-composer-DrfnZQa0.js} +350 -259
  240. package/package.json +13 -16
  241. package/dist/apply-styled-options-to-query-CaP4IMrQ.js +0 -6379
  242. package/dist/apply-styled-options-to-query-D5D8pRl2.cjs +0 -1
  243. package/dist/index-C9G8giSk.cjs +0 -1
  244. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header.d.ts +0 -3
  245. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-dashboard-header-toolbar.d.ts +0 -25
  246. package/dist/packages/sdk-ui/src/domains/narrative/core/widget-narrative-options.d.ts +0 -36
  247. package/dist/packages/sdk-ui/src/shared/hooks/use-quota-warning-dismissed.d.ts +0 -8
  248. package/dist/use-hover-CANskYrn.cjs +0 -720
  249. package/dist/utils-C4PIba42.cjs +0 -179
@@ -1 +1 @@
1
- "use strict";var rr=Object.defineProperty,nr=Object.defineProperties;var sr=Object.getOwnPropertyDescriptors;var ne=Object.getOwnPropertySymbols;var Ue=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable;var Pe=(e,t,r)=>t in e?rr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,f=(e,t)=>{for(var r in t||(t={}))Ue.call(t,r)&&Pe(e,r,t[r]);if(ne)for(var r of ne(t))ze.call(t,r)&&Pe(e,r,t[r]);return e},T=(e,t)=>nr(e,sr(t));var ge=(e,t)=>{var r={};for(var n in e)Ue.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&ne)for(var n of ne(e))t.indexOf(n)<0&&ze.call(e,n)&&(r[n]=e[n]);return r};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const B=require("../types-DlYJ_DZ0.cjs"),l=require("../apply-styled-options-to-query-D5D8pRl2.cjs");function ir(e,t){const r=e.length,n=t.length,s=Array.from({length:r+1},(i,o)=>Array.from({length:n+1},(a,u)=>o===0?u:u===0?o:0));for(let i=1;i<=r;i++)for(let o=1;o<=n;o++)s[i][o]=Math.min(s[i-1][o]+1,s[i][o-1]+1,s[i-1][o-1]+(e[i-1]===t[o-1]?0:1));return s[r][n]}function De(e,t){const r=[];let n="",s=0,i=!1,o=null;for(let a=0;a<e.length;a++){const u=e[a],c=e[a+1];if(i){if(u!==o){n+=u;continue}if(c===o){n+=u+c,a++;continue}i=!1,o=null,n+=u;continue}else{if(u==="'"||u==='"'){i=!0,o=u,n+=u;continue}if("([{".includes(u)&&s++,")]}".includes(u)&&s--,u===t&&s===0){r.push(n.trim()),n="";continue}}n+=u}return n.trim()&&r.push(n.trim()),r}function or(e,t){let r=0,n=!1,s=null;for(let i=0;i<e.length;i++){const o=e[i],a=e[i+1];if(n){if(o!==s)continue;if(a===s){i++;continue}n=!1,s=null}else{if(o==="'"||o==='"'){n=!0,s=o;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&r--,o===t&&r===0)return i}}return-1}function ar(e,t){if(e[t]!=="(")return-1;let r=1,n=t+1,s=!1,i=null;for(;n<e.length;){const o=e[n],a=e[n+1];if(s){if(o!==i){n++;continue}if(a===i){n+=2;continue}s=!1,i=null,n++}else{if(o==="'"||o==='"'){s=!0,i=o,n++;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&--r===0)return n;n++}}return-1}function ur(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function V(e){if(!e||typeof e!="string")throw new Error(`Invalid composeCode: expected non-empty string, got ${typeof e}`);const t=e.trim();if(!t)throw new Error("Invalid composeCode: empty string");const r=t.match(/^([a-zA-Z_$][a-zA-Z0-9_.$]*)\s*\((.*)\)$/);if(!r)throw new Error(`Invalid composeCode format: expected function call, got '${t}'`);const n=r[1],s=r[2],i=ut(s);return{function:n,args:i}}function ut(e){return e.trim()?De(e,",").map(ct):[]}function ct(e){if(!e)throw new Error("Cannot parse empty argument value");if(e==="null")return null;if(e==="undefined")return;if(e==="true")return!0;if(e==="false")return!1;if(e.match(/^-?\d+(\.\d+)?$/))return parseFloat(e);if(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')){const r=e[0];return e.slice(1,-1).replace(new RegExp(`${r}${r}`,"g"),r)}if(e.startsWith("[")&&e.endsWith("]")){const r=e.slice(1,-1).trim();if(!r)return[];const n=ut(r);return n.every(s=>typeof s=="string"),n}if(e.startsWith("{")&&e.endsWith("}")){const r=e.slice(1,-1).trim();return r?lr(r):{}}return e.includes("(")&&e.includes(")")?V(e):(e.startsWith("DM."),e)}function cr(e){const t=or(e,":");if(t===-1)throw new Error(`Invalid object property: expected 'key: value', got '${e}'`);const r=ur(e.slice(0,t).trim()),n=ct(e.slice(t+1).trim());return[r,n]}function lr(e){if(!e.trim())return{};const t=De(e,",").map(cr).filter(([,r])=>r!==null);return Object.fromEntries(t)}class fr{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(t,r){this.keyToValue.set(t,r),this.valueToKey.set(r,t)}getByKey(t){return this.keyToValue.get(t)}getByValue(t){return this.valueToKey.get(t)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class lt{constructor(t){this.generateIdentifier=t,this.kv=new fr}register(t,r){this.kv.getByValue(t)||(r||(r=this.generateIdentifier(t)),this.kv.set(r,t))}clear(){this.kv.clear()}getIdentifier(t){return this.kv.getByValue(t)}getValue(t){return this.kv.getByKey(t)}}class dr extends lt{constructor(){super(t=>t.name),this.classToAllowedProps=new Map}register(t,r){typeof r=="object"?(r.allowProps&&this.classToAllowedProps.set(t,r.allowProps),super.register(t,r.identifier)):super.register(t,r)}getAllowedProps(t){return this.classToAllowedProps.get(t)}}function mr(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}function pr(e,t){const r=mr(e);if("find"in r)return r.find(t);const n=r;for(let s=0;s<n.length;s++){const i=n[s];if(t(i))return i}}function j(e,t){Object.entries(e).forEach(([r,n])=>t(n,r))}function se(e,t){return e.indexOf(t)!==-1}function We(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class gr{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return pr(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const yr=e=>Object.prototype.toString.call(e).slice(8,-1),ft=e=>typeof e=="undefined",hr=e=>e===null,G=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Te=e=>G(e)&&Object.keys(e).length===0,L=e=>Array.isArray(e),br=e=>typeof e=="string",Fr=e=>typeof e=="number"&&!isNaN(e),Er=e=>typeof e=="boolean",Tr=e=>e instanceof RegExp,Q=e=>e instanceof Map,H=e=>e instanceof Set,dt=e=>yr(e)==="Symbol",Ar=e=>e instanceof Date&&!isNaN(e.valueOf()),Sr=e=>e instanceof Error,Ve=e=>typeof e=="number"&&isNaN(e),wr=e=>Er(e)||hr(e)||ft(e)||Fr(e)||br(e)||dt(e),Cr=e=>typeof e=="bigint",Or=e=>e===1/0||e===-1/0,qr=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),Dr=e=>e instanceof URL,mt=e=>e.replace(/\./g,"\\."),ye=e=>e.map(String).map(mt).join("."),Y=e=>{const t=[];let r="";for(let s=0;s<e.length;s++){let i=e.charAt(s);if(i==="\\"&&e.charAt(s+1)==="."){r+=".",s++;continue}if(i==="."){t.push(r),r="";continue}r+=i}const n=r;return t.push(n),t};function I(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const pt=[I(ft,"undefined",()=>null,()=>{}),I(Cr,"bigint",e=>e.toString(),e=>typeof BigInt!="undefined"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),I(Ar,"Date",e=>e.toISOString(),e=>new Date(e)),I(Sr,"Error",(e,t)=>{const r={name:e.name,message:e.message};return t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r},(e,t)=>{const r=new Error(e.message);return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r}),I(Tr,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),I(H,"set",e=>[...e.values()],e=>new Set(e)),I(Q,"map",e=>[...e.entries()],e=>new Map(e)),I(e=>Ve(e)||Or(e),"number",e=>Ve(e)?"NaN":e>0?"Infinity":"-Infinity",Number),I(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),I(Dr,"URL",e=>e.toString(),e=>new URL(e))];function ce(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const gt=ce((e,t)=>dt(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),$r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),yt=ce(qr,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=$r[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function ht(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const bt=ce(ht,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return f({},e);const n={};return r.forEach(s=>{n[s]=e[s]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),Ft=ce((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),Nr=[bt,gt,Ft,yt],je=(e,t)=>{const r=We(Nr,s=>s.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=We(pt,s=>s.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation}},Et={};pt.forEach(e=>{Et[e.annotation]=e});const xr=(e,t,r)=>{if(L(t))switch(t[0]){case"symbol":return gt.untransform(e,t,r);case"class":return bt.untransform(e,t,r);case"custom":return Ft.untransform(e,t,r);case"typed-array":return yt.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const n=Et[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}},W=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function Tt(e){if(se(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(se(e,"prototype"))throw new Error("prototype is not allowed as a property");if(se(e,"constructor"))throw new Error("constructor is not allowed as a property")}const vr=(e,t)=>{Tt(t);for(let r=0;r<t.length;r++){const n=t[r];if(H(e))e=W(e,+n);else if(Q(e)){const s=+n,i=+t[++r]==0?"key":"value",o=W(e,s);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[n]}return e},Ae=(e,t,r)=>{if(Tt(t),t.length===0)return r(e);let n=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(L(n)){const a=+o;n=n[a]}else if(G(n))n=n[o];else if(H(n)){const a=+o;n=W(n,a)}else if(Q(n)){if(i===t.length-2)break;const u=+o,c=+t[++i]==0?"key":"value",y=W(n,u);switch(c){case"key":n=y;break;case"value":n=n.get(y);break}}}const s=t[t.length-1];if(L(n)?n[+s]=r(n[+s]):G(n)&&(n[s]=r(n[s])),H(n)){const i=W(n,+s),o=r(i);i!==o&&(n.delete(i),n.add(o))}if(Q(n)){const i=+t[t.length-2],o=W(n,i);switch(+s==0?"key":"value"){case"key":{const u=r(o);n.set(u,n.get(o)),u!==o&&n.delete(o);break}case"value":{n.set(o,r(n.get(o)));break}}}return e};function Se(e,t,r=[]){if(!e)return;if(!L(e)){j(e,(i,o)=>Se(i,t,[...r,...Y(o)]));return}const[n,s]=e;s&&j(s,(i,o)=>{Se(i,t,[...r,...Y(o)])}),t(n,r)}function Mr(e,t,r){return Se(t,(n,s)=>{e=Ae(e,s,i=>xr(i,n,r))}),e}function Rr(e,t){function r(n,s){const i=vr(e,Y(s));n.map(Y).forEach(o=>{e=Ae(e,o,()=>i)})}if(L(t)){const[n,s]=t;n.forEach(i=>{e=Ae(e,Y(i),()=>e)}),s&&j(s,r)}else j(t,r);return e}const Ir=(e,t)=>G(e)||L(e)||Q(e)||H(e)||ht(e,t);function Lr(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}function kr(e,t){const r={};let n;return e.forEach(s=>{if(s.length<=1)return;t||(s=s.map(a=>a.map(String)).sort((a,u)=>a.length-u.length));const[i,...o]=s;i.length===0?n=o.map(ye):r[ye(i)]=o.map(ye)}),n?Te(r)?[n]:[n,r]:Te(r)?void 0:r}const At=(e,t,r,n,s=[],i=[],o=new Map)=>{var b;const a=wr(e);if(!a){Lr(e,s,t);const F=o.get(e);if(F)return n?{transformedValue:null}:F}if(!Ir(e,r)){const F=je(e,r),p=F?{transformedValue:F.value,annotations:[F.type]}:{transformedValue:e};return a||o.set(e,p),p}if(se(i,e))return{transformedValue:null};const u=je(e,r),c=(b=u==null?void 0:u.value)!=null?b:e,y=L(c)?[]:{},d={};j(c,(F,p)=>{if(p==="__proto__"||p==="constructor"||p==="prototype")throw new Error(`Detected property ${p}. This is a prototype pollution risk, please remove it from your object.`);const E=At(F,t,r,n,[...s,p],[...i,e],o);y[p]=E.transformedValue,L(E.annotations)?d[p]=E.annotations:G(E.annotations)&&j(E.annotations,(q,x)=>{d[mt(p)+"."+x]=q})});const g=Te(d)?{transformedValue:y,annotations:u?[u.type]:void 0}:{transformedValue:y,annotations:u?[u.type,d]:d};return a||o.set(e,g),g};function St(e){return Object.prototype.toString.call(e).slice(8,-1)}function Je(e){return St(e)==="Array"}function Br(e){if(St(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function _r(e,t,r,n,s){const i={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=r),s&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function we(e,t={}){if(Je(e))return e.map(s=>we(s,t));if(!Br(e))return e;const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertySymbols(e);return[...r,...n].reduce((s,i)=>{if(Je(t.props)&&!t.props.includes(i))return s;const o=e[i],a=we(o,t);return _r(s,i,a,e,t.nonenumerable),s},{})}class h{constructor({dedupe:t=!1}={}){this.classRegistry=new dr,this.symbolRegistry=new lt(r=>{var n;return(n=r.description)!=null?n:""}),this.customTransformerRegistry=new gr,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,n=At(t,r,this,this.dedupe),s={json:n.transformedValue};n.annotations&&(s.meta=T(f({},s.meta),{values:n.annotations}));const i=kr(r,this.dedupe);return i&&(s.meta=T(f({},s.meta),{referentialEqualities:i})),s}deserialize(t){const{json:r,meta:n}=t;let s=we(r);return n!=null&&n.values&&(s=Mr(s,n.values,this)),n!=null&&n.referentialEqualities&&(s=Rr(s,n.referentialEqualities)),s}stringify(t){return JSON.stringify(this.serialize(t))}parse(t){return this.deserialize(JSON.parse(t))}registerClass(t,r){this.classRegistry.register(t,r)}registerSymbol(t,r){this.symbolRegistry.register(t,r)}registerCustom(t,r){this.customTransformerRegistry.register(f({name:r},t))}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}h.defaultInstance=new h;h.serialize=h.defaultInstance.serialize.bind(h.defaultInstance);h.deserialize=h.defaultInstance.deserialize.bind(h.defaultInstance);h.stringify=h.defaultInstance.stringify.bind(h.defaultInstance);h.parse=h.defaultInstance.parse.bind(h.defaultInstance);h.registerClass=h.defaultInstance.registerClass.bind(h.defaultInstance);h.registerSymbol=h.defaultInstance.registerSymbol.bind(h.defaultInstance);h.registerCustom=h.defaultInstance.registerCustom.bind(h.defaultInstance);h.allowErrorProps=h.defaultInstance.allowErrorProps.bind(h.defaultInstance);const U=e=>e===void 0?l.Sort.None:e,Pr=e=>new B.JaqlElement(e.metadataItem,e.type),$e=e=>new l.DimensionalAttribute(e.name,e.expression,e.type,e.description,U(e.sort),e.dataSource,e.composeCode),Ne=e=>new l.DimensionalLevelAttribute(e.name,e.expression,e.granularity,e.format,e.description,U(e.sort),e.dataSource,e.composeCode),v=e=>{switch(e.__serializable){case"DimensionalAttribute":return $e(e);case"DimensionalLevelAttribute":return Ne(e);default:return e}},wt=e=>new l.DimensionalDimension(e.name,e.expression,e.attributes.map(v),e.dimensions.map(Ur),e.type,e.description,U(e.sort),e.dataSource,e.composeCode,e.defaultAttribute?v(e.defaultAttribute):void 0),Ct=e=>new l.DimensionalDateDimension(e.name,e.expression,e.description,U(e.sort),e.dataSource,e.composeCode,e.indexed,e.merged),Ur=e=>{switch(e.__serializable){case"DimensionalDimension":return wt(e);case"DimensionalDateDimension":return Ct(e);default:return e}},xe=e=>new l.DimensionalBaseMeasure(e.name,v(e.attribute),e.aggregation,e.format,e.description,U(e.sort),e.dataSource,e.composeCode),ve=e=>{const t=Object.fromEntries(Object.entries(e.context).map(([r,n])=>{if(n&&typeof n=="object"&&"__serializable"in n)switch(n.__serializable){case"DimensionalAttribute":return[r,$e(n)];case"DimensionalLevelAttribute":return[r,Ne(n)];case"DimensionalBaseMeasure":return[r,xe(n)];case"DimensionalCalculatedMeasure":return[r,ve(n)];case"DimensionalMeasureTemplate":return[r,Me(n)];case"MembersFilter":case"LogicalAttributeFilter":case"CascadingFilter":case"ExcludeFilter":case"MeasureFilter":case"RankingFilter":case"MeasureRankingFilter":case"NumericFilter":case"TextFilter":case"DateRangeFilter":case"RelativeDateFilter":case"CustomFilter":return[r,C(n)];default:return[r,n]}return[r,n]}));return new l.DimensionalCalculatedMeasure(e.name,e.expression,t,e.format,e.description,U(e.sort),e.dataSource,e.composeCode)},Me=e=>new l.DimensionalMeasureTemplate(e.name,v(e.attribute),e.format,e.description,U(e.sort),e.dataSource,e.composeCode),he=e=>{switch(e.__serializable){case"DimensionalBaseMeasure":return xe(e);case"DimensionalCalculatedMeasure":return ve(e);case"DimensionalMeasureTemplate":return Me(e);default:return e}},C=e=>{switch(e.__serializable){case"MembersFilter":return new l.MembersFilter(v(e.attribute),e.members,e.config.backgroundFilter?T(f({},e.config),{backgroundFilter:C(e.config.backgroundFilter)}):e.config,e.composeCode);case"LogicalAttributeFilter":return new l.LogicalAttributeFilter(e.filters.map(r=>C(r)),e.operator,e.config,e.composeCode);case"CascadingFilter":return new l.CascadingFilter(e._filters.map(r=>C(r)),e.config,e.composeCode);case"ExcludeFilter":return new l.ExcludeFilter(C(e.filter),e.input?C(e.input):void 0,e.config,e.composeCode);case"MeasureFilter":return new l.MeasureFilter(v(e.attribute),he(e.measure),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"RankingFilter":return new l.RankingFilter(v(e.attribute),he(e.measure),e.operator,e.count,e.config,e.composeCode);case"MeasureRankingFilter":return new l.MeasureRankingFilter(he(e.measure),e.operator,e.count,e.config,e.composeCode);case"NumericFilter":return new l.NumericFilter(v(e.attribute),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"TextFilter":return new l.TextFilter(v(e.attribute),e.operatorA,e.valueA,e.config,e.composeCode);case"DateRangeFilter":{const{valueA:r,valueB:n}=e;return new l.DateRangeFilter(v(e.attribute),r,n,e.config,e.composeCode)}case"RelativeDateFilter":return new l.RelativeDateFilter(v(e.attribute),e.offset,e.count,e.operator,e.anchor,e.config,e.composeCode);case"CustomFilter":return new l.CustomFilter(v(e.attribute),e.jaqlExpression,e.config,e.composeCode);default:return e}};h.registerCustom({isApplicable:B.isJaqlElement,serialize:e=>e.serialize(),deserialize:e=>Pr(e)},"JaqlElement");h.registerCustom({isApplicable:l.isDimensionalAttribute,serialize:e=>e.serialize(),deserialize:e=>$e(e)},"DimensionalAttribute");h.registerCustom({isApplicable:l.isDimensionalLevelAttribute,serialize:e=>e.serialize(),deserialize:e=>Ne(e)},"DimensionalLevelAttribute");h.registerCustom({isApplicable:l.isDimensionalDimension,serialize:e=>e.serialize(),deserialize:e=>wt(e)},"DimensionalDimension");h.registerCustom({isApplicable:l.isDimensionalDateDimension,serialize:e=>e.serialize(),deserialize:e=>Ct(e)},"DimensionalDateDimension");h.registerCustom({isApplicable:l.isDimensionalBaseMeasure,serialize:e=>e.serialize(),deserialize:e=>xe(e)},"DimensionalBaseMeasure");h.registerCustom({isApplicable:l.isDimensionalCalculatedMeasure,serialize:e=>e.serialize(),deserialize:e=>ve(e)},"DimensionalCalculatedMeasure");h.registerCustom({isApplicable:l.isDimensionalMeasureTemplate,serialize:e=>e.serialize(),deserialize:e=>Me(e)},"DimensionalMeasureTemplate");h.registerCustom({isApplicable:l.isMembersFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MembersFilter");h.registerCustom({isApplicable:l.isLogicalAttributeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"LogicalAttributeFilter");h.registerCustom({isApplicable:l.isCascadingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"CascadingFilter");h.registerCustom({isApplicable:l.isExcludeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"ExcludeFilter");h.registerCustom({isApplicable:l.isMeasureFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MeasureFilter");h.registerCustom({isApplicable:l.isRankingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"RankingFilter");h.registerCustom({isApplicable:l.isMeasureRankingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MeasureRankingFilter");h.registerCustom({isApplicable:l.isNumericFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"NumericFilter");h.registerCustom({isApplicable:l.isTextFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"TextFilter");h.registerCustom({isApplicable:l.isDateRangeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"DateRangeFilter");h.registerCustom({isApplicable:l.isRelativeDateFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"RelativeDateFilter");h.registerCustom({isApplicable:l.isCustomFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"CustomFilter");const zr=h,S="DM.";function D(e){return typeof e=="object"&&e!==null}function w(e){return typeof e=="object"&&e!==null&&"function"in e&&"args"in e}function Ot(e){return Array.isArray(e)&&e.every(w)}function le(e){return"attribute"in e&&"config"in e}function Z(e){return"left"in e&&"right"in e&&"operator"in e}function Re(e){return!le(e)&&!Z(e)}function qt(e){return D(e)&&"column"in e&&typeof e.column=="string"&&!("function"in e&&"args"in e)}function Dt(e){return!D(e)||!("column"in e)?!1:w(e.column)}const O=3;function N(e,t,r){if(t.length===0)return;let n=Number.MAX_SAFE_INTEGER,s;for(const i of t){const o=r(i),a=ir(e,o);a<n&&(n=a,s=i)}return s!==void 0?{best:s,distance:n}:void 0}const $t="en";function be(e,t){return e.localeCompare(t,$t,{sensitivity:"accent"})===0}function Ye(e,t){return t.length<=e.length&&e.slice(0,t.length).localeCompare(t,$t,{sensitivity:"accent"})===0}function ee(e){const t=[...e].sort((i,o)=>o.name.length-i.name.length),r=new Map,n=new Map,s=new Map;for(const i of e){r.set(i.name,i);const o=[...i.columns].sort((u,c)=>c.name.length-u.name.length);s.set(i.name,o);const a=new Map;for(const u of i.columns)a.set(u.name,u);n.set(i.name,a)}return{sortedTables:t,tableColumnMap:s,tableMap:r,columnMap:n}}function Ie(e,t){if(!e.startsWith(S))throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);const r=e.slice(S.length);if(!r)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);let n,s;for(const p of t.sortedTables)if(Ye(r,p.name+".")){const E=r.slice(p.name.length+1);if(!E)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);n=p,s=E;break}if(!n){const p=r.indexOf(".");if(p===-1)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);const E=r.slice(0,p),q=N(E,t.sortedTables,z=>z.name),x=q&&q.distance<=O?` Did you mean '${q.best.name}'?`:"";throw new Error(`Table '${E}' not found in the data model.${x}`)}const i=t.tableColumnMap.get(n.name);if(!i)throw new Error(`Table '${n.name}' found but has no columns`);let o,a;const u=l.DateLevels.all;for(const p of i){if(be(s,p.name))return{table:n,column:p};if(!Ye(s,p.name+"."))continue;const E=s.slice(p.name.length+1);if(!E)continue;const q=u.includes(E),x=l.isDatetime(p.dataType);if(q){if(x)return{table:n,column:p,level:E};o||(o=p,a=E);continue}x&&!o&&(o=p,a=E)}if(o&&a){if(u.includes(a))throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Column '${n.name}.${o.name}' is not a datetime column`);const p=N(a,u,q=>q),E=p&&p.distance<=O?` Did you mean '${p.best}'?`:"";throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${E}`)}const c=s.indexOf("."),y=c===-1?s:s.slice(0,c),d=N(s,i,p=>p.name),g=d&&d.distance<=O&&!be(d.best.name,y),b=g?` Did you mean '${d.best.name}'?`:"",F=!g&&s.endsWith(".")&&d!==void 0&&be(d.best.name,y)?` Use '${y}' without a trailing dot.`:"";throw new Error(`Column '${y}' not found in table '${n.name}'.${b}${F}`)}function Wr(e,t){const{table:r,column:n,level:s}=Ie(e,t);if(s){if(!l.isDatetime(n.dataType))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is not a datetime column`);const i=l.DateLevels.all;if(!i.includes(s))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Valid levels are: ${i.join(", ")}`);const o=l.DateLevels.dateOnly;if(n.dataType==="date"&&!o.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a date column, not a datetime column`);const a=l.DateLevels.timeOnly;if(n.dataType==="time"&&!a.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a time column, not a date column`)}return{table:r,column:n,level:s}}function X(e,t,r,n){const{table:s,column:i,level:o}=Wr(e,r);let a=o;if(l.isDatetime(i.dataType)&&a===void 0&&(n!=null&&n.inferredDateLevel)){const u=n.inferredDateLevel,c=l.DateLevels.all;if(!c.includes(u))throw new Error(`Invalid inferred date level '${u}'. Valid levels are: ${c.join(", ")}`);const y=`${e}.${u}`,d=l.DateLevels.dateOnly;if(i.dataType==="date"&&!d.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${y}'. Column '${s.name}.${i.name}' is only a date column, not a datetime column`);const g=l.DateLevels.timeOnly;if(i.dataType==="time"&&!g.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${y}'. Column '${s.name}.${i.name}' is only a time column, not a date column`);a=u}return l.createAttributeHelper({expression:i.expression,dataType:i.dataType,granularity:a,format:void 0,sort:void 0,dataSource:t})}function Vr(e,t,r){const{column:n,level:s}=Ie(e,r);if(s)throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${S}TableName.ColumnName'`);if(!l.isDatetime(n.dataType))throw new Error(`Invalid DateDimension name '${e}'. Column '${n.name}' is not a datetime column (got ${n.dataType}).`);return l.createDateDimension({name:n.name,expression:n.expression,dataSource:t})}const jr=(e,t)=>{if(!e)return;const r=typeof e=="object"?e.direction:e;if(!l.isSortDirection(r))return T(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`})},Jr=(e,t,r,n)=>{const s=jr(e.sortType,n);if(s)return{attribute:X(e.column,t,r),style:{},error:s};const i=X(e.column,t,r),o=l.omit(e,"column");return{attribute:i,style:o}},Yr=(e,t,r,n)=>typeof e=="string"?{attribute:X(e,t,r)}:qt(e)?Jr(e,t,r,n):{error:T(f({},n),{message:"Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."})},Nt=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"dimensions",input:t,message:"Invalid dimensions JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`dimensions[${a}]`,input:o};try{const c=Yr(o,r,n,u);if(c.error){i.push(c.error);return}c.attribute&&s.push(c.style!==void 0?{attribute:c.attribute,style:c.style}:{attribute:c.attribute})}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(f({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function Le(e,t){const r=Reflect.get(e,t);if(typeof r!="function")throw new Error(`Function '${t}' not found or is not a function`);return r}function Kr(e,t){const r=e.replace("measureFactory.",""),s=Le(l.measureFactory,r)(...t);if(!Re(s))throw new Error(`Function '${e}' did not return a valid Measure`);return s}function Gr(e,t){const r=e.replace("filterFactory.logic.",""),s=Le(l.logic,r)(...t);if(!Z(s))throw new Error(`Function '${e}' did not return a valid FilterRelations`);return s}function Qr(e,t){if(e.startsWith("filterFactory.logic."))return Gr(e,t);const r=e.replace("filterFactory.",""),s=Le(l.filterFactory,r)(...t);if(!le(s)&&!Z(s))throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);return s}function Hr(e,t){const n=e.split(".")[0];if(n==="measureFactory")return Kr(e,t);if(n==="filterFactory")return Qr(e,t);throw new Error(`Unsupported factory: '${n}'. Supported factories: measureFactory, filterFactory`)}const m=(e,t,r,n)=>f({category:e,minArgs:t,maxArgs:r},n),Xr=new Set(["CORREL","COVARP","COVAR","EXPONDIST","INTERCEPT","LARGEST","NORMDIST","POISSONDIST","SKEWP","SKEW","SLOPE","TDIST","COSH","SINH","TANH","ORDERING","RDOUBLE","RINT"]),oe={SDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Seconds,argType:"datetime"}),MNDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Minutes,argType:"datetime"}),HDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Hours,argType:"datetime"}),DDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Days,argType:"datetime"}),MDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Months,argType:"datetime"}),QDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Quarters,argType:"datetime"}),YDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Years,argType:"datetime"}),ANYVALUE:m("aggregative",1,1),SUM:m("aggregative",1,2),AVG:m("aggregative",1,2),MIN:m("aggregative",1,2),MAX:m("aggregative",1,2),COUNT:m("aggregative",1,2),DUPCOUNT:m("aggregative",1,1),COUNTDUPLICATES:m("aggregative",1,1),STDEV:m("aggregative",1,2),STDEVP:m("aggregative",1,2),VAR:m("aggregative",1,2),VARP:m("aggregative",1,2),MEDIAN:m("aggregative",1,2),QUARTILE:m("aggregative",2,3),PERCENTILE:m("aggregative",2,3),LOWERWHISKERMAX_IQR:m("aggregative",1,1),LOWERWHISKERMAX_STDEVP:m("aggregative",1,1),UPPERWHISKERMIN_IQR:m("aggregative",1,1),UPPERWHISKERMIN_STDEVP:m("aggregative",1,1),OUTLIERSCOUNT_IQR:m("aggregative",1,1),OUTLIERSCOUNT_STDEVP:m("aggregative",1,1),MODE:m("aggregative",1,1),NOAGGFUNCTION:m("aggregative",1,1),RANK:m("window",0,Number.POSITIVE_INFINITY),RSUM:m("window",1,2),RAVG:m("window",1,2),YTDSUM:m("window",1,1),QTDSUM:m("window",1,1),MTDSUM:m("window",1,1),WTDSUM:m("window",1,1),YTDAVG:m("window",1,1),QTDAVG:m("window",1,1),MTDAVG:m("window",1,1),WTDAVG:m("window",1,1),CONCAT:m("string",2,Number.POSITIVE_INFINITY),LEFT:m("string",2,2),RIGHT:m("string",2,2),ABS:m("scalar",1,1),ACOS:m("scalar",1,1),ASIN:m("scalar",1,1),ATAN:m("scalar",1,1),CEILING:m("scalar",1,1),CONTRIBUTION:m("scalar",1,1),COS:m("scalar",1,1),COT:m("scalar",1,1),DIFFPASTDAY:m("scalar",1,1),DIFFPASTMONTH:m("scalar",1,1),DIFFPASTPERIOD:m("scalar",1,1),DIFFPASTQUARTER:m("scalar",1,1),DIFFPASTWEEK:m("scalar",1,1),DIFFPASTYEAR:m("scalar",1,1),EXP:m("scalar",1,1),FLOOR:m("scalar",1,1),GROWTH:m("growth",1,1),GROWTHPASTMONTH:m("growth",1,1),GROWTHPASTQUARTER:m("growth",1,1),GROWTHPASTWEEK:m("growth",1,1),GROWTHPASTYEAR:m("growth",1,1),GROWTHRATE:m("growth",1,1),LN:m("scalar",1,1),LOG10:m("scalar",1,1),MINUS:m("scalar",1,1),MOD:m("scalar",2,2),QUOTIENT:m("scalar",2,2),PASTDAY:m("date",1,2),PASTMONTH:m("date",1,2),PASTPERIOD:m("date",1,2),PASTQUARTER:m("date",1,2),PASTWEEK:m("date",1,2),PASTYEAR:m("date",1,2),PERCENTILEDISCFORINTERNALUSEONLY:m("scalar",1,1),PERCENTILECONTFORINTERNALUSEONLY:m("scalar",1,1),POWER:m("scalar",2,2),ROUND:m("scalar",2,2),SIN:m("scalar",1,1),SQRT:m("scalar",1,1),TAN:m("scalar",1,1)},Zr=Object.keys(oe).filter(e=>oe[e].category==="xdiff");function xt(){return Zr}function vt(e){const t=oe[e.toUpperCase()];return t==null?void 0:t.requiredDateLevel}function en(e,t){return e===t?e===1?"1 parameter":`${e} parameters`:t===Number.POSITIVE_INFINITY?e<=1?"any number of parameters":`at least ${e} parameters`:`${e} or ${t} parameters`}const tn=/\[(\w[\w.-]*)\]/g,Mt=new Set(["AVG","COUNT","DUPCOUNT","MAX","MEDIAN","MIN","MODE","SUM","WTDAVG","WTDSUM","MTDAVG","MTDSUM","QTDAVG","QTDSUM","YTDAVG","YTDSUM"]),rn=new RegExp(`\\b(${Array.from(Mt).join("|")})\\s*\\(`,"i");function Rt(e){return w(e)?!0:typeof e=="string"&&e.startsWith(S)?!1:D(e)&&"kind"in e?e.kind==="measure":!0}function nn(e){const t=/\b(\w+)\s*\(/g,r=new Set;let n;for(;(n=t.exec(e))!==null;){const s=n[1];Mt.has(s.toUpperCase())||r.add(s)}return Array.from(r)}function sn(e){return e.length===1?`[${e[0]}]`:e.map(t=>`[${t}]`).join(", ")}function on(e){return e.length===0?"":e.length===1?`${e[0]} is not an aggregative function. `:`${e.join(", ")} are not aggregative functions. `}const J=e=>e.startsWith("[")?e:`[${e}]`,It=e=>e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;function Lt(e,t){if(t.length===0)return[];const r=t.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),n=new RegExp(`\\b(${r})\\s*\\(\\s*\\[([^\\]]+)\\]\\s*,\\s*\\[([^\\]]+)\\]\\s*\\)`,"gi");return[...e.matchAll(n)].map(s=>({functionName:s[1].toUpperCase(),ref1:s[2].trim(),ref2:s[3].trim()}))}function an(e,t,r){var o,a,u;const n=Object.keys(t),s=((o=r.errorPrefix)!=null?o:"customFormula validation").trim(),i=s===""?"":s.endsWith(" ")?s:`${s} `;return{formula:e,context:t,contextKeys:n,canonicalContextKeys:new Set(n.map(J)),errorPrefix:i,warnUnusedContext:(a=r.warnUnusedContext)!=null?a:!0,errorOnUnusedContext:(u=r.errorOnUnusedContext)!=null?u:!0,schemaIndex:r.schemaIndex,result:{isValid:!0,errors:[],warnings:[],references:[],unusedContextKeys:[]}}}function R(e,t){e.result.errors.push(t),e.result.isValid=!1}const un=new Set(["CASE","WHEN","THEN","ELSE","END","AND","OR"]);function cn(e){const t=/\b(\w+)\s*\[/gi,r=[...e.formula.matchAll(t)].find(n=>!un.has(n[1].toUpperCase()));r&&R(e,`${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`)}function ln(e,t){const r=e[t];let n=t+1;for(;n<e.length;){const s=e[n],i=e[n+1];if(s!==r){n++;continue}if(i===r){n+=2;continue}return n+1}return e.length}function fn(e){return De(e,",").filter(t=>t.trim().length>0).length}function dn(e,t,r,n){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]!=="(")return t;const s=t,i=ar(e,s);if(i===-1)return s+1;const o=e.slice(s+1,i);return n.push({name:r.toUpperCase(),argCount:fn(o)}),n.push(...kt(o)),i+1}function kt(e){const t=[];let r=0;for(;r<e.length;){const n=e[r];if(n==="'"||n==='"'){r=ln(e,r);continue}if(/[A-Za-z_]/.test(n)){const s=r;for(r++;r<e.length&&/[A-Za-z0-9_]/.test(e[r]);)r++;const i=e.slice(s,r);r=dn(e,r,i,t);continue}r++}return t}function mn(e){const t=kt(e.formula),r=new Set,n=new Set;for(const{name:s,argCount:i}of t){if(Xr.has(s)){r.has(s)||(r.add(s),R(e,`${e.errorPrefix}args[1]: Function ${s} is not supported in custom formulas`));continue}const o=oe[s];if(o&&(i<o.minArgs||i>o.maxArgs)&&!n.has(s)){n.add(s);const a=en(o.minArgs,o.maxArgs);R(e,`${e.errorPrefix}args[1]: Function ${s} accepts ${a}`)}}}function pn(e){return[...new Set([...e.matchAll(new RegExp(tn.source,"g"))].map(t=>t[1]))]}function gn(e){const t=e.result.references.filter(s=>!e.canonicalContextKeys.has(J(s)));if(t.length===0)return;const r=e.contextKeys.map(s=>`[${It(s)}]`).join(", "),n=t.length===1?`Reference [${t[0]}]`:`References [${t.join("], [")}]`;R(e,`${e.errorPrefix}args[1]: ${n} not found in context. Available keys: ${r}`)}function yn(e){if(rn.test(e.formula))return;const t=e.result.references.filter(r=>{var s;const n=(s=e.context[J(r)])!=null?s:e.context[r];return n!==void 0&&!Rt(n)});t.length!==0&&R(e,`${e.errorPrefix}args[1]: ${on(nn(e.formula))}Bracket reference(s) ${sn(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`)}function hn(e){if(!e.warnUnusedContext&&!e.errorOnUnusedContext||e.contextKeys.length===0)return;const t=new Set(e.result.references.map(J)),r=e.contextKeys.filter(i=>!t.has(J(i)));if(e.result.unusedContextKeys=r,r.length===0)return;const n=r.map(i=>`[${It(i)}]`).join(", "),s=`${e.errorPrefix}args[2]: Context keys ${n} are defined but not used in formula`;e.errorOnUnusedContext?R(e,s):e.warnUnusedContext&&e.result.warnings.push(s)}function Ke(e,t,r,n){var o;const s=(o=n.context[J(e)])!=null?o:n.context[e];if(s===void 0)return;if(!(typeof s=="string"&&s.startsWith(S))){Rt(s)&&R(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${S}Table.Column.Level).`);return}if(n.schemaIndex)try{const a=Ie(s,n.schemaIndex);l.isDatetime(a.column.dataType)?r&&a.level&&a.level!==r&&R(n,`${n.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`):R(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimensions. Reference [${e}] resolves to non-datetime column '${a.column.name}'.`)}catch(a){const u=a instanceof Error?a.message:"Unknown error";R(n,`${n.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`)}}function bn(e){const t=xt(),r=Lt(e.formula,t);for(const n of r){const s=vt(n.functionName);Ke(n.ref1,n,s,e),Ke(n.ref2,n,s,e)}}function Fn(e,t,r={}){var s;const n=an(e,t,r);return!e||e.trim().length===0?((s=r.allowEmptyFormula)!=null&&s||R(n,`${n.errorPrefix}args[1]: Formula cannot be empty`),n.result):(cn(n),mn(n),n.result.references=pn(e),n.result.references.length===0?(n.result.warnings.push(`${n.errorPrefix}args[1]: No bracket references found in formula - ensure this is intentional`),n.result):n.contextKeys.length===0?(R(n,`${n.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`),n.result):(gn(n),yn(n),hn(n),bn(n),n.result))}function En(e,t,r={}){const n=Fn(e,t,r);if(!n.isValid)throw new Error(n.errors.join("; "));n.warnings.length>0&&console.warn("Formula validation warnings:",n.warnings.join("; "))}function Tn(e,t){if(e.length<3||e.length>5)throw new Error(`${t.pathPrefix}Expected 3, 4, or 5 arguments for customFormula (title, formula, context, format?, description?)`);const r=e[1];if(typeof r!="string")throw new Error(`${t.pathPrefix}args[1]: Expected formula string, got ${typeof r}`);const n=r,s=e[2];if(!D(s))throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${s===null?"null":typeof s}`);const i=s;En(n,i,{errorPrefix:`${t.pathPrefix}`,errorOnUnusedContext:!0,allowEmptyFormula:!1,schemaIndex:t.schemaIndex});const o=An(n),a={};for(const[u,c]of Object.entries(i)){const y=`args[2].${u}`;if(w(c))a[`${u}`]=M({data:c,context:{dataSource:t.dataSource,schemaIndex:t.schemaIndex,pathPrefix:y}});else if(typeof c=="string"&&c.startsWith(S)){const d=u.startsWith("[")&&u.endsWith("]")?u.slice(1,-1):u,g=o[d];try{a[`${u}`]=X(c,t.dataSource,t.schemaIndex,g!==void 0?{inferredDateLevel:g}:void 0)}catch(b){const F=b instanceof Error?b.message:"Unknown error";throw new Error(`${y}: ${F}`)}}else if(c&&typeof c=="object"&&"kind"in c)a[`${u}`]=c;else throw new Error(`${y}: Invalid context value for key '${u}'. Expected a function call or attribute reference (${S}...), but got: ${typeof c}`)}return[e[0],e[1],a,...e.slice(3)]}function An(e){const t=xt(),r=Lt(e,t),n={};for(const s of r){const i=vt(s.functionName);if(i!==void 0)for(const o of[s.ref1,s.ref2]){const a=n[o];if(a!==void 0&&a!==i)throw new Error(`Reference [${o}] is used in xdiff functions with conflicting date levels ('${a}' and '${i}'). Specify the date level in the context (e.g. DM.Table.Column.${i}).`);n[o]=i}}return n}function Bt(e){return e.type===l.MetadataTypes.TextAttribute}function _t(e){return e.type===l.MetadataTypes.NumericAttribute}function Sn(e){return e.type===l.MetadataTypes.DateLevel}function wn(e){return Bt(e)||_t(e)}function fe(e){return e.type===l.MetadataTypes.TextAttribute?"text":e.type===l.MetadataTypes.NumericAttribute?"numeric":e.type===l.MetadataTypes.DateLevel?"date/datetime":"unknown"}function ke(e,t){const r=e[0];if(!r||typeof r!="object"||!("type"in r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function Ge(e,t){const r=ke(e,t);if(!wn(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${fe(r)} attribute`);return e}function _(e,t){const r=ke(e,t);if(!_t(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${fe(r)} attribute`);return e}function P(e,t){const r=ke(e,t);if(!Bt(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${fe(r)} attribute`);return e}function Cn(e,t){const r=e[0];if(!r||typeof r!="object"||!("attribute"in r))throw new Error(`${t.pathPrefix}args[0]: Expected filter as first argument`);return r}function On(e,t){const r=Cn(e,t);if(!l.isMembersFilter(r))throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable||"unknown"} filter`);return e}const qn={"measureFactory.customFormula":Tn,"filterFactory.equals":Ge,"filterFactory.doesntEqual":Ge,"filterFactory.greaterThan":_,"filterFactory.greaterThanOrEqual":_,"filterFactory.lessThan":_,"filterFactory.lessThanOrEqual":_,"filterFactory.between":_,"filterFactory.betweenNotEqual":_,"filterFactory.numeric":_,"filterFactory.contains":P,"filterFactory.doesntContain":P,"filterFactory.startsWith":P,"filterFactory.doesntStartWith":P,"filterFactory.endsWith":P,"filterFactory.doesntEndWith":P,"filterFactory.like":P,"filterFactory.exclude":On};function Dn(e){return qn[`${e}`]}const Pt={"measureFactory.sum":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.average":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.avg":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.min":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.max":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.median":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.count":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.countDistinct":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.aggregate":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.constant":[{type:"number",required:!0}],"measureFactory.customFormula":[{type:"string",required:!0,isName:!0},{type:"string",required:!0},{type:"CustomFormulaContext",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.add":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.subtract":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.multiply":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.divide":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.measuredValue":[{type:"Measure",required:!0},{type:"Filter[]",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.rank":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1},{type:"string",required:!1},{type:"Attribute[]",required:!1}],"measureFactory.trend":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.forecast":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.yearToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.quarterToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.monthToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.weekToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.runningSum":[{type:"Measure",required:!0},{type:"boolean",required:!1},{type:"string",required:!1,isName:!0}],"measureFactory.growth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthRate":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.difference":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastDay":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.contribution":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"filterFactory.union":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.intersection":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.exclude":[{type:"Filter",required:!0},{type:"Filter",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.contains":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntContain":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.startsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntStartWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.endsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEndWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.like":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.equals":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEqual":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.between":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.betweenNotEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.numeric":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"number",required:!1},{type:"string",required:!1},{type:"number",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.members":[{type:"Attribute",required:!0},{type:"string[]",required:!0},{type:"MembersFilterConfig",required:!1}],"filterFactory.dateFrom":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateTo":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRange":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!1},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelative":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeFrom":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeTo":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisYear":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisMonth":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisQuarter":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.today":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureEquals":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetween":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetweenNotEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.topRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.bottomRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureTopRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBottomRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.cascading":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.logic.and":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}],"filterFactory.logic.or":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}]};function de(e){return Pt[`${e}`]}function $n(e){const t=de(e);return t?t.filter(r=>r.required).length:0}function Nn(e){const t=de(e);return t?t.length:0}function xn(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}/.test(e))return!1;const r=Date.parse(e);if(isNaN(r)||e.length<10)return!1;const n=new Date(e);return!isNaN(n.getTime())}function Fe(e,t,r,n){if(e.startsWith(S))try{return X(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid attribute '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`)}function vn(e,t,r,n){if(e.startsWith(S))try{return Vr(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid date dimension string '${e}'. Expected format: '${S}TableName.ColumnName'`)}function Mn(e){const t=e.data,{argSchema:r,dataSource:n,schemaIndex:s,pathPrefix:i}=e.context,o=i;if(t===void 0){if(r.required)throw new Error(`${o}: Required argument is missing (expected ${r.type})`);return}if(!(t===null&&!r.required))switch(r.type){case"string":if(typeof t!="string")throw new Error(`${o}: Expected string, got ${typeof t}`);return t;case"number":if(typeof t!="number")throw new Error(`${o}: Expected number, got ${typeof t}`);return t;case"boolean":if(typeof t!="boolean")throw new Error(`${o}: Expected boolean, got ${typeof t}`);return t;case"string[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of strings, got ${typeof t}. Example: ['value1', 'value2']`);if(!t.every(a=>typeof a=="string"))throw new Error(`${o}: Expected array of strings, but contains non-string values`);return t;case"number[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of numbers, got ${typeof t}. Example: [10, 20]`);if(!t.every(a=>typeof a=="number"))throw new Error(`${o}: Expected array of numbers, but contains non-number values`);return t;case"Attribute":if(typeof t!="string")throw new Error(`${o}: Expected attribute string, got ${typeof t}. Example: 'DM.Commerce.Revenue'`);return Fe(t,n,s,o);case"Attribute[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of attributes, got ${typeof t}. Example: ['DM.Commerce.AgeRange']`);return t.map((a,u)=>{if(typeof a!="string")throw new Error(`${o}[${u}]: Expected attribute string, got ${typeof a}`);return Fe(a,n,s,`${o}[${u}]`)});case"Measure":case"BaseMeasure":if(!w(t))throw new Error(`${o}: Expected measure function call, got ${typeof t}. Example: {'function': 'measureFactory.sum', 'args': ['DM.Commerce.Revenue']}`);return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Measure[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of measure function calls, got ${typeof t}`);return t.map((a,u)=>{if(!w(a))throw new Error(`${o}[${u}]: Expected measure function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"Filter":if(!w(t))throw new Error(`${o}: Expected filter function call, got ${typeof t}. Example: {'function': 'filterFactory.contains', 'args': ['DM.Brand.Brand', 'Apple']}`);return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Filter[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of filter function calls, got ${typeof t}`);return t.map((a,u)=>{if(!w(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"FilterRelationsNode":if(Array.isArray(t))return t.map((a,u)=>{if(!w(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});if(w(t))return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected filter function call or array of filters, got ${typeof t}`);case"DateDimension":if(typeof t!="string")throw new Error(`${o}: Expected date dimension string, got ${typeof t}. Example: 'DM.Commerce.Date'`);return vn(t,n,s,o);case"LevelAttribute":{if(typeof t!="string")throw new Error(`${o}: Expected date attribute string, got ${typeof t}. Example: 'DM.Commerce.Date.Years'`);const a=Fe(t,n,s,o);if(!Sn(a))throw new Error(`${o}: Attribute must be date/datetime type, got ${fe(a)} attribute`);return a}case"Measure | number":if(typeof t=="number")return t;if(w(t))return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected measure function call or number, got ${typeof t}`);case"Date | string":if(typeof t=="string"){if(xn(t))return t;throw new Error(`${o}: Expected valid ISO date string or Date object, got invalid date string '${t}'`)}else{if(t instanceof Date)return t;throw new Error(`${o}: Expected date string or Date object, got ${typeof t}`)}case"string | number":if(typeof t=="string"||typeof t=="number")return t;throw new Error(`${o}: Expected string or number, got ${typeof t}`);case"BaseFilterConfig":case"MembersFilterConfig":case"CustomFormulaContext":case"any":if(t==null&&r.required)throw new Error(`${o}: Required argument is null/undefined`);return t;default:return t}}function M(e){const{data:t}=e,{dataSource:r,schemaIndex:n,pathPrefix:s}=e.context,{function:i,args:o}=t,a=s?`${s}.`:"",u=de(i);if(!u){const p=Object.keys(Pt),E=N(i,p,x=>x),q=E&&E.distance<=O?` Did you mean '${E.best}'?`:"";throw new Error(`${a}function: Unknown function '${i}'.${q}`)}const c=$n(i),y=Nn(i);if(o.length<c)throw new Error(`${a}function: Expected at least ${c} arguments, got ${o.length}`);if(o.length>y)throw new Error(`${a}function: Expected at most ${y} arguments, got ${o.length}`);const d=[],g=[];for(let p=0;p<Math.max(o.length,u.length);p++){const E=u[`${p}`],q=o[`${p}`],x=a?`${a}args[${p}]`:`args[${p}]`;if(q===void 0){E!=null&&E.required&&g.push(`${x}: Missing required argument (expected ${E.type})`);continue}if(!E){g.push(`${x}: Unexpected argument`);continue}try{const z=Mn({data:q,context:{dataSource:r,schemaIndex:n,pathPrefix:x,argSchema:E}});d.push(z)}catch(z){const tr=z instanceof Error?z.message:"Unknown error";g.push(tr)}}if(g.length>0){const p=g.join("; ");throw new Error(p)}let b=d;const F=Dn(i);if(F)try{b=F(d,{dataSource:r,schemaIndex:n,pathPrefix:a})}catch(p){const E=p instanceof Error?p.message:"Unknown validation error";throw new Error(E)}return Hr(i,b)}function Ut(e){const{attribute:t,config:r}=e;if(l.isMembersFilter(e)&&l.isLevelAttribute(t)){const{granularity:n}=t,s=e.members.map(a=>n==="Years"&&!isNaN(Number(a))?`${a}-01-01T00:00:00`:a),i=l.simplifyFilterConfig(r),o=Object.keys(i).length===0?void 0:i;return l.members(t,s,o)}return e}function Rn(e){let t=[];for(const r of e)Z(r)?t=l.mergeFiltersOrFilterRelations(r,t):t=l.mergeFiltersOrFilterRelations([Ut(r)],t);return t!=null?t:[]}const In=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`filters[${a}]`,input:o};try{const c=M({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});!Z(c)&&!le(c)?i.push(T(f({},u),{message:"Invalid filter JSON"})):s.push(c)}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(f({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:Rn(s)}},te=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?Ot(t)?In({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"filters",input:t,message:"Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Ln=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`highlights[${a}]`,input:o};try{const c=M({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});le(c)?s.push(Ut(c)):i.push(T(f({},u),{message:"Invalid filter JSON"}))}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(f({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}},me=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?Ot(t)?Ln({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"highlights",input:t,message:"Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},kn=(e,t)=>{if(e&&!l.isSortDirection(e))return T(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`})},Bn=(e,t,r)=>{const{dataSource:n,schemaIndex:s}=t;try{const i=M({data:e,context:{dataSource:n,schemaIndex:s,pathPrefix:""}});return Re(i)?{success:!0,data:i}:{success:!1,errors:[T(f({},r),{message:"Invalid measure JSON"})]}}catch(i){const o=i instanceof Error?i.message:"Unknown error";return{success:!1,errors:[T(f({},r),{message:o})]}}},_n=(e,t,r,n)=>{const s=M({data:e.column,context:{dataSource:t,schemaIndex:r,pathPrefix:""}});if(!Re(s))return{style:{},error:T(f({},n),{message:"Invalid measure JSON"})};const i=kn(e.sortType,n);if(i){const a=l.omit(e,"column");return{measure:s,style:a,error:i}}const o=l.omit(e,"column");return{measure:s,style:o}},Pn=(e,t,r,n)=>{if(Dt(e))return _n(e,t,r,n);if(w(e)){const s=Bn(e,{dataSource:t,schemaIndex:r},n);return s.success?{measure:s.data}:{error:s.errors[0]}}return{error:T(f({},n),{message:"Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."})}},zt=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"measures",input:t,message:"Invalid measures JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`measures[${a}]`,input:o};try{const c=Pn(o,r,n,u);if(c.error){i.push(c.error);return}c.measure&&s.push(c.style!==void 0?{measure:c.measure,style:c.style}:{measure:c.measure})}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(f({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function ie(e){return typeof e=="string"?e:e.title}function Un(e){const t={};for(const[r,n]of Object.entries(e)){const s={};n.filtersOptions!==void 0&&(s.filtersOptions=n.filtersOptions),n.partialDtoOptions!==void 0&&(s.partialDtoOptions=n.partialDtoOptions),Object.keys(s).length>0&&(t[r]=s)}return Object.keys(t).length>0?t:void 0}function Wt(e){return typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"?e.toJSON():e}function k(e){return typeof e=="string"?e.replace(/\[\[([^\]]+)\]\]/g,"$1"):Array.isArray(e)?e.map(k):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,k(r)])):e}function A(e,t,r){const n=e();if(!n.success){const s=r?n.errors.map(r):n.errors;return t.push(...s),null}return n.data}const zn=e=>{const{data:t}=e,{dataSource:r,tables:n}=e.context,s=ee(n),i=[],o=A(()=>Nt({data:t.dimensions||[],context:{dataSource:r,schemaIndex:s}}),i),a=A(()=>zt({data:t.measures||[],context:{dataSource:r,schemaIndex:s}}),i),u=A(()=>te({data:t.filters||[],context:{dataSource:r,schemaIndex:s}}),i);let c=null;return t.highlights&&(c=A(()=>me({data:t.highlights||[],context:{dataSource:r,schemaIndex:s}}),i)),i.length>0?{success:!1,errors:i}:{success:!0,data:f({dataSource:l.convertDataSource(r),dimensions:o?l.adaptDimensionsForQuery(o):[],measures:a?l.adaptMeasuresForQuery(a):[],filters:u||[]},c&&{highlights:c})}};function Qe(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function Be(e){const t=[],r=[];return e.forEach((n,s)=>{var d,g,b;const i=Qe(n)?n.column:n,o=Qe(n)?n:void 0,a=()=>Wt(i);if(!i.composeCode){r.push({path:`dimensions[${s}]`,input:a(),message:`Dimension at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}if(!i.composeCode.startsWith(S)){r.push({path:`dimensions[${s}]`,input:a(),message:`Expected composeCode to start with '${S}' for dimension at index ${s} (${i.name||"unnamed"}). Got: '${i.composeCode}'`});return}const u=(b=o!=null&&o.sortType?l.convertSortDirectionToSort(o.sortType):void 0)!=null?b:((d=i.getSort)==null?void 0:d.call(i))!==void 0&&((g=i.getSort)==null?void 0:g.call(i))!==l.Sort.None?i.getSort():void 0,c=o?l.omit(o,"column"):{};if(u!==void 0&&u!==l.Sort.None||o&&Object.keys(c).length>0){const F=f(f({column:i.composeCode},u!==void 0&&u!==l.Sort.None&&{sortType:l.convertSortToSortDirection(u)}),c);t.push(F)}else t.push(i.composeCode)}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}const Ce="Unknown error";function re(e){if(!e)return{success:!0,data:[]};const t=[];if(l.isFilterRelations(e)){if(!e.composeCode)return{success:!1,errors:[{path:"filters",input:e,message:`FilterRelations is missing composeCode. Operator: ${e.operator||"unknown"}`}]};try{return{success:!0,data:[V(e.composeCode)]}}catch(n){const s=n instanceof Error?n.message:Ce;return{success:!1,errors:[{path:"filters",input:e,message:`Failed to parse composeCode for FilterRelations: ${s}. ComposeCode: '${e.composeCode}'`}]}}}const r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){t.push({path:`filters[${s}]`,input:n,message:`Filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=V(n.composeCode);r.push(o)}catch(o){const a=o instanceof Error?o.message:Ce;t.push({path:`filters[${s}]`,input:n,message:`Failed to parse composeCode for filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),t.length>0?{success:!1,errors:t}:{success:!0,data:r}}function pe(e){if(!e)return{success:!0,data:[]};const t=[],r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){r.push({path:`highlights[${s}]`,input:n,message:`Highlight filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=V(n.composeCode);t.push(o)}catch(o){const a=o instanceof Error?o.message:Ce;r.push({path:`highlights[${s}]`,input:n,message:`Failed to parse composeCode for highlight filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function He(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function _e(e){const t=[],r=[];return e.forEach((n,s)=>{var u,c,y;const i=He(n)?n.column:n,o=He(n)?n:void 0,a=()=>Wt(i);if(!i.composeCode){r.push({path:`measures[${s}]`,input:a(),message:`Measure at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}try{const d=V(i.composeCode),g=(y=o!=null&&o.sortType?l.convertSortDirectionToSort(o.sortType):void 0)!=null?y:((u=i.getSort)==null?void 0:u.call(i))!==void 0&&((c=i.getSort)==null?void 0:c.call(i))!==l.Sort.None?i.getSort():void 0;if(g!==void 0&&g!==l.Sort.None||o&&Object.keys(l.omit(o,"column")).length>0){const F=o?l.omit(o,"column"):{},p=f(f({column:d},g!==void 0&&g!==l.Sort.None&&{sortType:l.convertSortToSortDirection(g)}),F);t.push(p)}else t.push(d)}catch(d){const g=d instanceof Error?d.message:"Unknown error";r.push({path:`measures[${s}]`,input:a(),message:`Failed to parse composeCode for measure at index ${s} (${i.name||"unnamed"}): ${g}. ComposeCode: '${i.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function Xe(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.trend"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(l.TREND_PREFIX))!=null?s:!1)}function Ze(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.forecast"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(l.FORECAST_PREFIX))!=null?s:!1)}function et(e){try{const t=V(e.trim());return t.args[2]!=null&&typeof t.args[2]=="object"?t.args[2]:void 0}catch(t){return}}function Wn(e){var n,s,i;if(!(e!=null&&e.length))return[];const t=new Set,r=[];for(let o=0;o<e.length;o++){if(t.has(o))continue;const a=e[o];if(Xe(a)||Ze(a)){r.push(a);continue}const u=(n=a.name)!=null?n:"Measure",c=`${l.TREND_PREFIX}_${u}`,y=`${l.FORECAST_PREFIX}_${u}`;let d,g,b=o+1;if(b<e.length&&!t.has(b)&&Xe(e[b])&&e[b].name===c){const F=(s=e[b].composeCode)==null?void 0:s.trim();F&&(d=et(F),t.add(b),b++)}if(b<e.length&&!t.has(b)&&Ze(e[b])&&e[b].name===y){const F=(i=e[b].composeCode)==null?void 0:i.trim();F&&(g=et(F),t.add(b))}d!==void 0||g!==void 0?r.push(f(f({column:a},d&&Object.keys(d).length>0&&{trend:d}),g&&Object.keys(g).length>0&&{forecast:g})):r.push(a)}return r}function Vn(e){const t=[],r=A(()=>Be(e.dimensions||[]),t),n=Wn(e.measures||[]),s=A(()=>_e(n),t),i=A(()=>re(e.filters),t);let o=null;if(e.highlights&&e.highlights.length>0&&(o=A(()=>pe(e.highlights),t)),t.length>0)return{success:!1,errors:t};const a=f({dimensions:r||[],measures:s||[],filters:i||[]},o&&{highlights:o});return{success:!0,data:k(a)}}const Vt=new Set(l.ALL_CHART_TYPES.filter(e=>e!=="image")),tt=Object.freeze([...Vt]),Ee=new Set(["category","value","breakBy","breakByPoint","x","y","breakByColor","size","boxType","outliers","geo","colorBy","details","color","date","columns","rows","values","secondary","min","max","seriesToColorMap"]),jn={line:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},area:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},bar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},column:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},streamgraph:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},polar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},pie:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},funnel:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},treemap:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},sunburst:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},scatter:{validAxes:new Set(["x","y","breakByPoint","breakByColor","size","seriesToColorMap"]),requiredAxes:[]},table:{validAxes:new Set(["columns"]),requiredAxes:["columns"]},indicator:{validAxes:new Set(["value","secondary","min","max"]),requiredAxes:[]},boxplot:{validAxes:new Set(["category","value","boxType","outliers"]),requiredAxes:["value"]},areamap:{validAxes:new Set(["geo","color"]),requiredAxes:["geo"]},scattermap:{validAxes:new Set(["geo","size","colorBy","details"]),requiredAxes:["geo"]},"calendar-heatmap":{validAxes:new Set(["date","value"]),requiredAxes:["date","value"]},arearange:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]}},Jn=new Set(["category","breakBy","breakByPoint","rows","geo","details","date"]),Yn=new Set(["value","size","colorBy","boxType","outliers","values","secondary","min","max","color"]);function Kn(e){const t=jn[e];if(t)return{validAxes:new Set(t.validAxes),requiredAxes:Object.freeze([...t.requiredAxes])}}function jt(e){return typeof e=="string"&&Vt.has(e)}function Gn(e,t,r){if(r==="boxplot"&&e==="value"||r==="calendar-heatmap"&&e==="date"||Jn.has(e))return!0;if(Yn.has(e))return!1;const n=Array.isArray(t)?t[0]:t;if(!n)return!0;let s;return D(n)&&"column"in n&&(s=n.column),!(w(n)||s!==void 0&&w(s))}function Qn(e){const t=[],r={chartType:"",dataOptions:{}};if(!D(e))return t.push({path:"chartType",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.chartType;if(n===void 0){const i=Object.keys(e),o=N("chartType",i,c=>c),a=o&&o.distance<=O?` Did you mean 'chartType'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=O?{[o.best]:e[o.best]}:e;t.push({path:"chartType",input:u,message:`chartType is required.${a}`})}else if(jt(n))r.chartType=n;else{const i=N(String(n),tt,u=>u),o=i&&i.distance<=O?` Did you mean '${i.best}'?`:"",a=tt.slice(0,8).join(", ");t.push({path:"chartType",input:n,message:`Invalid chartType '${n}'. Valid types: ${a}, ...${o}`})}const s=e.dataOptions;if(s===void 0){const i=Object.keys(e),o=N("dataOptions",i,c=>c),a=o&&o.distance<=O?` Did you mean 'dataOptions'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=O?{[o.best]:e[o.best]}:e;t.push({path:"dataOptions",input:u,message:`dataOptions is required.${a}`})}else s!==null&&typeof s=="object"&&(r.dataOptions=s);return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function $(e,t){return e===-1?"dataOptions":typeof e=="number"?`dataOptions[${e}]`:t!==void 0?`dataOptions.${e}[${t}]`:`dataOptions.${e}`}function Jt(e,t){return e?t?`${e}.${t}`:e:t!=null?t:""}function Hn(e){return t=>T(f({},t),{path:Jt(e,t.path)})}function Yt(e){return Hn(`widgets[${e}]`)}function Kt(e,t){return e.map(t)}function Xn(e){return e.map(({attribute:t,style:r})=>r?f({column:t},r):t)}function Zn(e){return e.map(({measure:t,style:r})=>r?f({column:t},r):t)}function es(e){return Array.isArray(e)?e:[e]}function ts(e){return Array.isArray(e)?e:[e]}function rs(e){return Array.isArray(e)?e:[e]}const ns=/^(dimensions|measures|filters|highlights)(\[\d+\])?$/;function Oe(e){return t=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0,s=$(e,n);if(ns.test(t.path)||t.path.startsWith("dataOptions"))return T(f({},t),{path:s});const i=t.path.replace(/\[\d+\]$/,"");return T(f({},t),{path:Jt(i,s)})}}function ae(e,t,r,n,s){if(r==="dimension"){const a=t?es(t):[];if(a.length===0)return[];const u=A(()=>Nt({data:a,context:n}),s,Oe(e));return u!==null?Xn(u):null}const i=t?ts(t):[];if(i.length===0)return[];const o=A(()=>zt({data:i,context:n}),s,Oe(e));return o!==null?Zn(o):null}const rt=(e,t)=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0;return T(f({},t),{path:$(e,n)})};function nt(e,t,r){const n=Array.isArray(t)?t:t!=null?[t]:[];if(r==="dimension"){const i=Be(n);return i.success?{success:!0,data:i.data}:{success:!1,errors:i.errors.map(o=>rt(e,o))}}const s=_e(n);return s.success?{success:!0,data:s.data}:{success:!1,errors:s.errors.map(i=>rt(e,i))}}function ss(e,t){let r;D(e)&&"column"in e&&(r=e.column);const s=!(w(e)||r!==void 0&&w(r))?"dimension":"measure",i=[],o=ae("columns",[e],s,t,i);return o!==null?{success:!0,data:o}:{success:!1,errors:i}}function is(e,t,r,n){const s=[];for(const i of e){const o=A(()=>ss(i,t),r,n);o&&s.push(...o)}return s}function os(e,t,r){if(!e||!D(e))return r.push({path:$(-1),input:e,message:"dataOptions is required"}),null;const n={},{chartType:s}=t,i=r.length,o=e,a=Object.keys(e),u=new Map;for(const d of a)if(!Ee.has(d)){const g=N(d,[...Ee],F=>F),b=g&&g.distance<=O?` Did you mean '${g.best}'?`:"";g&&g.distance<=O&&u.set(d,g.best),r.push({path:$(d),input:o[d],message:`Unknown dataOptions key '${d}'.${b}`})}const c=s?Kn(s):void 0;if(c){for(const d of a)if(d!=="seriesToColorMap"&&!c.validAxes.has(d)&&Ee.has(d)){const g=N(d,[...c.validAxes],p=>p),b=g&&g.distance<=O?` Did you mean '${g.best}'?`:"",F=[...c.validAxes].join(", ");r.push({path:$(d),input:o[d],message:`Axis '${d}' is not valid for chart type '${s}'. Valid axes: ${F}.${b}`})}for(const d of c.requiredAxes)[...u.values()].includes(d)||(!(d in o)||o[d]==null)&&r.push({path:$(d),input:null,message:`Chart type '${s}' requires '${c.requiredAxes.join("' and '")}'. Missing: ${d}.`});s==="indicator"&&(["value","secondary","min","max"].some(b=>b in o&&o[b]!=null)||r.push({path:$(-1),input:e,message:"Indicator chart requires at least one of: value, secondary, min, max."})),s==="scatter"&&("x"in e&&e.x!=null||"y"in e&&e.y!=null||r.push({path:$(-1),input:e,message:"Scatter chart requires at least one of: x, y."}))}if(r.length>i)return null;const y=Object.entries(e);for(const[d,g]of y){if(!g)continue;if(d==="seriesToColorMap"){n[d]=g;continue}if(d==="columns"){n[d]=is(rs(g),t,r,Oe("columns"));continue}const b=Gn(d,g,s)?"dimension":"measure",F=ae(d,g,b,t,r);if(F!==null){const p=s==="calendar-heatmap"&&d==="value";n[d]=p||!Array.isArray(g)?F[0]:F}}return r.length>i?null:n}function as(e){if(typeof e!="string")return"iqr";const t=e.split("/")[1];return t==="iqr"||t==="extremums"||t==="standardDeviation"?t:"iqr"}const Gt=e=>{var p;const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=Qn(t);if(o.length>0)return{success:!1,errors:o};const a=i.chartType,u=ee(s),c=[];let y=os(i.dataOptions,{dataSource:n,schemaIndex:u,chartType:a},c);if(a==="boxplot"&&y){const E=as((p=i.styleOptions)==null?void 0:p.subtype),q=E==="iqr"||E==="standardDeviation";y=T(f({},y),{boxType:E,outliersEnabled:q})}let d=null;i.filters&&i.filters.length>0&&(d=A(()=>te({data:i.filters||[],context:{dataSource:n,schemaIndex:u}}),c));let g=null;if(i.highlights&&i.highlights.length>0&&(g=A(()=>me({data:i.highlights||[],context:{dataSource:n,schemaIndex:u}}),c)),c.length>0||y===null)return{success:!1,errors:c};if(!jt(i.chartType))return{success:!1,errors:[{path:"chartType",input:i.chartType,message:"Invalid chartType"}]};const b=i.chartType;return{success:!0,data:f(f(f({dataSet:l.convertDataSource(n),chartType:b,dataOptions:y},i.styleOptions&&{styleOptions:i.styleOptions}),d&&{filters:d}),g&&{highlights:g})}},Qt=e=>{const t=[];if(!e.chartType)return{success:!1,errors:[{path:"chartType",input:e,message:"chartType is required"}]};if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};let r=null;const n=us(e.dataOptions);n.success?r=n.data:t.push(...n.errors);let s;if(e.filters){const a=A(()=>re(e.filters),t);s=a!=null?a:void 0}let i;if(e.highlights&&e.highlights.length>0){const a=A(()=>pe(e.highlights),t);i=a!=null?a:void 0}if(t.length>0||r===null)return{success:!1,errors:t};const o=f(f(f({chartType:e.chartType,dataOptions:r},e.styleOptions&&{styleOptions:e.styleOptions}),s&&s.length>0&&{filters:s}),i&&i.length>0&&{highlights:i});return{success:!0,data:k(o)}};function us(e){const t={},r=[],n=new Set(["seriesToColorMap","boxType","outliersEnabled","valueTitle"]);for(const[s,i]of Object.entries(e)){if(s==="seriesToColorMap"&&i){t[s]=i;continue}if(n.has(s)||i==null){i!=null&&(t[s]=i);continue}const o=Array.isArray(i)?i:[i],a=Array.isArray(i),u=[],c=[];for(let y=0;y<o.length;y++){const d=o[y],b=cs(d)?Be([d]):_e([d]);b.success?u.push(...b.data):b.errors.forEach(F=>{var p;c.push(T(f({},F),{path:$(s,y),input:(p=F.input)!=null?p:d}))})}if(c.length>0){r.push(...c);continue}t[s]=a?u:u[0]}return r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function cs(e){const t=Array.isArray(e)?e[0]:e;if(!t||!D(t))return!0;const r="column"in t&&t.column!=null&&D(t.column)?t.column:t;if("composeCode"in r){const n=r.composeCode;if(typeof n=="string"&&n.startsWith("DM."))return!0;if(typeof n=="string"&&(n.includes("measureFactory")||n.includes("Formula")))return!1}if("type"in r){const n=r.type;if(n==="basemeasure"||n==="calculatedmeasure")return!1}return!("aggregation"in r||"attribute"in r&&"aggregation"in r)}const st=["rows","columns","values","grandTotals"];function ls(e){if(!D(e))return!1;const t=Object.keys(e);return t.every(r=>r==="rows"||r==="columns")&&t.every(r=>typeof e[r]=="boolean")}function fs(e){const t=[],r={dataOptions:{}};if(!D(e))return t.push({path:"dataOptions",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.dataOptions;if(n===void 0){const s=Object.keys(e),i=N("dataOptions",s,u=>u),o=i&&i.distance<=O?` Did you mean 'dataOptions'? (You may have typed '${i.best}')`:"",a=i&&i.distance<=O?{[i.best]:e[i.best]}:e;t.push({path:"dataOptions",input:a,message:`dataOptions is required.${o}`})}else if(D(n)){const s=n;r.dataOptions=s;for(const o of Object.keys(s))if(!st.includes(o)){const a=N(o,[...st],c=>c),u=a&&a.distance<=O?` Did you mean '${a.best}'?`:"";t.push({path:$(o),input:s[o],message:`Unknown dataOptions key '${o}'. Valid keys: rows, columns, values, grandTotals.${u}`})}for(const o of["rows","columns","values"]){const a=s[o];a!=null&&!Array.isArray(a)&&t.push({path:$(o),input:a,message:`dataOptions.${o} must be an array`})}const i=s.grandTotals;i!=null&&!ls(i)&&t.push({path:$("grandTotals"),input:i,message:"grandTotals must be an object with optional rows?: boolean, columns?: boolean"})}return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function ds(e,t,r){if(!e||typeof e!="object")return r.push({path:$(-1),input:e,message:"dataOptions is required"}),null;const n={},s=r.length;for(const o of["rows","columns"]){const a=ae(o,e[o],"dimension",t,r);a&&(n[o]=a)}const i=ae("values",e.values,"measure",t,r);return i&&(n.values=i),e.grandTotals!==void 0&&(n.grandTotals=e.grandTotals),r.length>s?null:n}const Ht=e=>{const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=fs(t);if(o.length>0)return{success:!1,errors:o};const a=ee(s),u=[],c=ds(i.dataOptions,{dataSource:n,schemaIndex:a},u);let y=null;i.filters&&i.filters.length>0&&(y=A(()=>te({data:i.filters||[],context:{dataSource:n,schemaIndex:a}}),u));let d=null;return i.highlights&&i.highlights.length>0&&(d=A(()=>me({data:i.highlights||[],context:{dataSource:n,schemaIndex:a}}),u)),u.length>0||c===null?{success:!1,errors:u}:{success:!0,data:f(f(f({dataSet:l.convertDataSource(n),dataOptions:c},i.styleOptions&&{styleOptions:i.styleOptions}),y&&{filters:y}),d&&{highlights:d})}},Xt=e=>{const t=[];if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};const r=e.dataOptions,n={};for(const u of["rows","columns"]){const c=r[u];if(c&&c.length>0){const y=nt(u,c,"dimension");y.success?n[u]=y.data:t.push(...y.errors)}}const s=r.values;if(s&&s.length>0){const u=nt("values",s,"measure");u.success?n.values=u.data:t.push(...u.errors)}r.grandTotals!==void 0&&(n.grandTotals=r.grandTotals);let i;if(e.filters){const u=A(()=>re(e.filters),t);i=u!=null?u:void 0}let o;if(e.highlights&&e.highlights.length>0){const u=A(()=>pe(e.highlights),t);o=u!=null?u:void 0}if(t.length>0)return{success:!1,errors:t};const a=f(f(f({dataOptions:n},e.styleOptions&&{styleOptions:e.styleOptions}),i&&i.length>0&&{filters:i}),o&&o.length>0&&{highlights:o});return{success:!0,data:k(a)}},ms=(e,t,r)=>{const n=ee(r.tables),s={dataSource:r.dataSource,schemaIndex:n},i=[],o=e&&e.length>0?A(()=>te({data:e,context:s}),i):void 0,a=t&&t.length>0?A(()=>me({data:t,context:s}),i):void 0;return i.length>0?{success:!1,errors:i}:{success:!0,data:f(f({},o!=null&&{filters:o}),a!=null&&{highlights:a})}},ps=["widgetType","id","title","description","dataSource","config","highlightSelectionDisabled"],it=(e,t,r,n)=>{const{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:c}=e,y=l.omit(e,ps),d=r({data:y,context:t});return d.success?{success:!0,data:n(d.data,{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:c})}:d},gs=(e,t)=>{const s=e,{dataSet:r}=s,n=ge(s,["dataSet"]);return f(f(f(f(f(T(f({},n),{widgetType:"chart",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&l.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:t.highlightSelectionDisabled}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},ys=(e,t)=>{const s=e,{dataSet:r}=s,n=ge(s,["dataSet"]);return f(f(f(f(T(f({},n),{widgetType:"pivot",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&l.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},qe=["chart","pivot","text","custom"],hs=e=>typeof e=="string"&&qe.includes(e);function bs(e){if(!D(e))return{path:"widgetType",input:e,message:"Expected an object"};const t=e.widgetType;if(t===void 0){const r=Object.keys(e),n=N("widgetType",r,o=>o),s=n&&n.distance<=O?` Did you mean 'widgetType'? (You may have typed '${n.best}')`:"";return{path:"widgetType",input:n&&n.distance<=O?{[n.best]:e[n.best]}:e,message:`widgetType is required.${s}`}}if(!hs(t)){const r=N(String(t),qe,i=>i),n=r&&r.distance<=O?` Did you mean '${r.best}'?`:"",s=qe.join(", ");return{path:"widgetType",input:t,message:`Invalid widgetType '${String(t)}'. Valid types: ${s}${n}`}}return null}const Fs=e=>({path:"id",input:e,message:"Widget id is required"}),Es=e=>!!e.id,Zt=e=>{const{data:t,context:r}=e,n=bs(t);if(n)return{success:!1,errors:[n]};if(!Es(t))return{success:!1,errors:[Fs(t)]};switch(t.widgetType){case"chart":return it(t,r,Gt,gs);case"pivot":return it(t,r,Ht,ys);case"text":return{success:!0,data:f({widgetType:"text",id:t.id,styleOptions:t.styleOptions},t.config!==void 0&&{config:t.config})};case"custom":{const{id:s,customWidgetType:i,title:o,description:a,dataSource:u,config:c,filters:y,highlights:d,dataOptions:g,styleOptions:b,customOptions:F}=t,p=ms(y,d,r);return p.success?{success:!0,data:f(f(f(f(f(f({widgetType:"custom",id:s,customWidgetType:i,dataSource:u!==void 0?u:l.convertDataSource(r.dataSource),dataOptions:g!=null?g:{}},o!==void 0&&{title:o}),a!==void 0&&{description:a}),c!==void 0&&{config:c}),b!==void 0&&{styleOptions:b}),F!==void 0&&{customOptions:F}),p.data)}:p}default:return{success:!1,errors:[{path:"widgetType",input:t,message:`Unknown widgetType: ${String(t.widgetType)}`}]}}},er=e=>{const{widgetType:t}=e;switch(t){case"chart":{const r=Qt(e);if(!r.success)return r;const n=f(f(f(f(f(T(f({},r.data),{widgetType:"chart",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:ie(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:e.highlightSelectionDisabled});return{success:!0,data:k(n)}}case"pivot":{const r=Xt(e);if(!r.success)return r;const n=f(f(f(f(T(f({},r.data),{widgetType:"pivot",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:ie(e.dataSource)}),e.config!==void 0&&{config:e.config});return{success:!0,data:k(n)}}case"text":return{success:!0,data:f({widgetType:"text",id:e.id,styleOptions:e.styleOptions},e.config!==void 0&&{config:e.config})};case"custom":{const r=[],n=e.filters!==void 0?A(()=>re(e.filters),r):void 0,s=e.highlights!==void 0?A(()=>pe(e.highlights),r):void 0;return r.length>0?{success:!1,errors:r}:{success:!0,data:f(f(f(f(f(f(f(f(f({widgetType:"custom",customWidgetType:e.customWidgetType,id:e.id},e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:ie(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.dataOptions!==void 0&&{dataOptions:e.dataOptions}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),e.customOptions!==void 0&&{customOptions:e.customOptions}),n&&n.length>0&&{filters:n}),s&&s.length>0&&{highlights:s})}}default:return{success:!1,errors:[{path:"widgetType",input:e,message:`Unknown widgetType: ${String(t)}`}]}}},Ts=e=>{const{data:t,context:r}=e,n=[],s=[];Array.isArray(t.widgets)?t.widgets.forEach((a,u)=>{const c=Zt({data:a,context:r});if(!c.success){n.push(...Kt(c.errors,Yt(u)));return}s.push(c.data)}):n.push({path:"widgets",input:t.widgets,message:"Invalid dashboard JSON. Expected widgets to be an array."});let i=null;if(t.filters&&t.filters.length>0){const a=ee(r.tables);i=A(()=>te({data:t.filters,context:{dataSource:r.dataSource,schemaIndex:a}}),n)}return n.length>0?{success:!1,errors:n}:{success:!0,data:f(f(f(f(f(f(f(f({widgets:s},t.id!==void 0&&{id:t.id}),t.title!==void 0&&{title:t.title}),i!==null&&{filters:i}),t.layoutOptions!==void 0&&{layoutOptions:t.layoutOptions}),t.config!==void 0&&{config:t.config}),t.defaultDataSource!==void 0&&{defaultDataSource:t.defaultDataSource}),t.styleOptions!==void 0&&{styleOptions:t.styleOptions}),t.widgetsOptions!==void 0&&{widgetsOptions:t.widgetsOptions})}},As=e=>{const t=[],r=[];e.widgets.forEach((o,a)=>{const u=er(o);if(!u.success){t.push(...Kt(u.errors,Yt(a)));return}r.push(u.data)});let n;if(e.filters){const o=A(()=>re(e.filters),t);n=o!=null?o:void 0}if(t.length>0)return{success:!1,errors:t};const s=e.widgetsOptions!==void 0?Un(e.widgetsOptions):void 0,i=f(f(f(f(f(f(f(f({widgets:r},e.id!==void 0&&{id:e.id}),e.title!==void 0&&{title:e.title}),n&&n.length>0&&{filters:n}),e.layoutOptions!==void 0&&{layoutOptions:e.layoutOptions}),e.config!==void 0&&{config:e.config}),e.defaultDataSource!==void 0&&{defaultDataSource:ie(e.defaultDataSource)}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),s!==void 0&&{widgetsOptions:s});return{success:!0,data:k(i)}};function Ss(e){const{filters:t,relations:r}=l.getFilterListAndRelationsJaql(e.filters||[]);return{dataSource:e.dataSource,dimensions:e.dimensions,measures:e.measures,filters:t,filterRelations:r,highlights:e.highlights}}function ws(e,t,r=!1){const n=Ss(e),s=l.prepareQueryParams(n,t);return l.getJaqlQueryPayload(s,r)}function ue(e){const t=e.trim();return t.startsWith(S)?t.slice(S.length):t}function K(e){var n;const t=de(e.function);if(t){const s=t.findIndex(i=>i.isName);if(s>=0){const i=e.args[s];if(typeof i=="string"&&i.length>0)return i}}const r=e.args[0];return typeof r=="string"?ue(r):w(r)?K(r):(n=e.function.split(".").pop())!=null?n:e.function}const ot="filterFactory.logic.";function at(e){var r;if(e.function.startsWith(ot))return e.function.slice(ot.length);const t=e.args[0];return typeof t=="string"?ue(t):w(t)?K(t):(r=e.function.split(".").pop())!=null?r:e.function}const Cs="measureFactory.",Os="filterFactory.",qs=e=>e.function.startsWith(Cs),Ds=e=>e.function.startsWith(Os);function $s(e,t){var n;const r=(n=t==null?void 0:t.role)!=null?n:"filter";return typeof e=="string"?{name:ue(e),type:"dimension"}:qt(e)?{name:ue(e.column),type:"dimension"}:Dt(e)?{name:K(e.column),type:"measure"}:w(e)?qs(e)?{name:K(e),type:"measure"}:Ds(e)?{name:at(e),type:r}:(t==null?void 0:t.role)!==void 0?{name:at(e),type:r}:{name:K(e),type:"measure"}:null}exports.EMPTY_EXPANDED_QUERY_MODEL=B.EMPTY_EXPANDED_QUERY_MODEL;exports.EMPTY_SIMPLE_QUERY_MODEL=B.EMPTY_SIMPLE_QUERY_MODEL;exports.isByIdDashboardCodeParams=B.isByIdDashboardCodeParams;exports.isByIdWidgetCodeParams=B.isByIdWidgetCodeParams;exports.isClientSideDashboardCodeParams=B.isClientSideDashboardCodeParams;exports.isClientSideWidgetCodeParams=B.isClientSideWidgetCodeParams;exports.CustomSuperJSON=zr;exports.getQueryElementSummary=$s;exports.translateChartFromJSON=Gt;exports.translateChartToJSON=Qt;exports.translateDashboardFromJSON=Ts;exports.translateDashboardToJSON=As;exports.translatePivotTableFromJSON=Ht;exports.translatePivotTableToJSON=Xt;exports.translateQueryFromJSON=zn;exports.translateQueryToJSON=Vn;exports.translateQueryToJaql=ws;exports.translateWidgetFromJSON=Zt;exports.translateWidgetToJSON=er;
1
+ "use strict";var qr=Object.defineProperty,Nr=Object.defineProperties;var xr=Object.getOwnPropertyDescriptors;var le=Object.getOwnPropertySymbols;var it=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable;var st=(e,t,r)=>t in e?qr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,f=(e,t)=>{for(var r in t||(t={}))it.call(t,r)&&st(e,r,t[r]);if(le)for(var r of le(t))ot.call(t,r)&&st(e,r,t[r]);return e},w=(e,t)=>Nr(e,xr(t));var De=(e,t)=>{var r={};for(var n in e)it.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&le)for(var n of le(e))t.indexOf(n)<0&&ot.call(e,n)&&(r[n]=e[n]);return r};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("../types-CMUXHDie.cjs"),c=require("../apply-styled-options-to-query-BrP6xVFh.cjs"),Mr=require("../index-DhUTJSni.cjs");function Rr(e,t){const r=e.length,n=t.length,s=Array.from({length:r+1},(i,o)=>Array.from({length:n+1},(a,u)=>o===0?u:u===0?o:0));for(let i=1;i<=r;i++)for(let o=1;o<=n;o++)s[i][o]=Math.min(s[i-1][o]+1,s[i][o-1]+1,s[i-1][o-1]+(e[i-1]===t[o-1]?0:1));return s[r][n]}function be(e,t){const r=[];let n="",s=0,i=!1,o=null;for(let a=0;a<e.length;a++){const u=e[a],l=e[a+1];if(i){if(u!==o){n+=u;continue}if(l===o){n+=u+l,a++;continue}i=!1,o=null,n+=u;continue}else{if(u==="'"||u==='"'){i=!0,o=u,n+=u;continue}if("([{".includes(u)&&s++,")]}".includes(u)&&s--,u===t&&s===0){r.push(n.trim()),n="";continue}}n+=u}return n.trim()&&r.push(n.trim()),r}function Ir(e,t){let r=0,n=!1,s=null;for(let i=0;i<e.length;i++){const o=e[i],a=e[i+1];if(n){if(o!==s)continue;if(a===s){i++;continue}n=!1,s=null}else{if(o==="'"||o==='"'){n=!0,s=o;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&r--,o===t&&r===0)return i}}return-1}function Mt(e,t){if(e[t]!=="(")return-1;let r=1,n=t+1,s=!1,i=null;for(;n<e.length;){const o=e[n],a=e[n+1];if(s){if(o!==i){n++;continue}if(a===i){n+=2;continue}s=!1,i=null,n++}else{if(o==="'"||o==='"'){s=!0,i=o,n++;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&--r===0)return n;n++}}return-1}function Lr(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function K(e){if(!e||typeof e!="string")throw new Error(`Invalid composeCode: expected non-empty string, got ${typeof e}`);const t=e.trim();if(!t)throw new Error("Invalid composeCode: empty string");const r=t.match(/^([a-zA-Z_$][a-zA-Z0-9_.$]*)\s*\((.*)\)$/);if(!r)throw new Error(`Invalid composeCode format: expected function call, got '${t}'`);const n=r[1],s=r[2],i=Rt(s);return{function:n,args:i}}function Rt(e){return e.trim()?be(e,",").map(It):[]}function It(e){if(!e)throw new Error("Cannot parse empty argument value");if(e==="null")return null;if(e==="undefined")return;if(e==="true")return!0;if(e==="false")return!1;if(e.match(/^-?\d+(\.\d+)?$/))return parseFloat(e);if(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')){const r=e[0];return e.slice(1,-1).replace(new RegExp(`${r}${r}`,"g"),r)}if(e.startsWith("[")&&e.endsWith("]")){const r=e.slice(1,-1).trim();if(!r)return[];const n=Rt(r);return n.every(s=>typeof s=="string"),n}if(e.startsWith("{")&&e.endsWith("}")){const r=e.slice(1,-1).trim();return r?kr(r):{}}return e.includes("(")&&e.includes(")")?K(e):(e.startsWith("DM."),e)}function _r(e){const t=Ir(e,":");if(t===-1)throw new Error(`Invalid object property: expected 'key: value', got '${e}'`);const r=Lr(e.slice(0,t).trim()),n=It(e.slice(t+1).trim());return[r,n]}function kr(e){if(!e.trim())return{};const t=be(e,",").map(_r).filter(([,r])=>r!==null);return Object.fromEntries(t)}class Ur{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(t,r){this.keyToValue.set(t,r),this.valueToKey.set(r,t)}getByKey(t){return this.keyToValue.get(t)}getByValue(t){return this.valueToKey.get(t)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class Lt{constructor(t){this.generateIdentifier=t,this.kv=new Ur}register(t,r){this.kv.getByValue(t)||(r||(r=this.generateIdentifier(t)),this.kv.set(r,t))}clear(){this.kv.clear()}getIdentifier(t){return this.kv.getByValue(t)}getValue(t){return this.kv.getByKey(t)}}class Br extends Lt{constructor(){super(t=>t.name),this.classToAllowedProps=new Map}register(t,r){typeof r=="object"?(r.allowProps&&this.classToAllowedProps.set(t,r.allowProps),super.register(t,r.identifier)):super.register(t,r)}getAllowedProps(t){return this.classToAllowedProps.get(t)}}function Pr(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}function Wr(e,t){const r=Pr(e);if("find"in r)return r.find(t);const n=r;for(let s=0;s<n.length;s++){const i=n[s];if(t(i))return i}}function Q(e,t){Object.entries(e).forEach(([r,n])=>t(n,r))}function fe(e,t){return e.indexOf(t)!==-1}function at(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class zr{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return Wr(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const Vr=e=>Object.prototype.toString.call(e).slice(8,-1),_t=e=>typeof e=="undefined",jr=e=>e===null,ne=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Re=e=>ne(e)&&Object.keys(e).length===0,L=e=>Array.isArray(e),Jr=e=>typeof e=="string",Yr=e=>typeof e=="number"&&!isNaN(e),Kr=e=>typeof e=="boolean",Qr=e=>e instanceof RegExp,se=e=>e instanceof Map,ie=e=>e instanceof Set,kt=e=>Vr(e)==="Symbol",Gr=e=>e instanceof Date&&!isNaN(e.valueOf()),Hr=e=>e instanceof Error,ut=e=>typeof e=="number"&&isNaN(e),Xr=e=>Kr(e)||jr(e)||_t(e)||Yr(e)||Jr(e)||kt(e),Zr=e=>typeof e=="bigint",en=e=>e===1/0||e===-1/0,tn=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),rn=e=>e instanceof URL,Ut=e=>e.replace(/\./g,"\\."),Oe=e=>e.map(String).map(Ut).join("."),Z=e=>{const t=[];let r="";for(let s=0;s<e.length;s++){let i=e.charAt(s);if(i==="\\"&&e.charAt(s+1)==="."){r+=".",s++;continue}if(i==="."){t.push(r),r="";continue}r+=i}const n=r;return t.push(n),t};function I(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const Bt=[I(_t,"undefined",()=>null,()=>{}),I(Zr,"bigint",e=>e.toString(),e=>typeof BigInt!="undefined"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),I(Gr,"Date",e=>e.toISOString(),e=>new Date(e)),I(Hr,"Error",(e,t)=>{const r={name:e.name,message:e.message};return t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r},(e,t)=>{const r=new Error(e.message);return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r}),I(Qr,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),I(ie,"set",e=>[...e.values()],e=>new Set(e)),I(se,"map",e=>[...e.entries()],e=>new Map(e)),I(e=>ut(e)||en(e),"number",e=>ut(e)?"NaN":e>0?"Infinity":"-Infinity",Number),I(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),I(rn,"URL",e=>e.toString(),e=>new URL(e))];function Ee(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const Pt=Ee((e,t)=>kt(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),nn=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),Wt=Ee(tn,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=nn[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function zt(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const Vt=Ee(zt,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return f({},e);const n={};return r.forEach(s=>{n[s]=e[s]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),jt=Ee((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),sn=[Vt,Pt,jt,Wt],ct=(e,t)=>{const r=at(sn,s=>s.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=at(Bt,s=>s.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation}},Jt={};Bt.forEach(e=>{Jt[e.annotation]=e});const on=(e,t,r)=>{if(L(t))switch(t[0]){case"symbol":return Pt.untransform(e,t,r);case"class":return Vt.untransform(e,t,r);case"custom":return jt.untransform(e,t,r);case"typed-array":return Wt.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const n=Jt[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}},Y=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function Yt(e){if(fe(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(fe(e,"prototype"))throw new Error("prototype is not allowed as a property");if(fe(e,"constructor"))throw new Error("constructor is not allowed as a property")}const an=(e,t)=>{Yt(t);for(let r=0;r<t.length;r++){const n=t[r];if(ie(e))e=Y(e,+n);else if(se(e)){const s=+n,i=+t[++r]==0?"key":"value",o=Y(e,s);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[n]}return e},Ie=(e,t,r)=>{if(Yt(t),t.length===0)return r(e);let n=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(L(n)){const a=+o;n=n[a]}else if(ne(n))n=n[o];else if(ie(n)){const a=+o;n=Y(n,a)}else if(se(n)){if(i===t.length-2)break;const u=+o,l=+t[++i]==0?"key":"value",p=Y(n,u);switch(l){case"key":n=p;break;case"value":n=n.get(p);break}}}const s=t[t.length-1];if(L(n)?n[+s]=r(n[+s]):ne(n)&&(n[s]=r(n[s])),ie(n)){const i=Y(n,+s),o=r(i);i!==o&&(n.delete(i),n.add(o))}if(se(n)){const i=+t[t.length-2],o=Y(n,i);switch(+s==0?"key":"value"){case"key":{const u=r(o);n.set(u,n.get(o)),u!==o&&n.delete(o);break}case"value":{n.set(o,r(n.get(o)));break}}}return e};function Le(e,t,r=[]){if(!e)return;if(!L(e)){Q(e,(i,o)=>Le(i,t,[...r,...Z(o)]));return}const[n,s]=e;s&&Q(s,(i,o)=>{Le(i,t,[...r,...Z(o)])}),t(n,r)}function un(e,t,r){return Le(t,(n,s)=>{e=Ie(e,s,i=>on(i,n,r))}),e}function cn(e,t){function r(n,s){const i=an(e,Z(s));n.map(Z).forEach(o=>{e=Ie(e,o,()=>i)})}if(L(t)){const[n,s]=t;n.forEach(i=>{e=Ie(e,Z(i),()=>e)}),s&&Q(s,r)}else Q(t,r);return e}const ln=(e,t)=>ne(e)||L(e)||se(e)||ie(e)||zt(e,t);function fn(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}function dn(e,t){const r={};let n;return e.forEach(s=>{if(s.length<=1)return;t||(s=s.map(a=>a.map(String)).sort((a,u)=>a.length-u.length));const[i,...o]=s;i.length===0?n=o.map(Oe):r[Oe(i)]=o.map(Oe)}),n?Re(r)?[n]:[n,r]:Re(r)?void 0:r}const Kt=(e,t,r,n,s=[],i=[],o=new Map)=>{var b;const a=Xr(e);if(!a){fn(e,s,t);const E=o.get(e);if(E)return n?{transformedValue:null}:E}if(!ln(e,r)){const E=ct(e,r),y=E?{transformedValue:E.value,annotations:[E.type]}:{transformedValue:e};return a||o.set(e,y),y}if(fe(i,e))return{transformedValue:null};const u=ct(e,r),l=(b=u==null?void 0:u.value)!=null?b:e,p=L(l)?[]:{},d={};Q(l,(E,y)=>{if(y==="__proto__"||y==="constructor"||y==="prototype")throw new Error(`Detected property ${y}. This is a prototype pollution risk, please remove it from your object.`);const F=Kt(E,t,r,n,[...s,y],[...i,e],o);p[y]=F.transformedValue,L(F.annotations)?d[y]=F.annotations:ne(F.annotations)&&Q(F.annotations,(O,x)=>{d[Ut(y)+"."+x]=O})});const g=Re(d)?{transformedValue:p,annotations:u?[u.type]:void 0}:{transformedValue:p,annotations:u?[u.type,d]:d};return a||o.set(e,g),g};function Qt(e){return Object.prototype.toString.call(e).slice(8,-1)}function lt(e){return Qt(e)==="Array"}function mn(e){if(Qt(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function pn(e,t,r,n,s){const i={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=r),s&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function _e(e,t={}){if(lt(e))return e.map(s=>_e(s,t));if(!mn(e))return e;const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertySymbols(e);return[...r,...n].reduce((s,i)=>{if(lt(t.props)&&!t.props.includes(i))return s;const o=e[i],a=_e(o,t);return pn(s,i,a,e,t.nonenumerable),s},{})}class h{constructor({dedupe:t=!1}={}){this.classRegistry=new Br,this.symbolRegistry=new Lt(r=>{var n;return(n=r.description)!=null?n:""}),this.customTransformerRegistry=new zr,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,n=Kt(t,r,this,this.dedupe),s={json:n.transformedValue};n.annotations&&(s.meta=w(f({},s.meta),{values:n.annotations}));const i=dn(r,this.dedupe);return i&&(s.meta=w(f({},s.meta),{referentialEqualities:i})),s}deserialize(t){const{json:r,meta:n}=t;let s=_e(r);return n!=null&&n.values&&(s=un(s,n.values,this)),n!=null&&n.referentialEqualities&&(s=cn(s,n.referentialEqualities)),s}stringify(t){return JSON.stringify(this.serialize(t))}parse(t){return this.deserialize(JSON.parse(t))}registerClass(t,r){this.classRegistry.register(t,r)}registerSymbol(t,r){this.symbolRegistry.register(t,r)}registerCustom(t,r){this.customTransformerRegistry.register(f({name:r},t))}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}h.defaultInstance=new h;h.serialize=h.defaultInstance.serialize.bind(h.defaultInstance);h.deserialize=h.defaultInstance.deserialize.bind(h.defaultInstance);h.stringify=h.defaultInstance.stringify.bind(h.defaultInstance);h.parse=h.defaultInstance.parse.bind(h.defaultInstance);h.registerClass=h.defaultInstance.registerClass.bind(h.defaultInstance);h.registerSymbol=h.defaultInstance.registerSymbol.bind(h.defaultInstance);h.registerCustom=h.defaultInstance.registerCustom.bind(h.defaultInstance);h.allowErrorProps=h.defaultInstance.allowErrorProps.bind(h.defaultInstance);const W=e=>e===void 0?c.Sort.None:e,z=e=>{var t,r;return(r=(t=e.title)!=null?t:e.name)!=null?r:""},gn=e=>new k.JaqlElement(e.metadataItem,e.type),We=e=>new c.DimensionalAttribute(e.name,e.expression,e.type,e.description,W(e.sort),e.dataSource,e.composeCode,e.panel,e.indexed,e.merged,z(e)),ze=e=>new c.DimensionalLevelAttribute(e.name,e.expression,e.granularity,e.format,e.description,W(e.sort),e.dataSource,e.composeCode,e.panel,e.indexed,e.merged,z(e)),M=e=>{switch(e.__serializable){case"DimensionalAttribute":return We(e);case"DimensionalLevelAttribute":return ze(e);default:return e}},Gt=e=>new c.DimensionalDimension(e.name,e.expression,e.attributes.map(M),e.dimensions.map(yn),e.type,e.description,W(e.sort),e.dataSource,e.composeCode,e.defaultAttribute?M(e.defaultAttribute):void 0,z(e)),Ht=e=>new c.DimensionalDateDimension(e.name,e.expression,e.description,W(e.sort),e.dataSource,e.composeCode,e.indexed,e.merged,z(e)),yn=e=>{switch(e.__serializable){case"DimensionalDimension":return Gt(e);case"DimensionalDateDimension":return Ht(e);default:return e}},Ve=e=>new c.DimensionalBaseMeasure(e.name,M(e.attribute),e.aggregation,e.format,e.description,W(e.sort),e.dataSource,e.composeCode,z(e)),je=e=>{const t=Object.fromEntries(Object.entries(e.context).map(([r,n])=>{if(n&&typeof n=="object"&&"__serializable"in n)switch(n.__serializable){case"DimensionalAttribute":return[r,We(n)];case"DimensionalLevelAttribute":return[r,ze(n)];case"DimensionalBaseMeasure":return[r,Ve(n)];case"DimensionalCalculatedMeasure":return[r,je(n)];case"DimensionalMeasureTemplate":return[r,Je(n)];case"MembersFilter":case"LogicalAttributeFilter":case"CascadingFilter":case"ExcludeFilter":case"MeasureFilter":case"RankingFilter":case"MeasureRankingFilter":case"NumericFilter":case"TextFilter":case"DateRangeFilter":case"RelativeDateFilter":case"CustomFilter":return[r,$(n)];default:return[r,n]}return[r,n]}));return new c.DimensionalCalculatedMeasure(e.name,e.expression,t,e.format,e.description,W(e.sort),e.dataSource,e.composeCode,z(e))},Je=e=>new c.DimensionalMeasureTemplate(e.name,M(e.attribute),e.format,e.description,W(e.sort),e.dataSource,e.composeCode,z(e)),Ce=e=>{switch(e.__serializable){case"DimensionalBaseMeasure":return Ve(e);case"DimensionalCalculatedMeasure":return je(e);case"DimensionalMeasureTemplate":return Je(e);default:return e}},$=e=>{switch(e.__serializable){case"MembersFilter":return new c.MembersFilter(M(e.attribute),e.members,e.config.backgroundFilter?w(f({},e.config),{backgroundFilter:$(e.config.backgroundFilter)}):e.config,e.composeCode);case"LogicalAttributeFilter":return new c.LogicalAttributeFilter(e.filters.map(r=>$(r)),e.operator,e.config,e.composeCode);case"CascadingFilter":return new c.CascadingFilter(e._filters.map(r=>$(r)),e.config,e.composeCode);case"ExcludeFilter":return new c.ExcludeFilter($(e.filter),e.input?$(e.input):void 0,e.config,e.composeCode);case"MeasureFilter":return new c.MeasureFilter(M(e.attribute),Ce(e.measure),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"RankingFilter":return new c.RankingFilter(M(e.attribute),Ce(e.measure),e.operator,e.count,e.config,e.composeCode);case"MeasureRankingFilter":return new c.MeasureRankingFilter(Ce(e.measure),e.operator,e.count,e.config,e.composeCode);case"NumericFilter":return new c.NumericFilter(M(e.attribute),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"TextFilter":return new c.TextFilter(M(e.attribute),e.operatorA,e.valueA,e.config,e.composeCode);case"DateRangeFilter":{const{valueA:r,valueB:n}=e;return new c.DateRangeFilter(M(e.attribute),r,n,e.config,e.composeCode)}case"RelativeDateFilter":return new c.RelativeDateFilter(M(e.attribute),e.offset,e.count,e.operator,e.anchor,e.config,e.composeCode);case"CustomFilter":return new c.CustomFilter(M(e.attribute),e.jaqlExpression,e.config,e.composeCode);default:return e}};h.registerCustom({isApplicable:k.isJaqlElement,serialize:e=>e.serialize(),deserialize:e=>gn(e)},"JaqlElement");h.registerCustom({isApplicable:c.isDimensionalAttribute,serialize:e=>e.serialize(),deserialize:e=>We(e)},"DimensionalAttribute");h.registerCustom({isApplicable:c.isDimensionalLevelAttribute,serialize:e=>e.serialize(),deserialize:e=>ze(e)},"DimensionalLevelAttribute");h.registerCustom({isApplicable:c.isDimensionalDimension,serialize:e=>e.serialize(),deserialize:e=>Gt(e)},"DimensionalDimension");h.registerCustom({isApplicable:c.isDimensionalDateDimension,serialize:e=>e.serialize(),deserialize:e=>Ht(e)},"DimensionalDateDimension");h.registerCustom({isApplicable:c.isDimensionalBaseMeasure,serialize:e=>e.serialize(),deserialize:e=>Ve(e)},"DimensionalBaseMeasure");h.registerCustom({isApplicable:c.isDimensionalCalculatedMeasure,serialize:e=>e.serialize(),deserialize:e=>je(e)},"DimensionalCalculatedMeasure");h.registerCustom({isApplicable:c.isDimensionalMeasureTemplate,serialize:e=>e.serialize(),deserialize:e=>Je(e)},"DimensionalMeasureTemplate");h.registerCustom({isApplicable:c.isMembersFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MembersFilter");h.registerCustom({isApplicable:c.isLogicalAttributeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"LogicalAttributeFilter");h.registerCustom({isApplicable:c.isCascadingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"CascadingFilter");h.registerCustom({isApplicable:c.isExcludeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"ExcludeFilter");h.registerCustom({isApplicable:c.isMeasureFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MeasureFilter");h.registerCustom({isApplicable:c.isRankingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"RankingFilter");h.registerCustom({isApplicable:c.isMeasureRankingFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"MeasureRankingFilter");h.registerCustom({isApplicable:c.isNumericFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"NumericFilter");h.registerCustom({isApplicable:c.isTextFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"TextFilter");h.registerCustom({isApplicable:c.isDateRangeFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"DateRangeFilter");h.registerCustom({isApplicable:c.isRelativeDateFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"RelativeDateFilter");h.registerCustom({isApplicable:c.isCustomFilter,serialize:e=>e.serialize(),deserialize:e=>$(e)},"CustomFilter");const hn=h,A="DM.";function v(e){return typeof e=="object"&&e!==null}function S(e){return typeof e=="object"&&e!==null&&"function"in e&&"args"in e}function Xt(e){return Array.isArray(e)&&e.every(S)}function Fe(e){return"attribute"in e&&"config"in e}function X(e){return"left"in e&&"right"in e&&"operator"in e}function Ye(e){return!Fe(e)&&!X(e)}function Zt(e){return v(e)&&"column"in e&&typeof e.column=="string"&&!("function"in e&&"args"in e)}function er(e){return!v(e)||!("column"in e)?!1:S(e.column)}const D=3;function N(e,t,r){if(t.length===0)return;let n=Number.MAX_SAFE_INTEGER,s;for(const i of t){const o=r(i),a=Rr(e,o);a<n&&(n=a,s=i)}return s!==void 0?{best:s,distance:n}:void 0}const tr="en";function ve(e,t){return e.localeCompare(t,tr,{sensitivity:"accent"})===0}function ft(e,t){return t.length<=e.length&&e.slice(0,t.length).localeCompare(t,tr,{sensitivity:"accent"})===0}function oe(e){const t=[...e].sort((i,o)=>o.name.length-i.name.length),r=new Map,n=new Map,s=new Map;for(const i of e){r.set(i.name,i);const o=[...i.columns].sort((u,l)=>l.name.length-u.name.length);s.set(i.name,o);const a=new Map;for(const u of i.columns)a.set(u.name,u);n.set(i.name,a)}return{sortedTables:t,tableColumnMap:s,tableMap:r,columnMap:n}}function Ke(e,t){if(!e.startsWith(A))throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);const r=e.slice(A.length);if(!r)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);let n,s;for(const y of t.sortedTables)if(ft(r,y.name+".")){const F=r.slice(y.name.length+1);if(!F)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);n=y,s=F;break}if(!n){const y=r.indexOf(".");if(y===-1)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`);const F=r.slice(0,y),O=N(F,t.sortedTables,V=>V.name),x=O&&O.distance<=D?` Did you mean '${O.best.name}'?`:"";throw new Error(`Table '${F}' not found in the data model.${x}`)}const i=t.tableColumnMap.get(n.name);if(!i)throw new Error(`Table '${n.name}' found but has no columns`);let o,a;const u=c.DateLevels.all;for(const y of i){if(ve(s,y.name))return{table:n,column:y};if(!ft(s,y.name+"."))continue;const F=s.slice(y.name.length+1);if(!F)continue;const O=u.includes(F),x=c.isDatetime(y.dataType);if(O){if(x)return{table:n,column:y,level:F};o||(o=y,a=F);continue}x&&!o&&(o=y,a=F)}if(o&&a){if(u.includes(a))throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Column '${n.name}.${o.name}' is not a datetime column`);const y=N(a,u,O=>O),F=y&&y.distance<=D?` Did you mean '${y.best}'?`:"";throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${F}`)}const l=s.indexOf("."),p=l===-1?s:s.slice(0,l),d=N(s,i,y=>y.name),g=d&&d.distance<=D&&!ve(d.best.name,p),b=g?` Did you mean '${d.best.name}'?`:"",E=!g&&s.endsWith(".")&&d!==void 0&&ve(d.best.name,p)?` Use '${p}' without a trailing dot.`:"";throw new Error(`Column '${p}' not found in table '${n.name}'.${b}${E}`)}function bn(e,t){const{table:r,column:n,level:s}=Ke(e,t);if(s){if(!c.isDatetime(n.dataType))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is not a datetime column`);const i=c.DateLevels.all;if(!i.includes(s))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Valid levels are: ${i.join(", ")}`);const o=c.DateLevels.dateOnly;if(n.dataType==="date"&&!o.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a date column, not a datetime column`);const a=c.DateLevels.timeOnly;if(n.dataType==="time"&&!a.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a time column, not a date column`)}return{table:r,column:n,level:s}}const ee={requireExplicitDateLevel:!0};function En(e,t,r,n){if(!(!(n!=null&&n.requireExplicitDateLevel)||r!==void 0||n.inferredDateLevel)&&c.isDatetime(t.dataType))throw new Error(`Date level required for '${e}'. Use '${e}.Years' (or another level such as Months, Days, …).`)}function we(e,t,r,n){const{table:s,column:i,level:o}=bn(e,r);En(e,i,o,n);let a=o;if(c.isDatetime(i.dataType)&&a===void 0&&(n!=null&&n.inferredDateLevel)){const u=n.inferredDateLevel,l=c.DateLevels.all;if(!l.includes(u))throw new Error(`Invalid inferred date level '${u}'. Valid levels are: ${l.join(", ")}`);const p=`${e}.${u}`,d=c.DateLevels.dateOnly;if(i.dataType==="date"&&!d.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${p}'. Column '${s.name}.${i.name}' is only a date column, not a datetime column`);const g=c.DateLevels.timeOnly;if(i.dataType==="time"&&!g.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${p}'. Column '${s.name}.${i.name}' is only a time column, not a date column`);a=u}return c.createAttributeHelper({expression:i.expression,dataType:i.dataType,granularity:a,format:void 0,sort:void 0,dataSource:t})}function Fn(e,t,r){const{column:n,level:s}=Ke(e,r);if(s)throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${A}TableName.ColumnName'`);if(!c.isDatetime(n.dataType))throw new Error(`Invalid DateDimension name '${e}'. Column '${n.name}' is not a datetime column (got ${n.dataType}).`);return c.createDateDimension({name:n.name,expression:n.expression,dataSource:t})}const wn=(e,t)=>{if(!e)return;const r=typeof e=="object"?e.direction:e;if(!c.isSortDirection(r))return w(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`})},Tn=(e,t,r,n)=>{const s=wn(e.sortType,n),i=we(e.column,t,r,ee);if(s)return{attribute:i,style:{},error:s};const o=c.omit(e,"column");return{attribute:i,style:o}},An=(e,t,r,n)=>typeof e=="string"?{attribute:we(e,t,r,ee)}:Zt(e)?Tn(e,t,r,n):{error:w(f({},n),{message:"Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."})},rr=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"dimensions",input:t,message:"Invalid dimensions JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`dimensions[${a}]`,input:o};try{const l=An(o,r,n,u);if(l.error){i.push(l.error);return}l.attribute&&s.push(l.style!==void 0?{attribute:l.attribute,style:l.style}:{attribute:l.attribute})}catch(l){const p=l instanceof Error?l.message:"Unknown error";i.push(w(f({},u),{message:p}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function Qe(e,t){const r=Reflect.get(e,t);if(typeof r!="function")throw new Error(`Function '${t}' not found or is not a function`);return r}function Sn(e,t){const r=e.replace("measureFactory.",""),s=Qe(c.measureFactory,r)(...t);if(!Ye(s))throw new Error(`Function '${e}' did not return a valid Measure`);return s}function $n(e,t){const r=e.replace("filterFactory.logic.",""),s=Qe(c.logic,r)(...t);if(!X(s))throw new Error(`Function '${e}' did not return a valid FilterRelations`);return s}function Dn(e,t){if(e.startsWith("filterFactory.logic."))return $n(e,t);const r=e.replace("filterFactory.",""),s=Qe(c.filterFactory,r)(...t);if(!Fe(s)&&!X(s))throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);return s}function On(e,t){const n=e.split(".")[0];if(n==="measureFactory")return Sn(e,t);if(n==="filterFactory")return Dn(e,t);throw new Error(`Unsupported factory: '${n}'. Supported factories: measureFactory, filterFactory`)}const m=(e,t,r,n)=>f({category:e,minArgs:t,maxArgs:r},n),Cn=new Set(["CORREL","COVARP","COVAR","EXPONDIST","INTERCEPT","LARGEST","NORMDIST","POISSONDIST","SKEWP","SKEW","SLOPE","TDIST","COSH","SINH","TANH","ORDERING","RDOUBLE","RINT"]),me={SDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Seconds,argType:"datetime"}),MNDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Minutes,argType:"datetime"}),HDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Hours,argType:"datetime"}),DDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Days,argType:"datetime"}),MDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Months,argType:"datetime"}),QDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Quarters,argType:"datetime"}),YDIFF:m("xdiff",2,2,{requiredDateLevel:c.DateLevels.Years,argType:"datetime"}),ANYVALUE:m("aggregative",1,1),SUM:m("aggregative",1,2),AVG:m("aggregative",1,2),MIN:m("aggregative",1,2),MAX:m("aggregative",1,2),COUNT:m("aggregative",1,2),DUPCOUNT:m("aggregative",1,1),COUNTDUPLICATES:m("aggregative",1,1),STDEV:m("aggregative",1,2),STDEVP:m("aggregative",1,2),VAR:m("aggregative",1,2),VARP:m("aggregative",1,2),MEDIAN:m("aggregative",1,2),QUARTILE:m("aggregative",2,3),PERCENTILE:m("aggregative",2,3),LOWERWHISKERMAX_IQR:m("aggregative",1,1),LOWERWHISKERMAX_STDEVP:m("aggregative",1,1),UPPERWHISKERMIN_IQR:m("aggregative",1,1),UPPERWHISKERMIN_STDEVP:m("aggregative",1,1),OUTLIERSCOUNT_IQR:m("aggregative",1,1),OUTLIERSCOUNT_STDEVP:m("aggregative",1,1),MODE:m("aggregative",1,1),NOAGGFUNCTION:m("aggregative",1,1),RANK:m("window",0,Number.POSITIVE_INFINITY),RSUM:m("window",1,2),RAVG:m("window",1,2),YTDSUM:m("window",1,1),QTDSUM:m("window",1,1),MTDSUM:m("window",1,1),WTDSUM:m("window",1,1),YTDAVG:m("window",1,1),QTDAVG:m("window",1,1),MTDAVG:m("window",1,1),WTDAVG:m("window",1,1),CONCAT:m("string",2,Number.POSITIVE_INFINITY),LEFT:m("string",2,2),RIGHT:m("string",2,2),ABS:m("scalar",1,1),ACOS:m("scalar",1,1),ASIN:m("scalar",1,1),ATAN:m("scalar",1,1),CEILING:m("scalar",1,1),CONTRIBUTION:m("scalar",1,1),COS:m("scalar",1,1),COT:m("scalar",1,1),DIFFPASTDAY:m("scalar",1,1),DIFFPASTMONTH:m("scalar",1,1),DIFFPASTPERIOD:m("scalar",1,1),DIFFPASTQUARTER:m("scalar",1,1),DIFFPASTWEEK:m("scalar",1,1),DIFFPASTYEAR:m("scalar",1,1),EXP:m("scalar",1,1),FLOOR:m("scalar",1,1),GROWTH:m("growth",1,1),GROWTHPASTMONTH:m("growth",1,1),GROWTHPASTQUARTER:m("growth",1,1),GROWTHPASTWEEK:m("growth",1,1),GROWTHPASTYEAR:m("growth",1,1),GROWTHRATE:m("growth",1,1),LN:m("scalar",1,1),LOG10:m("scalar",1,1),MINUS:m("scalar",1,1),MOD:m("scalar",2,2),QUOTIENT:m("scalar",2,2),PASTDAY:m("date",1,2),PASTMONTH:m("date",1,2),PASTPERIOD:m("date",1,2),PASTQUARTER:m("date",1,2),PASTWEEK:m("date",1,2),PASTYEAR:m("date",1,2),PERCENTILEDISCFORINTERNALUSEONLY:m("scalar",1,1),PERCENTILECONTFORINTERNALUSEONLY:m("scalar",1,1),POWER:m("scalar",2,2),ROUND:m("scalar",2,2),SIN:m("scalar",1,1),SQRT:m("scalar",1,1),TAN:m("scalar",1,1)},vn=Object.keys(me).filter(e=>me[e].category==="xdiff");function nr(){return vn}function sr(e){const t=me[e.toUpperCase()];return t==null?void 0:t.requiredDateLevel}function qn(e,t){return e===t?e===1?"1 parameter":`${e} parameters`:t===Number.POSITIVE_INFINITY?e<=1?"any number of parameters":`at least ${e} parameters`:`${e} or ${t} parameters`}const Nn=/\[(\w[\w.-]*)\]/g,ir=new Set(["AVG","COUNT","DUPCOUNT","MAX","MEDIAN","MIN","MODE","SUM","PERCENTILE","QUARTILE","STDEV","STDEVP","VAR","VARP","WTDAVG","WTDSUM","MTDAVG","MTDSUM","QTDAVG","QTDSUM","YTDAVG","YTDSUM"]),xn=new RegExp(`\\b(${Array.from(ir).join("|")})\\s*\\(`,"i");function or(e){return S(e)?!0:typeof e=="string"&&e.startsWith(A)?!1:v(e)&&"kind"in e?e.kind==="measure":!0}function Mn(e){const t=/\b(\w+)\s*\(/g,r=new Set;let n;for(;(n=t.exec(e))!==null;){const s=n[1];ir.has(s.toUpperCase())||r.add(s)}return Array.from(r)}function Rn(e){return e.length===1?`[${e[0]}]`:e.map(t=>`[${t}]`).join(", ")}function In(e){return e.length===0?"":e.length===1?`${e[0]} is not an aggregative function. `:`${e.join(", ")} are not aggregative functions. `}const G=e=>e.startsWith("[")?e:`[${e}]`,ar=e=>e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;function ur(e,t){if(t.length===0)return[];const r=t.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),n=new RegExp(`\\b(${r})\\s*\\(\\s*\\[([^\\]]+)\\]\\s*,\\s*\\[([^\\]]+)\\]\\s*\\)`,"gi");return[...e.matchAll(n)].map(s=>({functionName:s[1].toUpperCase(),ref1:s[2].trim(),ref2:s[3].trim()}))}function Ln(e,t,r){var o,a,u;const n=Object.keys(t),s=((o=r.errorPrefix)!=null?o:"customFormula validation").trim(),i=s===""?"":s.endsWith(" ")?s:`${s} `;return{formula:e,context:t,contextKeys:n,canonicalContextKeys:new Set(n.map(G)),errorPrefix:i,warnUnusedContext:(a=r.warnUnusedContext)!=null?a:!0,errorOnUnusedContext:(u=r.errorOnUnusedContext)!=null?u:!0,schemaIndex:r.schemaIndex,result:{isValid:!0,errors:[],warnings:[],references:[],unusedContextKeys:[]}}}function C(e,t){e.result.errors.push(t),e.result.isValid=!1}const _n=new Set(["CASE","WHEN","THEN","ELSE","END","AND","OR"]);function kn(e){const t=/\b(\w+)\s*\[/gi,r=[...e.formula.matchAll(t)].find(n=>!_n.has(n[1].toUpperCase()));r&&C(e,`${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`)}function cr(e,t){const r=e[t];let n=t+1;for(;n<e.length;){const s=e[n],i=e[n+1];if(s!==r){n++;continue}if(i===r){n+=2;continue}return n+1}return e.length}function Un(e){return be(e,",").filter(t=>t.trim().length>0).length}function Bn(e,t,r,n){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]!=="(")return t;const s=t,i=Mt(e,s);if(i===-1)return s+1;const o=e.slice(s+1,i);return n.push({name:r.toUpperCase(),argCount:Un(o)}),n.push(...lr(o)),i+1}function lr(e){const t=[];let r=0;for(;r<e.length;){const n=e[r];if(n==="'"||n==='"'){r=cr(e,r);continue}if(/[A-Za-z_]/.test(n)){const s=r;for(r++;r<e.length&&/[A-Za-z0-9_]/.test(e[r]);)r++;const i=e.slice(s,r);r=Bn(e,r,i,t);continue}r++}return t}function Pn(e){const t=lr(e.formula),r=new Set,n=new Set;for(const{name:s,argCount:i}of t){if(Cn.has(s)){r.has(s)||(r.add(s),C(e,`${e.errorPrefix}args[1]: Function ${s} is not supported in custom formulas`));continue}const o=me[s];if(o&&(i<o.minArgs||i>o.maxArgs)&&!n.has(s)){n.add(s);const a=qn(o.minArgs,o.maxArgs);C(e,`${e.errorPrefix}args[1]: Function ${s} accepts ${a}`)}}}function Wn(e){return[...new Set([...e.matchAll(new RegExp(Nn.source,"g"))].map(t=>t[1]))]}function zn(e){const t=e.result.references.filter(s=>!e.canonicalContextKeys.has(G(s)));if(t.length===0)return;const r=e.contextKeys.map(s=>`[${ar(s)}]`).join(", "),n=t.length===1?`Reference [${t[0]}]`:`References [${t.join("], [")}]`;C(e,`${e.errorPrefix}args[1]: ${n} not found in context. Available keys: ${r}`)}function Vn(e){if(xn.test(e.formula))return;const t=e.result.references.filter(r=>{var s;const n=(s=e.context[G(r)])!=null?s:e.context[r];return n!==void 0&&!or(n)});t.length!==0&&C(e,`${e.errorPrefix}args[1]: ${In(Mn(e.formula))}Bracket reference(s) ${Rn(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`)}function jn(e){if(!e.warnUnusedContext&&!e.errorOnUnusedContext||e.contextKeys.length===0)return;const t=new Set(e.result.references.map(G)),r=e.contextKeys.filter(i=>!t.has(G(i)));if(e.result.unusedContextKeys=r,r.length===0)return;const n=r.map(i=>`[${ar(i)}]`).join(", "),s=`${e.errorPrefix}args[2]: Context keys ${n} are defined but not used in formula`;e.errorOnUnusedContext?C(e,s):e.warnUnusedContext&&e.result.warnings.push(s)}function dt(e,t,r,n){var o;const s=(o=n.context[G(e)])!=null?o:n.context[e];if(s===void 0)return;if(!(typeof s=="string"&&s.startsWith(A))){or(s)&&C(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${A}Table.Column.Level).`);return}if(n.schemaIndex)try{const a=Ke(s,n.schemaIndex);c.isDatetime(a.column.dataType)?r&&a.level&&a.level!==r&&C(n,`${n.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`):C(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimensions. Reference [${e}] resolves to non-datetime column '${a.column.name}'.`)}catch(a){const u=a instanceof Error?a.message:"Unknown error";C(n,`${n.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`)}}function Jn(e){const t=nr(),r=ur(e.formula,t);for(const n of r){const s=sr(n.functionName);dt(n.ref1,n,s,e),dt(n.ref2,n,s,e)}}function mt(e,t){const r=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(`^${r}$`,"i"),s=[];let i=0;for(;i<e.length;){const o=e[i];if(o==="'"||o==='"'){i=cr(e,i);continue}if(!/[A-Za-z_]/.test(o)){i++;continue}const a=i;for(i++;i<e.length&&/[A-Za-z0-9_]/.test(e[i]);)i++;const u=e.slice(a,i);for(;i<e.length&&/\s/.test(e[i]);)i++;if(e[i]!=="("||!n.test(u))continue;const l=i,p=Mt(e,l);if(p===-1)continue;const d=e.slice(l+1,p);s.push(be(d,",").map(g=>g.trim())),i=p+1}return s}function Yn(e){for(const t of mt(e.formula,"PERCENTILE")){const r=t[1];if(r===void 0)continue;const n=Number(r);Number.isNaN(n)||(n<0||n>1)&&C(e,`${e.errorPrefix}args[1]: PERCENTILE second argument must be a decimal in [0, 1], got ${r}`)}for(const t of mt(e.formula,"QUARTILE")){const r=t[1];if(r===void 0)continue;const n=Number(r);Number.isNaN(n)||(!Number.isInteger(n)||n<0||n>4)&&C(e,`${e.errorPrefix}args[1]: QUARTILE second argument must be an integer in [0, 4], got ${r}`)}}function Kn(e,t,r={}){var s;const n=Ln(e,t,r);return!e||e.trim().length===0?((s=r.allowEmptyFormula)!=null&&s||C(n,`${n.errorPrefix}args[1]: Formula cannot be empty`),n.result):(kn(n),Pn(n),Yn(n),n.result.references=Wn(e),n.result.references.length===0?(n.result.warnings.push(`${n.errorPrefix}args[1]: No bracket references found in formula - ensure this is intentional`),n.result):n.contextKeys.length===0?(C(n,`${n.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`),n.result):(zn(n),Vn(n),jn(n),Jn(n),n.result))}function Qn(e,t,r={}){const n=Kn(e,t,r);if(!n.isValid)throw new Error(n.errors.join("; "));n.warnings.length>0&&console.warn("Formula validation warnings:",n.warnings.join("; "))}function Gn(e,t){if(e.length<3||e.length>5)throw new Error(`${t.pathPrefix}Expected 3, 4, or 5 arguments for customFormula (title, formula, context, format?, description?)`);const r=e[1];if(typeof r!="string")throw new Error(`${t.pathPrefix}args[1]: Expected formula string, got ${typeof r}`);const n=r,s=e[2];if(!v(s))throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${s===null?"null":typeof s}`);const i=s;Qn(n,i,{errorPrefix:`${t.pathPrefix}`,errorOnUnusedContext:!0,allowEmptyFormula:!1,schemaIndex:t.schemaIndex});const o=Hn(n),a={};for(const[u,l]of Object.entries(i)){const p=`args[2].${u}`;if(S(l))a[`${u}`]=R({data:l,context:{dataSource:t.dataSource,schemaIndex:t.schemaIndex,pathPrefix:p}});else if(typeof l=="string"&&l.startsWith(A)){const d=u.startsWith("[")&&u.endsWith("]")?u.slice(1,-1):u,g=o[d];try{a[`${u}`]=we(l,t.dataSource,t.schemaIndex,g!==void 0?{inferredDateLevel:g}:void 0)}catch(b){const E=b instanceof Error?b.message:"Unknown error";throw new Error(`${p}: ${E}`)}}else if(l&&typeof l=="object"&&"kind"in l)a[`${u}`]=l;else throw new Error(`${p}: Invalid context value for key '${u}'. Expected a function call or attribute reference (${A}...), but got: ${typeof l}`)}return[e[0],e[1],a,...e.slice(3)]}function Hn(e){const t=nr(),r=ur(e,t),n={};for(const s of r){const i=sr(s.functionName);if(i!==void 0)for(const o of[s.ref1,s.ref2]){const a=n[o];if(a!==void 0&&a!==i)throw new Error(`Reference [${o}] is used in xdiff functions with conflicting date levels ('${a}' and '${i}'). Specify the date level in the context (e.g. DM.Table.Column.${i}).`);n[o]=i}}return n}function fr(e){return e.type===c.MetadataTypes.TextAttribute}function Ge(e){return e.type===c.MetadataTypes.NumericAttribute}function He(e){return e.type===c.MetadataTypes.DateLevel}function Xn(e){return fr(e)||Ge(e)}function ae(e){return e.type===c.MetadataTypes.TextAttribute?"text":e.type===c.MetadataTypes.NumericAttribute?"numeric":e.type===c.MetadataTypes.DateLevel?"date/datetime":"unknown"}function q(e,t){return e===-1?"dataOptions":typeof e=="number"?`dataOptions[${e}]`:t!==void 0?`dataOptions.${e}[${t}]`:`dataOptions.${e}`}function Xe(e,t){return e?t?`${e}.${t}`:e:t!=null?t:""}function Zn(e){return t=>w(f({},t),{path:Xe(e,t.path)})}function dr(e){return Zn(`widgets[${e}]`)}function mr(e,t){return e.map(t)}const pr=[c.DateLevels.Years,c.DateLevels.Quarters,c.DateLevels.Months,c.DateLevels.Weeks,c.DateLevels.Days],pt=[c.DateLevels.Years,c.DateLevels.Quarters,c.DateLevels.Months,c.DateLevels.Weeks,c.DateLevels.Days],es=1,ts=/^\d{4}-\d{2}-\d{2}/,rs=/^\d{6}$/,ns=/^\d{4}$/,ss=/T23:59:59(?:\.\d+)?(?:Z)?$/;function H(e){if(typeof e!="string"||!ts.test(e))return!1;const t=Date.parse(e);return Number.isNaN(t)||e.length<10?!1:!Number.isNaN(new Date(e).getTime())}function is(e){return rs.test(e)}function gr(e){return ns.test(e)}function os(e){return ss.test(e)}function ke(e){return e instanceof Date?e.toISOString():e}function as(e){const t=e.indexOf("T");return t===-1?e:e.slice(0,t)}function J(e){switch(e){case c.DateLevels.Years:return"ISO datetime like '2024-01-01T00:00:00' or a 4-digit year like '2024'";case c.DateLevels.Weeks:return"ISO datetime at the start of the week, like '2024-12-30T00:00:00' (not compact keys like '202500')";default:return"ISO datetime like '2024-03-15T00:00:00'"}}function us(e){const t=e.composeCode;if(t!=null&&t.startsWith(A)){const r=t.slice(A.length),n=r.split("."),s=n[n.length-1];return n.length>=3&&c.DateLevels.all.includes(s)?n.slice(0,-1).join("."):r}return e.expression}const cs=/^\d{1,2}$/;function gt(e,t){const r=e.endsWith(".")?e.slice(0,-1):e;return Xe(r,t)}function ls(e,t,r){if(!Array.isArray(e)||e.length===0)throw new Error(`${r}: members filter requires at least one member for ${t}.`);if(t===c.DateLevels.WeekOfYear)throw new Error(`${gt(r,"args[0]")}: filterFactory.members does not support WeekOfYear. Use ${c.DateLevels.Weeks} with ISO week-start datetimes instead.`);e.forEach((n,s)=>{fs(String(n),t,gt(r,`args[1][${s}]`))})}function fs(e,t,r){if(e==="null"||e==="undefined"||e.trim()==="")throw new Error(`${r}: member must be a non-empty string.`);if(is(e))throw new Error(`${r}: compact week key '${e}' is not valid. Expected ${J(c.DateLevels.Weeks)}.`);if(cs.test(e))throw new Error(`${r}: bare week number '${e}' is not valid. Expected ${J(t)}.`);if(t===c.DateLevels.Years){if(gr(e)||H(e))return;throw new Error(`${r}: invalid Years member '${e}'. Expected ${J(c.DateLevels.Years)}.`)}if(/^\d+$/.test(e))throw new Error(`${r}: numeric member '${e}' is not valid for ${t}. Expected ${J(t)}.`);if(!H(e))throw new Error(`${r}: invalid datetime member '${e}' for ${t}. Expected ${J(t)}.`)}function ds(e,t){const r=new Set;for(const n of e){if(r.has(n))throw new Error(`${t}: duplicate member '${n}' after normalization.`);r.add(n)}}function Ze(e,t,r,n){if(t===void 0&&r===void 0)throw new Error(`${n}: date range filter requires at least one of 'from' or 'to' bounds.`);const s=t!==void 0?ke(t):void 0,i=r!==void 0?ke(r):void 0;if(s!==void 0&&yt(s,e,`${n}args[1] (from)`),i!==void 0){const o=`${n}args[2] (to)`;if(yt(i,e,o),os(i))throw new Error(`${o}: 'T23:59:59' is treated as an exclusive upper bound by the query engine and often excludes intended rows. Use the start of the next period instead (e.g. '2026-05-06' or '2026-05-06T00:00:00').`)}if(s!==void 0&&i!==void 0){const o=Date.parse(s),a=Date.parse(i);if(Number.isNaN(o)||Number.isNaN(a))throw new Error(`${n}: unable to compare from/to bounds.`);if(o>a)throw new Error(`${n}: 'from' must be less than or equal to 'to'.`);if(o===a&&s.includes("T")&&i.includes("T"))throw new Error(`${n}: identical from/to datetimes produce an empty half-open range on the backend. Use the next bucket as exclusive 'to' (e.g. next day at midnight).`)}}function yt(e,t,r){if(!H(e))throw new Error(`${r}: invalid date bound '${e}'. Expected ISO date or datetime.`);if(!pr.includes(t)&&e.indexOf("T")===-1)throw new Error(`${r}: ${t} range bounds must include a time component.`)}function pe(e,t){const r=ke(e);return H(r)&&pr.includes(t)?as(r):r}const ht=1e4;function ms(e,t,r,n,s){if(!pt.includes(e))throw new Error(`${s}args[0]: relative date filters do not support ${e}. Supported levels: ${pt.join(", ")}.`);if(!Number.isFinite(t)||!Number.isFinite(r))throw new Error(`${s}: offset and count must be finite numbers.`);if(r<=0)throw new Error(`${s}args[2]: count must be greater than zero.`);if(Math.abs(t)>ht)throw new Error(`${s}args[1]: offset magnitude must be at most ${ht}.`);if(n!==void 0){const i=n instanceof Date?n.toISOString():n;if(!H(i))throw new Error(`${s}args[3]: anchor must be a valid ISO date or datetime.`)}}function Te(e,t){const r=e[0];if(!r||typeof r!="object"||!("granularity"in r))throw new Error(`${t.pathPrefix}args[0]: Expected date level attribute as first argument.`);return r}function ps(e,t){const r=e[0];if(!r||typeof r!="object"||!He(r))return e;const n=r,s=e[1];if(!Array.isArray(s))throw new Error(`${t.pathPrefix}args[1]: Expected string array of members.`);return ls(s,n.granularity,t.pathPrefix),e}function gs(e,t){const r=Te(e,t),n=e[1],s=e[2];Ze(r.granularity,n,s,t.pathPrefix);const i=[...e];return n!==void 0&&(i[1]=pe(n,r.granularity)),s!==void 0&&(i[2]=pe(s,r.granularity)),i}function ys(e,t){const r=Te(e,t),n=e[1];Ze(r.granularity,n,void 0,t.pathPrefix);const s=[...e];return s[1]=pe(n,r.granularity),s}function hs(e,t){const r=Te(e,t),n=e[1];Ze(r.granularity,void 0,n,t.pathPrefix);const s=[...e];return s[1]=pe(n,r.granularity),s}function qe(e,t){const r=Te(e,t),n=e[1],s=e[2],i=e[3];return ms(r.granularity,n,s,i,t.pathPrefix),e}function et(e,t){const r=e[0];if(!r||typeof r!="object"||!("type"in r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function bt(e,t){const r=et(e,t);if(!Xn(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${ae(r)} attribute`);return e}function U(e,t){const r=et(e,t);if(!Ge(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${ae(r)} attribute`);return e}function B(e,t){const r=et(e,t);if(!fr(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${ae(r)} attribute`);return e}function bs(e,t){const r=e[0];if(!r||typeof r!="object"||!("attribute"in r))throw new Error(`${t.pathPrefix}args[0]: Expected filter as first argument`);return r}function Es(e,t){const r=bs(e,t);if(!c.isMembersFilter(r))throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable||"unknown"} filter`);return e}function Fs(e,t){const r=e[0];if(!c.MetadataTypes.isAttribute(r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function j(e,t){const r=Fs(e,t);if(!Ge(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${ae(r)} attribute`);return e}const ws="FilterRelations (filterFactory.logic.or / filterFactory.logic.and) is not supported inside measureFactory.measuredValue filters. Use plain filters only, or apply logical relations at the query filter level.";function Ts(e,t){const r=e[1];return Array.isArray(r)&&r.forEach((n,s)=>{if(!(typeof n!="object"||n===null)&&X(n))throw new Error(`${t.pathPrefix}args[1][${s}]: ${ws}`)}),e}const As={"measureFactory.customFormula":Gn,"measureFactory.measuredValue":Ts,"measureFactory.sum":j,"measureFactory.average":j,"measureFactory.avg":j,"measureFactory.stdev":j,"measureFactory.variance":j,"measureFactory.median":j,"filterFactory.equals":bt,"filterFactory.doesntEqual":bt,"filterFactory.greaterThan":U,"filterFactory.greaterThanOrEqual":U,"filterFactory.lessThan":U,"filterFactory.lessThanOrEqual":U,"filterFactory.between":U,"filterFactory.betweenNotEqual":U,"filterFactory.numeric":U,"filterFactory.contains":B,"filterFactory.doesntContain":B,"filterFactory.startsWith":B,"filterFactory.doesntStartWith":B,"filterFactory.endsWith":B,"filterFactory.doesntEndWith":B,"filterFactory.like":B,"filterFactory.exclude":Es,"filterFactory.members":ps,"filterFactory.dateFrom":ys,"filterFactory.dateTo":hs,"filterFactory.dateRange":gs,"filterFactory.dateRelative":qe,"filterFactory.dateRelativeFrom":qe,"filterFactory.dateRelativeTo":qe};function Ss(e){return As[`${e}`]}const yr={"measureFactory.sum":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.average":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.avg":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.min":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.max":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.median":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.stdev":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.variance":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.count":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.countDistinct":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.aggregate":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.constant":[{type:"number",required:!0}],"measureFactory.customFormula":[{type:"string",required:!0,isName:!0},{type:"string",required:!0},{type:"CustomFormulaContext",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.add":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.subtract":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.multiply":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.divide":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.measuredValue":[{type:"Measure",required:!0},{type:"Filter[]",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.rank":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1},{type:"string",required:!1},{type:"Attribute[]",required:!1}],"measureFactory.trend":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.forecast":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.yearToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.quarterToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.monthToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.weekToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.runningSum":[{type:"Measure",required:!0},{type:"boolean",required:!1},{type:"string",required:!1,isName:!0}],"measureFactory.growth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthRate":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.difference":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastDay":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.contribution":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"filterFactory.union":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.intersection":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.exclude":[{type:"Filter",required:!0},{type:"Filter",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.contains":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntContain":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.startsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntStartWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.endsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEndWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.like":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.equals":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEqual":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.isEmpty":[{type:"Attribute",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.isNotEmpty":[{type:"Attribute",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.between":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.betweenNotEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.numeric":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"number",required:!1},{type:"string",required:!1},{type:"number",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.members":[{type:"Attribute",required:!0},{type:"string[]",required:!0},{type:"MembersFilterConfig",required:!1}],"filterFactory.dateFrom":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateTo":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRange":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!1},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelative":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeFrom":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeTo":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisYear":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisMonth":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisQuarter":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.today":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureEquals":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetween":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetweenNotEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.topRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.bottomRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureTopRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBottomRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.cascading":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.logic.and":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}],"filterFactory.logic.or":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}]};function Ae(e){return yr[`${e}`]}function $s(e){const t=Ae(e);return t?t.filter(r=>r.required).length:0}function Ds(e){const t=Ae(e);return t?t.length:0}function Os(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}/.test(e))return!1;const r=Date.parse(e);if(isNaN(r)||e.length<10)return!1;const n=new Date(e);return!isNaN(n.getTime())}function Ne(e,t,r,n,s){if(e.startsWith(A))try{return we(e,t,r,s)}catch(i){const o=i instanceof Error?i.message:"Unknown error";throw new Error(`${n}: ${o}`)}throw new Error(`${n}: Invalid attribute '${e}'. Expected format: '${A}TableName.ColumnName[.Level]'`)}function Cs(e,t,r,n){if(e.startsWith(A))try{return Fn(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid date dimension string '${e}'. Expected format: '${A}TableName.ColumnName'`)}function vs(e){const t=e.data,{argSchema:r,dataSource:n,schemaIndex:s,pathPrefix:i}=e.context,o=i;if(t===void 0){if(r.required)throw new Error(`${o}: Required argument is missing (expected ${r.type})`);return}if(!(t===null&&!r.required))switch(r.type){case"string":if(typeof t!="string")throw new Error(`${o}: Expected string, got ${typeof t}`);return t;case"number":if(typeof t!="number")throw new Error(`${o}: Expected number, got ${typeof t}`);return t;case"boolean":if(typeof t!="boolean")throw new Error(`${o}: Expected boolean, got ${typeof t}`);return t;case"string[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of strings, got ${typeof t}. Example: ['value1', 'value2']`);if(!t.every(a=>typeof a=="string"))throw new Error(`${o}: Expected array of strings, but contains non-string values`);return t;case"number[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of numbers, got ${typeof t}. Example: [10, 20]`);if(!t.every(a=>typeof a=="number"))throw new Error(`${o}: Expected array of numbers, but contains non-number values`);return t;case"Attribute":if(typeof t!="string")throw new Error(`${o}: Expected attribute string, got ${typeof t}. Example: 'DM.Commerce.Revenue'`);return Ne(t,n,s,o,ee);case"Attribute[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of attributes, got ${typeof t}. Example: ['DM.Commerce.AgeRange']`);return t.map((a,u)=>{if(typeof a!="string")throw new Error(`${o}[${u}]: Expected attribute string, got ${typeof a}`);return Ne(a,n,s,`${o}[${u}]`,ee)});case"Measure":case"BaseMeasure":if(!S(t))throw new Error(`${o}: Expected measure function call, got ${typeof t}. Example: {'function': 'measureFactory.sum', 'args': ['DM.Commerce.Revenue']}`);return R({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Measure[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of measure function calls, got ${typeof t}`);return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected measure function call, got ${typeof a}`);return R({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"Filter":if(!S(t))throw new Error(`${o}: Expected filter function call, got ${typeof t}. Example: {'function': 'filterFactory.contains', 'args': ['DM.Brand.Brand', 'Apple']}`);return R({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Filter[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of filter function calls, got ${typeof t}`);return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return R({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"FilterRelationsNode":if(Array.isArray(t))return t.map((a,u)=>{if(!S(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return R({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});if(S(t))return R({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected filter function call or array of filters, got ${typeof t}`);case"DateDimension":if(typeof t!="string")throw new Error(`${o}: Expected date dimension string, got ${typeof t}. Example: 'DM.Commerce.Date'`);return Cs(t,n,s,o);case"LevelAttribute":{if(typeof t!="string")throw new Error(`${o}: Expected date attribute string, got ${typeof t}. Example: 'DM.Commerce.Date.Years'`);const a=Ne(t,n,s,o,ee);if(!He(a))throw new Error(`${o}: Attribute must be date/datetime type, got ${ae(a)} attribute`);return a}case"Measure | number":if(typeof t=="number")return t;if(S(t))return R({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected measure function call or number, got ${typeof t}`);case"Date | string":if(typeof t=="string"){if(Os(t))return t;throw new Error(`${o}: Expected valid ISO date string or Date object, got invalid date string '${t}'`)}else{if(t instanceof Date)return t;throw new Error(`${o}: Expected date string or Date object, got ${typeof t}`)}case"string | number":if(typeof t=="string"||typeof t=="number")return t;throw new Error(`${o}: Expected string or number, got ${typeof t}`);case"BaseFilterConfig":case"MembersFilterConfig":case"CustomFormulaContext":case"any":if(t==null&&r.required)throw new Error(`${o}: Required argument is null/undefined`);return t;default:return t}}function R(e){const{data:t}=e,{dataSource:r,schemaIndex:n,pathPrefix:s}=e.context,{function:i,args:o}=t,a=s?`${s}.`:"",u=Ae(i);if(!u){const y=Object.keys(yr),F=N(i,y,x=>x),O=F&&F.distance<=D?` Did you mean '${F.best}'?`:"";throw new Error(`${a}function: Unknown function '${i}'.${O}`)}const l=$s(i),p=Ds(i);if(o.length<l)throw new Error(`${a}function: Expected at least ${l} arguments, got ${o.length}`);if(o.length>p)throw new Error(`${a}function: Expected at most ${p} arguments, got ${o.length}`);const d=[],g=[];for(let y=0;y<Math.max(o.length,u.length);y++){const F=u[`${y}`],O=o[`${y}`],x=a?`${a}args[${y}]`:`args[${y}]`;if(O===void 0){F!=null&&F.required&&g.push(`${x}: Missing required argument (expected ${F.type})`);continue}if(!F){g.push(`${x}: Unexpected argument`);continue}try{const V=vs({data:O,context:{dataSource:r,schemaIndex:n,pathPrefix:x,argSchema:F}});d.push(V)}catch(V){const vr=V instanceof Error?V.message:"Unknown error";g.push(vr)}}if(g.length>0){const y=g.join("; ");throw new Error(y)}let b=d;const E=Ss(i);if(E)try{b=E(d,{dataSource:r,schemaIndex:n,pathPrefix:a})}catch(y){const F=y instanceof Error?y.message:"Unknown validation error";throw new Error(F)}return On(i,b)}const qs="yyyy-MM-dd'T'HH:mm:ss",Ns=/^(\d{4})-(\d{2})-(\d{2})/;function xs(e){const t=Ns.exec(e);if(!t)throw new Error(`Invalid datetime member '${e}'.`);const r=Number(t[1]),n=Number(t[2]),s=Number(t[3]);return new Date(r,n-1,s)}function Ms(e,t){if(t===c.DateLevels.Years&&gr(e))return`${e}-01-01T00:00:00`;if(!H(e))throw new Error(`Invalid datetime member '${e}' for ${t}. Expected ${J(t)}.`);const r=xs(e);let n;switch(t){case c.DateLevels.Years:n=c.startOfYear(r);break;case c.DateLevels.Quarters:n=c.startOfQuarter(r);break;case c.DateLevels.Months:n=c.startOfMonth(r);break;case c.DateLevels.Weeks:n=c.startOfWeek(r,{weekStartsOn:es});break;case c.DateLevels.Days:n=c.startOfDay(r);break;default:return e}return Mr.format(n,qs)}const ge="Unknown error";function tt(e,t="filters"){const{attribute:r,config:n}=e;if(c.isMembersFilter(e)&&c.isLevelAttribute(r)){const{granularity:s}=r,i=e.members.map(u=>Ms(String(u),s));ds(i,t);const o=c.simplifyFilterConfig(n),a=Object.keys(o).length===0?void 0:o;return c.members(r,i,a)}return e}function Rs(e){return!Array.isArray(e)&&"operator"in e&&(e.operator==="AND"||e.operator==="OR")&&"left"in e&&"right"in e}function te(e,t){return Array.isArray(e)?e.map((r,n)=>te(r,`${t}[${n}]`)):Rs(e)?w(f({},e),{left:te(e.left,`${t}.left`),right:te(e.right,`${t}.right`)}):tt(e,t)}function Is(e,t){return w(f({},e),{left:te(e.left,`${t}.left`),right:te(e.right,`${t}.right`)})}function Ls(e,t,r="filters"){const n=[];let s=[];return e.forEach((i,o)=>{const a=`${r}[${o}]`;if(X(i)){try{s=c.mergeFiltersOrFilterRelations(Is(i,a),s)}catch(u){const l=u instanceof Error?u.message:ge;n.push({path:a,input:t[o],message:l})}return}try{s=c.mergeFiltersOrFilterRelations([tt(i,a)],s)}catch(u){const l=u instanceof Error?u.message:ge;n.push({path:a,input:t[o],message:l})}}),{data:n.length>0?null:s,errors:n}}const _s=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];if(t.forEach((a,u)=>{const l={path:`filters[${u}]`,input:a};try{const p=R({data:a,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});!X(p)&&!Fe(p)?i.push(w(f({},l),{message:"Invalid filter JSON"})):s.push(p)}catch(p){const d=p instanceof Error?p.message:ge;i.push(w(f({},l),{message:d}))}}),i.length>0)return{success:!1,errors:i};const o=Ls(s,t);return o.errors.length>0?{success:!1,errors:o.errors}:{success:!0,data:o.data}},ue=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?Xt(t)?_s({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"filters",input:t,message:"Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},ks=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`highlights[${a}]`,input:o};try{const l=R({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});Fe(l)?s.push(tt(l,`highlights[${a}]`)):i.push(w(f({},u),{message:"Invalid filter JSON"}))}catch(l){const p=l instanceof Error?l.message:ge;i.push(w(f({},u),{message:p}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}},Se=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?Xt(t)?ks({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"highlights",input:t,message:"Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Us=(e,t)=>{if(e&&!c.isSortDirection(e))return w(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`})},Bs=(e,t,r)=>{const{dataSource:n,schemaIndex:s}=t;try{const i=R({data:e,context:{dataSource:n,schemaIndex:s,pathPrefix:""}});return Ye(i)?{success:!0,data:i}:{success:!1,errors:[w(f({},r),{message:"Invalid measure JSON"})]}}catch(i){const o=i instanceof Error?i.message:"Unknown error";return{success:!1,errors:[w(f({},r),{message:o})]}}},Ps=(e,t,r,n)=>{const s=R({data:e.column,context:{dataSource:t,schemaIndex:r,pathPrefix:""}});if(!Ye(s))return{style:{},error:w(f({},n),{message:"Invalid measure JSON"})};const i=Us(e.sortType,n);if(i){const a=c.omit(e,"column");return{measure:s,style:a,error:i}}const o=c.omit(e,"column");return{measure:s,style:o}},Ws=(e,t,r,n)=>{if(er(e))return Ps(e,t,r,n);if(S(e)){const s=Bs(e,{dataSource:t,schemaIndex:r},n);return s.success?{measure:s.data}:{error:s.errors[0]}}return{error:w(f({},n),{message:"Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."})}},hr=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"measures",input:t,message:"Invalid measures JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`measures[${a}]`,input:o};try{const l=Ws(o,r,n,u);if(l.error){i.push(l.error);return}l.measure&&s.push(l.style!==void 0?{measure:l.measure,style:l.style}:{measure:l.measure})}catch(l){const p=l instanceof Error?l.message:"Unknown error";i.push(w(f({},u),{message:p}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function de(e){return typeof e=="string"?e:e.title}function zs(e){const t={};for(const[r,n]of Object.entries(e)){const s={};n.filtersOptions!==void 0&&(s.filtersOptions=n.filtersOptions),n.partialDtoOptions!==void 0&&(s.partialDtoOptions=n.partialDtoOptions),Object.keys(s).length>0&&(t[r]=s)}return Object.keys(t).length>0?t:void 0}function br(e){return typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"?e.toJSON():e}function _(e){return typeof e=="string"?e.replace(/\[\[([^\]]+)\]\]/g,"$1"):Array.isArray(e)?e.map(_):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,_(r)])):e}function T(e,t,r){const n=e();if(!n.success){const s=r?n.errors.map(r):n.errors;return t.push(...s),null}return n.data}function Er(e){return!Array.isArray(e)&&"operator"in e&&(e.operator==="AND"||e.operator==="OR")&&"left"in e&&"right"in e}function Vs(e){return e?Array.isArray(e)?e.flatMap(t=>P(t)):Er(e)?[...P(e.left),...P(e.right)]:P(e):[]}function P(e){return Array.isArray(e)?e.flatMap(t=>P(t)):Er(e)?[...P(e.left),...P(e.right)]:[e]}function Fr(e,t){if(!He(e))return null;const r=e;return{columnName:us(r),granularity:r.granularity,source:t}}function Et(e,t){const r=[];return e.forEach((n,s)=>{const i=`${t}[${s}]`;if((c.isMembersFilter(n)||c.isDateRangeFilter(n)||c.isRelativeDateFilter(n))&&c.isLevelAttribute(n.attribute)){const o=Fr(n.attribute,i);o&&r.push(o)}}),r}function Ft(e){return e.startsWith("dimensions[")?"Date breakdown":e.startsWith("highlights[")?"Date highlight":"Date filter"}function xe(e,t){if(e.columnName!==t.columnName||e.granularity===t.granularity)return null;const r=Ft(e.source),n=Ft(t.source);return`${r} on ${e.granularity} (${e.source}) conflicts with ${n} on ${t.granularity} (${t.source}) on the same datetime column '${e.columnName}'. Use the same date level for filters and breakdown dimensions.`}function js(e){var o;const t=[],r=e.dimensions.map((a,u)=>Fr(a,`dimensions[${u}]`)).filter(a=>a!==null),n=Et(Vs(e.filters),"filters"),s=Et((o=e.highlights)!=null?o:[],"highlights"),i=[...n,...s];for(let a=0;a<i.length;a++)for(let u=a+1;u<i.length;u++){const l=xe(i[a],i[u]);l&&t.push({path:"filters",message:l,input:null})}for(const a of r)for(const u of i){const l=xe(a,u);l&&t.push({path:"query",message:l,input:null})}for(let a=0;a<r.length;a++)for(let u=a+1;u<r.length;u++){const l=xe(r[a],r[u]);l&&t.push({path:"dimensions",message:l,input:null})}return t}const Js=e=>{const{data:t}=e,{dataSource:r,tables:n}=e.context,s=oe(n),i=[],o=T(()=>rr({data:t.dimensions||[],context:{dataSource:r,schemaIndex:s}}),i),a=T(()=>hr({data:t.measures||[],context:{dataSource:r,schemaIndex:s}}),i),u=T(()=>ue({data:t.filters||[],context:{dataSource:r,schemaIndex:s}}),i);let l=null;if(t.highlights&&(l=T(()=>Se({data:t.highlights||[],context:{dataSource:r,schemaIndex:s}}),i)),i.length>0)return{success:!1,errors:i};const p=o?c.adaptDimensionsForQuery(o):[],d=js({dimensions:p,filters:u||[],highlights:l!=null?l:null});return d.length>0?{success:!1,errors:d}:{success:!0,data:f({dataSource:c.convertDataSource(r),dimensions:p,measures:a?c.adaptMeasuresForQuery(a):[],filters:u||[]},l&&{highlights:l})}};function wt(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function rt(e){const t=[],r=[];return e.forEach((n,s)=>{var d,g,b;const i=wt(n)?n.column:n,o=wt(n)?n:void 0,a=()=>br(i);if(!i.composeCode){r.push({path:`dimensions[${s}]`,input:a(),message:`Dimension at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}if(!i.composeCode.startsWith(A)){r.push({path:`dimensions[${s}]`,input:a(),message:`Expected composeCode to start with '${A}' for dimension at index ${s} (${i.name||"unnamed"}). Got: '${i.composeCode}'`});return}const u=(b=o!=null&&o.sortType?c.convertSortDirectionToSort(o.sortType):void 0)!=null?b:((d=i.getSort)==null?void 0:d.call(i))!==void 0&&((g=i.getSort)==null?void 0:g.call(i))!==c.Sort.None?i.getSort():void 0,l=o?c.omit(o,"column"):{};if(u!==void 0&&u!==c.Sort.None||o&&Object.keys(l).length>0){const E=f(f({column:i.composeCode},u!==void 0&&u!==c.Sort.None&&{sortType:c.convertSortToSortDirection(u)}),l);t.push(E)}else t.push(i.composeCode)}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}const Ue="Unknown error";function ce(e){if(!e)return{success:!0,data:[]};const t=[];if(c.isFilterRelations(e)){if(!e.composeCode)return{success:!1,errors:[{path:"filters",input:e,message:`FilterRelations is missing composeCode. Operator: ${e.operator||"unknown"}`}]};try{return{success:!0,data:[K(e.composeCode)]}}catch(n){const s=n instanceof Error?n.message:Ue;return{success:!1,errors:[{path:"filters",input:e,message:`Failed to parse composeCode for FilterRelations: ${s}. ComposeCode: '${e.composeCode}'`}]}}}const r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){t.push({path:`filters[${s}]`,input:n,message:`Filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=K(n.composeCode);r.push(o)}catch(o){const a=o instanceof Error?o.message:Ue;t.push({path:`filters[${s}]`,input:n,message:`Failed to parse composeCode for filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),t.length>0?{success:!1,errors:t}:{success:!0,data:r}}function $e(e){if(!e)return{success:!0,data:[]};const t=[],r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){r.push({path:`highlights[${s}]`,input:n,message:`Highlight filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=K(n.composeCode);t.push(o)}catch(o){const a=o instanceof Error?o.message:Ue;r.push({path:`highlights[${s}]`,input:n,message:`Failed to parse composeCode for highlight filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function Tt(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function nt(e){const t=[],r=[];return e.forEach((n,s)=>{var u,l,p;const i=Tt(n)?n.column:n,o=Tt(n)?n:void 0,a=()=>br(i);if(!i.composeCode){r.push({path:`measures[${s}]`,input:a(),message:`Measure at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}try{const d=K(i.composeCode),g=(p=o!=null&&o.sortType?c.convertSortDirectionToSort(o.sortType):void 0)!=null?p:((u=i.getSort)==null?void 0:u.call(i))!==void 0&&((l=i.getSort)==null?void 0:l.call(i))!==c.Sort.None?i.getSort():void 0;if(g!==void 0&&g!==c.Sort.None||o&&Object.keys(c.omit(o,"column")).length>0){const E=o?c.omit(o,"column"):{},y=f(f({column:d},g!==void 0&&g!==c.Sort.None&&{sortType:c.convertSortToSortDirection(g)}),E);t.push(y)}else t.push(d)}catch(d){const g=d instanceof Error?d.message:"Unknown error";r.push({path:`measures[${s}]`,input:a(),message:`Failed to parse composeCode for measure at index ${s} (${i.name||"unnamed"}): ${g}. ComposeCode: '${i.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function At(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.trend"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(c.TREND_PREFIX))!=null?s:!1)}function St(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.forecast"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(c.FORECAST_PREFIX))!=null?s:!1)}function $t(e){try{const t=K(e.trim());return t.args[2]!=null&&typeof t.args[2]=="object"?t.args[2]:void 0}catch(t){return}}function Ys(e){var n,s,i;if(!(e!=null&&e.length))return[];const t=new Set,r=[];for(let o=0;o<e.length;o++){if(t.has(o))continue;const a=e[o];if(At(a)||St(a)){r.push(a);continue}const u=(n=a.name)!=null?n:"Measure",l=`${c.TREND_PREFIX}_${u}`,p=`${c.FORECAST_PREFIX}_${u}`;let d,g,b=o+1;if(b<e.length&&!t.has(b)&&At(e[b])&&e[b].name===l){const E=(s=e[b].composeCode)==null?void 0:s.trim();E&&(d=$t(E),t.add(b),b++)}if(b<e.length&&!t.has(b)&&St(e[b])&&e[b].name===p){const E=(i=e[b].composeCode)==null?void 0:i.trim();E&&(g=$t(E),t.add(b))}d!==void 0||g!==void 0?r.push(f(f({column:a},d&&Object.keys(d).length>0&&{trend:d}),g&&Object.keys(g).length>0&&{forecast:g})):r.push(a)}return r}function Ks(e){const t=[],r=T(()=>rt(e.dimensions||[]),t),n=Ys(e.measures||[]),s=T(()=>nt(n),t),i=T(()=>ce(e.filters),t);let o=null;if(e.highlights&&e.highlights.length>0&&(o=T(()=>$e(e.highlights),t)),t.length>0)return{success:!1,errors:t};const a=f({dimensions:r||[],measures:s||[],filters:i||[]},o&&{highlights:o});return{success:!0,data:_(a)}}const wr=new Set(c.ALL_CHART_TYPES.filter(e=>e!=="image")),Dt=Object.freeze([...wr]),Me=new Set(["category","value","breakBy","breakByPoint","x","y","breakByColor","size","boxType","outliers","geo","colorBy","details","color","date","columns","rows","values","secondary","min","max","seriesToColorMap"]),Qs={line:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},area:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},bar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},column:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},streamgraph:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},polar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},pie:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},funnel:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},treemap:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},sunburst:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},scatter:{validAxes:new Set(["x","y","breakByPoint","breakByColor","size","seriesToColorMap"]),requiredAxes:[]},table:{validAxes:new Set(["columns"]),requiredAxes:["columns"]},indicator:{validAxes:new Set(["value","secondary","min","max"]),requiredAxes:[]},boxplot:{validAxes:new Set(["category","value","boxType","outliers"]),requiredAxes:["value"]},areamap:{validAxes:new Set(["geo","color"]),requiredAxes:["geo"]},scattermap:{validAxes:new Set(["geo","size","colorBy","details"]),requiredAxes:["geo"]},"calendar-heatmap":{validAxes:new Set(["date","value"]),requiredAxes:["date","value"]},arearange:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]}},Gs=new Set(["category","breakBy","breakByPoint","rows","geo","details","date"]),Hs=new Set(["value","size","colorBy","boxType","outliers","values","secondary","min","max","color"]);function Xs(e){const t=Qs[e];if(t)return{validAxes:new Set(t.validAxes),requiredAxes:Object.freeze([...t.requiredAxes])}}function Tr(e){return typeof e=="string"&&wr.has(e)}function Zs(e,t,r){if(r==="boxplot"&&e==="value"||r==="calendar-heatmap"&&e==="date"||Gs.has(e))return!0;if(Hs.has(e))return!1;const n=Array.isArray(t)?t[0]:t;if(!n)return!0;let s;return v(n)&&"column"in n&&(s=n.column),!(S(n)||s!==void 0&&S(s))}function ei(e){const t=[],r={chartType:"",dataOptions:{}};if(!v(e))return t.push({path:"chartType",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.chartType;if(n===void 0){const i=Object.keys(e),o=N("chartType",i,l=>l),a=o&&o.distance<=D?` Did you mean 'chartType'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=D?{[o.best]:e[o.best]}:e;t.push({path:"chartType",input:u,message:`chartType is required.${a}`})}else if(Tr(n))r.chartType=n;else{const i=N(String(n),Dt,u=>u),o=i&&i.distance<=D?` Did you mean '${i.best}'?`:"",a=Dt.slice(0,8).join(", ");t.push({path:"chartType",input:n,message:`Invalid chartType '${n}'. Valid types: ${a}, ...${o}`})}const s=e.dataOptions;if(s===void 0){const i=Object.keys(e),o=N("dataOptions",i,l=>l),a=o&&o.distance<=D?` Did you mean 'dataOptions'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=D?{[o.best]:e[o.best]}:e;t.push({path:"dataOptions",input:u,message:`dataOptions is required.${a}`})}else s!==null&&typeof s=="object"&&(r.dataOptions=s);return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function ti(e){return e.map(({attribute:t,style:r})=>r?f({column:t},r):t)}function ri(e){return e.map(({measure:t,style:r})=>r?f({column:t},r):t)}function ni(e){return Array.isArray(e)?e:[e]}function si(e){return Array.isArray(e)?e:[e]}function ii(e){return Array.isArray(e)?e:[e]}const oi=/^(dimensions|measures|filters|highlights)(\[\d+\])?$/;function Be(e){return t=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0,s=q(e,n);if(oi.test(t.path)||t.path.startsWith("dataOptions"))return w(f({},t),{path:s});const i=t.path.replace(/\[\d+\]$/,"");return w(f({},t),{path:Xe(i,s)})}}function ye(e,t,r,n,s){if(r==="dimension"){const a=t?ni(t):[];if(a.length===0)return[];const u=T(()=>rr({data:a,context:n}),s,Be(e));return u!==null?ti(u):null}const i=t?si(t):[];if(i.length===0)return[];const o=T(()=>hr({data:i,context:n}),s,Be(e));return o!==null?ri(o):null}const Ot=(e,t)=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0;return w(f({},t),{path:q(e,n)})};function Ct(e,t,r){const n=Array.isArray(t)?t:t!=null?[t]:[];if(r==="dimension"){const i=rt(n);return i.success?{success:!0,data:i.data}:{success:!1,errors:i.errors.map(o=>Ot(e,o))}}const s=nt(n);return s.success?{success:!0,data:s.data}:{success:!1,errors:s.errors.map(i=>Ot(e,i))}}function ai(e,t){let r;v(e)&&"column"in e&&(r=e.column);const s=!(S(e)||r!==void 0&&S(r))?"dimension":"measure",i=[],o=ye("columns",[e],s,t,i);return o!==null?{success:!0,data:o}:{success:!1,errors:i}}function ui(e,t,r,n){const s=[];for(const i of e){const o=T(()=>ai(i,t),r,n);o&&s.push(...o)}return s}function ci(e,t,r){if(!e||!v(e))return r.push({path:q(-1),input:e,message:"dataOptions is required"}),null;const n={},{chartType:s}=t,i=r.length,o=e,a=Object.keys(e),u=new Map;for(const d of a)if(!Me.has(d)){const g=N(d,[...Me],E=>E),b=g&&g.distance<=D?` Did you mean '${g.best}'?`:"";g&&g.distance<=D&&u.set(d,g.best),r.push({path:q(d),input:o[d],message:`Unknown dataOptions key '${d}'.${b}`})}const l=s?Xs(s):void 0;if(l){for(const d of a)if(d!=="seriesToColorMap"&&!l.validAxes.has(d)&&Me.has(d)){const g=N(d,[...l.validAxes],y=>y),b=g&&g.distance<=D?` Did you mean '${g.best}'?`:"",E=[...l.validAxes].join(", ");r.push({path:q(d),input:o[d],message:`Axis '${d}' is not valid for chart type '${s}'. Valid axes: ${E}.${b}`})}for(const d of l.requiredAxes)[...u.values()].includes(d)||(!(d in o)||o[d]==null)&&r.push({path:q(d),input:null,message:`Chart type '${s}' requires '${l.requiredAxes.join("' and '")}'. Missing: ${d}.`});s==="indicator"&&(["value","secondary","min","max"].some(b=>b in o&&o[b]!=null)||r.push({path:q(-1),input:e,message:"Indicator chart requires at least one of: value, secondary, min, max."})),s==="scatter"&&("x"in e&&e.x!=null||"y"in e&&e.y!=null||r.push({path:q(-1),input:e,message:"Scatter chart requires at least one of: x, y."}))}if(r.length>i)return null;const p=Object.entries(e);for(const[d,g]of p){if(!g)continue;if(d==="seriesToColorMap"){n[d]=g;continue}if(d==="columns"){n[d]=ui(ii(g),t,r,Be("columns"));continue}const b=Zs(d,g,s)?"dimension":"measure",E=ye(d,g,b,t,r);if(E!==null){const y=s==="calendar-heatmap"&&d==="value";n[d]=y||!Array.isArray(g)?E[0]:E}}return r.length>i?null:n}function li(e){if(typeof e!="string")return"iqr";const t=e.split("/")[1];return t==="iqr"||t==="extremums"||t==="standardDeviation"?t:"iqr"}const Ar=e=>{var y;const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=ei(t);if(o.length>0)return{success:!1,errors:o};const a=i.chartType,u=oe(s),l=[];let p=ci(i.dataOptions,{dataSource:n,schemaIndex:u,chartType:a},l);if(a==="boxplot"&&p){const F=li((y=i.styleOptions)==null?void 0:y.subtype),O=F==="iqr"||F==="standardDeviation";p=w(f({},p),{boxType:F,outliersEnabled:O})}let d=null;i.filters&&i.filters.length>0&&(d=T(()=>ue({data:i.filters||[],context:{dataSource:n,schemaIndex:u}}),l));let g=null;if(i.highlights&&i.highlights.length>0&&(g=T(()=>Se({data:i.highlights||[],context:{dataSource:n,schemaIndex:u}}),l)),l.length>0||p===null)return{success:!1,errors:l};if(!Tr(i.chartType))return{success:!1,errors:[{path:"chartType",input:i.chartType,message:"Invalid chartType"}]};const b=i.chartType;return{success:!0,data:f(f(f({dataSet:c.convertDataSource(n),chartType:b,dataOptions:p},i.styleOptions&&{styleOptions:i.styleOptions}),d&&{filters:d}),g&&{highlights:g})}},Sr=e=>{const t=[];if(!e.chartType)return{success:!1,errors:[{path:"chartType",input:e,message:"chartType is required"}]};if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};let r=null;const n=fi(e.dataOptions);n.success?r=n.data:t.push(...n.errors);let s;if(e.filters){const a=T(()=>ce(e.filters),t);s=a!=null?a:void 0}let i;if(e.highlights&&e.highlights.length>0){const a=T(()=>$e(e.highlights),t);i=a!=null?a:void 0}if(t.length>0||r===null)return{success:!1,errors:t};const o=f(f(f({chartType:e.chartType,dataOptions:r},e.styleOptions&&{styleOptions:e.styleOptions}),s&&s.length>0&&{filters:s}),i&&i.length>0&&{highlights:i});return{success:!0,data:_(o)}};function fi(e){const t={},r=[],n=new Set(["seriesToColorMap","boxType","outliersEnabled","valueTitle"]);for(const[s,i]of Object.entries(e)){if(s==="seriesToColorMap"&&i){t[s]=i;continue}if(n.has(s)||i==null){i!=null&&(t[s]=i);continue}const o=Array.isArray(i)?i:[i],a=Array.isArray(i),u=[],l=[];for(let p=0;p<o.length;p++){const d=o[p],b=di(d)?rt([d]):nt([d]);b.success?u.push(...b.data):b.errors.forEach(E=>{var y;l.push(w(f({},E),{path:q(s,p),input:(y=E.input)!=null?y:d}))})}if(l.length>0){r.push(...l);continue}t[s]=a?u:u[0]}return r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function di(e){const t=Array.isArray(e)?e[0]:e;if(!t||!v(t))return!0;const r="column"in t&&t.column!=null&&v(t.column)?t.column:t;if("composeCode"in r){const n=r.composeCode;if(typeof n=="string"&&n.startsWith("DM."))return!0;if(typeof n=="string"&&(n.includes("measureFactory")||n.includes("Formula")))return!1}if("type"in r){const n=r.type;if(n==="basemeasure"||n==="calculatedmeasure")return!1}return!("aggregation"in r||"attribute"in r&&"aggregation"in r)}const vt=["rows","columns","values","grandTotals"];function mi(e){if(!v(e))return!1;const t=Object.keys(e);return t.every(r=>r==="rows"||r==="columns")&&t.every(r=>typeof e[r]=="boolean")}function pi(e){const t=[],r={dataOptions:{}};if(!v(e))return t.push({path:"dataOptions",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.dataOptions;if(n===void 0){const s=Object.keys(e),i=N("dataOptions",s,u=>u),o=i&&i.distance<=D?` Did you mean 'dataOptions'? (You may have typed '${i.best}')`:"",a=i&&i.distance<=D?{[i.best]:e[i.best]}:e;t.push({path:"dataOptions",input:a,message:`dataOptions is required.${o}`})}else if(v(n)){const s=n;r.dataOptions=s;for(const o of Object.keys(s))if(!vt.includes(o)){const a=N(o,[...vt],l=>l),u=a&&a.distance<=D?` Did you mean '${a.best}'?`:"";t.push({path:q(o),input:s[o],message:`Unknown dataOptions key '${o}'. Valid keys: rows, columns, values, grandTotals.${u}`})}for(const o of["rows","columns","values"]){const a=s[o];a!=null&&!Array.isArray(a)&&t.push({path:q(o),input:a,message:`dataOptions.${o} must be an array`})}const i=s.grandTotals;i!=null&&!mi(i)&&t.push({path:q("grandTotals"),input:i,message:"grandTotals must be an object with optional rows?: boolean, columns?: boolean"})}return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function gi(e,t,r){if(!e||typeof e!="object")return r.push({path:q(-1),input:e,message:"dataOptions is required"}),null;const n={},s=r.length;for(const o of["rows","columns"]){const a=ye(o,e[o],"dimension",t,r);a&&(n[o]=a)}const i=ye("values",e.values,"measure",t,r);return i&&(n.values=i),e.grandTotals!==void 0&&(n.grandTotals=e.grandTotals),r.length>s?null:n}const $r=e=>{const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=pi(t);if(o.length>0)return{success:!1,errors:o};const a=oe(s),u=[],l=gi(i.dataOptions,{dataSource:n,schemaIndex:a},u);let p=null;i.filters&&i.filters.length>0&&(p=T(()=>ue({data:i.filters||[],context:{dataSource:n,schemaIndex:a}}),u));let d=null;return i.highlights&&i.highlights.length>0&&(d=T(()=>Se({data:i.highlights||[],context:{dataSource:n,schemaIndex:a}}),u)),u.length>0||l===null?{success:!1,errors:u}:{success:!0,data:f(f(f({dataSet:c.convertDataSource(n),dataOptions:l},i.styleOptions&&{styleOptions:i.styleOptions}),p&&{filters:p}),d&&{highlights:d})}},Dr=e=>{const t=[];if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};const r=e.dataOptions,n={};for(const u of["rows","columns"]){const l=r[u];if(l&&l.length>0){const p=Ct(u,l,"dimension");p.success?n[u]=p.data:t.push(...p.errors)}}const s=r.values;if(s&&s.length>0){const u=Ct("values",s,"measure");u.success?n.values=u.data:t.push(...u.errors)}r.grandTotals!==void 0&&(n.grandTotals=r.grandTotals);let i;if(e.filters){const u=T(()=>ce(e.filters),t);i=u!=null?u:void 0}let o;if(e.highlights&&e.highlights.length>0){const u=T(()=>$e(e.highlights),t);o=u!=null?u:void 0}if(t.length>0)return{success:!1,errors:t};const a=f(f(f({dataOptions:n},e.styleOptions&&{styleOptions:e.styleOptions}),i&&i.length>0&&{filters:i}),o&&o.length>0&&{highlights:o});return{success:!0,data:_(a)}},yi=(e,t,r)=>{const n=oe(r.tables),s={dataSource:r.dataSource,schemaIndex:n},i=[],o=e&&e.length>0?T(()=>ue({data:e,context:s}),i):void 0,a=t&&t.length>0?T(()=>Se({data:t,context:s}),i):void 0;return i.length>0?{success:!1,errors:i}:{success:!0,data:f(f({},o!=null&&{filters:o}),a!=null&&{highlights:a})}},hi=["widgetType","id","title","description","dataSource","config","highlightSelectionDisabled"],qt=(e,t,r,n)=>{const{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:l}=e,p=c.omit(e,hi),d=r({data:p,context:t});return d.success?{success:!0,data:n(d.data,{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:l})}:d},bi=(e,t)=>{const s=e,{dataSet:r}=s,n=De(s,["dataSet"]);return f(f(f(f(f(w(f({},n),{widgetType:"chart",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&c.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:t.highlightSelectionDisabled}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},Ei=(e,t)=>{const s=e,{dataSet:r}=s,n=De(s,["dataSet"]);return f(f(f(f(w(f({},n),{widgetType:"pivot",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&c.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},Pe=["chart","pivot","text","custom"],Fi=e=>typeof e=="string"&&Pe.includes(e);function wi(e){if(!v(e))return{path:"widgetType",input:e,message:"Expected an object"};const t=e.widgetType;if(t===void 0){const r=Object.keys(e),n=N("widgetType",r,o=>o),s=n&&n.distance<=D?` Did you mean 'widgetType'? (You may have typed '${n.best}')`:"";return{path:"widgetType",input:n&&n.distance<=D?{[n.best]:e[n.best]}:e,message:`widgetType is required.${s}`}}if(!Fi(t)){const r=N(String(t),Pe,i=>i),n=r&&r.distance<=D?` Did you mean '${r.best}'?`:"",s=Pe.join(", ");return{path:"widgetType",input:t,message:`Invalid widgetType '${String(t)}'. Valid types: ${s}${n}`}}return null}const Ti=e=>({path:"id",input:e,message:"Widget id is required"}),Ai=e=>!!e.id,Or=e=>{const{data:t,context:r}=e,n=wi(t);if(n)return{success:!1,errors:[n]};if(!Ai(t))return{success:!1,errors:[Ti(t)]};switch(t.widgetType){case"chart":return qt(t,r,Ar,bi);case"pivot":return qt(t,r,$r,Ei);case"text":return{success:!0,data:f({widgetType:"text",id:t.id,styleOptions:t.styleOptions},t.config!==void 0&&{config:t.config})};case"custom":{const{id:s,customWidgetType:i,title:o,description:a,dataSource:u,config:l,filters:p,highlights:d,dataOptions:g,styleOptions:b,customOptions:E}=t,y=yi(p,d,r);return y.success?{success:!0,data:f(f(f(f(f(f({widgetType:"custom",id:s,customWidgetType:i,dataSource:u!==void 0?u:c.convertDataSource(r.dataSource),dataOptions:g!=null?g:{}},o!==void 0&&{title:o}),a!==void 0&&{description:a}),l!==void 0&&{config:l}),b!==void 0&&{styleOptions:b}),E!==void 0&&{customOptions:E}),y.data)}:y}default:return{success:!1,errors:[{path:"widgetType",input:t,message:`Unknown widgetType: ${String(t.widgetType)}`}]}}},Cr=e=>{const{widgetType:t}=e;switch(t){case"chart":{const r=Sr(e);if(!r.success)return r;const n=f(f(f(f(f(w(f({},r.data),{widgetType:"chart",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:de(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:e.highlightSelectionDisabled});return{success:!0,data:_(n)}}case"pivot":{const r=Dr(e);if(!r.success)return r;const n=f(f(f(f(w(f({},r.data),{widgetType:"pivot",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:de(e.dataSource)}),e.config!==void 0&&{config:e.config});return{success:!0,data:_(n)}}case"text":return{success:!0,data:f({widgetType:"text",id:e.id,styleOptions:e.styleOptions},e.config!==void 0&&{config:e.config})};case"custom":{const r=[],n=e.filters!==void 0?T(()=>ce(e.filters),r):void 0,s=e.highlights!==void 0?T(()=>$e(e.highlights),r):void 0;return r.length>0?{success:!1,errors:r}:{success:!0,data:f(f(f(f(f(f(f(f(f({widgetType:"custom",customWidgetType:e.customWidgetType,id:e.id},e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:de(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.dataOptions!==void 0&&{dataOptions:e.dataOptions}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),e.customOptions!==void 0&&{customOptions:e.customOptions}),n&&n.length>0&&{filters:n}),s&&s.length>0&&{highlights:s})}}default:return{success:!1,errors:[{path:"widgetType",input:e,message:`Unknown widgetType: ${String(t)}`}]}}},Si=e=>{const{data:t,context:r}=e,n=[],s=[];Array.isArray(t.widgets)?t.widgets.forEach((a,u)=>{const l=Or({data:a,context:r});if(!l.success){n.push(...mr(l.errors,dr(u)));return}s.push(l.data)}):n.push({path:"widgets",input:t.widgets,message:"Invalid dashboard JSON. Expected widgets to be an array."});let i=null;if(t.filters&&t.filters.length>0){const a=oe(r.tables);i=T(()=>ue({data:t.filters,context:{dataSource:r.dataSource,schemaIndex:a}}),n)}return n.length>0?{success:!1,errors:n}:{success:!0,data:f(f(f(f(f(f(f(f({widgets:s},t.id!==void 0&&{id:t.id}),t.title!==void 0&&{title:t.title}),i!==null&&{filters:i}),t.layoutOptions!==void 0&&{layoutOptions:t.layoutOptions}),t.config!==void 0&&{config:t.config}),t.defaultDataSource!==void 0&&{defaultDataSource:t.defaultDataSource}),t.styleOptions!==void 0&&{styleOptions:t.styleOptions}),t.widgetsOptions!==void 0&&{widgetsOptions:t.widgetsOptions})}},$i=e=>{const t=[],r=[];e.widgets.forEach((o,a)=>{const u=Cr(o);if(!u.success){t.push(...mr(u.errors,dr(a)));return}r.push(u.data)});let n;if(e.filters){const o=T(()=>ce(e.filters),t);n=o!=null?o:void 0}if(t.length>0)return{success:!1,errors:t};const s=e.widgetsOptions!==void 0?zs(e.widgetsOptions):void 0,i=f(f(f(f(f(f(f(f({widgets:r},e.id!==void 0&&{id:e.id}),e.title!==void 0&&{title:e.title}),n&&n.length>0&&{filters:n}),e.layoutOptions!==void 0&&{layoutOptions:e.layoutOptions}),e.config!==void 0&&{config:e.config}),e.defaultDataSource!==void 0&&{defaultDataSource:de(e.defaultDataSource)}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),s!==void 0&&{widgetsOptions:s});return{success:!0,data:_(i)}};function Di(e){const{filters:t,relations:r}=c.getFilterListAndRelationsJaql(e.filters||[]);return{dataSource:e.dataSource,dimensions:e.dimensions,measures:e.measures,filters:t,filterRelations:r,highlights:e.highlights}}function Oi(e,t,r=!1){const n=Di(e),s=c.prepareQueryParams(n,t);return c.getJaqlQueryPayload(s,r)}function he(e){const t=e.trim();return t.startsWith(A)?t.slice(A.length):t}function re(e){var n;const t=Ae(e.function);if(t){const s=t.findIndex(i=>i.isName);if(s>=0){const i=e.args[s];if(typeof i=="string"&&i.length>0)return i}}const r=e.args[0];return typeof r=="string"?he(r):S(r)?re(r):(n=e.function.split(".").pop())!=null?n:e.function}const Nt="filterFactory.logic.";function xt(e){var r;if(e.function.startsWith(Nt))return e.function.slice(Nt.length);const t=e.args[0];return typeof t=="string"?he(t):S(t)?re(t):(r=e.function.split(".").pop())!=null?r:e.function}const Ci="measureFactory.",vi="filterFactory.",qi=e=>e.function.startsWith(Ci),Ni=e=>e.function.startsWith(vi);function xi(e,t){var n;const r=(n=t==null?void 0:t.role)!=null?n:"filter";return typeof e=="string"?{name:he(e),type:"dimension"}:Zt(e)?{name:he(e.column),type:"dimension"}:er(e)?{name:re(e.column),type:"measure"}:S(e)?qi(e)?{name:re(e),type:"measure"}:Ni(e)?{name:xt(e),type:r}:(t==null?void 0:t.role)!==void 0?{name:xt(e),type:r}:{name:re(e),type:"measure"}:null}exports.EMPTY_EXPANDED_QUERY_MODEL=k.EMPTY_EXPANDED_QUERY_MODEL;exports.EMPTY_SIMPLE_QUERY_MODEL=k.EMPTY_SIMPLE_QUERY_MODEL;exports.isByIdDashboardCodeParams=k.isByIdDashboardCodeParams;exports.isByIdWidgetCodeParams=k.isByIdWidgetCodeParams;exports.isClientSideDashboardCodeParams=k.isClientSideDashboardCodeParams;exports.isClientSideWidgetCodeParams=k.isClientSideWidgetCodeParams;exports.CustomSuperJSON=hn;exports.getQueryElementSummary=xi;exports.translateChartFromJSON=Ar;exports.translateChartToJSON=Sr;exports.translateDashboardFromJSON=Si;exports.translateDashboardToJSON=$i;exports.translatePivotTableFromJSON=$r;exports.translatePivotTableToJSON=Dr;exports.translateQueryFromJSON=Js;exports.translateQueryToJSON=Ks;exports.translateQueryToJaql=Oi;exports.translateWidgetFromJSON=Or;exports.translateWidgetToJSON=Cr;