drizzle-cube 0.2.24 → 0.2.26

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 (60) hide show
  1. package/dist/adapters/compiler-C6JQHGrF.cjs +22 -0
  2. package/dist/adapters/{compiler-DkzdLcxq.js → compiler-Ddwn99Ja.js} +1419 -1287
  3. package/dist/adapters/express/index.cjs +1 -1
  4. package/dist/adapters/express/index.d.ts +6 -1
  5. package/dist/adapters/express/index.js +22 -20
  6. package/dist/adapters/fastify/index.cjs +1 -1
  7. package/dist/adapters/fastify/index.d.ts +6 -1
  8. package/dist/adapters/fastify/index.js +18 -16
  9. package/dist/adapters/hono/index.cjs +1 -1
  10. package/dist/adapters/hono/index.d.ts +6 -1
  11. package/dist/adapters/hono/index.js +87 -85
  12. package/dist/adapters/nextjs/index.cjs +1 -1
  13. package/dist/adapters/nextjs/index.d.ts +6 -1
  14. package/dist/adapters/nextjs/index.js +64 -63
  15. package/dist/adapters/utils.d.ts +18 -0
  16. package/dist/client/charts.js +2 -2
  17. package/dist/client/chunks/{charts-DboFPJFN.js → charts-BsXrHSCm.js} +32 -32
  18. package/dist/client/chunks/{charts-DboFPJFN.js.map → charts-BsXrHSCm.js.map} +1 -1
  19. package/dist/client/chunks/{charts--hFH-bsu.js → charts-BvLb1eub.js} +710 -703
  20. package/dist/client/chunks/charts-BvLb1eub.js.map +1 -0
  21. package/dist/client/chunks/components-BGWiuXqQ.js +15831 -0
  22. package/dist/client/chunks/components-BGWiuXqQ.js.map +1 -0
  23. package/dist/client/chunks/core-CX7kEAYO.js +6 -0
  24. package/dist/client/chunks/core-CX7kEAYO.js.map +1 -0
  25. package/dist/client/chunks/{index-yc7cf-yE.js → index-9x0R-Fme.js} +2 -2
  26. package/dist/client/chunks/{index-yc7cf-yE.js.map → index-9x0R-Fme.js.map} +1 -1
  27. package/dist/client/components/AnalysisBuilder/AnalysisQueryPanel.d.ts +3 -2
  28. package/dist/client/components/AnalysisBuilder/types.d.ts +63 -15
  29. package/dist/client/components/DashboardFilters/CompactFilterBar.d.ts +13 -0
  30. package/dist/client/components/DashboardFilters/CustomDateDropdown.d.ts +10 -0
  31. package/dist/client/components/DashboardFilters/DatePresetChips.d.ts +8 -0
  32. package/dist/client/components/DashboardFilters/FilterChip.d.ts +12 -0
  33. package/dist/client/components/DashboardFilters/FilterValuePopover.d.ts +11 -0
  34. package/dist/client/components/DashboardFilters/XTDDropdown.d.ts +10 -0
  35. package/dist/client/components/DashboardPortletCard.d.ts +12 -0
  36. package/dist/client/components/DebugModal.d.ts +7 -1
  37. package/dist/client/components/shared/utils.d.ts +34 -0
  38. package/dist/client/components.js +2 -2
  39. package/dist/client/hooks/useMultiCubeQuery.d.ts +36 -0
  40. package/dist/client/hooks.js +2 -2
  41. package/dist/client/icons.js +1 -1
  42. package/dist/client/index.d.ts +7 -1
  43. package/dist/client/index.js +70 -52
  44. package/dist/client/providers.js +1 -1
  45. package/dist/client/styles.css +1 -1
  46. package/dist/client/types.d.ts +32 -0
  47. package/dist/client/utils/multiQueryUtils.d.ts +86 -0
  48. package/dist/client/utils/multiQueryValidation.d.ts +69 -0
  49. package/dist/client/utils/shareUtils.d.ts +3 -3
  50. package/dist/client-bundle-stats.html +1 -1
  51. package/dist/server/index.cjs +17 -17
  52. package/dist/server/index.d.ts +326 -1
  53. package/dist/server/index.js +2429 -2148
  54. package/package.json +1 -1
  55. package/dist/adapters/compiler-BFqMax9M.cjs +0 -22
  56. package/dist/client/chunks/charts--hFH-bsu.js.map +0 -1
  57. package/dist/client/chunks/components-D7wTB56l.js +0 -14131
  58. package/dist/client/chunks/components-D7wTB56l.js.map +0 -1
  59. package/dist/client/chunks/core-PxWXpBbW.js +0 -6
  60. package/dist/client/chunks/core-PxWXpBbW.js.map +0 -1
