@hypequery/datasets 0.21.0 → 0.22.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 (127) hide show
  1. package/README.md +6 -0
  2. package/dist/api.type-test.js +7 -0
  3. package/dist/catalog.d.ts +4 -0
  4. package/dist/catalog.d.ts.map +1 -1
  5. package/dist/catalog.js +10 -1
  6. package/dist/dataset-compilation.d.ts +45 -0
  7. package/dist/dataset-compilation.d.ts.map +1 -0
  8. package/dist/dataset-compilation.js +1 -0
  9. package/dist/dataset-query.d.ts +3 -3
  10. package/dist/dataset-query.d.ts.map +1 -1
  11. package/dist/dataset-query.js +7 -71
  12. package/dist/dataset-sql-dialect.d.ts +11 -0
  13. package/dist/dataset-sql-dialect.d.ts.map +1 -0
  14. package/dist/dataset-sql-dialect.js +1 -0
  15. package/dist/dataset.d.ts +3 -2
  16. package/dist/dataset.d.ts.map +1 -1
  17. package/dist/execution-capabilities.d.ts +28 -0
  18. package/dist/execution-capabilities.d.ts.map +1 -0
  19. package/dist/execution-capabilities.js +17 -0
  20. package/dist/execution-capabilities.json +13 -0
  21. package/dist/executor.d.ts +17 -38
  22. package/dist/executor.d.ts.map +1 -1
  23. package/dist/executor.js +37 -400
  24. package/dist/index.d.ts +9 -4
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3 -2
  27. package/dist/internal.d.ts +3 -0
  28. package/dist/internal.d.ts.map +1 -1
  29. package/dist/internal.js +2 -0
  30. package/dist/measure.d.ts +54 -17
  31. package/dist/measure.d.ts.map +1 -1
  32. package/dist/measure.js +3 -63
  33. package/dist/metric-query-engine.d.ts +29 -0
  34. package/dist/metric-query-engine.d.ts.map +1 -0
  35. package/dist/metric-query-engine.js +106 -0
  36. package/dist/portable-executor.d.ts +20 -6
  37. package/dist/portable-executor.d.ts.map +1 -1
  38. package/dist/portable-executor.js +29 -9
  39. package/dist/query-builder-protocol.d.ts +4 -0
  40. package/dist/query-builder-protocol.d.ts.map +1 -1
  41. package/dist/query-helpers.d.ts +10 -10
  42. package/dist/query-helpers.d.ts.map +1 -1
  43. package/dist/query-helpers.js +1 -3
  44. package/dist/query-planner.d.ts +7 -3
  45. package/dist/query-planner.d.ts.map +1 -1
  46. package/dist/query-planner.js +10 -12
  47. package/dist/semantic-planner.d.ts.map +1 -1
  48. package/dist/semantic-planner.js +2 -0
  49. package/dist/semantic-query-schema.d.ts.map +1 -1
  50. package/dist/semantic-query-schema.js +3 -3
  51. package/dist/types.d.ts +18 -11
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/utils/agent-catalog-projection.d.ts +1 -0
  54. package/dist/utils/agent-catalog-projection.d.ts.map +1 -1
  55. package/dist/utils/agent-catalog-projection.js +2 -1
  56. package/dist/utils/base-measure-definition.d.ts +23 -0
  57. package/dist/utils/base-measure-definition.d.ts.map +1 -0
  58. package/dist/utils/base-measure-definition.js +65 -0
  59. package/dist/utils/build-dataset-query-builder.d.ts +5 -0
  60. package/dist/utils/build-dataset-query-builder.d.ts.map +1 -0
  61. package/dist/utils/build-dataset-query-builder.js +62 -0
  62. package/dist/utils/clickhouse-dataset-sql-dialect.d.ts +4 -0
  63. package/dist/utils/clickhouse-dataset-sql-dialect.d.ts.map +1 -0
  64. package/dist/utils/clickhouse-dataset-sql-dialect.js +6 -0
  65. package/dist/utils/compile-dataset-query.d.ts +10 -0
  66. package/dist/utils/compile-dataset-query.d.ts.map +1 -0
  67. package/dist/utils/compile-dataset-query.js +71 -0
  68. package/dist/utils/composite-time-measure-sql.d.ts.map +1 -1
  69. package/dist/utils/composite-time-measure-sql.js +2 -1
  70. package/dist/utils/dataset-derived-query.d.ts +1 -2
  71. package/dist/utils/dataset-derived-query.d.ts.map +1 -1
  72. package/dist/utils/dataset-derived-query.js +12 -26
  73. package/dist/utils/dataset-filter-types.d.ts +28 -0
  74. package/dist/utils/dataset-filter-types.d.ts.map +1 -0
  75. package/dist/utils/dataset-filter-types.js +1 -0
  76. package/dist/utils/dataset-query-validation.d.ts.map +1 -1
  77. package/dist/utils/dataset-query-validation.js +15 -3
  78. package/dist/utils/dataset-sql-dialect.d.ts +5 -0
  79. package/dist/utils/dataset-sql-dialect.d.ts.map +1 -0
  80. package/dist/utils/dataset-sql-dialect.js +5 -0
  81. package/dist/utils/dataset-target.d.ts +3 -0
  82. package/dist/utils/dataset-target.d.ts.map +1 -0
  83. package/dist/utils/dataset-target.js +3 -0
  84. package/dist/utils/filter-definition.d.ts +3 -0
  85. package/dist/utils/filter-definition.d.ts.map +1 -0
  86. package/dist/utils/filter-definition.js +3 -0
  87. package/dist/utils/metric-derived-query.d.ts +8 -0
  88. package/dist/utils/metric-derived-query.d.ts.map +1 -0
  89. package/dist/utils/metric-derived-query.js +106 -0
  90. package/dist/utils/metric-query-builder.d.ts +5 -0
  91. package/dist/utils/metric-query-builder.d.ts.map +1 -0
  92. package/dist/utils/metric-query-builder.js +50 -0
  93. package/dist/utils/metric-query-result.d.ts +10 -0
  94. package/dist/utils/metric-query-result.d.ts.map +1 -0
  95. package/dist/utils/metric-query-result.js +18 -0
  96. package/dist/utils/metric-query-validation.d.ts +6 -0
  97. package/dist/utils/metric-query-validation.d.ts.map +1 -0
  98. package/dist/utils/metric-query-validation.js +116 -0
  99. package/dist/utils/relationship-builder-plan.d.ts +4 -2
  100. package/dist/utils/relationship-builder-plan.d.ts.map +1 -1
  101. package/dist/utils/relationship-builder-plan.js +10 -13
  102. package/dist/utils/relationship-measure-sql.d.ts +14 -0
  103. package/dist/utils/relationship-measure-sql.d.ts.map +1 -0
  104. package/dist/utils/relationship-measure-sql.js +44 -0
  105. package/dist/utils/relationship-measure-types.d.ts +36 -0
  106. package/dist/utils/relationship-measure-types.d.ts.map +1 -0
  107. package/dist/utils/relationship-measure-types.js +1 -0
  108. package/dist/utils/relationship-measures.d.ts +23 -0
  109. package/dist/utils/relationship-measures.d.ts.map +1 -0
  110. package/dist/utils/relationship-measures.js +62 -0
  111. package/dist/utils/relationship-validation.d.ts +1 -1
  112. package/dist/utils/relationship-validation.d.ts.map +1 -1
  113. package/dist/utils/relationship-validation.js +3 -5
  114. package/dist/utils/semantic-query-syntax.d.ts +6 -0
  115. package/dist/utils/semantic-query-syntax.d.ts.map +1 -0
  116. package/dist/utils/semantic-query-syntax.js +25 -0
  117. package/dist/utils/snapshot-execution-context.d.ts +4 -0
  118. package/dist/utils/snapshot-execution-context.d.ts.map +1 -0
  119. package/dist/utils/snapshot-execution-context.js +16 -0
  120. package/dist/utils/time-measure-dataset-sql.d.ts.map +1 -1
  121. package/dist/utils/time-measure-dataset-sql.js +3 -2
  122. package/dist/utils/time-measure-result-sql.d.ts.map +1 -1
  123. package/dist/utils/time-measure-result-sql.js +2 -1
  124. package/dist/utils/time-measure-source-sql.d.ts.map +1 -1
  125. package/dist/utils/time-measure-source-sql.js +8 -4
  126. package/dist/validation.js +1 -1
  127. package/package.json +2 -1
