@panoboard/core 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cache/cache.d.ts +11 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +42 -0
- package/dist/cache/cache.js.map +1 -0
- package/dist/cache/client.d.ts +9 -0
- package/dist/cache/client.d.ts.map +1 -0
- package/dist/cache/client.js +63 -0
- package/dist/cache/client.js.map +1 -0
- package/dist/cache/index.d.ts +4 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +17 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/keys.d.ts +2 -0
- package/dist/cache/keys.d.ts.map +1 -0
- package/dist/cache/keys.js +26 -0
- package/dist/cache/keys.js.map +1 -0
- package/dist/components/DashboardCard.d.ts +15 -0
- package/dist/components/DashboardCard.d.ts.map +1 -0
- package/dist/components/DashboardCard.js +80 -0
- package/dist/components/DashboardCard.js.map +1 -0
- package/dist/components/DashboardShell.d.ts +11 -0
- package/dist/components/DashboardShell.d.ts.map +1 -0
- package/dist/components/DashboardShell.js +115 -0
- package/dist/components/DashboardShell.js.map +1 -0
- package/dist/components/EmptyState.d.ts +6 -0
- package/dist/components/EmptyState.d.ts.map +1 -0
- package/dist/components/EmptyState.js +29 -0
- package/dist/components/EmptyState.js.map +1 -0
- package/dist/components/ErrorPage.d.ts +14 -0
- package/dist/components/ErrorPage.d.ts.map +1 -0
- package/dist/components/ErrorPage.js +132 -0
- package/dist/components/ErrorPage.js.map +1 -0
- package/dist/components/FilterBar.d.ts +8 -0
- package/dist/components/FilterBar.d.ts.map +1 -0
- package/dist/components/FilterBar.js +70 -0
- package/dist/components/FilterBar.js.map +1 -0
- package/dist/components/PanelGrid.d.ts +9 -0
- package/dist/components/PanelGrid.d.ts.map +1 -0
- package/dist/components/PanelGrid.js +26 -0
- package/dist/components/PanelGrid.js.map +1 -0
- package/dist/components/PanelWrapper.d.ts +8 -0
- package/dist/components/PanelWrapper.d.ts.map +1 -0
- package/dist/components/PanelWrapper.js +154 -0
- package/dist/components/PanelWrapper.js.map +1 -0
- package/dist/components/filters/BooleanFilter.d.ts +8 -0
- package/dist/components/filters/BooleanFilter.d.ts.map +1 -0
- package/dist/components/filters/BooleanFilter.js +36 -0
- package/dist/components/filters/BooleanFilter.js.map +1 -0
- package/dist/components/filters/CalendarGrid.d.ts +8 -0
- package/dist/components/filters/CalendarGrid.d.ts.map +1 -0
- package/dist/components/filters/CalendarGrid.js +159 -0
- package/dist/components/filters/CalendarGrid.js.map +1 -0
- package/dist/components/filters/DateRangeFilter.d.ts +10 -0
- package/dist/components/filters/DateRangeFilter.d.ts.map +1 -0
- package/dist/components/filters/DateRangeFilter.js +80 -0
- package/dist/components/filters/DateRangeFilter.js.map +1 -0
- package/dist/components/filters/FilterChips.d.ts +8 -0
- package/dist/components/filters/FilterChips.d.ts.map +1 -0
- package/dist/components/filters/FilterChips.js +94 -0
- package/dist/components/filters/FilterChips.js.map +1 -0
- package/dist/components/filters/MultiSelectFilter.d.ts +17 -0
- package/dist/components/filters/MultiSelectFilter.d.ts.map +1 -0
- package/dist/components/filters/MultiSelectFilter.js +80 -0
- package/dist/components/filters/MultiSelectFilter.js.map +1 -0
- package/dist/components/filters/NumberFilter.d.ts +10 -0
- package/dist/components/filters/NumberFilter.d.ts.map +1 -0
- package/dist/components/filters/NumberFilter.js +47 -0
- package/dist/components/filters/NumberFilter.js.map +1 -0
- package/dist/components/filters/SelectFilter.d.ts +16 -0
- package/dist/components/filters/SelectFilter.d.ts.map +1 -0
- package/dist/components/filters/SelectFilter.js +71 -0
- package/dist/components/filters/SelectFilter.js.map +1 -0
- package/dist/components/filters/TextFilter.d.ts +8 -0
- package/dist/components/filters/TextFilter.d.ts.map +1 -0
- package/dist/components/filters/TextFilter.js +57 -0
- package/dist/components/filters/TextFilter.js.map +1 -0
- package/dist/components/filters/useDropdown.d.ts +7 -0
- package/dist/components/filters/useDropdown.d.ts.map +1 -0
- package/dist/components/filters/useDropdown.js +41 -0
- package/dist/components/filters/useDropdown.js.map +1 -0
- package/dist/components/filters/useFilterUpdate.d.ts +2 -0
- package/dist/components/filters/useFilterUpdate.d.ts.map +1 -0
- package/dist/components/filters/useFilterUpdate.js +30 -0
- package/dist/components/filters/useFilterUpdate.js.map +1 -0
- package/dist/components/index.d.ts +59 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +75 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/panels/AreaChart.d.ts +7 -0
- package/dist/components/panels/AreaChart.d.ts.map +1 -0
- package/dist/components/panels/AreaChart.js +88 -0
- package/dist/components/panels/AreaChart.js.map +1 -0
- package/dist/components/panels/BarChart.d.ts +7 -0
- package/dist/components/panels/BarChart.d.ts.map +1 -0
- package/dist/components/panels/BarChart.js +99 -0
- package/dist/components/panels/BarChart.js.map +1 -0
- package/dist/components/panels/BoxPlotChart.d.ts +7 -0
- package/dist/components/panels/BoxPlotChart.d.ts.map +1 -0
- package/dist/components/panels/BoxPlotChart.js +41 -0
- package/dist/components/panels/BoxPlotChart.js.map +1 -0
- package/dist/components/panels/BulletChart.d.ts +7 -0
- package/dist/components/panels/BulletChart.d.ts.map +1 -0
- package/dist/components/panels/BulletChart.js +46 -0
- package/dist/components/panels/BulletChart.js.map +1 -0
- package/dist/components/panels/BumpChart.d.ts +7 -0
- package/dist/components/panels/BumpChart.d.ts.map +1 -0
- package/dist/components/panels/BumpChart.js +38 -0
- package/dist/components/panels/BumpChart.js.map +1 -0
- package/dist/components/panels/CalendarHeatmap.d.ts +7 -0
- package/dist/components/panels/CalendarHeatmap.d.ts.map +1 -0
- package/dist/components/panels/CalendarHeatmap.js +41 -0
- package/dist/components/panels/CalendarHeatmap.js.map +1 -0
- package/dist/components/panels/ChartTooltip.d.ts +48 -0
- package/dist/components/panels/ChartTooltip.d.ts.map +1 -0
- package/dist/components/panels/ChartTooltip.js +129 -0
- package/dist/components/panels/ChartTooltip.js.map +1 -0
- package/dist/components/panels/DonutChart.d.ts +7 -0
- package/dist/components/panels/DonutChart.d.ts.map +1 -0
- package/dist/components/panels/DonutChart.js +40 -0
- package/dist/components/panels/DonutChart.js.map +1 -0
- package/dist/components/panels/FunnelChart.d.ts +7 -0
- package/dist/components/panels/FunnelChart.d.ts.map +1 -0
- package/dist/components/panels/FunnelChart.js +32 -0
- package/dist/components/panels/FunnelChart.js.map +1 -0
- package/dist/components/panels/HeatmapChart.d.ts +7 -0
- package/dist/components/panels/HeatmapChart.d.ts.map +1 -0
- package/dist/components/panels/HeatmapChart.js +41 -0
- package/dist/components/panels/HeatmapChart.js.map +1 -0
- package/dist/components/panels/IframePanel.d.ts +6 -0
- package/dist/components/panels/IframePanel.d.ts.map +1 -0
- package/dist/components/panels/IframePanel.js +5 -0
- package/dist/components/panels/IframePanel.js.map +1 -0
- package/dist/components/panels/ImagePanel.d.ts +7 -0
- package/dist/components/panels/ImagePanel.d.ts.map +1 -0
- package/dist/components/panels/ImagePanel.js +9 -0
- package/dist/components/panels/ImagePanel.js.map +1 -0
- package/dist/components/panels/LineChart.d.ts +7 -0
- package/dist/components/panels/LineChart.d.ts.map +1 -0
- package/dist/components/panels/LineChart.js +87 -0
- package/dist/components/panels/LineChart.js.map +1 -0
- package/dist/components/panels/ListPanel.d.ts +7 -0
- package/dist/components/panels/ListPanel.d.ts.map +1 -0
- package/dist/components/panels/ListPanel.js +24 -0
- package/dist/components/panels/ListPanel.js.map +1 -0
- package/dist/components/panels/MarkdownPanel.d.ts +7 -0
- package/dist/components/panels/MarkdownPanel.d.ts.map +1 -0
- package/dist/components/panels/MarkdownPanel.js +39 -0
- package/dist/components/panels/MarkdownPanel.js.map +1 -0
- package/dist/components/panels/MetricPanel.d.ts +7 -0
- package/dist/components/panels/MetricPanel.d.ts.map +1 -0
- package/dist/components/panels/MetricPanel.js +23 -0
- package/dist/components/panels/MetricPanel.js.map +1 -0
- package/dist/components/panels/PanelEmpty.d.ts +2 -0
- package/dist/components/panels/PanelEmpty.d.ts.map +1 -0
- package/dist/components/panels/PanelEmpty.js +27 -0
- package/dist/components/panels/PanelEmpty.js.map +1 -0
- package/dist/components/panels/PanelError.d.ts +7 -0
- package/dist/components/panels/PanelError.d.ts.map +1 -0
- package/dist/components/panels/PanelError.js +21 -0
- package/dist/components/panels/PanelError.js.map +1 -0
- package/dist/components/panels/PanelSkeleton.d.ts +6 -0
- package/dist/components/panels/PanelSkeleton.d.ts.map +1 -0
- package/dist/components/panels/PanelSkeleton.js +24 -0
- package/dist/components/panels/PanelSkeleton.js.map +1 -0
- package/dist/components/panels/PieChart.d.ts +7 -0
- package/dist/components/panels/PieChart.d.ts.map +1 -0
- package/dist/components/panels/PieChart.js +40 -0
- package/dist/components/panels/PieChart.js.map +1 -0
- package/dist/components/panels/RadarChart.d.ts +7 -0
- package/dist/components/panels/RadarChart.d.ts.map +1 -0
- package/dist/components/panels/RadarChart.js +50 -0
- package/dist/components/panels/RadarChart.js.map +1 -0
- package/dist/components/panels/RadialBarChart.d.ts +7 -0
- package/dist/components/panels/RadialBarChart.d.ts.map +1 -0
- package/dist/components/panels/RadialBarChart.js +49 -0
- package/dist/components/panels/RadialBarChart.js.map +1 -0
- package/dist/components/panels/SankeyChart.d.ts +7 -0
- package/dist/components/panels/SankeyChart.d.ts.map +1 -0
- package/dist/components/panels/SankeyChart.js +39 -0
- package/dist/components/panels/SankeyChart.js.map +1 -0
- package/dist/components/panels/ScatterChart.d.ts +7 -0
- package/dist/components/panels/ScatterChart.d.ts.map +1 -0
- package/dist/components/panels/ScatterChart.js +54 -0
- package/dist/components/panels/ScatterChart.js.map +1 -0
- package/dist/components/panels/StatPanel.d.ts +8 -0
- package/dist/components/panels/StatPanel.d.ts.map +1 -0
- package/dist/components/panels/StatPanel.js +40 -0
- package/dist/components/panels/StatPanel.js.map +1 -0
- package/dist/components/panels/StreamChart.d.ts +7 -0
- package/dist/components/panels/StreamChart.d.ts.map +1 -0
- package/dist/components/panels/StreamChart.js +54 -0
- package/dist/components/panels/StreamChart.js.map +1 -0
- package/dist/components/panels/SunburstChart.d.ts +7 -0
- package/dist/components/panels/SunburstChart.d.ts.map +1 -0
- package/dist/components/panels/SunburstChart.js +60 -0
- package/dist/components/panels/SunburstChart.js.map +1 -0
- package/dist/components/panels/TablePanel.d.ts +7 -0
- package/dist/components/panels/TablePanel.d.ts.map +1 -0
- package/dist/components/panels/TablePanel.js +79 -0
- package/dist/components/panels/TablePanel.js.map +1 -0
- package/dist/components/panels/TreemapChart.d.ts +7 -0
- package/dist/components/panels/TreemapChart.d.ts.map +1 -0
- package/dist/components/panels/TreemapChart.js +59 -0
- package/dist/components/panels/TreemapChart.js.map +1 -0
- package/dist/components/panels/VideoPanel.d.ts +15 -0
- package/dist/components/panels/VideoPanel.d.ts.map +1 -0
- package/dist/components/panels/VideoPanel.js +25 -0
- package/dist/components/panels/VideoPanel.js.map +1 -0
- package/dist/components/panels/WaffleChart.d.ts +7 -0
- package/dist/components/panels/WaffleChart.d.ts.map +1 -0
- package/dist/components/panels/WaffleChart.js +46 -0
- package/dist/components/panels/WaffleChart.js.map +1 -0
- package/dist/components/panels/index.d.ts +3 -0
- package/dist/components/panels/index.d.ts.map +1 -0
- package/dist/components/panels/index.js +60 -0
- package/dist/components/panels/index.js.map +1 -0
- package/dist/components/panels/nivo-theme.d.ts +95 -0
- package/dist/components/panels/nivo-theme.d.ts.map +1 -0
- package/dist/components/panels/nivo-theme.js +140 -0
- package/dist/components/panels/nivo-theme.js.map +1 -0
- package/dist/components/panels/semantic-colors.d.ts +7 -0
- package/dist/components/panels/semantic-colors.d.ts.map +1 -0
- package/dist/components/panels/semantic-colors.js +100 -0
- package/dist/components/panels/semantic-colors.js.map +1 -0
- package/dist/components/ui/Button.d.ts +9 -0
- package/dist/components/ui/Button.d.ts.map +1 -0
- package/dist/components/ui/Button.js +40 -0
- package/dist/components/ui/Button.js.map +1 -0
- package/dist/components/ui/Tabs.d.ts +11 -0
- package/dist/components/ui/Tabs.d.ts.map +1 -0
- package/dist/components/ui/Tabs.js +28 -0
- package/dist/components/ui/Tabs.js.map +1 -0
- package/dist/connectors/bigquery.d.ts +26 -0
- package/dist/connectors/bigquery.d.ts.map +1 -0
- package/dist/connectors/bigquery.js +113 -0
- package/dist/connectors/bigquery.js.map +1 -0
- package/dist/connectors/index.d.ts +17 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +23 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/params.d.ts +15 -0
- package/dist/connectors/params.d.ts.map +1 -0
- package/dist/connectors/params.js +46 -0
- package/dist/connectors/params.js.map +1 -0
- package/dist/connectors/postgres.d.ts +29 -0
- package/dist/connectors/postgres.d.ts.map +1 -0
- package/dist/connectors/postgres.js +130 -0
- package/dist/connectors/postgres.js.map +1 -0
- package/dist/connectors/redshift-data.d.ts +25 -0
- package/dist/connectors/redshift-data.d.ts.map +1 -0
- package/dist/connectors/redshift-data.js +237 -0
- package/dist/connectors/redshift-data.js.map +1 -0
- package/dist/connectors/redshift.d.ts +29 -0
- package/dist/connectors/redshift.d.ts.map +1 -0
- package/dist/connectors/redshift.js +138 -0
- package/dist/connectors/redshift.js.map +1 -0
- package/dist/connectors/registry.d.ts +7 -0
- package/dist/connectors/registry.d.ts.map +1 -0
- package/dist/connectors/registry.js +30 -0
- package/dist/connectors/registry.js.map +1 -0
- package/dist/connectors/snowflake.d.ts +37 -0
- package/dist/connectors/snowflake.d.ts.map +1 -0
- package/dist/connectors/snowflake.js +181 -0
- package/dist/connectors/snowflake.js.map +1 -0
- package/dist/connectors/types.d.ts +41 -0
- package/dist/connectors/types.d.ts.map +1 -0
- package/dist/connectors/types.js +15 -0
- package/dist/connectors/types.js.map +1 -0
- package/dist/connectors/url-parsers.d.ts +13 -0
- package/dist/connectors/url-parsers.d.ts.map +1 -0
- package/dist/connectors/url-parsers.js +95 -0
- package/dist/connectors/url-parsers.js.map +1 -0
- package/dist/connectors/url.d.ts +36 -0
- package/dist/connectors/url.d.ts.map +1 -0
- package/dist/connectors/url.js +139 -0
- package/dist/connectors/url.js.map +1 -0
- package/dist/filters/cascade.d.ts +13 -0
- package/dist/filters/cascade.d.ts.map +1 -0
- package/dist/filters/cascade.js +32 -0
- package/dist/filters/cascade.js.map +1 -0
- package/dist/filters/daterange.d.ts +8 -0
- package/dist/filters/daterange.d.ts.map +1 -0
- package/dist/filters/daterange.js +119 -0
- package/dist/filters/daterange.js.map +1 -0
- package/dist/filters/index.d.ts +7 -0
- package/dist/filters/index.d.ts.map +1 -0
- package/dist/filters/index.js +18 -0
- package/dist/filters/index.js.map +1 -0
- package/dist/filters/resolver.d.ts +3 -0
- package/dist/filters/resolver.d.ts.map +1 -0
- package/dist/filters/resolver.js +122 -0
- package/dist/filters/resolver.js.map +1 -0
- package/dist/filters/validation.d.ts +17 -0
- package/dist/filters/validation.d.ts.map +1 -0
- package/dist/filters/validation.js +84 -0
- package/dist/filters/validation.js.map +1 -0
- package/dist/formats.d.ts +4 -0
- package/dist/formats.d.ts.map +1 -0
- package/dist/formats.js +127 -0
- package/dist/formats.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/auth-provider.d.ts +22 -0
- package/dist/interfaces/auth-provider.d.ts.map +1 -0
- package/dist/interfaces/auth-provider.js +15 -0
- package/dist/interfaces/auth-provider.js.map +1 -0
- package/dist/interfaces/dashboard-store.d.ts +17 -0
- package/dist/interfaces/dashboard-store.d.ts.map +1 -0
- package/dist/interfaces/dashboard-store.js +15 -0
- package/dist/interfaces/dashboard-store.js.map +1 -0
- package/dist/interfaces/datasource-store.d.ts +6 -0
- package/dist/interfaces/datasource-store.d.ts.map +1 -0
- package/dist/interfaces/datasource-store.js +15 -0
- package/dist/interfaces/datasource-store.js.map +1 -0
- package/dist/interfaces/index.d.ts +4 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +15 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/locale/context.d.ts +6 -0
- package/dist/locale/context.d.ts.map +1 -0
- package/dist/locale/context.js +23 -0
- package/dist/locale/context.js.map +1 -0
- package/dist/locale/index.d.ts +2 -0
- package/dist/locale/index.d.ts.map +1 -0
- package/dist/locale/index.js +15 -0
- package/dist/locale/index.js.map +1 -0
- package/dist/query/array-expansion.d.ts +5 -0
- package/dist/query/array-expansion.d.ts.map +1 -0
- package/dist/query/array-expansion.js +39 -0
- package/dist/query/array-expansion.js.map +1 -0
- package/dist/query/index.d.ts +8 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +20 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/pipeline.d.ts +27 -0
- package/dist/query/pipeline.d.ts.map +1 -0
- package/dist/query/pipeline.js +49 -0
- package/dist/query/pipeline.js.map +1 -0
- package/dist/query/strategy/http.d.ts +7 -0
- package/dist/query/strategy/http.d.ts.map +1 -0
- package/dist/query/strategy/http.js +26 -0
- package/dist/query/strategy/http.js.map +1 -0
- package/dist/query/strategy/index.d.ts +4 -0
- package/dist/query/strategy/index.d.ts.map +1 -0
- package/dist/query/strategy/index.js +32 -0
- package/dist/query/strategy/index.js.map +1 -0
- package/dist/query/strategy/sql.d.ts +7 -0
- package/dist/query/strategy/sql.d.ts.map +1 -0
- package/dist/query/strategy/sql.js +40 -0
- package/dist/query/strategy/sql.js.map +1 -0
- package/dist/query/strategy/types.d.ts +6 -0
- package/dist/query/strategy/types.d.ts.map +1 -0
- package/dist/query/strategy/types.js +15 -0
- package/dist/query/strategy/types.js.map +1 -0
- package/dist/query/template.d.ts +7 -0
- package/dist/query/template.d.ts.map +1 -0
- package/dist/query/template.js +36 -0
- package/dist/query/template.js.map +1 -0
- package/dist/schemas/config.d.ts +74 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +129 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/dashboard.d.ts +716 -0
- package/dist/schemas/dashboard.d.ts.map +1 -0
- package/dist/schemas/dashboard.js +314 -0
- package/dist/schemas/dashboard.js.map +1 -0
- package/dist/schemas/datasource.d.ts +252 -0
- package/dist/schemas/datasource.d.ts.map +1 -0
- package/dist/schemas/datasource.js +186 -0
- package/dist/schemas/datasource.js.map +1 -0
- package/dist/schemas/index.d.ts +5 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +18 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/theme.d.ts +36 -0
- package/dist/schemas/theme.d.ts.map +1 -0
- package/dist/schemas/theme.js +48 -0
- package/dist/schemas/theme.js.map +1 -0
- package/dist/startup/index.d.ts +3 -0
- package/dist/startup/index.d.ts.map +1 -0
- package/dist/startup/index.js +15 -0
- package/dist/startup/index.js.map +1 -0
- package/dist/startup/sql-lint.d.ts +13 -0
- package/dist/startup/sql-lint.d.ts.map +1 -0
- package/dist/startup/sql-lint.js +86 -0
- package/dist/startup/sql-lint.js.map +1 -0
- package/dist/theme/builtin.d.ts +5 -0
- package/dist/theme/builtin.d.ts.map +1 -0
- package/dist/theme/builtin.js +102 -0
- package/dist/theme/builtin.js.map +1 -0
- package/dist/theme/context.d.ts +7 -0
- package/dist/theme/context.d.ts.map +1 -0
- package/dist/theme/context.js +26 -0
- package/dist/theme/context.js.map +1 -0
- package/dist/theme/index.d.ts +3 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +16 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/loader-export.d.ts +2 -0
- package/dist/theme/loader-export.d.ts.map +1 -0
- package/dist/theme/loader-export.js +15 -0
- package/dist/theme/loader-export.js.map +1 -0
- package/dist/theme/loader.d.ts +11 -0
- package/dist/theme/loader.d.ts.map +1 -0
- package/dist/theme/loader.js +60 -0
- package/dist/theme/loader.js.map +1 -0
- package/package.json +148 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { TZDate } from "@date-fns/tz";
|
|
15
|
+
import { startOfDay, endOfDay, subDays, startOfWeek, endOfWeek, startOfMonth, endOfMonth, startOfQuarter, endOfQuarter, startOfYear, endOfYear, subWeeks, subMonths, subQuarters, subYears, differenceInMilliseconds, } from "date-fns";
|
|
16
|
+
export function resolveDateRange(preset, timezone = "UTC", referenceDate) {
|
|
17
|
+
// Use TZDate for timezone-aware "now"
|
|
18
|
+
const now = referenceDate
|
|
19
|
+
? new TZDate(referenceDate, timezone)
|
|
20
|
+
: new TZDate(new Date(), timezone);
|
|
21
|
+
let start;
|
|
22
|
+
let end;
|
|
23
|
+
// Check for custom range first: "2025-01-01,2025-03-31"
|
|
24
|
+
if (preset.includes(",")) {
|
|
25
|
+
const [startStr, endStr] = preset.split(",");
|
|
26
|
+
start = startOfDay(new TZDate(new Date(startStr), timezone));
|
|
27
|
+
end = endOfDay(new TZDate(new Date(endStr), timezone));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Resolve preset
|
|
31
|
+
const today = startOfDay(now);
|
|
32
|
+
const todayEnd = endOfDay(now);
|
|
33
|
+
switch (preset) {
|
|
34
|
+
case "today":
|
|
35
|
+
start = today;
|
|
36
|
+
end = todayEnd;
|
|
37
|
+
break;
|
|
38
|
+
case "yesterday":
|
|
39
|
+
start = startOfDay(subDays(now, 1));
|
|
40
|
+
end = endOfDay(subDays(now, 1));
|
|
41
|
+
break;
|
|
42
|
+
case "last_7d":
|
|
43
|
+
start = startOfDay(subDays(now, 7));
|
|
44
|
+
end = todayEnd;
|
|
45
|
+
break;
|
|
46
|
+
case "last_14d":
|
|
47
|
+
start = startOfDay(subDays(now, 14));
|
|
48
|
+
end = todayEnd;
|
|
49
|
+
break;
|
|
50
|
+
case "last_30d":
|
|
51
|
+
start = startOfDay(subDays(now, 30));
|
|
52
|
+
end = todayEnd;
|
|
53
|
+
break;
|
|
54
|
+
case "last_60d":
|
|
55
|
+
start = startOfDay(subDays(now, 60));
|
|
56
|
+
end = todayEnd;
|
|
57
|
+
break;
|
|
58
|
+
case "last_90d":
|
|
59
|
+
start = startOfDay(subDays(now, 90));
|
|
60
|
+
end = todayEnd;
|
|
61
|
+
break;
|
|
62
|
+
case "last_180d":
|
|
63
|
+
start = startOfDay(subDays(now, 180));
|
|
64
|
+
end = todayEnd;
|
|
65
|
+
break;
|
|
66
|
+
case "last_365d":
|
|
67
|
+
start = startOfDay(subDays(now, 365));
|
|
68
|
+
end = todayEnd;
|
|
69
|
+
break;
|
|
70
|
+
case "this_week":
|
|
71
|
+
start = startOfWeek(now, { weekStartsOn: 1 });
|
|
72
|
+
end = todayEnd;
|
|
73
|
+
break;
|
|
74
|
+
case "this_month":
|
|
75
|
+
start = startOfMonth(now);
|
|
76
|
+
end = todayEnd;
|
|
77
|
+
break;
|
|
78
|
+
case "this_quarter":
|
|
79
|
+
start = startOfQuarter(now);
|
|
80
|
+
end = todayEnd;
|
|
81
|
+
break;
|
|
82
|
+
case "this_year":
|
|
83
|
+
start = startOfYear(now);
|
|
84
|
+
end = todayEnd;
|
|
85
|
+
break;
|
|
86
|
+
case "last_week":
|
|
87
|
+
start = startOfWeek(subWeeks(now, 1), { weekStartsOn: 1 });
|
|
88
|
+
end = endOfWeek(subWeeks(now, 1), { weekStartsOn: 1 });
|
|
89
|
+
break;
|
|
90
|
+
case "last_month":
|
|
91
|
+
start = startOfMonth(subMonths(now, 1));
|
|
92
|
+
end = endOfMonth(subMonths(now, 1));
|
|
93
|
+
break;
|
|
94
|
+
case "last_quarter":
|
|
95
|
+
start = startOfQuarter(subQuarters(now, 1));
|
|
96
|
+
end = endOfQuarter(subQuarters(now, 1));
|
|
97
|
+
break;
|
|
98
|
+
case "last_year":
|
|
99
|
+
start = startOfYear(subYears(now, 1));
|
|
100
|
+
end = endOfYear(subYears(now, 1));
|
|
101
|
+
break;
|
|
102
|
+
default:
|
|
103
|
+
throw new Error(`Unknown date range preset: ${preset}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Calculate prior period (same duration, immediately before)
|
|
107
|
+
const durationMs = differenceInMilliseconds(end, start);
|
|
108
|
+
const priorEnd = new Date(start.getTime() - 1); // 1ms before start
|
|
109
|
+
const priorStart = new Date(priorEnd.getTime() - durationMs);
|
|
110
|
+
// Convert TZDate → plain Date for standard ISO output with 'Z' suffix
|
|
111
|
+
const toUTC = (d) => new Date(d.getTime()).toISOString();
|
|
112
|
+
return {
|
|
113
|
+
start: toUTC(start),
|
|
114
|
+
end: toUTC(end),
|
|
115
|
+
priorStart: toUTC(priorStart),
|
|
116
|
+
priorEnd: toUTC(priorEnd),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=daterange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daterange.js","sourceRoot":"","sources":["../../src/filters/daterange.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { resolveFilters } from "./resolver";
|
|
2
|
+
export { resolveDateRange } from "./daterange";
|
|
3
|
+
export type { DateRange } from "./daterange";
|
|
4
|
+
export { validateParam, ParamValidationError } from "./validation";
|
|
5
|
+
export type { ParamSchema } from "./validation";
|
|
6
|
+
export { resolveCascadingParams } from "./cascade";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export { resolveFilters } from "./resolver";
|
|
15
|
+
export { resolveDateRange } from "./daterange";
|
|
16
|
+
export { validateParam, ParamValidationError } from "./validation";
|
|
17
|
+
export { resolveCascadingParams } from "./cascade";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/filters/resolver.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,wBAAgB,cAAc,CAC5B,YAAY,EAAE,eAAe,EAC7B,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiIzB"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { resolveDateRange } from "./daterange";
|
|
15
|
+
import { validateParam } from "./validation";
|
|
16
|
+
export function resolveFilters(searchParams, filterDefs, timezone, ctx = {}) {
|
|
17
|
+
const resolved = {};
|
|
18
|
+
for (const filter of filterDefs) {
|
|
19
|
+
// Hidden filters: resolve from auth context (source: "ctx.<claim_name>")
|
|
20
|
+
// or fall back to filter.default when no source is defined.
|
|
21
|
+
if ("hidden" in filter && filter.hidden) {
|
|
22
|
+
const source = filter.source ?? "";
|
|
23
|
+
if (source.startsWith("ctx.")) {
|
|
24
|
+
const claimName = source.slice(4);
|
|
25
|
+
resolved[filter.id] = ctx[claimName] ?? null;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// No source (or non-ctx source): use filter default
|
|
29
|
+
resolved[filter.id] = filter.default ?? null;
|
|
30
|
+
}
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const rawValue = searchParams.get(filter.id);
|
|
34
|
+
switch (filter.type) {
|
|
35
|
+
case "daterange": {
|
|
36
|
+
const preset = rawValue ?? filter.default ?? "last_30d";
|
|
37
|
+
const range = resolveDateRange(preset, timezone);
|
|
38
|
+
if (filter.outputs) {
|
|
39
|
+
if (filter.outputs.start)
|
|
40
|
+
resolved[filter.outputs.start] = range.start;
|
|
41
|
+
if (filter.outputs.end)
|
|
42
|
+
resolved[filter.outputs.end] = range.end;
|
|
43
|
+
if (filter.outputs.prior_start)
|
|
44
|
+
resolved[filter.outputs.prior_start] = range.priorStart;
|
|
45
|
+
if (filter.outputs.prior_end)
|
|
46
|
+
resolved[filter.outputs.prior_end] = range.priorEnd;
|
|
47
|
+
}
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case "select": {
|
|
51
|
+
let value = rawValue ?? filter.default;
|
|
52
|
+
// If static options are defined and the URL value doesn't match any
|
|
53
|
+
// option, fall back to the filter's default.
|
|
54
|
+
if (rawValue !== null &&
|
|
55
|
+
"options" in filter &&
|
|
56
|
+
Array.isArray(filter.options) &&
|
|
57
|
+
filter.options.length > 0) {
|
|
58
|
+
const validValues = filter.options.map((o) => o.value);
|
|
59
|
+
if (!validValues.includes(rawValue)) {
|
|
60
|
+
value = filter.default ?? undefined;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (filter.include_all &&
|
|
64
|
+
(value === "__all__" || value === null || value === undefined)) {
|
|
65
|
+
resolved[filter.id] = null;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
resolved[filter.id] = value ?? null;
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case "string": // hidden string — already handled above by `hidden` check, but type: "string" without hidden falls through here
|
|
73
|
+
case "text": {
|
|
74
|
+
const value = rawValue ?? null;
|
|
75
|
+
if (value !== null) {
|
|
76
|
+
const { type: _t1, ...rest } = filter;
|
|
77
|
+
validateParam(value, { ...rest, type: "string" });
|
|
78
|
+
}
|
|
79
|
+
resolved[filter.id] = value;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case "integer": {
|
|
83
|
+
const value = rawValue !== null ? parseInt(rawValue, 10) : (filter.default ?? null);
|
|
84
|
+
if (value !== null) {
|
|
85
|
+
const { type: _t2, ...rest } = filter;
|
|
86
|
+
validateParam(value, { ...rest, type: "integer" });
|
|
87
|
+
}
|
|
88
|
+
resolved[filter.id] = value;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case "number": {
|
|
92
|
+
const value = rawValue !== null ? parseFloat(rawValue) : (filter.default ?? null);
|
|
93
|
+
if (value !== null) {
|
|
94
|
+
const { type: _t3, ...rest } = filter;
|
|
95
|
+
validateParam(value, { ...rest, type: "number" });
|
|
96
|
+
}
|
|
97
|
+
resolved[filter.id] = value;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case "boolean": {
|
|
101
|
+
const value = rawValue !== null ? rawValue : String(filter.default ?? false);
|
|
102
|
+
resolved[filter.id] = value === "true";
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case "array": {
|
|
106
|
+
// Parse comma-separated URL value into an array of strings
|
|
107
|
+
if (rawValue === null || rawValue === "") {
|
|
108
|
+
resolved[filter.id] = [];
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
resolved[filter.id] = rawValue
|
|
112
|
+
.split(",")
|
|
113
|
+
.map((v) => v.trim())
|
|
114
|
+
.filter(Boolean);
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return resolved;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/filters/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class ParamValidationError extends Error {
|
|
2
|
+
param: string;
|
|
3
|
+
reason: string;
|
|
4
|
+
constructor(param: string, reason: string);
|
|
5
|
+
}
|
|
6
|
+
export interface ParamSchema {
|
|
7
|
+
type: "string" | "integer" | "number" | "boolean";
|
|
8
|
+
minLength?: number;
|
|
9
|
+
maxLength?: number;
|
|
10
|
+
pattern?: string;
|
|
11
|
+
minimum?: number;
|
|
12
|
+
maximum?: number;
|
|
13
|
+
decimals?: number;
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export declare function validateParam(value: unknown, schema: ParamSchema): unknown;
|
|
17
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/filters/validation.ts"],"names":[],"mappings":"AAcA,qBAAa,oBAAqB,SAAQ,KAAK;IAEpC,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;gBADd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;CAKxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAElD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAgG1E"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export class ParamValidationError extends Error {
|
|
15
|
+
param;
|
|
16
|
+
reason;
|
|
17
|
+
constructor(param, reason) {
|
|
18
|
+
super(`Parameter '${param}' validation failed: ${reason}`);
|
|
19
|
+
this.param = param;
|
|
20
|
+
this.reason = reason;
|
|
21
|
+
this.name = "ParamValidationError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function validateParam(value, schema) {
|
|
25
|
+
switch (schema.type) {
|
|
26
|
+
case "string": {
|
|
27
|
+
if (typeof value !== "string") {
|
|
28
|
+
throw new ParamValidationError(schema.type, `expected string, got ${typeof value}`);
|
|
29
|
+
}
|
|
30
|
+
if (schema.minLength !== undefined && value.length < schema.minLength) {
|
|
31
|
+
throw new ParamValidationError(schema.type, `value length ${value.length} is less than minLength ${schema.minLength}`);
|
|
32
|
+
}
|
|
33
|
+
if (schema.maxLength !== undefined && value.length > schema.maxLength) {
|
|
34
|
+
throw new ParamValidationError(schema.type, `value length ${value.length} exceeds maxLength ${schema.maxLength}`);
|
|
35
|
+
}
|
|
36
|
+
if (schema.pattern !== undefined &&
|
|
37
|
+
!new RegExp(schema.pattern).test(value)) {
|
|
38
|
+
throw new ParamValidationError(schema.type, `value does not match pattern ${schema.pattern}`);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
case "integer": {
|
|
43
|
+
const intVal = parseInt(String(value), 10);
|
|
44
|
+
if (isNaN(intVal)) {
|
|
45
|
+
throw new ParamValidationError(schema.type, `value '${value}' is not a valid integer`);
|
|
46
|
+
}
|
|
47
|
+
if (schema.minimum !== undefined && intVal < schema.minimum) {
|
|
48
|
+
throw new ParamValidationError(schema.type, `value ${intVal} is less than minimum ${schema.minimum}`);
|
|
49
|
+
}
|
|
50
|
+
if (schema.maximum !== undefined && intVal > schema.maximum) {
|
|
51
|
+
throw new ParamValidationError(schema.type, `value ${intVal} exceeds maximum ${schema.maximum}`);
|
|
52
|
+
}
|
|
53
|
+
return intVal;
|
|
54
|
+
}
|
|
55
|
+
case "number": {
|
|
56
|
+
let numVal = parseFloat(String(value));
|
|
57
|
+
if (isNaN(numVal)) {
|
|
58
|
+
throw new ParamValidationError(schema.type, `value '${value}' is not a valid number`);
|
|
59
|
+
}
|
|
60
|
+
if (schema.decimals !== undefined) {
|
|
61
|
+
numVal = parseFloat(numVal.toFixed(schema.decimals));
|
|
62
|
+
}
|
|
63
|
+
if (schema.minimum !== undefined && numVal < schema.minimum) {
|
|
64
|
+
throw new ParamValidationError(schema.type, `value ${numVal} is less than minimum ${schema.minimum}`);
|
|
65
|
+
}
|
|
66
|
+
if (schema.maximum !== undefined && numVal > schema.maximum) {
|
|
67
|
+
throw new ParamValidationError(schema.type, `value ${numVal} exceeds maximum ${schema.maximum}`);
|
|
68
|
+
}
|
|
69
|
+
return numVal;
|
|
70
|
+
}
|
|
71
|
+
case "boolean": {
|
|
72
|
+
if (value === "true" || value === true)
|
|
73
|
+
return true;
|
|
74
|
+
if (value === "false" || value === false)
|
|
75
|
+
return false;
|
|
76
|
+
throw new ParamValidationError(schema.type, `value '${value}' is not a valid boolean (expected 'true' or 'false')`);
|
|
77
|
+
}
|
|
78
|
+
default: {
|
|
79
|
+
// Unknown type — pass through
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/filters/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Abbreviated format for axis labels — e.g. $1.2M, 45K, 3.5% */
|
|
2
|
+
export declare function formatValueShort(value: unknown, format: string, _locale?: string): string;
|
|
3
|
+
export declare function formatValue(value: unknown, format: string, locale?: string): string;
|
|
4
|
+
//# sourceMappingURL=formats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"AAcA,iEAAiE;AACjE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,EACd,OAAO,SAAU,GAChB,MAAM,CAoCR;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,EACd,MAAM,SAAU,GACf,MAAM,CAiDR"}
|
package/dist/formats.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
/** Abbreviated format for axis labels — e.g. $1.2M, 45K, 3.5% */
|
|
15
|
+
export function formatValueShort(value, format, _locale = "en-US") {
|
|
16
|
+
if (value === null || value === undefined)
|
|
17
|
+
return "";
|
|
18
|
+
const num = typeof value === "number" ? value : parseFloat(String(value));
|
|
19
|
+
if (isNaN(num))
|
|
20
|
+
return String(value);
|
|
21
|
+
const abbrev = (n) => {
|
|
22
|
+
const abs = Math.abs(n);
|
|
23
|
+
if (abs >= 1_000_000_000)
|
|
24
|
+
return `${(n / 1_000_000_000).toFixed(1)}B`;
|
|
25
|
+
if (abs >= 1_000_000)
|
|
26
|
+
return `${(n / 1_000_000).toFixed(1)}M`;
|
|
27
|
+
if (abs >= 1_000)
|
|
28
|
+
return `${(n / 1_000).toFixed(0)}K`;
|
|
29
|
+
return n.toFixed(0);
|
|
30
|
+
};
|
|
31
|
+
switch (format) {
|
|
32
|
+
case "currency":
|
|
33
|
+
return `$${abbrev(num)}`;
|
|
34
|
+
case "percent":
|
|
35
|
+
return `${num.toFixed(1)}%`;
|
|
36
|
+
case "duration_ms":
|
|
37
|
+
if (num < 1000)
|
|
38
|
+
return `${Math.round(num)}ms`;
|
|
39
|
+
return `${(num / 1000).toFixed(1)}s`;
|
|
40
|
+
default:
|
|
41
|
+
if (format.startsWith("currency_")) {
|
|
42
|
+
const code = format.replace("currency_", "").toUpperCase();
|
|
43
|
+
const symbol = code === "USD"
|
|
44
|
+
? "$"
|
|
45
|
+
: code === "EUR"
|
|
46
|
+
? "€"
|
|
47
|
+
: code === "GBP"
|
|
48
|
+
? "£"
|
|
49
|
+
: `${code} `;
|
|
50
|
+
return `${symbol}${abbrev(num)}`;
|
|
51
|
+
}
|
|
52
|
+
return abbrev(num);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function formatValue(value, format, locale = "en-US") {
|
|
56
|
+
if (value === null || value === undefined)
|
|
57
|
+
return "—";
|
|
58
|
+
const num = typeof value === "number" ? value : parseFloat(String(value));
|
|
59
|
+
if (isNaN(num))
|
|
60
|
+
return String(value);
|
|
61
|
+
switch (format) {
|
|
62
|
+
case "number":
|
|
63
|
+
return new Intl.NumberFormat(locale, { maximumFractionDigits: 0 }).format(num);
|
|
64
|
+
case "decimal":
|
|
65
|
+
return new Intl.NumberFormat(locale, {
|
|
66
|
+
minimumFractionDigits: 2,
|
|
67
|
+
maximumFractionDigits: 2,
|
|
68
|
+
}).format(num);
|
|
69
|
+
case "percent":
|
|
70
|
+
return `${num}%`;
|
|
71
|
+
// Note: value is already a percentage (e.g., 42.3), not a fraction (0.423)
|
|
72
|
+
case "bytes":
|
|
73
|
+
return formatBytes(num);
|
|
74
|
+
case "duration_ms":
|
|
75
|
+
return formatDurationMs(num);
|
|
76
|
+
case "duration_s":
|
|
77
|
+
return formatDurationS(num);
|
|
78
|
+
case "currency":
|
|
79
|
+
return new Intl.NumberFormat(locale, {
|
|
80
|
+
style: "currency",
|
|
81
|
+
currency: "USD",
|
|
82
|
+
maximumFractionDigits: 0,
|
|
83
|
+
}).format(num);
|
|
84
|
+
default:
|
|
85
|
+
// Handle currency_xxx pattern (e.g. currency_eur, currency_gbp)
|
|
86
|
+
if (format.startsWith("currency_")) {
|
|
87
|
+
const code = format.replace("currency_", "").toUpperCase();
|
|
88
|
+
return new Intl.NumberFormat(locale, {
|
|
89
|
+
style: "currency",
|
|
90
|
+
currency: code,
|
|
91
|
+
maximumFractionDigits: 0,
|
|
92
|
+
}).format(num);
|
|
93
|
+
}
|
|
94
|
+
return String(value);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function formatBytes(bytes) {
|
|
98
|
+
if (bytes === 0)
|
|
99
|
+
return "0 B";
|
|
100
|
+
const units = ["B", "KB", "MB", "GB", "TB", "PB"];
|
|
101
|
+
const i = Math.floor(Math.log(bytes) / Math.log(1024));
|
|
102
|
+
const val = bytes / Math.pow(1024, i);
|
|
103
|
+
if (Number.isInteger(val) || val >= 10)
|
|
104
|
+
return `${Math.round(val)} ${units[i]}`;
|
|
105
|
+
return `${val.toFixed(1)} ${units[i]}`;
|
|
106
|
+
}
|
|
107
|
+
function formatDurationMs(ms) {
|
|
108
|
+
if (ms < 1000)
|
|
109
|
+
return `${Math.round(ms)}ms`;
|
|
110
|
+
if (ms < 60000)
|
|
111
|
+
return `${(ms / 1000).toFixed(2)}s`;
|
|
112
|
+
const mins = Math.floor(ms / 60000);
|
|
113
|
+
const secs = Math.round((ms % 60000) / 1000);
|
|
114
|
+
return `${mins}m ${secs}s`;
|
|
115
|
+
}
|
|
116
|
+
function formatDurationS(seconds) {
|
|
117
|
+
if (seconds < 60)
|
|
118
|
+
return `${Math.round(seconds)}s`;
|
|
119
|
+
const mins = Math.floor(seconds / 60);
|
|
120
|
+
const secs = Math.round(seconds % 60);
|
|
121
|
+
if (mins < 60)
|
|
122
|
+
return `${mins}m ${secs}s`;
|
|
123
|
+
const hours = Math.floor(mins / 60);
|
|
124
|
+
const remainMins = mins % 60;
|
|
125
|
+
return `${hours}h ${remainMins}m`;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const VERSION = "0.1.0";
|
|
2
|
+
export * from "./schemas";
|
|
3
|
+
export * from "./interfaces";
|
|
4
|
+
export * from "./connectors";
|
|
5
|
+
export * from "./query";
|
|
6
|
+
export * from "./cache";
|
|
7
|
+
export * from "./filters";
|
|
8
|
+
export * from "./components";
|
|
9
|
+
export * from "./theme";
|
|
10
|
+
export * from "./locale";
|
|
11
|
+
export { formatValue, formatValueShort } from "./formats";
|
|
12
|
+
export * from "./startup";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAG1D,cAAc,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copyright 2026 Mataki Labs LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Business Source License 1.1 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://github.com/panoboard/panoboard/blob/main/LICENSE
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export const VERSION = "0.1.0";
|
|
15
|
+
// Schemas & types
|
|
16
|
+
export * from "./schemas";
|
|
17
|
+
// Interfaces
|
|
18
|
+
export * from "./interfaces";
|
|
19
|
+
// Connectors
|
|
20
|
+
export * from "./connectors";
|
|
21
|
+
// Query engine
|
|
22
|
+
export * from "./query";
|
|
23
|
+
// Cache
|
|
24
|
+
export * from "./cache";
|
|
25
|
+
// Filters
|
|
26
|
+
export * from "./filters";
|
|
27
|
+
// Components
|
|
28
|
+
export * from "./components";
|
|
29
|
+
// Theme
|
|
30
|
+
export * from "./theme";
|
|
31
|
+
// Locale
|
|
32
|
+
export * from "./locale";
|
|
33
|
+
// Formatting
|
|
34
|
+
export { formatValue, formatValueShort } from "./formats";
|
|
35
|
+
// SQL lint
|
|
36
|
+
export * from "./startup";
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,kBAAkB;AAClB,cAAc,WAAW,CAAC;AAE1B,aAAa;AACb,cAAc,cAAc,CAAC;AAE7B,aAAa;AACb,cAAc,cAAc,CAAC;AAE7B,eAAe;AACf,cAAc,SAAS,CAAC;AAExB,QAAQ;AACR,cAAc,SAAS,CAAC;AAExB,UAAU;AACV,cAAc,WAAW,CAAC;AAE1B,aAAa;AACb,cAAc,cAAc,CAAC;AAE7B,QAAQ;AACR,cAAc,SAAS,CAAC;AAExB,SAAS;AACT,cAAc,UAAU,CAAC;AAEzB,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE1D,WAAW;AACX,cAAc,WAAW,CAAC"}
|