@@ -0,0 +1,86 @@
1
+ import { CubeResultSet, CubeQuery, QueryMergeStrategy } from '../types';
2
+ /**
3
+ * Metadata fields injected into multi-query data
4
+ */
5
+ export interface MultiQueryMetadata {
6
+ __queryIndex: number;
7
+ __queryLabel: string;
8
+ }
9
+ /**
10
+ * Check if data contains multi-query metadata
11
+ */
12
+ export declare function isMultiQueryData(data: unknown[]): boolean;
13
+ /**
14
+ * Get unique query labels from multi-query data
15
+ */
16
+ export declare function getQueryLabels(data: unknown[]): string[];
17
+ /**
18
+ * Get query indices from multi-query data
19
+ */
20
+ export declare function getQueryIndices(data: unknown[]): number[];
21
+ /**
22
+ * Merge results using 'concat' strategy
23
+ * Appends all rows with __queryIndex and __queryLabel metadata
24
+ *
25
+ * @param resultSets - Array of CubeResultSet from each query
26
+ * @param queries - Original CubeQuery objects
27
+ * @param labels - Optional user-defined labels per query
28
+ * @returns Merged data array with query metadata
29
+ */
30
+ export declare function mergeResultsConcat(resultSets: CubeResultSet[], _queries: CubeQuery[], labels?: string[]): unknown[];
31
+ /**
32
+ * Merge results using 'merge' strategy
33
+ * Aligns data by common dimensions (composite key), combining measures from all queries
34
+ *
35
+ * Example:
36
+ * Query 1: [{ date: '2024-01', revenue: 100 }]
37
+ * Query 2: [{ date: '2024-01', cost: 50 }]
38
+ * Result: [{ date: '2024-01', revenue: 100, cost: 50 }]
39
+ *
40
+ * If multiple queries have the same measure, the first query's value is used.
41
+ *
42
+ * @param resultSets - Array of CubeResultSet from each query
43
+ * @param queries - Original CubeQuery objects
44
+ * @param mergeKeys - Dimension fields to align data on (composite key)
45
+ * @param _labels - Optional user-defined labels per query (unused, kept for API compatibility)
46
+ * @returns Merged data array with combined measures
47
+ */
48
+ export declare function mergeResultsByKey(resultSets: CubeResultSet[], queries: CubeQuery[], mergeKeys: string[], _labels?: string[]): unknown[];
49
+ /**
50
+ * Main entry point for merging query results
51
+ * Delegates to appropriate strategy implementation
52
+ *
53
+ * @param resultSets - Array of CubeResultSet from each query
54
+ * @param queries - Original CubeQuery objects
55
+ * @param strategy - Merge strategy ('concat' or 'merge')
56
+ * @param mergeKeys - Dimension fields to align on (required for 'merge' strategy)
57
+ * @param labels - Optional user-defined labels per query
58
+ * @returns Merged data array
59
+ */
60
+ export declare function mergeQueryResults(resultSets: CubeResultSet[], queries: CubeQuery[], strategy: QueryMergeStrategy, mergeKeys?: string[], labels?: string[]): unknown[];
61
+ /**
62
+ * Get combined fields from all queries
63
+ * Used for chart configuration to show all available measures/dimensions
64
+ *
65
+ * @param queries - Array of CubeQuery objects
66
+ * @param _labels - Optional user-defined labels per query (unused, kept for API compatibility)
67
+ * @returns Object containing combined measures, dimensions, and time dimensions
68
+ */
69
+ export declare function getCombinedFields(queries: CubeQuery[], _labels?: string[]): {
70
+ measures: string[];
71
+ dimensions: string[];
72
+ timeDimensions: string[];
73
+ };
74
+ /**
75
+ * Generate a default label for a query based on its measures
76
+ * Used when user doesn't provide custom labels
77
+ */
78
+ export declare function generateQueryLabel(query: CubeQuery, index: number): string;
79
+ /**
80
+ * Validate merge key exists in all queries
81
+ * Returns validation result with details
82
+ */
83
+ export declare function validateMergeKey(queries: CubeQuery[], mergeKey: string): {
84
+ isValid: boolean;
85
+ missingInQueries: number[];
86
+ };
@@ -0,0 +1,69 @@
1
+ import { CubeQuery } from '../types';
2
+ type TimeDimension = NonNullable<CubeQuery['timeDimensions']>[number];
3
+ /**
4
+ * Validation error for multi-query configuration
5
+ */
6
+ export interface MultiQueryValidationError {
7
+ type: 'missing_time_dimension' | 'granularity_mismatch' | 'missing_merge_key';
8
+ queryIndex: number;
9
+ message: string;
10
+ details?: {
11
+ field?: string;
12
+ expectedGranularity?: string;
13
+ actualGranularity?: string;
14
+ };
15
+ }
16
+ /**
17
+ * Validation warning for multi-query configuration
18
+ */
19
+ export interface MultiQueryValidationWarning {
20
+ type: 'measure_collision' | 'asymmetric_date_range';
21
+ queryIndices: number[];
22
+ message: string;
23
+ affectedMeasures?: string[];
24
+ }
25
+ /**
26
+ * Result of multi-query validation
27
+ */
28
+ export interface MultiQueryValidationResult {
29
+ isValid: boolean;
30
+ errors: MultiQueryValidationError[];
31
+ warnings: MultiQueryValidationWarning[];
32
+ }
33
+ /**
34
+ * Extract time dimension info from a query
35
+ */
36
+ export declare function extractTimeDimensions(query: CubeQuery): TimeDimension[];
37
+ /**
38
+ * Validate that all queries have matching time dimension granularities
39
+ * Only relevant for 'merge' strategy where data needs to align
40
+ */
41
+ export declare function validateTimeDimensionAlignment(queries: CubeQuery[]): MultiQueryValidationError[];
42
+ /**
43
+ * Validate that merge keys exist in all queries
44
+ */
45
+ export declare function validateMergeKeys(queries: CubeQuery[], mergeKeys: string[]): MultiQueryValidationError[];
46
+ /**
47
+ * Detect when the same measure appears in multiple queries
48
+ * This is a warning since the first value wins in merge mode
49
+ */
50
+ export declare function detectMeasureCollisions(queries: CubeQuery[]): MultiQueryValidationWarning[];
51
+ /**
52
+ * Check if queries have different date ranges
53
+ */
54
+ export declare function detectAsymmetricDateRanges(queries: CubeQuery[]): MultiQueryValidationWarning[];
55
+ /**
56
+ * Validate a multi-query configuration
57
+ * For 'merge' strategy: strict validation (errors block execution)
58
+ * For 'concat' strategy: only warnings
59
+ */
60
+ export declare function validateMultiQueryConfig(queries: CubeQuery[], mergeStrategy: 'concat' | 'merge', mergeKeys?: string[]): MultiQueryValidationResult;
61
+ /**
62
+ * Check if a multi-query configuration is valid for execution
63
+ */
64
+ export declare function isMultiQueryValid(queries: CubeQuery[]): boolean;
65
+ /**
66
+ * Get human-readable validation summary
67
+ */
68
+ export declare function getValidationSummary(result: MultiQueryValidationResult): string;
69
+ export {};
@@ -1,10 +1,10 @@
1
- import { CubeQuery, ChartType, ChartAxisConfig, ChartDisplayConfig } from '../types';
1
+ import { CubeQuery, ChartType, ChartAxisConfig, ChartDisplayConfig, MultiQueryConfig } from '../types';
2
2
  /**
3
3
  * State that can be shared via URL
4
- * Query is required, chart config is optional (may be dropped if too large)
4
+ * Query is required (can be single CubeQuery or MultiQueryConfig), chart config is optional (may be dropped if too large)
5
5
  */
6
6
  export interface ShareableState {
7
- query: CubeQuery;
7
+ query: CubeQuery | MultiQueryConfig;
8
8
  chartType?: ChartType;
9
9
  chartConfig?: ChartAxisConfig;
10
10
  displayConfig?: ChartDisplayConfig;