package/README.md CHANGED
@@ -102,6 +102,12 @@ Metric changes travel through the workflow your team already trusts: TypeScript,
102
102
  - [Relationships](https://hypequery.com/docs/datasets/relationships)
103
103
  - [MCP tool generation](https://hypequery.com/docs/datasets/tool-generation)
104
104
 
105
+ ## Contributing
106
+
107
+ For repository contributors, see the [implementation guide](./ARCHITECTURE.md)
108
+ for module boundaries and verification requirements, and the
109
+ [testing review](./TESTING_REVIEW.md) for coverage, CI gates, and remaining gaps.
110
+
105
111
  ## License
106
112
 
107
113
  Apache-2.0.
@@ -203,6 +203,13 @@ const builderFactory = {
203
203
  rawQuery: async () => [],
204
204
  };
205
205
  const analytics = createDatasetClient({ queryBuilder: builderFactory });
206
+ const _datasetCompilation = analytics.compileDataset(Orders, { measures: ['doubledRevenue'] });
207
+ // @ts-expect-error compilation accepts declared dataset measures only.
208
+ analytics.compileDataset(Orders, { measures: ['missing'] });
209
+ // @ts-expect-error compilation accepts declared dataset dimensions only.
210
+ analytics.compileDataset(Orders, { dimensions: ['missing'] });
211
+ // @ts-expect-error standalone metric handles are not dataset compilation targets.
212
+ analytics.compileDataset(Orders.metric('revenue', { measure: 'revenue' }));
206
213
  const explicitAnalytics = analytics;
207
214
  const datasetQuery = { dimensions: ['status'], measures: ['revenue'] };
208
215
  analytics.validate(revenueMetric, { dimensions: ['status'] }, runtimeContext);
package/dist/catalog.d.ts CHANGED
@@ -66,6 +66,8 @@ export interface RelationshipCatalogEntry {
66
66
  * supplied catalog that predates it still resolves, falling back to `fields`.
67
67
  */
68
68
  groupableFields?: string[];
69
+ /** Safe selectable base aggregates, keyed by qualified name. */
70
+ measures?: Record<string, MeasureCatalogEntry>;
69
71
  }
70
72
  export interface DatasetCatalog extends SemanticMetadata {
71
73
  name: string;
@@ -97,6 +99,8 @@ export type DatasetCatalogSource = AnyDatasetInstance & {
97
99
  };
98
100
  /** All queryable relationship field names (`<relationship>.<dimension>`) a catalog advertises. */
99
101
  export declare function getQueryableRelationshipFields(catalog: DatasetCatalog): string[];
102
+ /** Safe relationship aggregates advertised by a catalog. */
103
+ export declare function getQueryableRelationshipMeasures(catalog: DatasetCatalog): string[];
100
104
  /** The queryable relationship fields a catalog also allows as grouping keys. */
101
105
  export declare function getGroupableRelationshipFields(catalog: DatasetCatalog): string[];
102
106
  export declare function getDatasetCatalog(dataset: DatasetCatalogSource): DatasetCatalog;
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEvG,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACV,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,EAAE,qBAAqB;IAClF,WAAW,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB,EAAE,qBAAqB;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC9C,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACxD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC/D,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACxC,CAAC;AAgFF,kGAAkG;AAClG,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAIhF;AAED,4DAA4D;AAC5D,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAGlF;AAED,gFAAgF;AAChF,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAIhF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,CAkG/E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,iBAAiB,CAOpG"}
package/dist/catalog.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { listRelationshipMeasures } from './utils/relationship-measures.js';
1
2
  import { inheritedBaseMeasure } from './utils/measure-dependencies.js';
2
3
  import { windowCatalogMetadata } from './utils/window-catalog-metadata.js';
3
4
  import { splitDatasetMeasures } from './utils/dataset-measures.js';
@@ -62,6 +63,8 @@ function metricToCatalog(metric) {
62
63
  };
63
64
  }
64
65
  function relationshipToCatalog(name, relationship) {
66
+ const measures = Object.fromEntries(Object.entries(listRelationshipMeasures(name, relationship))
67
+ .map(([key, definition]) => [key, measureToCatalog(definition)]));
65
68
  return {
66
69
  kind: relationship.kind,
67
70
  target: relationship.target().name,
@@ -70,6 +73,7 @@ function relationshipToCatalog(name, relationship) {
70
73
  queryable: relationship.kind !== 'hasMany',
71
74
  fields: listQueryableRelationshipFields(name, relationship),
72
75
  groupableFields: listGroupableRelationshipFields(name, relationship),
76
+ ...(Object.keys(measures).length ? { measures } : {}),
73
77
  };
74
78
  }
75
79
  /** All queryable relationship field names (`<relationship>.<dimension>`) a catalog advertises. */
@@ -78,6 +82,11 @@ export function getQueryableRelationshipFields(catalog) {
78
82
  .filter(relationship => relationship.queryable)
79
83
  .flatMap(relationship => relationship.fields);
80
84
  }
85
+ /** Safe relationship aggregates advertised by a catalog. */
86
+ export function getQueryableRelationshipMeasures(catalog) {
87
+ return Object.values(catalog.relationships).filter(relationship => relationship.queryable)
88
+ .flatMap(relationship => Object.keys(relationship.measures ?? {}));
89
+ }
81
90
  /** The queryable relationship fields a catalog also allows as grouping keys. */
82
91
  export function getGroupableRelationshipFields(catalog) {
83
92
  return Object.values(catalog.relationships)
@@ -162,7 +171,7 @@ export function getDatasetCatalog(dataset) {
162
171
  ...measureNames,
163
172
  ...derivedMeasureNames,
164
173
  ...metricNames,
165
- ...Object.values(relationships).flatMap(relationship => relationship.fields),
174
+ ...Object.values(relationships).flatMap(relationship => [...relationship.fields, ...Object.keys(relationship.measures ?? {})]),
166
175
  ...(dataset.timeKey ? ['period'] : []),
167
176
  ],
168
177
  maxLimit,
@@ -0,0 +1,45 @@
1
+ import type { DatasetQuery } from './types.js';
2
+ /** Trusted compiler output. SQL may contain literals supplied by a custom builder. */
3
+ export interface DatasetCompiledStatement {
4
+ readonly sql: string;
5
+ readonly parameters: readonly unknown[];
6
+ }
7
+ /** Structural diagnostics: no SQL, physical columns, filter values or tenant IDs. */
8
+ export interface DatasetCompilationDescription {
9
+ readonly kind: 'dataset-compilation';
10
+ readonly version: 1;
11
+ readonly dataset: string;
12
+ readonly plan: 'aggregate' | 'derived' | 'time';
13
+ readonly dimensions: readonly string[];
14
+ readonly measures: readonly string[];
15
+ readonly measureDependencies: readonly string[];
16
+ readonly filters: readonly {
17
+ readonly field: string;
18
+ readonly operator: string;
19
+ }[];
20
+ readonly segments: readonly string[];
21
+ readonly by?: string;
22
+ readonly timezone?: string;
23
+ readonly effectiveLimit?: number;
24
+ /** Includes the extra row used to determine pagination.hasMore. */
25
+ readonly executionLimit?: number;
26
+ readonly offset: number;
27
+ readonly parameterCount: number;
28
+ readonly preflightStatementCount: number;
29
+ }
30
+ /**
31
+ * Dataset-level envelope around the current query-builder output. This is not
32
+ * an RFC 0010 CompiledQuery: native named parameter binding remains an adapter
33
+ * responsibility. Use describe()/JSON serialization for structural diagnostics;
34
+ * inspect SQL and parameters only in an authorized, trusted debugger.
35
+ */
36
+ export interface DatasetCompilation extends DatasetCompiledStatement {
37
+ /** Normalized query, including its effective result limit and default measures. */
38
+ readonly query: Readonly<DatasetQuery>;
39
+ /** Statements executed before the result query, such as time-axis guards. */
40
+ readonly preflightStatements: readonly DatasetCompiledStatement[];
41
+ describe(): DatasetCompilationDescription;
42
+ /** JSON serialization deliberately omits trusted SQL, parameters and values. */
43
+ toJSON(): DatasetCompilationDescription;
44
+ }
45
+ //# sourceMappingURL=dataset-compilation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset-compilation.d.ts","sourceRoot":"","sources":["../src/dataset-compilation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,sFAAsF;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;CACzC;AAED,qFAAqF;AACrF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,mBAAmB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAClE,QAAQ,IAAI,6BAA6B,CAAC;IAC1C,gFAAgF;IAChF,MAAM,IAAI,6BAA6B,CAAC;CACzC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,7 @@
1
1
  import type { AnyDatasetInstance, DatasetQuery, DatasetQueryResult, ExecutionContext } from './types.js';
2
- import type { QueryBuilderFactoryLike, QueryBuilderLike } from './query-builder-protocol.js';
3
- import { type ValidationResult } from './validation.js';
2
+ import type { QueryBuilderFactoryLike } from './query-builder-protocol.js';
3
+ import type { ValidationResult } from './validation.js';
4
+ export { buildDatasetQueryBuilder } from './utils/build-dataset-query-builder.js';
4
5
  export interface DatasetQueryExecutionOptions {
5
6
  builderFactory: QueryBuilderFactoryLike;
6
7
  context?: ExecutionContext;
@@ -13,6 +14,5 @@ export interface DatasetQueryExecutionOptions {
13
14
  skipDefaultOrderBy?: boolean;
14
15
  }
15
16
  export declare function validateDatasetQuery(ds: AnyDatasetInstance, query: DatasetQuery, context?: ExecutionContext): ValidationResult;
16
- export declare function buildDatasetQueryBuilder(ds: AnyDatasetInstance, query: DatasetQuery, options: DatasetQueryExecutionOptions): QueryBuilderLike;
17
17
  export declare function runDatasetQuery(ds: AnyDatasetInstance, query: DatasetQuery, options: DatasetQueryExecutionOptions): Promise<DatasetQueryResult>;
18
18
  //# sourceMappingURL=dataset-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-query.d.ts","sourceRoot":"","sources":["../src/dataset-query.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAS7F,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAgBxD,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,uBAAuB,CAAC;IACxC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,gBAAgB,CAElB;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,4BAA4B,GACpC,gBAAgB,CAyDlB;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,kBAAkB,CAAC,CA0B7B"}
1
+ {"version":3,"file":"dataset-query.d.ts","sourceRoot":"","sources":["../src/dataset-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACzG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,uBAAuB,CAAC;IACxC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,gBAAgB,CAElB;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,kBAAkB,CAAC,CAW7B"}
@@ -1,83 +1,19 @@
1
- import { queryTimeFilterSql } from './utils/query-timezone.js';
2
- import { selectedTimeMeasures } from './utils/time-query-measures.js';
3
- import { buildTimeMeasureDatasetSql } from './utils/time-measure-dataset-sql.js';
4
- import { baseMeasureNames, getBaseMeasure } from './utils/dataset-measures.js';
5
- import { appendOrderLimitOffset, applyMeasureDefinition, buildDimensionSelectionPlan, resolveDimensionExpression, resolveFilterField, resolveTenantFilterColumn, } from './query-planner.js';
6
1
  import { validateDatasetQueryInput } from './utils/dataset-query-validation.js';
7
- import { getRuntimeTenantPredicate } from './utils/tenant-runtime.js';
8
- import { overfetchLimit } from './utils/pagination.js';
9
- import { applyRelationshipJoins, buildRelationshipBuilderContext, qualifyBaseColumn, } from './utils/relationship-builder-plan.js';
10
- import { hasSelectedDerivedMeasure, runDerivedDatasetQuery, } from './utils/dataset-derived-query.js';
2
+ import { prepareDatasetQuery } from './utils/compile-dataset-query.js';
11
3
  import { toDatasetQueryResult } from './utils/dataset-query-result.js';
12
- import { segmentFilters } from './utils/segments.js';
4
+ // Preserve the shipped builder helper while keeping compilation helpers focused.
5
+ export { buildDatasetQueryBuilder } from './utils/build-dataset-query-builder.js';
13
6
  export function validateDatasetQuery(ds, query, context) {
14
7
  return validateDatasetQueryInput(ds, query, context);
15
8
  }
16
- export function buildDatasetQueryBuilder(ds, query, options) {
17
- if (selectedTimeMeasures(ds, query).size) {
18
- throw new Error('A time-based dataset query needs the time-measure SQL planner; use createDatasetClient().toSQL().');
19
- }
20
- if (hasSelectedDerivedMeasure(ds, query)) {
21
- throw new Error('A derived dataset query needs the outer SQL projection; use createDatasetClient().toSQL().');
22
- }
23
- const validation = validateDatasetQuery(ds, query, options.context);
24
- if (!validation.valid) {
25
- throw new Error(`Invalid dataset query: ${validation.errors.join('; ')}`);
26
- }
27
- const joinCtx = buildRelationshipBuilderContext(ds, query, options.context);
28
- let qb = options.builderFactory.table(ds.source);
29
- qb = applyRelationshipJoins(qb, joinCtx);
30
- const { selectParts, groupByParts } = buildDimensionSelectionPlan(ds, query.dimensions ?? [], query.by, joinCtx, query.timezone);
31
- const measureNames = query.measures ?? baseMeasureNames(ds.measures);
32
- if (selectParts.length > 0) {
33
- qb = qb.select(selectParts);
34
- }
35
- for (const measureName of measureNames) {
36
- const definition = getBaseMeasure(ds.measures, measureName);
37
- if (!definition)
38
- throw new Error(`Measure "${measureName}" is not a base measure.`);
39
- qb = applyMeasureDefinition(qb, ds, measureName, definition, joinCtx);
40
- }
41
- if (groupByParts.length > 0) {
42
- qb = qb.groupBy(groupByParts);
43
- }
44
- const tenantColumn = resolveTenantFilterColumn(ds, options.context);
45
- const tenantPredicate = getRuntimeTenantPredicate(options.context);
46
- if (tenantPredicate && tenantColumn) {
47
- qb = qb.where(qualifyBaseColumn(joinCtx, tenantColumn), tenantPredicate.operator, tenantPredicate.value);
48
- }
49
- for (const filter of query.filters ?? []) {
50
- const resolvedField = resolveFilterField(ds, filter.field, joinCtx);
51
- qb = qb.where(queryTimeFilterSql(ds, filter.field, resolvedField, query.timezone), filter.operator, filter.value);
52
- }
53
- // Segments are author-defined, so they bypass the caller filter allow-list.
54
- for (const filter of segmentFilters(ds, query.segments)) {
55
- qb = qb.where(resolveDimensionExpression(ds, filter.field, joinCtx), filter.operator, filter.value);
56
- }
57
- return appendOrderLimitOffset(qb, query.orderBy, options.skipDefaultOrderBy ? undefined : query.by, options.executionLimit ?? query.limit, query.offset, joinCtx);
58
- }
59
9
  export async function runDatasetQuery(ds, query, options) {
60
- if (selectedTimeMeasures(ds, query).size) {
61
- const start = Date.now();
62
- const { sql, parameters, timeAxisSql } = buildTimeMeasureDatasetSql(ds, query, { ...options, executionLimit: overfetchLimit(query.limit) });
63
- await options.builderFactory.rawQuery(timeAxisSql, parameters, { abortSignal: options.context?.abortSignal });
64
- const rows = await options.builderFactory.rawQuery(sql, parameters, { abortSignal: options.context?.abortSignal });
65
- return toDatasetQueryResult(rows, { dataset: ds, query, sql, timingMs: Date.now() - start, context: options.context });
66
- }
67
- if (hasSelectedDerivedMeasure(ds, query)) {
68
- return runDerivedDatasetQuery(ds, query, options, buildDatasetQueryBuilder);
69
- }
70
10
  const start = Date.now();
71
- // Over-fetch one row so we can report `hasMore` without a count query.
72
- const qb = buildDatasetQueryBuilder(ds, query, {
73
- ...options,
74
- executionLimit: overfetchLimit(query.limit),
75
- });
76
- const rows = await qb.execute({ abortSignal: options.context?.abortSignal });
11
+ const prepared = prepareDatasetQuery(ds, query, options);
12
+ const rows = await prepared.execute();
77
13
  return toDatasetQueryResult(rows, {
78
14
  dataset: ds,
79
- query,
80
- sql: qb.toSQLWithParams().sql,
15
+ query: prepared.compilation.query,
16
+ sql: prepared.compilation.sql,
81
17
  timingMs: Date.now() - start,
82
18
  context: options.context,
83
19
  });
@@ -0,0 +1,11 @@
1
+ /**
2
+ * SQL rendering owned by the semantic datasets layer, separate from a query
3
+ * builder's compiler dialect. Extend this contract as emission sites migrate.
4
+ * Only the ClickHouse implementation is supported today.
5
+ */
6
+ export interface DatasetSqlDialect {
7
+ readonly name: string;
8
+ /** Quote one output identifier; dots in a qualified semantic alias are literal. */
9
+ quoteIdentifier(identifier: string): string;
10
+ }
11
+ //# sourceMappingURL=dataset-sql-dialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset-sql-dialect.d.ts","sourceRoot":"","sources":["../src/dataset-sql-dialect.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7C"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/dataset.d.ts CHANGED
@@ -29,6 +29,7 @@
29
29
  * });
30
30
  * ```
31
31
  */
32
- import type { DatasetConfig, DatasetInstance, DatasetMeasureDefinition, DerivedMeasures, DimensionDefinition, RelationshipDefinition, SegmentDefinition } from './types.js';
33
- export declare function dataset<TDatasetName extends string, TDimensions extends Record<string, DimensionDefinition>, TDefinitions extends Record<string, DatasetMeasureDefinition> = {}, TRelationships extends Record<string, RelationshipDefinition> = Record<string, never>, const TSegments extends Record<string, SegmentDefinition> = {}>(name: TDatasetName, config: DatasetConfig<TDimensions, TDefinitions, TRelationships, TSegments>): DatasetInstance<TDimensions, TDefinitions, TRelationships, TDatasetName, DerivedMeasures<TDefinitions>, TSegments>;
32
+ import type { NormalizedDatasetFilters } from './utils/dataset-filter-types.js';
33
+ import type { DatasetConfig, DatasetInstance, DatasetMeasureDefinition, DerivedMeasures, DimensionDefinition, RelationshipDefinition, SegmentDefinition, SemanticFiltersDefinition } from './types.js';
34
+ export declare function dataset<TDatasetName extends string, TDimensions extends Record<string, DimensionDefinition>, TDefinitions extends Record<string, DatasetMeasureDefinition> = {}, TRelationships extends Record<string, RelationshipDefinition> = Record<string, never>, const TSegments extends Record<string, SegmentDefinition> = {}, const TFilters extends SemanticFiltersDefinition | undefined = SemanticFiltersDefinition | undefined>(name: TDatasetName, config: DatasetConfig<TDimensions, TDefinitions, TRelationships, TSegments, TFilters>): DatasetInstance<TDimensions, TDefinitions, TRelationships, TDatasetName, DerivedMeasures<TDefinitions>, TSegments, NormalizedDatasetFilters<TDimensions, TFilters>>;
34
35
  //# sourceMappingURL=dataset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,wBAAwB,EAExB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EAKtB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAsBpB,wBAAgB,OAAO,CACrB,YAAY,SAAS,MAAM,EAC3B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACvD,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,EAAE,EAClE,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrF,KAAK,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,EAE9D,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,CAAC,GAC1E,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAoFpH"}
1
+ {"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,wBAAwB,EAExB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EAKtB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAsBpB,wBAAgB,OAAO,CACrB,YAAY,SAAS,MAAM,EAC3B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACvD,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,EAAE,EAClE,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrF,KAAK,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,EAC9D,KAAK,CAAC,QAAQ,SAAS,yBAAyB,GAAG,SAAS,GAAG,yBAAyB,GAAG,SAAS,EAEpG,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,GACpF,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAoFrK"}
@@ -0,0 +1,28 @@
1
+ export type DatasetFeature = 'baseMeasures' | 'derivedMeasures' | 'segments' | 'windowMeasures' | 'shiftMeasures' | 'approxCountDistinct' | 'subDayGrains';
2
+ export interface DatasetFeatureSupport {
3
+ readonly feature: DatasetFeature;
4
+ /** Versions capable of representing the feature, independently of runtime support. */
5
+ readonly protocolVersions: readonly number[];
6
+ readonly typescript: {
7
+ readonly local: boolean;
8
+ readonly publish: boolean;
9
+ };
10
+ readonly python: {
11
+ readonly local: boolean;
12
+ readonly publish: boolean;
13
+ };
14
+ /** Repository portable runtime support, not qualification of a hosted service. */
15
+ readonly cloud: boolean;
16
+ }
17
+ export interface DatasetExecutionCapabilities {
18
+ readonly version: 1;
19
+ readonly cloudDeploymentVersion: 2;
20
+ readonly features: readonly DatasetFeatureSupport[];
21
+ }
22
+ /**
23
+ * Conservative feature matrix tested against TS, Python and portable execution.
24
+ * Support assumes a compatible builder and a valid definition/query. This is a
25
+ * discovery aid, not a replacement for contract validation or authorization.
26
+ */
27
+ export declare const DATASET_EXECUTION_CAPABILITIES: DatasetExecutionCapabilities;
28
+ //# sourceMappingURL=execution-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-capabilities.d.ts","sourceRoot":"","sources":["../src/execution-capabilities.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,iBAAiB,GAAG,UAAU,GACxE,gBAAgB,GAAG,eAAe,GAAG,qBAAqB,GAAG,cAAc,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,sFAAsF;IACtF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACxE,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACrD;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,4BAU3C,CAAC"}
@@ -0,0 +1,17 @@
1
+ import matrix from './execution-capabilities.json' with { type: 'json' };
2
+ /**
3
+ * Conservative feature matrix tested against TS, Python and portable execution.
4
+ * Support assumes a compatible builder and a valid definition/query. This is a
5
+ * discovery aid, not a replacement for contract validation or authorization.
6
+ */
7
+ export const DATASET_EXECUTION_CAPABILITIES = Object.freeze({
8
+ version: 1,
9
+ cloudDeploymentVersion: 2,
10
+ features: Object.freeze(matrix.features.map(entry => Object.freeze({
11
+ feature: entry.feature,
12
+ protocolVersions: Object.freeze([...entry.protocolVersions]),
13
+ typescript: Object.freeze({ ...entry.typescript }),
14
+ python: Object.freeze({ ...entry.python }),
15
+ cloud: entry.cloud,
16
+ }))),
17
+ });
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 1,
3
+ "cloudDeploymentVersion": 2,
4
+ "features": [
5
+ { "feature": "baseMeasures", "protocolVersions": [2, 3], "typescript": { "local": true, "publish": true }, "python": { "local": true, "publish": true }, "cloud": true },
6
+ { "feature": "derivedMeasures", "protocolVersions": [2, 3], "typescript": { "local": true, "publish": true }, "python": { "local": false, "publish": false }, "cloud": true },
7
+ { "feature": "segments", "protocolVersions": [3], "typescript": { "local": true, "publish": false }, "python": { "local": false, "publish": false }, "cloud": false },
8
+ { "feature": "windowMeasures", "protocolVersions": [3], "typescript": { "local": true, "publish": false }, "python": { "local": false, "publish": false }, "cloud": false },
9
+ { "feature": "shiftMeasures", "protocolVersions": [3], "typescript": { "local": true, "publish": false }, "python": { "local": false, "publish": false }, "cloud": false },
10
+ { "feature": "approxCountDistinct", "protocolVersions": [3], "typescript": { "local": true, "publish": false }, "python": { "local": false, "publish": false }, "cloud": false },
11
+ { "feature": "subDayGrains", "protocolVersions": [3], "typescript": { "local": true, "publish": false }, "python": { "local": true, "publish": false }, "cloud": false }
12
+ ]
13
+ }
@@ -1,19 +1,14 @@
1
- /**
2
- * Semantic dataset client internals.
3
- *
4
- * Public callers use `createDatasetClient(...).execute(...)`. The implementation
5
- * stays database-agnostic via query-builder and backend protocol interfaces.
6
- */
1
+ /** Dataset client orchestration: runtime defaults, caching, limits and target dispatch. */
7
2
  import type { MetricRef, GrainedMetricRef, MetricQuery, MetricQueryFor, MetricResult, MetricResultFor, DatasetQuery, DatasetQueryFor, DatasetQueryResult, DatasetQueryResultFor, ExecutionContext, AnyDatasetInstance, DatasetInstance } from './types.js';
8
- import type { QueryBuilderFactoryLike, QueryBuilderFactoryInput } from './query-builder-protocol.js';
3
+ import type { QueryBuilderFactoryInput } from './query-builder-protocol.js';
9
4
  import type { PlanNode, SemanticBackend } from './semantic-plan.js';
10
- import { type ValidationResult } from './validation.js';
5
+ import type { ValidationResult } from './validation.js';
6
+ import { MetricQueryEngine } from './metric-query-engine.js';
11
7
  import { type DatasetQueryExecutionOptions } from './dataset-query.js';
8
+ import type { DatasetCompilation } from './dataset-compilation.js';
12
9
  import { type SemanticCacheOptions, type SemanticCacheStats } from './cache/semantic-query-cache.js';
13
- export interface MetricQueryEngineOptions {
14
- /** Query builder factory for executing metrics. */
15
- builderFactory: QueryBuilderFactoryInput;
16
- }
10
+ export { MetricQueryEngine } from './metric-query-engine.js';
11
+ export type { MetricQueryEngineOptions } from './metric-query-engine.js';
17
12
  export interface CreateDatasetClientOptions {
18
13
  /** Default IANA timezone for buckets and local time-key bounds. Queries can override it. */
19
14
  timezone?: string;
@@ -46,7 +41,14 @@ export interface DatasetClient {
46
41
  execute<TDataset extends TypedDataset, const TQuery extends DatasetQueryFor<TDataset> = DatasetQueryFor<TDataset>>(target: TDataset, query?: TQuery, context?: ExecutionContext): Promise<DatasetQueryResultFor<TDataset, TQuery>>;
47
42
  execute<TDatasetName extends string, TMetricName extends string, TDataset extends TypedDataset<TDatasetName>, const TQuery extends MetricQueryFor<TDataset, TMetricName> = MetricQueryFor<TDataset, TMetricName>>(target: TypedMetricRef<TDatasetName, TMetricName, TDataset>, query?: TQuery, context?: ExecutionContext): Promise<MetricResultFor<TDataset, TMetricName, TQuery>>;
48
43
  execute<TDatasetName extends string, TMetricName extends string, TDataset extends TypedDataset<TDatasetName>, const TQuery extends MetricQueryFor<TDataset, TMetricName> = MetricQueryFor<TDataset, TMetricName>>(target: TypedGrainedMetricRef<TDatasetName, TMetricName, TDataset>, query?: TQuery, context?: ExecutionContext): Promise<MetricResultFor<TDataset, TMetricName, TQuery>>;
49
- execute<TRow = Record<string, unknown>, TTarget extends SemanticTarget = SemanticTarget>(target: TTarget, query?: SemanticQuery<TTarget>, context?: ExecutionContext): Promise<SemanticResult<TTarget, TRow>>;
44
+ execute<TDatasetName extends string, TMetricName extends string, TDataset extends TypedDataset<TDatasetName>, const TQuery extends MetricQueryFor<TDataset, TMetricName> = MetricQueryFor<TDataset, TMetricName>>(target: TypedMetricRef<TDatasetName, TMetricName, TDataset> | TypedGrainedMetricRef<TDatasetName, TMetricName, TDataset>, query?: TQuery, context?: ExecutionContext): Promise<MetricResultFor<TDataset, TMetricName, TQuery>>;
45
+ /** Explicit row types opt into the legacy dynamic query contract. */
46
+ execute<TRow = never, TTarget extends SemanticTarget = SemanticTarget>(target: [TRow] extends [never] ? never : TTarget, query?: SemanticQuery<TTarget>, context?: ExecutionContext): Promise<SemanticResult<TTarget, TRow>>;
47
+ /** Compile the actual dataset execution SQL, including ceilings and pagination overfetch.
48
+ * SQL and parameters are trusted-only; describe()/JSON serialization omit values.
49
+ * Frozen semantic backends and standalone metric handles are not supported.
50
+ */
51
+ compileDataset<TDataset extends TypedDataset>(target: TDataset, query?: DatasetQueryFor<TDataset>, context?: ExecutionContext): DatasetCompilation;
50
52
  toSQL<TTarget extends SemanticTarget>(target: TTarget, query?: SemanticQuery<TTarget>, context?: ExecutionContext): string;
51
53
  validate<TTarget extends SemanticTarget>(target: TTarget, query?: SemanticQuery<TTarget>, context?: ExecutionContext): ValidationResult;
52
54
  /** Lookup counters for this client's semantic result cache. */
@@ -57,26 +59,6 @@ export interface DatasetClient {
57
59
  */
58
60
  clearCache(): Promise<boolean>;
59
61
  }
60
- export declare class MetricQueryEngine {
61
- private builderFactory;
62
- constructor(options: MetricQueryEngineOptions);
63
- protected getBuilderFactory(): QueryBuilderFactoryLike;
64
- /**
65
- * Execute a metric query. Generates SQL, applies tenant/filter context, executes.
66
- */
67
- run<T = Record<string, unknown>>(metric: MetricRef | GrainedMetricRef, query?: MetricQuery, context?: ExecutionContext): Promise<MetricResult<T>>;
68
- /**
69
- * Generate SQL without executing.
70
- */
71
- toSQL(metric: MetricRef | GrainedMetricRef, query?: MetricQuery, context?: ExecutionContext): string;
72
- /**
73
- * Validate a metric query against the metric's contract.
74
- */
75
- validate(metric: MetricRef | GrainedMetricRef, query: MetricQuery, context?: ExecutionContext): ValidationResult;
76
- private runViaBuilder;
77
- private buildBaseQuery;
78
- private buildDerivedSQLViaBuilder;
79
- }
80
62
  export declare class DatasetClientImpl extends MetricQueryEngine implements DatasetClient {
81
63
  private backend?;
82
64
  private readonly defaultTimezone?;
@@ -95,11 +77,6 @@ export declare class DatasetClientImpl extends MetricQueryEngine implements Data
95
77
  * the common uncached path.
96
78
  */
97
79
  private isCacheable;
98
- /**
99
- * Context used for cache-key building: fills in the client-level default
100
- * `cache.scope` unless the call sets its own, so clients sharing a custom
101
- * store can be namespaced apart.
102
- */
103
80
  /** The call's cache partition: its own `cache.scope`, else the client default. */
104
81
  private cacheScope;
105
82
  planMetric(metric: MetricRef | GrainedMetricRef, query?: MetricQuery, context?: ExecutionContext): PlanNode;
@@ -110,6 +87,8 @@ export declare class DatasetClientImpl extends MetricQueryEngine implements Data
110
87
  execute<TDataset extends DatasetInstance<any, any, any, any>, const TQuery extends DatasetQueryFor<TDataset> = DatasetQueryFor<TDataset>>(target: TDataset, query?: TQuery, context?: ExecutionContext): Promise<DatasetQueryResultFor<TDataset, TQuery>>;
111
88
  execute<TDatasetName extends string, TMetricName extends string, TDataset extends DatasetInstance<any, any, any, TDatasetName>, const TQuery extends MetricQueryFor<TDataset, TMetricName> = MetricQueryFor<TDataset, TMetricName>>(target: MetricRef<TDatasetName, TMetricName, any, TDataset>, query?: TQuery, context?: ExecutionContext): Promise<MetricResultFor<TDataset, TMetricName, TQuery>>;
112
89
  execute<TDatasetName extends string, TMetricName extends string, TDataset extends DatasetInstance<any, any, any, TDatasetName>, const TQuery extends MetricQueryFor<TDataset, TMetricName> = MetricQueryFor<TDataset, TMetricName>>(target: GrainedMetricRef<TDatasetName, TMetricName, any, TDataset>, query?: TQuery, context?: ExecutionContext): Promise<MetricResultFor<TDataset, TMetricName, TQuery>>;
90
+ execute<TDatasetName extends string, TMetricName extends string, TDataset extends TypedDataset<TDatasetName>, const TQuery extends MetricQueryFor<TDataset, TMetricName> = MetricQueryFor<TDataset, TMetricName>>(target: TypedMetricRef<TDatasetName, TMetricName, TDataset> | TypedGrainedMetricRef<TDatasetName, TMetricName, TDataset>, query?: TQuery, context?: ExecutionContext): Promise<MetricResultFor<TDataset, TMetricName, TQuery>>;
91
+ compileDataset<TDataset extends TypedDataset>(target: TDataset, query?: DatasetQueryFor<TDataset>, context?: ExecutionContext): DatasetCompilation;
113
92
  toSQL<TTarget extends SemanticTarget>(target: TTarget, query?: SemanticQuery<TTarget>, context?: ExecutionContext): string;
114
93
  validate<TTarget extends SemanticTarget>(target: TTarget, query?: SemanticQuery<TTarget>, context?: ExecutionContext): ValidationResult;
115
94
  private executeMetric;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}