@hypequery/datasets 0.25.0 → 0.27.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 (61) hide show
  1. package/dist/cache/protocol-cache-keys.d.ts.map +1 -1
  2. package/dist/cache/protocol-cache-keys.js +6 -1
  3. package/dist/client-contract/query-schema.d.ts.map +1 -1
  4. package/dist/client-contract/query-schema.js +4 -0
  5. package/dist/constants.d.ts +13 -2
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +18 -2
  8. package/dist/in-memory-backend.d.ts.map +1 -1
  9. package/dist/in-memory-backend.js +4 -0
  10. package/dist/index.d.ts +3 -3
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -2
  13. package/dist/protocol-adapter.d.ts.map +1 -1
  14. package/dist/protocol-adapter.js +3 -2
  15. package/dist/protocol-rehydrate.d.ts.map +1 -1
  16. package/dist/protocol-rehydrate.js +1 -0
  17. package/dist/query-helpers.d.ts +6 -0
  18. package/dist/query-helpers.d.ts.map +1 -1
  19. package/dist/query-helpers.js +10 -0
  20. package/dist/semantic-query-schema.d.ts.map +1 -1
  21. package/dist/semantic-query-schema.js +17 -8
  22. package/dist/sql-portability.d.ts.map +1 -1
  23. package/dist/sql-portability.js +3 -1
  24. package/dist/types.d.ts +19 -5
  25. package/dist/types.d.ts.map +1 -1
  26. package/dist/utils/aggregate-state-functions.d.ts +2 -1
  27. package/dist/utils/aggregate-state-functions.d.ts.map +1 -1
  28. package/dist/utils/aggregate-state-functions.js +5 -19
  29. package/dist/utils/dataset-definition-validation.js +2 -2
  30. package/dist/utils/dataset-filter-types.d.ts +7 -3
  31. package/dist/utils/dataset-filter-types.d.ts.map +1 -1
  32. package/dist/utils/dataset-query-validation.d.ts.map +1 -1
  33. package/dist/utils/dataset-query-validation.js +4 -2
  34. package/dist/utils/enforced-constraints.d.ts.map +1 -1
  35. package/dist/utils/enforced-constraints.js +2 -1
  36. package/dist/utils/filter-definition.d.ts +2 -2
  37. package/dist/utils/filter-definition.d.ts.map +1 -1
  38. package/dist/utils/filter-operator-policy.d.ts +11 -0
  39. package/dist/utils/filter-operator-policy.d.ts.map +1 -0
  40. package/dist/utils/filter-operator-policy.js +13 -0
  41. package/dist/utils/filtered-aggregation-sql.d.ts.map +1 -1
  42. package/dist/utils/filtered-aggregation-sql.js +4 -0
  43. package/dist/utils/metric-query-validation.d.ts.map +1 -1
  44. package/dist/utils/metric-query-validation.js +4 -2
  45. package/dist/utils/portable-aggregations.d.ts +6 -3
  46. package/dist/utils/portable-aggregations.d.ts.map +1 -1
  47. package/dist/utils/portable-aggregations.js +16 -7
  48. package/dist/utils/protocol-metric-expressions.d.ts.map +1 -1
  49. package/dist/utils/protocol-metric-expressions.js +4 -0
  50. package/dist/utils/protocol-rehydrate-filters.d.ts +1 -1
  51. package/dist/utils/protocol-rehydrate-filters.d.ts.map +1 -1
  52. package/dist/utils/protocol-rehydrate-filters.js +7 -1
  53. package/dist/utils/query-timezone.d.ts.map +1 -1
  54. package/dist/utils/query-timezone.js +3 -1
  55. package/dist/utils/relationship-validation.d.ts.map +1 -1
  56. package/dist/utils/relationship-validation.js +2 -1
  57. package/dist/utils/segments.d.ts.map +1 -1
  58. package/dist/utils/segments.js +6 -4
  59. package/dist/validation.d.ts.map +1 -1
  60. package/dist/validation.js +9 -0
  61. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-cache-keys.d.ts","sourceRoot":"","sources":["../../src/cache/protocol-cache-keys.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEhB,WAAW,EACX,SAAS,EACV,MAAM,aAAa,CAAC;AAMrB,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,cAAc,CAAC;AACjD,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAInD,0EAA0E;AAC1E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,uBAAuB,EAChC,WAAW,EAAE,OAAO,GACnB,wBAAwB,CAqC1B;AAwID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,wBAAwB,EAClC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAkBpB;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,wBAAwB,EAClC,MAAM,EAAE,SAAS,GAAG,gBAAgB,EACpC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAgBpB"}
1
+ {"version":3,"file":"protocol-cache-keys.d.ts","sourceRoot":"","sources":["../../src/cache/protocol-cache-keys.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEhB,WAAW,EACX,SAAS,EACV,MAAM,aAAa,CAAC;AAMrB,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,cAAc,CAAC;AACjD,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAInD,0EAA0E;AAC1E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,uBAAuB,EAChC,WAAW,EAAE,OAAO,GACnB,wBAAwB,CAqC1B;AA6ID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,wBAAwB,EAClC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAkBpB;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,wBAAwB,EAClC,MAAM,EAAE,SAAS,GAAG,gBAAgB,EACpC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAgBpB"}
@@ -76,6 +76,11 @@ function canonicalLiteral(value) {
76
76
  return validateCanonicalValue(value);
77
77
  }
78
78
  function filterNode(filter) {
79
+ const left = { kind: 'reference', name: filter.field };
80
+ // A null check has no value, so its node has no right operand (RFC 0023).
81
+ if (filter.operator === 'isNull' || filter.operator === 'isNotNull') {
82
+ return { kind: 'comparison', operator: filter.operator, left };
83
+ }
79
84
  let literal;
80
85
  if (filter.operator === 'between' && Array.isArray(filter.value)) {
81
86
  // RFC 0003 bounds are a two-item tuple; in/notIn take an array.
@@ -89,7 +94,7 @@ function filterNode(filter) {
89
94
  return {
90
95
  kind: 'comparison',
91
96
  operator: filter.operator,
92
- left: { kind: 'reference', name: filter.field },
97
+ left,
93
98
  right: { kind: 'literal', value: literal },
94
99
  };
95
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-schema.d.ts","sourceRoot":"","sources":["../../src/client-contract/query-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EACzD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAK,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAwB,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;CACrC;AACD,MAAM,WAAW,0BAA2B,SAAQ,6BAA6B;IAC/E,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CACpE;AA4DD;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAe1F"}
1
+ {"version":3,"file":"query-schema.d.ts","sourceRoot":"","sources":["../../src/client-contract/query-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EACzD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAK,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAwB,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;CACrC;AACD,MAAM,WAAW,0BAA2B,SAAQ,6BAA6B;IAC/E,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CACpE;AAgED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAe1F"}
@@ -15,6 +15,10 @@ function predicates(endpoint, having) {
15
15
  return union(definitions.flatMap(([key, field]) => field.operators.map(operator => {
16
16
  const scalar = field.type === 'number' ? z.number().finite()
17
17
  : field.type === 'boolean' ? z.boolean() : z.string();
18
+ // A null check names no value (RFC 0023).
19
+ if (operator === 'isNull' || operator === 'isNotNull') {
20
+ return z.object({ [having ? 'measure' : 'field']: z.literal(key), operator: z.literal(operator) }).strict();
21
+ }
18
22
  const value = operator === 'between' ? z.tuple([scalar, scalar])
19
23
  : operator === 'in' || operator === 'notIn' ? z.array(scalar).min(1).max(endpoint.limits.maxFilterValues)
20
24
  : scalar;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared constants for semantic layer implementation.
3
3
  */
4
- import type { MetricFilter, TimeGrain } from './types.js';
4
+ import type { MetricFilter, MetricNullCheckOperator, TimeGrain } from './types.js';
5
5
  /**
6
6
  * Maps time grain to ClickHouse date truncation functions.
7
7
  *
@@ -13,9 +13,20 @@ export declare const GRAIN_FUNCTIONS: Record<TimeGrain, string>;
13
13
  /** The set of time grains supported by the planner, finest first. */
14
14
  export declare const SUPPORTED_TIME_GRAINS: TimeGrain[];
15
15
  /**
16
- * The filter operators accepted by semantic dataset and metric inputs.
16
+ * The filter operators accepted by semantic dataset and metric inputs, and the
17
+ * operators a filter allows when its definition lists none. The null checks in
18
+ * {@link SEMANTIC_NULL_CHECK_OPERATORS} are accepted too, but a caller filter
19
+ * may use one only when its definition lists it (RFC 0023).
17
20
  */
18
21
  export declare const SEMANTIC_FILTER_OPERATORS: readonly ["eq", "neq", "gt", "gte", "lt", "lte", "in", "notIn", "between", "like"];
22
+ /**
23
+ * Operators that test a field for NULL and take no value (RFC 0023). Measure
24
+ * and segment filters may use them freely; a caller filter only when its
25
+ * definition's `operators` list names them.
26
+ */
27
+ export declare const SEMANTIC_NULL_CHECK_OPERATORS: readonly ["isNull", "isNotNull"];
28
+ /** True for `isNull` and `isNotNull`, the filter operators without a value. */
29
+ export declare function isNullCheckFilterOperator(operator: unknown): operator is MetricNullCheckOperator;
19
30
  /**
20
31
  * Narrowing guard for a runtime-provided filter operator. Query builders accept
21
32
  * operators that splice raw SQL (`inSubquery`, `inTable`), so anything outside
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEjF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAQrD,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,EAAE,SAAS,EAAkE,CAAC;AAEhH;;GAEG;AACH,eAAO,MAAM,yBAAyB,oFAWkB,CAAC;AAIzD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAAC,UAAU,CAAC,CAEhG;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,4EAUe,CAAC;AAEtD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAEvE"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,YAAY,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1G;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAQrD,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,EAAE,SAAS,EAAkE,CAAC;AAEhH;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,oFAWkB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,kCAGa,CAAC;AAIxD,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,uBAAuB,CAEhG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAAC,UAAU,CAAC,CAEhG;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,4EAUe,CAAC;AAEtD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAEvE"}
package/dist/constants.js CHANGED
@@ -20,7 +20,10 @@ export const GRAIN_FUNCTIONS = {
20
20
  /** The set of time grains supported by the planner, finest first. */
21
21
  export const SUPPORTED_TIME_GRAINS = ['minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'];
22
22
  /**
23
- * The filter operators accepted by semantic dataset and metric inputs.
23
+ * The filter operators accepted by semantic dataset and metric inputs, and the
24
+ * operators a filter allows when its definition lists none. The null checks in
25
+ * {@link SEMANTIC_NULL_CHECK_OPERATORS} are accepted too, but a caller filter
26
+ * may use one only when its definition lists it (RFC 0023).
24
27
  */
25
28
  export const SEMANTIC_FILTER_OPERATORS = [
26
29
  'eq',
@@ -34,7 +37,20 @@ export const SEMANTIC_FILTER_OPERATORS = [
34
37
  'between',
35
38
  'like',
36
39
  ];
37
- const FILTER_OPERATORS = new Set(SEMANTIC_FILTER_OPERATORS);
40
+ /**
41
+ * Operators that test a field for NULL and take no value (RFC 0023). Measure
42
+ * and segment filters may use them freely; a caller filter only when its
43
+ * definition's `operators` list names them.
44
+ */
45
+ export const SEMANTIC_NULL_CHECK_OPERATORS = [
46
+ 'isNull',
47
+ 'isNotNull',
48
+ ];
49
+ const FILTER_OPERATORS = new Set([...SEMANTIC_FILTER_OPERATORS, ...SEMANTIC_NULL_CHECK_OPERATORS]);
50
+ /** True for `isNull` and `isNotNull`, the filter operators without a value. */
51
+ export function isNullCheckFilterOperator(operator) {
52
+ return operator === 'isNull' || operator === 'isNotNull';
53
+ }
38
54
  /**
39
55
  * Narrowing guard for a runtime-provided filter operator. Query builders accept
40
56
  * operators that splice raw SQL (`inSubquery`, `inTable`), so anything outside
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-backend.d.ts","sourceRoot":"","sources":["../src/in-memory-backend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,eAAe,EAKhB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AA2V3D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAwE7E"}
1
+ {"version":3,"file":"in-memory-backend.d.ts","sourceRoot":"","sources":["../src/in-memory-backend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,eAAe,EAKhB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AA+V3D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAwE7E"}
@@ -29,6 +29,10 @@ function compareFilter(actual, filter) {
29
29
  return typeof actual === 'string'
30
30
  && typeof filter.value === 'string'
31
31
  && actual.includes(filter.value.replaceAll('%', ''));
32
+ case 'isNull':
33
+ return actual === null || actual === undefined;
34
+ case 'isNotNull':
35
+ return actual !== null && actual !== undefined;
32
36
  default:
33
37
  return false;
34
38
  }
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export type { CheckRelationshipsOptions, CheckRelationshipsResult, RelationshipK
8
8
  export { sum, count, countDistinct, approxCountDistinct, avg, min, max, percentile, median, argMax, argMin, stddev, variance, merge, } from './aggregations.js';
9
9
  export { AGGREGATE_STATE_FUNCTIONS, type AggregateStateFunction } from './utils/aggregate-state-functions.js';
10
10
  export { divide, multiply, subtract, add, nullIfZero, coalesce, round, floor, ceil, } from './formulas.js';
11
- export { eq, neq, gt, gte, lt, lte, inList, notInList, between, like, asc, desc, filter, order, } from './query-helpers.js';
11
+ export { eq, neq, gt, gte, lt, lte, inList, notInList, between, like, isNull, isNotNull, asc, desc, filter, order, } from './query-helpers.js';
12
12
  export { createDatasetRegistry } from './registry.js';
13
13
  export { publishDatasets } from './publishing/publisher.js';
14
14
  export type { DatasetPublisher } from './publishing/publisher.js';
@@ -93,8 +93,8 @@ export { validateFilterValue, matchesFieldType } from './validation.js';
93
93
  export type { QueryBuilderLike, QueryBuilderFactoryLike, QueryBuilderFactoryCompatible, QueryBuilderFactoryInput, } from './query-builder-protocol.js';
94
94
  export { toQueryBuilderFactory } from './query-builder-protocol.js';
95
95
  export { validateSQLIdentifier, isSafeSQLIdentifier, quoteSQLIdentifier } from './sql-utils.js';
96
- export { GRAIN_FUNCTIONS, SEMANTIC_FILTER_OPERATORS, SEMANTIC_HAVING_OPERATORS, SUPPORTED_TIME_GRAINS } from './constants.js';
97
- export type { FieldType, DimensionType, DimensionOptions, DimensionDefinition, MeasureOptions, MeasureDefinition, MeasureTimeInterval, WindowMeasureDefinition, ShiftMeasureDefinition, DatasetMeasureDefinition, DerivedMeasureDefinition, DerivedMeasureOptions, DerivedMeasureUses, InferDimensionType, RelationshipKind, RelationshipDefinition, RelationshipKey, RelationshipJoin, AggregationType, MeasureAggregation, AggregationSpec, FormulaExpr, DerivedMetricSpec, TimeGrain, MetricRef, BaseMetricRef, DerivedMetricRef, GrainedMetricRef, MetricContract, MetricFilter, MetricFilterOperator, MetricOrderBy, MetricQuery, DatasetQuery, MetricResultMeta, MetricResult, DatasetQueryResult, MetricHandle, ExecutionContext, SemanticExecutionRuntime, SemanticTenantRuntime, SemanticFilterDefinition, SegmentDefinition, SemanticFiltersDefinition, DatasetConfig, RowResolution, DatasetDefaults, DatasetFreshness, DatasetLimits, DatasetCachePolicy, SemanticMetadata, SemanticSensitivity, DatasetInstance, AnyDatasetInstance, BaseMetricConfig, DerivedMetricConfig, DatasetRegistryInstance, DatasetFieldNames, DatasetDimensionNames, DatasetQueryableDimensions, DatasetQueryableMeasures, DatasetMeasureNames, DatasetSegmentNames, DatasetTimeKeyNames, DatasetOrderableNames, DatasetQueryFor, DatasetHavingCondition, DatasetHavingFor, DatasetHavingOperator, DatasetRow, DatasetRowFor, DatasetQueryResultFor, MetricQueryFor, MetricRow, MetricRowFor, MetricResultFor, KnownStringKeys, } from './types.js';
96
+ export { GRAIN_FUNCTIONS, SEMANTIC_FILTER_OPERATORS, SEMANTIC_HAVING_OPERATORS, SEMANTIC_NULL_CHECK_OPERATORS, SUPPORTED_TIME_GRAINS, } from './constants.js';
97
+ export type { FieldType, DimensionType, DimensionOptions, DimensionDefinition, MeasureOptions, MeasureDefinition, MeasureTimeInterval, WindowMeasureDefinition, ShiftMeasureDefinition, DatasetMeasureDefinition, DerivedMeasureDefinition, DerivedMeasureOptions, DerivedMeasureUses, InferDimensionType, RelationshipKind, RelationshipDefinition, RelationshipKey, RelationshipJoin, AggregationType, MeasureAggregation, AggregationSpec, FormulaExpr, DerivedMetricSpec, TimeGrain, MetricRef, BaseMetricRef, DerivedMetricRef, GrainedMetricRef, MetricContract, MetricFilter, MetricFilterOperator, MetricNullCheckOperator, MetricValueFilterOperator, MetricOrderBy, MetricQuery, DatasetQuery, MetricResultMeta, MetricResult, DatasetQueryResult, MetricHandle, ExecutionContext, SemanticExecutionRuntime, SemanticTenantRuntime, SemanticFilterDefinition, SegmentDefinition, SemanticFiltersDefinition, DatasetConfig, RowResolution, DatasetDefaults, DatasetFreshness, DatasetLimits, DatasetCachePolicy, SemanticMetadata, SemanticSensitivity, DatasetInstance, AnyDatasetInstance, BaseMetricConfig, DerivedMetricConfig, DatasetRegistryInstance, DatasetFieldNames, DatasetDimensionNames, DatasetQueryableDimensions, DatasetQueryableMeasures, DatasetMeasureNames, DatasetSegmentNames, DatasetTimeKeyNames, DatasetOrderableNames, DatasetQueryFor, DatasetHavingCondition, DatasetHavingFor, DatasetHavingOperator, DatasetRow, DatasetRowFor, DatasetQueryResultFor, MetricQueryFor, MetricRow, MetricRowFor, MetricResultFor, KnownStringKeys, } from './types.js';
98
98
  export type { DatasetCompilation, DatasetCompiledStatement, DatasetCompilationDescription, } from './dataset-compilation.js';
99
99
  export { DATASET_EXECUTION_CAPABILITIES } from './execution-capabilities.js';
100
100
  export type { DatasetFeature, DatasetFeatureSupport, DatasetExecutionCapabilities } from './execution-capabilities.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ export { AGGREGATE_STATE_FUNCTIONS } from './utils/aggregate-state-functions.js'
14
14
  // Formula helpers
15
15
  export { divide, multiply, subtract, add, nullIfZero, coalesce, round, floor, ceil, } from './formulas.js';
16
16
  // Semantic query helpers
17
- export { eq, neq, gt, gte, lt, lte, inList, notInList, between, like, asc, desc, filter, order, } from './query-helpers.js';
17
+ export { eq, neq, gt, gte, lt, lte, inList, notInList, between, like, isNull, isNotNull, asc, desc, filter, order, } from './query-helpers.js';
18
18
  // Registry
19
19
  export { createDatasetRegistry } from './registry.js';
20
20
  // First-class publication builder for Serve, MCP, and agent consumers.
@@ -81,5 +81,5 @@ export { toQueryBuilderFactory } from './query-builder-protocol.js';
81
81
  // SQL utilities
82
82
  export { validateSQLIdentifier, isSafeSQLIdentifier, quoteSQLIdentifier } from './sql-utils.js';
83
83
  // Constants
84
- export { GRAIN_FUNCTIONS, SEMANTIC_FILTER_OPERATORS, SEMANTIC_HAVING_OPERATORS, SUPPORTED_TIME_GRAINS } from './constants.js';
84
+ export { GRAIN_FUNCTIONS, SEMANTIC_FILTER_OPERATORS, SEMANTIC_HAVING_OPERATORS, SEMANTIC_NULL_CHECK_OPERATORS, SUPPORTED_TIME_GRAINS, } from './constants.js';
85
85
  export { DATASET_EXECUTION_CAPABILITIES } from './execution-capabilities.js';
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-adapter.d.ts","sourceRoot":"","sources":["../src/protocol-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,uBAAuB,EAE5B,KAAK,sBAAsB,EAI5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,kBAAkB,EAElB,YAAY,EAEb,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;CAC7E;AAmFD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,mCAAwC,GAChD,uBAAuB,CAqIzB"}
1
+ {"version":3,"file":"protocol-adapter.d.ts","sourceRoot":"","sources":["../src/protocol-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,uBAAuB,EAE5B,KAAK,sBAAsB,EAI5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,kBAAkB,EAElB,YAAY,EAEb,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;CAC7E;AAmFD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,mCAAwC,GAChD,uBAAuB,CAsIzB"}
@@ -5,7 +5,7 @@ import { parseProtocolIdentifier, parseProtocolQualifiedIdentifier, validateProt
5
5
  import { SEMANTIC_FILTER_OPERATORS } from './constants.js';
6
6
  import { toProtocolSemanticMetadata } from './utils/protocol-semantic-metadata.js';
7
7
  import { assertPublishableTimeGrains, isPortableTimeGrain, requirePortableTimeGrain } from './utils/portable-grains.js';
8
- import { requirePortableAggregation } from './utils/portable-aggregations.js';
8
+ import { requirePublishableMeasureAggregation } from './utils/portable-aggregations.js';
9
9
  import { assertNoPublishedSegments } from './utils/segments.js';
10
10
  function fieldSchema(type) {
11
11
  switch (type) {
@@ -131,8 +131,9 @@ export function buildProtocolDatasetContract(dataset, options = {}) {
131
131
  })).sort(byName),
132
132
  measures: Object.entries(baseMeasures).map(([name, measure]) => ({
133
133
  name,
134
- aggregation: requirePortableAggregation(measure.aggregation, `Measure "${dataset.name}.${name}"`),
134
+ aggregation: requirePublishableMeasureAggregation(measure.aggregation, `Measure "${dataset.name}.${name}"`),
135
135
  field: measure.field,
136
+ ...(measure.stateFunction !== undefined ? { stateFunction: measure.stateFunction } : {}),
136
137
  ...(measure.argField !== undefined ? { argField: measure.argField } : {}),
137
138
  ...(measure.level !== undefined ? { level: measure.level } : {}),
138
139
  ...(measure.sql !== undefined
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-rehydrate.d.ts","sourceRoot":"","sources":["../src/protocol-rehydrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,uBAAuB,EAEvB,yBAAyB,EAM1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAMlB,YAAY,EAIb,MAAM,YAAY,CAAC;AAOpB,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,4BAA4B,EAC5B,KAAK,yBAAyB,GAC/B,MAAM,yCAAyC,CAAC;AAEjD,kFAAkF;AAClF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG;IACnD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACjD;AAED;;;;;GAKG;AACH,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;gBAGrD,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,yBAAyB;CAQrC;AA8QD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,CAAC,uBAAuB,GAAG,yBAAyB,CAAC,EAAE,EAC3E,OAAO,GAAE,gCAAqC,GAC7C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAyF7C;AAED,gFAAgF;AAChF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,gCAAqC,GAC7C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAG7C"}
1
+ {"version":3,"file":"protocol-rehydrate.d.ts","sourceRoot":"","sources":["../src/protocol-rehydrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,uBAAuB,EAEvB,yBAAyB,EAM1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAMlB,YAAY,EAIb,MAAM,YAAY,CAAC;AAOpB,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,4BAA4B,EAC5B,KAAK,yBAAyB,GAC/B,MAAM,yCAAyC,CAAC;AAEjD,kFAAkF;AAClF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG;IACnD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACjD;AAED;;;;;GAKG;AACH,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;gBAGrD,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,yBAAyB;CAQrC;AA+QD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,CAAC,uBAAuB,GAAG,yBAAyB,CAAC,EAAE,EAC3E,OAAO,GAAE,gCAAqC,GAC7C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAyF7C;AAED,gFAAgF;AAChF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,gCAAqC,GAC7C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAG7C"}
@@ -70,6 +70,7 @@ function rehydrateMeasure(datasetName, measure) {
70
70
  ...snapshotSemanticMetadata(measure),
71
71
  aggregation: measure.aggregation,
72
72
  field: String(measure.field),
73
+ ...(measure.stateFunction !== undefined ? { stateFunction: measure.stateFunction } : {}),
73
74
  ...(measure.argField !== undefined ? { argField: String(measure.argField) } : {}),
74
75
  ...(measure.level !== undefined ? { level: measure.level } : {}),
75
76
  ...(measure.sql !== undefined
@@ -9,6 +9,10 @@ export declare function inList<const TField extends string, const TValue>(field:
9
9
  export declare function notInList<const TField extends string, const TValue>(field: TField, value: TValue[]): MetricFilter<TField, TValue[], 'notIn'>;
10
10
  export declare function between<const TField extends string, const TLower, const TUpper>(field: TField, lower: TLower, upper: TUpper): MetricFilter<TField, [TLower, TUpper], 'between'>;
11
11
  export declare function like<const TField extends string>(field: TField, value: string): MetricFilter<TField, string, 'like'>;
12
+ /** Rows where `field` is NULL (RFC 0023); takes no value. */
13
+ export declare function isNull<const TField extends string>(field: TField): MetricFilter<TField, never, 'isNull'>;
14
+ /** Rows where `field` is not NULL (RFC 0023); takes no value. */
15
+ export declare function isNotNull<const TField extends string>(field: TField): MetricFilter<TField, never, 'isNotNull'>;
12
16
  export declare function asc<const TField extends string>(field: TField): MetricOrderBy<TField>;
13
17
  export declare function desc<const TField extends string>(field: TField): MetricOrderBy<TField>;
14
18
  export declare const filter: {
@@ -22,6 +26,8 @@ export declare const filter: {
22
26
  readonly notInList: typeof notInList;
23
27
  readonly between: typeof between;
24
28
  readonly like: typeof like;
29
+ readonly isNull: typeof isNull;
30
+ readonly isNotNull: typeof isNotNull;
25
31
  };
26
32
  export declare const order: {
27
33
  readonly asc: typeof asc;
@@ -1 +1 @@
1
- {"version":3,"file":"query-helpers.d.ts","sourceRoot":"","sources":["../src/query-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAE9H;AAED,wBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAEhI;AAED,wBAAgB,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAE9H;AAED,wBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAEhI;AAED,wBAAgB,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAE9H;AAED,wBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAEhI;AAED,wBAAgB,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAEtI;AAED,wBAAgB,SAAS,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAE5I;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAE/K;AAED,wBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEpH;AAED,wBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAErF;AAED,wBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAEtF;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;CAWT,CAAC;AAEX,eAAO,MAAM,KAAK;;;CAGR,CAAC"}
1
+ {"version":3,"file":"query-helpers.d.ts","sourceRoot":"","sources":["../src/query-helpers.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,14 @@ export function between(field, lower, upper) {
29
29
  export function like(field, value) {
30
30
  return createFilter(field, 'like', value);
31
31
  }
32
+ /** Rows where `field` is NULL (RFC 0023); takes no value. */
33
+ export function isNull(field) {
34
+ return { field, operator: 'isNull' };
35
+ }
36
+ /** Rows where `field` is not NULL (RFC 0023); takes no value. */
37
+ export function isNotNull(field) {
38
+ return { field, operator: 'isNotNull' };
39
+ }
32
40
  export function asc(field) {
33
41
  return { field, direction: 'asc' };
34
42
  }
@@ -46,6 +54,8 @@ export const filter = {
46
54
  notInList,
47
55
  between,
48
56
  like,
57
+ isNull,
58
+ isNotNull,
49
59
  };
50
60
  export const order = {
51
61
  asc,
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-query-schema.d.ts","sourceRoot":"","sources":["../src/semantic-query-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic-query-schema.d.ts","sourceRoot":"","sources":["../src/semantic-query-schema.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { sha256 } from '@noble/hashes/sha2.js';
3
3
  import { bytesToHex } from '@noble/hashes/utils.js';
4
4
  import { z } from 'zod';
5
5
  import { getDatasetCatalog, getGroupableRelationshipFields, getQueryableRelationshipFields, getQueryableRelationshipMeasures, } from './catalog.js';
6
- import { SEMANTIC_FILTER_OPERATORS, SEMANTIC_HAVING_OPERATORS } from './constants.js';
6
+ import { isNullCheckFilterOperator, SEMANTIC_FILTER_OPERATORS, SEMANTIC_HAVING_OPERATORS } from './constants.js';
7
7
  import { zodToProtocolSchema } from './protocol-schema-adapter.js';
8
8
  import { compareStrings, stableStringify, uniqueSorted } from './utils/canonical-json.js';
9
9
  import { zodToDraft7JsonSchema } from './utils/zod-json-schema.js';
@@ -61,13 +61,22 @@ function boundedArray(item, maximum) {
61
61
  }
62
62
  function filterSchema(catalog, fields, relationshipOperators) {
63
63
  const filterValue = z.unknown().refine(value => value !== undefined, 'Required');
64
- const variants = uniqueSorted(fields).map((field) => z.object({
65
- field: z.literal(field),
66
- operator: relationshipOperators.has(field)
67
- ? fieldEnum(relationshipOperators.get(field) ?? [])
68
- : fieldEnum(catalog.filters[field]?.operators ?? [...SEMANTIC_FILTER_OPERATORS]),
69
- value: filterValue,
70
- }).strict());
64
+ // A null check takes no value (RFC 0023), so it gets its own value-free shape.
65
+ const variants = uniqueSorted(fields).flatMap((field) => {
66
+ const operators = relationshipOperators.has(field)
67
+ ? relationshipOperators.get(field) ?? []
68
+ : catalog.filters[field]?.operators ?? [...SEMANTIC_FILTER_OPERATORS];
69
+ const valueOperators = operators.filter(operator => !isNullCheckFilterOperator(operator));
70
+ const nullChecks = operators.filter(isNullCheckFilterOperator);
71
+ return [
72
+ ...(valueOperators.length > 0 || nullChecks.length === 0
73
+ ? [z.object({ field: z.literal(field), operator: fieldEnum(valueOperators), value: filterValue }).strict()]
74
+ : []),
75
+ ...(nullChecks.length > 0
76
+ ? [z.object({ field: z.literal(field), operator: fieldEnum(nullChecks) }).strict()]
77
+ : []),
78
+ ];
79
+ });
71
80
  if (variants.length === 0) {
72
81
  return z.object({
73
82
  field: z.never(),
@@ -1 +1 @@
1
- {"version":3,"file":"sql-portability.d.ts","sourceRoot":"","sources":["../src/sql-portability.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;GAOG;AAEH,MAAM,MAAM,uBAAuB,GAC/B,oBAAoB,GACpB,kCAAkC,GAClC,kCAAkC,GAClC,iCAAiC,GACjC,gCAAgC,GAChC,yBAAyB,GACzB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD;AAED,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAEjF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,oBAAoB,CAKtE,CAAC;AAi0BL;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CAyBtB"}
1
+ {"version":3,"file":"sql-portability.d.ts","sourceRoot":"","sources":["../src/sql-portability.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;GAOG;AAEH,MAAM,MAAM,uBAAuB,GAC/B,oBAAoB,GACpB,kCAAkC,GAClC,kCAAkC,GAClC,iCAAiC,GACjC,gCAAgC,GAChC,yBAAyB,GACzB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD;AAED,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAEjF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,oBAAoB,CAKtE,CAAC;AAm0BL;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CAyBtB"}
@@ -284,8 +284,10 @@ const MAX_LOGICAL_OPERANDS = 100;
284
284
  function childExpressions(expression) {
285
285
  switch (expression.kind) {
286
286
  case 'binary':
287
- case 'comparison':
288
287
  return [expression.left, expression.right];
288
+ case 'comparison':
289
+ // A null check (RFC 0023) has no right operand.
290
+ return 'right' in expression ? [expression.left, expression.right] : [expression.left];
289
291
  case 'logical':
290
292
  return 'operands' in expression ? expression.operands : [expression.operand];
291
293
  case 'call':
package/dist/types.d.ts CHANGED
@@ -285,14 +285,28 @@ export interface MetricContract {
285
285
  requires?: string[];
286
286
  tenantScoped: boolean;
287
287
  }
288
- export interface MetricFilter<TField extends string = string, TValue = unknown, TOperator extends MetricFilterOperator = MetricFilterOperator> {
288
+ /**
289
+ * A comparison of `field` with `value`, or a null check on `field`.
290
+ *
291
+ * `isNull` and `isNotNull` take no value (RFC 0023): a filter using one omits
292
+ * `value`, and validation rejects one that sets it.
293
+ */
294
+ export type MetricFilter<TField extends string = string, TValue = unknown, TOperator extends MetricFilterOperator = MetricFilterOperator> = ([Exclude<TOperator, MetricNullCheckOperator>] extends [never] ? never : {
289
295
  field: TField;
290
- operator: TOperator;
296
+ operator: Exclude<TOperator, MetricNullCheckOperator>;
291
297
  value: TValue;
292
- }
293
- export type MetricFilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'between' | 'like';
298
+ }) | ([Extract<TOperator, MetricNullCheckOperator>] extends [never] ? never : {
299
+ field: TField;
300
+ operator: Extract<TOperator, MetricNullCheckOperator>;
301
+ value?: undefined;
302
+ });
303
+ /** Operators that compare a field with a value. */
304
+ export type MetricValueFilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'between' | 'like';
305
+ /** Operators that test a field for NULL and take no value (RFC 0023). */
306
+ export type MetricNullCheckOperator = 'isNull' | 'isNotNull';
307
+ export type MetricFilterOperator = MetricValueFilterOperator | MetricNullCheckOperator;
294
308
  /** Operators a `having` condition may apply to an aggregated measure value. */
295
- export type DatasetHavingOperator = Exclude<MetricFilterOperator, 'like'>;
309
+ export type DatasetHavingOperator = Exclude<MetricValueFilterOperator, 'like'>;
296
310
  /**
297
311
  * A condition on an aggregated measure value, applied after grouping (SQL
298
312
  * `HAVING` semantics). `measure` must be one of the query's selected measures;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACzF;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,sBAAsB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AACpH,OAAO,KAAK,EAAE,iCAAiC,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAC9H,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEnF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC;AAEtC,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;AAExF,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB,CAAC,KAAK,SAAS,aAAa,GAAG,aAAa,CAAE,SAAQ,gBAAgB;IACxG,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,mBAAmB,IAC1D,CAAC,CAAC,WAAW,CAAC,SAAS,QAAQ,GAAG,MAAM,GACxC,CAAC,CAAC,WAAW,CAAC,SAAS,QAAQ,GAAG,MAAM,GACxC,CAAC,CAAC,WAAW,CAAC,SAAS,SAAS,GAAG,OAAO,GAC1C,CAAC,CAAC,WAAW,CAAC,SAAS,WAAW,GAAG,MAAM,GAC3C,KAAK,CAAC;AAER,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElE,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,yEAAyE;AACzE,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,EAAE,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEzF,MAAM,WAAW,sBAAsB,CACrC,OAAO,SAAS;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACzF,KAAK,SAAS,gBAAgB,GAAG,gBAAgB;IAEjD,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;CACzD;AAED,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,OAAO,GACP,eAAe,GACf,KAAK,GACL,KAAK,GACL,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,UAAU;AACZ,iFAAiF;GAC/E,qBAAqB;AACvB;;;GAGG;GACD,OAAO,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,MAAM,EAAE,oBAAoB,CAAC;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,kBAAkB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,IACjE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAEzC,MAAM,WAAW,qBAAqB,CACpC,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,CACrD,SAAQ,gBAAgB;IACxB,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,KAAK,IAAI,MAAM,KAAK,GAAG,MAAM;KAAE,KAAK,WAAW,CAAC;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB,CACvC,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,CACrD,SAAQ,gBAAgB;IACxB,MAAM,EAAE,4BAA4B,CAAC;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE;QACP,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,EAAE,KAAK,IAAI,MAAM,KAAK,GAAG,MAAM;SAAE,GAAG,WAAW,CAAC;KAC1E,CAAC,QAAQ,CAAC,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,UAAU,mBAAmB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,gBAAgB;IAC1F,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,GAChG;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,GACzG;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEtF,MAAM,MAAM,uBAAuB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,IACtE,mBAAmB,CAAC,YAAY,CAAC,GAAG,iBAAiB,CAAC;AAExD,8DAA8D;AAC9D,MAAM,WAAW,sBAAsB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,gBAAgB;IACpG,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG,wBAAwB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAEvI,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,CAAC,SAAS,IAAI;KACvC,IAAI,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,IAAI;CACpG,CAAC,MAAM,SAAS,CAAC,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,YAAY,CAAC,SAAS,IAAI;KACnC,IAAI,IAAI,MAAM,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,IAAI,GAClG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,SAAS,IAAI;KACtC,IAAI,IAAI,MAAM,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,IAAI,GACzG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,SAAS,IAAI;KACrC,IAAI,IAAI,MAAM,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,IAAI,GACxG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CACpD,CAAC;AAEF,KAAK,sBAAsB,CAAC,SAAS,IAAI;KACtC,IAAI,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,wBAAwB,CAAC,MAAM,KAAK,CAAC,GACpF,SAAS,CAAC,IAAI,CAAC,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE;YAAE,QAAQ,EAAE,KAAK,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC;SAAE,CAAA;KAAE,GACjH,SAAS,CAAC,IAAI,CAAC,SAAS,uBAAuB,GAC7C,SAAS,CAAC,IAAI,CAAC,GAAG;QAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;KAAE,GACrE,SAAS,CAAC,IAAI,CAAC,SAAS,sBAAsB,GAC5C,SAAS,CAAC,IAAI,CAAC,GAAG;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC,CAAA;KAAE,GACjF,SAAS,CAAC,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,MAAM,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,iBAAiB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM;IACrE,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,WAAW,CAAC;CAC1D;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,IACnE,eAAe,CACb,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACnC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,EACxC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EACtC,YAAY,CACb,CAAC;AAEJ,MAAM,WAAW,SAAS,CACxB,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,KAAK,SAAS,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,GAAG,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,EACnH,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC;IAElG,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,YAAY,CAAC;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,OAAO,EAAE,QAAQ,CAAC;IAClB,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnF,QAAQ,IAAI,cAAc,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,CACvB,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAChG,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AAEpE,MAAM,MAAM,gBAAgB,CAC1B,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAChG,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,iBAAiB,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEpF,MAAM,WAAW,gBAAgB,CAC/B,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,KAAK,SAAS,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,GAAG,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,EACnH,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC;IAElG,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9D,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,IAAI,cAAc,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,CACtB,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,KAAK,SAAS,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,GAAG,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,EACnH,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAChG,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,gBAAgB,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAEzH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY,CAC3B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,MAAM,GAAG,OAAO,EAChB,SAAS,SAAS,oBAAoB,GAAG,oBAAoB;IAE7D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpH,+EAA+E;AAC/E,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAC/D;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1F;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC5E;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE9E,MAAM,WAAW,aAAa,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE;QACZ,oDAAoD;QACpD,aAAa,EAAE,MAAM,CAAC;QACtB,mCAAmC;QACnC,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,gFAAgF;IAChF,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,MAAM,EAAE,CAAA;CAAE,GAChB;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAErB,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,6EAA6E;IAC7E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC;CACtC;AAED,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAChE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;CACxC;AAED,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAEjF,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB,CAC/B,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CACvF,SAAQ,gBAAgB;IACxB,OAAO,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,gBAAgB;IACjG,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,WAAW,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa,CAC5B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC7F,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC9F,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrF,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACvF,QAAQ,SAAS,yBAAyB,GAAG,SAAS,GAAG,yBAAyB,EAClF,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EACxD,SAAS,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CACvD,SAAQ,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAClC,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,eAAe,CAC9B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC7F,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,EACrG,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrF,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,gBAAgB,SAAS,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,EAC5G,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACvF,QAAQ,SAAS,yBAAyB,GAAG,yBAAyB,EACtE,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EACxD,SAAS,SAAS,MAAM,GAAG,MAAM;IAEjC,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAClC,UAAU,EAAE,WAAW,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IACpB,+FAA+F;IAC/F,eAAe,EAAE,gBAAgB,CAAC;IAClC,OAAO,EAAE,QAAQ,CAAC;IAClB,aAAa,EAAE,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,KAAK,SAAS,MAAM,EACzB,UAAU,EAAE,KAAK,EACjB,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GACtD,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACzK,MAAM,CAAC,KAAK,SAAS,MAAM,EACzB,UAAU,EAAE,KAAK,EACjB,YAAY,EAAE,mBAAmB,CAAC,YAAY,CAAC,GAC9C,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;CAC7K;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IAC/C,MAAM,IAAI,eAAe,EAAE,CAAC;IAC5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAC9C,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACnC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,EACxC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EACtC,MAAM,CACP,CAAC;AAEF,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KAC1D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;CACnD,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;AAEpB,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,KAAK;CACxE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,KAAK,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC9D;IAAC,eAAe,CAAC,CAAC,CAAC;CAAC,SAAS,CAAC,KAAK,CAAC,GAChC,kBAAkB,CAAC,CAAC,CAAC,GACrB,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAEjD,KAAK,oBAAoB,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,IAAI;KAClF,KAAK,IAAI,yBAAyB,CAAC,WAAW,CAAC,GAC9C,WAAW,CAAC,KAAK,CAAC,SAAS;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,GAAG,KAAK;CAC7D,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC;AAE1C,KAAK,mCAAmC,CACtC,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,IAC3D;KACD,iBAAiB,IAAI,eAAe,CAAC,cAAc,CAAC,GACnD,cAAc,CAAC,iBAAiB,CAAC,SAAS,sBAAsB,CAC9D,MAAM,OAAO,EACb,MAAM,KAAK,CACZ,GACG,KAAK,SAAS,SAAS,GACrB,KAAK,GACL,OAAO,SAAS,eAAe,CAAC,MAAM,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAC/D,GAAG,iBAAiB,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE,GAC3D,KAAK,GACT,KAAK;CACZ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;AAEnC,KAAK,gCAAgC,CACnC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,KAAK,SAAS,MAAM,IAClB,KAAK,SAAS,MAAM,QAAQ,CAAC,YAAY,CAAC,GAC1C,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAC7B,KAAK,SAAS,GAAG,MAAM,iBAAiB,IAAI,MAAM,cAAc,EAAE,GAChE,iBAAiB,SAAS,MAAM,QAAQ,CAAC,eAAe,CAAC,GACvD,QAAQ,CAAC,eAAe,CAAC,CAAC,iBAAiB,CAAC,SAAS,sBAAsB,CACzE,MAAM,OAAO,EACb,MAAM,KAAK,CACZ,GACC,KAAK,SAAS,SAAS,GACrB,KAAK,GACL,OAAO,SAAS,eAAe,CAAC,MAAM,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAC/D,cAAc,SAAS,MAAM,WAAW,GACtC,WAAW,CAAC,cAAc,CAAC,GAC3B,KAAK,GACP,KAAK,GACT,KAAK,GACP,KAAK,GACP,KAAK,CAAC;AAeZ,6CAA6C;AAC7C,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAClF,yBAAyB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GACjD,mCAAmC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAEnE,oEAAoE;AACpE,MAAM,MAAM,0BAA0B,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI;KAC5F,KAAK,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,gCAAgC,CAAC,QAAQ,EAAE,KAAK,CAAC;CAC9F,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAChF,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAElC,2CAA2C;AAC3C,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAChF,yBAAyB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAC/C,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,GAC5C,iCAAiC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAEjE,kEAAkE;AAClE,MAAM,MAAM,wBAAwB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI;KAC1F,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,MAAM,QAAQ,CAAC,UAAU,CAAC,GACtE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC;CACzE,CAAC;AAEF,2CAA2C;AAC3C,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAClF,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAChF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,GACvC,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAEhG;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAClF,qBAAqB,CAAC,QAAQ,CAAC,GAC/B,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,QAAQ,CAAC;AAEb,8EAA8E;AAC9E,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnF,UAAU,CAAC,EAAE,SAAS,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,SAAS,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,OAAO,CAAC,EAAE,SAAS,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChD;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,SAAS,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,OAAO,CAAC,EAAE,SAAS,aAAa,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACxC,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,uEAAuE;AACvE,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAC/E,sBAAsB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAExD,KAAK,kBAAkB,CACrB,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,MAAM,IACJ,MAAM,SAAS;IAAE,UAAU,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAA;CAAE,GACvD,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,GAC/C,KAAK,CAAC;AAEV,KAAK,uBAAuB,CAC1B,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,MAAM,IACJ,MAAM,SAAS;IAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAA;CAAE,GACrD,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,GAC7C,yBAAyB,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAElE,KAAK,eAAe,CAAC,MAAM,IAAI,MAAM,SAAS;IAAE,EAAE,EAAE,SAAS,CAAA;CAAE,GAC3D;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnB,EAAE,CAAC;AAEP,yEAAyE;AACzE,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IACvE;KAAG,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACxG;KAAG,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;CAAE,GACxD;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExB,+DAA+D;AAC/D,MAAM,MAAM,aAAa,CACvB,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,IAEhC;KAAG,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC7G;KAAG,CAAC,IAAI,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;CAAE,GACpE,eAAe,CAAC,MAAM,CAAC,CAAC;AAE5B,MAAM,WAAW,qBAAqB,CACpC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC;IAElC,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,0FAA0F;AAC1F,MAAM,WAAW,cAAc,CAC7B,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,WAAW,SAAS,MAAM;IAE1B,UAAU,CAAC,EAAE,SAAS,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxD,OAAO,CAAC,EAAE,SAAS,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChD,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,SAAS,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,OAAO,CAAC,EAAE,SAAS,aAAa,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACxC,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,yFAAyF;AACzF,MAAM,MAAM,SAAS,CACnB,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,WAAW,SAAS,MAAM,IAExB;KAAG,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACxG;KAAG,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;CAAE,GACtC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExB,8DAA8D;AAC9D,MAAM,MAAM,YAAY,CACtB,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,WAAW,SAAS,MAAM,EAC1B,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,IAE5C;KAAG,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC7G;KAAG,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;CAAE,GACtC,eAAe,CAAC,MAAM,CAAC,CAAC;AAE5B,MAAM,WAAW,eAAe,CAC9B,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,WAAW,SAAS,MAAM,EAC1B,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC;IAE9C,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;IACpD,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,10 @@
11
11
  * cannot read back from the column type. The name is interpolated into SQL, so
12
12
  * it must come from this list.
13
13
  */
14
+ import { type ProtocolAggregateStateFunction } from '@hypequery/protocol';
14
15
  import type { MeasureDefinition } from '../types.js';
15
16
  export declare const AGGREGATE_STATE_FUNCTIONS: readonly ["uniq", "uniqExact", "uniqCombined", "uniqCombined64", "uniqHLL12", "uniqTheta", "count", "sum", "avg", "min", "max", "any", "anyLast", "groupBitmap"];
16
- export type AggregateStateFunction = (typeof AGGREGATE_STATE_FUNCTIONS)[number];
17
+ export type AggregateStateFunction = ProtocolAggregateStateFunction;
17
18
  export declare function isAggregateStateFunction(value: unknown): value is AggregateStateFunction;
18
19
  /** Throws unless `value` is a supported state function; `owner` names the measure. */
19
20
  export declare function assertAggregateStateFunction(value: unknown, owner: string): asserts value is AggregateStateFunction;
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate-state-functions.d.ts","sourceRoot":"","sources":["../../src/utils/aggregate-state-functions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,yBAAyB,kKAe5B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAchF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAExF;AAED,sFAAsF;AACtF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAOnH;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElG;AAED,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAErF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,eAAe,CAAC,GAAG,OAAO,CAI/G"}
1
+ {"version":3,"file":"aggregate-state-functions.d.ts","sourceRoot":"","sources":["../../src/utils/aggregate-state-functions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGL,KAAK,8BAA8B,EACpC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrD,eAAO,MAAM,yBAAyB,kKAAqC,CAAC;AAE5E,MAAM,MAAM,sBAAsB,GAAG,8BAA8B,CAAC;AAYpE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAExF;AAED,sFAAsF;AACtF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAOnH;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAElG;AAED,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAErF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,eAAe,CAAC,GAAG,OAAO,CAI/G"}
@@ -11,27 +11,13 @@
11
11
  * cannot read back from the column type. The name is interpolated into SQL, so
12
12
  * it must come from this list.
13
13
  */
14
- export const AGGREGATE_STATE_FUNCTIONS = [
15
- 'uniq',
16
- 'uniqExact',
17
- 'uniqCombined',
18
- 'uniqCombined64',
19
- 'uniqHLL12',
20
- 'uniqTheta',
21
- 'count',
22
- 'sum',
23
- 'avg',
24
- 'min',
25
- 'max',
26
- 'any',
27
- 'anyLast',
28
- 'groupBitmap',
29
- ];
14
+ import { PROTOCOL_AGGREGATE_STATE_FUNCTIONS, PROTOCOL_APPROXIMATE_STATE_FUNCTIONS, } from '@hypequery/protocol';
15
+ // One list, shared with the deployment contract (RFC 0022), so what can be
16
+ // authored is exactly what can be published.
17
+ export const AGGREGATE_STATE_FUNCTIONS = PROTOCOL_AGGREGATE_STATE_FUNCTIONS;
30
18
  const STATE_FUNCTIONS = new Set(AGGREGATE_STATE_FUNCTIONS);
31
19
  /** States whose merged value is an estimate. */
32
- const APPROXIMATE_STATE_FUNCTIONS = new Set([
33
- 'uniq', 'uniqCombined', 'uniqCombined64', 'uniqHLL12', 'uniqTheta',
34
- ]);
20
+ const APPROXIMATE_STATE_FUNCTIONS = new Set(PROTOCOL_APPROXIMATE_STATE_FUNCTIONS);
35
21
  /** States whose merged value is a count: 0, not NULL, over an empty population. */
36
22
  const COUNT_STATE_FUNCTIONS = new Set([
37
23
  'uniq', 'uniqExact', 'uniqCombined', 'uniqCombined64', 'uniqHLL12', 'uniqTheta', 'count', 'groupBitmap',
@@ -2,7 +2,7 @@ import { validateShiftMeasures } from './shift-measure-validation.js';
2
2
  import { escapeRegExp, isSafeSQLIdentifier, stripSqlLiterals } from '../sql-utils.js';
3
3
  import { clickhouseDatasetSqlDialect } from './clickhouse-dataset-sql-dialect.js';
4
4
  import { rawSqlErrorMessage } from './raw-sql-dialect-check.js';
5
- import { SEMANTIC_FILTER_OPERATORS, isSemanticFilterOperator } from '../constants.js';
5
+ import { SEMANTIC_FILTER_OPERATORS, SEMANTIC_NULL_CHECK_OPERATORS, isSemanticFilterOperator } from '../constants.js';
6
6
  import { validateDerivedMeasures } from './derived-measure-validation.js';
7
7
  import { isDerivedMeasure, isWindowMeasure, isShiftMeasure } from './dataset-measures.js';
8
8
  import { validateWindowMeasures } from './window-measure-validation.js';
@@ -104,7 +104,7 @@ function validateDimensions(datasetName, dimensions) {
104
104
  function assertSemanticOperator(datasetName, operator, context) {
105
105
  if (!isSemanticFilterOperator(operator)) {
106
106
  fail(datasetName, `${context} uses unsupported operator "${String(operator)}". ` +
107
- `Supported: ${SEMANTIC_FILTER_OPERATORS.join(', ')}.`);
107
+ `Supported: ${[...SEMANTIC_FILTER_OPERATORS, ...SEMANTIC_NULL_CHECK_OPERATORS].join(', ')}.`);
108
108
  }
109
109
  }
110
110
  /**
@@ -1,15 +1,19 @@
1
- import type { DatasetInstance, DimensionDefinition, MetricFilter, MetricFilterOperator, RelationshipDefinition, SemanticFilterDefinition, SemanticFiltersDefinition } from '../types.js';
1
+ import type { DatasetInstance, DimensionDefinition, MetricFilter, MetricFilterOperator, MetricValueFilterOperator, RelationshipDefinition, SemanticFilterDefinition, SemanticFiltersDefinition } from '../types.js';
2
2
  /** The generated allowlist mirrors normalizeFilters; explicit maps replace it. */
3
3
  export type NormalizedDatasetFilters<TDimensions extends Record<string, DimensionDefinition>, TFilters extends SemanticFiltersDefinition | undefined> = TFilters extends SemanticFiltersDefinition ? TFilters : {
4
4
  [K in keyof TDimensions as TDimensions[K] extends {
5
5
  filterable: false;
6
- } ? never : K]: SemanticFilterDefinition & {
6
+ } ? never : K]: Omit<SemanticFilterDefinition, 'operators'> & {
7
7
  field: K & string;
8
+ /** Generated filters list no operators, so they admit no null checks (RFC 0023). */
9
+ operators?: undefined;
8
10
  };
9
11
  };
10
12
  type FilterOperators<TDefinition> = TDefinition extends {
11
13
  operators: readonly (infer TOperator extends MetricFilterOperator)[];
12
- } ? TOperator : MetricFilterOperator;
14
+ } ? TOperator : TDefinition extends {
15
+ operators?: infer TList;
16
+ } ? [NonNullable<TList>] extends [never] ? MetricValueFilterOperator : MetricFilterOperator : MetricValueFilterOperator;
13
17
  type LocalFilterFor<TFilters extends SemanticFiltersDefinition> = {
14
18
  [K in keyof TFilters & string]: K extends `${string}.${string}` ? never : MetricFilter<K, unknown, FilterOperators<TFilters[K]>>;
15
19
  }[keyof TFilters & string];
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-filter-types.d.ts","sourceRoot":"","sources":["../../src/utils/dataset-filter-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AAErB,kFAAkF;AAClF,MAAM,MAAM,wBAAwB,CAClC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACvD,QAAQ,SAAS,yBAAyB,GAAG,SAAS,IACpD,QAAQ,SAAS,yBAAyB,GAAG,QAAQ,GAAG;KACzD,CAAC,IAAI,MAAM,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,SAAS;QAAE,UAAU,EAAE,KAAK,CAAA;KAAE,GAAG,KAAK,GAAG,CAAC,GAAG,wBAAwB,GAAG;QAC/G,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;KACnB;CACF,CAAC;AAEF,KAAK,eAAe,CAAC,WAAW,IAAI,WAAW,SAAS;IACtD,SAAS,EAAE,SAAS,CAAC,MAAM,SAAS,SAAS,oBAAoB,CAAC,EAAE,CAAC;CACtE,GAAG,SAAS,GAAG,oBAAoB,CAAC;AAErC,KAAK,cAAc,CAAC,QAAQ,SAAS,yBAAyB,IAAI;KAC/D,CAAC,IAAI,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAC3D,KAAK,GACL,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC;AAE3B,KAAK,qBAAqB,CAAC,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,IAAI;KACzF,CAAC,IAAI,MAAM,cAAc,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,sBAAsB,CAAC,MAAM,OAAO,EAAE,MAAM,KAAK,CAAC,GAC9G,KAAK,SAAS,SAAS,GAAG,KAAK,GAC7B,OAAO,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACjD;SACC,CAAC,IAAI,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,GACnE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK,GACpD,CAAC,SAAS,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GACtC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC1E,KAAK;KACd,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,GAChE,KAAK,GACT,KAAK;CACV,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC;AAEjC,sFAAsF;AACtF,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAC7E,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GACnC,qBAAqB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAErD,wFAAwF;AACxF,MAAM,MAAM,kBAAkB,CAAC,QAAQ,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IACjF,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"dataset-filter-types.d.ts","sourceRoot":"","sources":["../../src/utils/dataset-filter-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-query-validation.d.ts","sourceRoot":"","sources":["../../src/utils/dataset-query-validation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAoB9E,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,gBAAgB,CAqLlB"}
1
+ {"version":3,"file":"dataset-query-validation.d.ts","sourceRoot":"","sources":["../../src/utils/dataset-query-validation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAsB9E,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,gBAAgB,CAqLlB"}
@@ -9,6 +9,8 @@ import { getRuntimeTenantPredicate, validateTenantRuntime, } from './tenant-runt
9
9
  import { isQualifiedField, resolveQualifiedField, } from './relationship-fields.js';
10
10
  import { validateQualifiedFilter, validateRelationshipTenantRuntime, } from './relationship-validation.js';
11
11
  import { segmentSelectionErrors } from './segments.js';
12
+ import { filterAllowsOperator } from './filter-operator-policy.js';
13
+ import { SEMANTIC_FILTER_OPERATORS } from '../constants.js';
12
14
  import { enforcedConstraintErrors } from './enforced-constraints.js';
13
15
  import { analyzeTimeMeasureAxis } from './time-measure-axis.js';
14
16
  import { datasetHavingErrors } from './dataset-having.js';
@@ -99,8 +101,8 @@ export function validateDatasetQueryInput(dataset, query, context) {
99
101
  continue;
100
102
  }
101
103
  const filterDefinition = ds.filters[filter.field];
102
- if (filterDefinition?.operators && !filterDefinition.operators.includes(filter.operator)) {
103
- errors.push(`Filter "${filter.field}" does not allow operator "${filter.operator}". Allowed: ${filterDefinition.operators.join(', ')}`);
104
+ if (!filterAllowsOperator(filterDefinition, filter.operator)) {
105
+ errors.push(`Filter "${filter.field}" does not allow operator "${filter.operator}". Allowed: ${(filterDefinition?.operators ?? SEMANTIC_FILTER_OPERATORS).join(', ')}`);
104
106
  continue;
105
107
  }
106
108
  const resolvedField = ds.filters[filter.field]?.field ?? filter.field;
@@ -1 +1 @@
1
- {"version":3,"file":"enforced-constraints.d.ts","sourceRoot":"","sources":["../../src/utils/enforced-constraints.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAKtF,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAiB3C;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CAaV;AAED,yEAAyE;AACzE,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAGlG"}
1
+ {"version":3,"file":"enforced-constraints.d.ts","sourceRoot":"","sources":["../../src/utils/enforced-constraints.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAMtF,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAiB3C;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CAaV;AAED,yEAAyE;AACzE,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAGlG"}
@@ -1,5 +1,6 @@
1
1
  import { isSemanticFilterOperator } from '../constants.js';
2
2
  import { validateFilterValue } from '../validation.js';
3
+ import { filterAllowsOperator } from './filter-operator-policy.js';
3
4
  import { isQualifiedField, resolveQualifiedField } from './relationship-fields.js';
4
5
  import { validateQualifiedFilter } from './relationship-validation.js';
5
6
  /** Constraints are policy, not queries; a handful per call is plenty (RFC 0019). */
@@ -18,7 +19,7 @@ function constraintError(ds, constraint, context) {
18
19
  if (!Object.hasOwn(ds.filters, filter.field))
19
20
  return true;
20
21
  const definition = ds.filters[filter.field];
21
- if (definition.operators && !definition.operators.includes(filter.operator))
22
+ if (!filterAllowsOperator(definition, filter.operator))
22
23
  return true;
23
24
  const fieldType = ds.dimensions[definition.field ?? filter.field]?.fieldType;
24
25
  return !!fieldType && validateFilterValue(filter, fieldType) !== null;
@@ -1,3 +1,3 @@
1
- import type { MetricFilter, MetricFilterOperator } from '../types.js';
2
- export declare function createFilter<const TField extends string, const TValue, TOperator extends MetricFilterOperator>(field: TField, operator: TOperator, value: TValue): MetricFilter<TField, TValue, TOperator>;
1
+ import type { MetricFilter, MetricValueFilterOperator } from '../types.js';
2
+ export declare function createFilter<const TField extends string, const TValue, TOperator extends MetricValueFilterOperator>(field: TField, operator: TOperator, value: TValue): MetricFilter<TField, TValue, TOperator>;
3
3
  //# sourceMappingURL=filter-definition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-definition.d.ts","sourceRoot":"","sources":["../../src/utils/filter-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEtE,wBAAgB,YAAY,CAC1B,KAAK,CAAC,MAAM,SAAS,MAAM,EAC3B,KAAK,CAAC,MAAM,EACZ,SAAS,SAAS,oBAAoB,EACtC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAE5F"}
1
+ {"version":3,"file":"filter-definition.d.ts","sourceRoot":"","sources":["../../src/utils/filter-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE3E,wBAAgB,YAAY,CAC1B,KAAK,CAAC,MAAM,SAAS,MAAM,EAC3B,KAAK,CAAC,MAAM,EACZ,SAAS,SAAS,yBAAyB,EAC3C,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAE5F"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Whether a caller filter may apply `operator` under a filter definition.
3
+ *
4
+ * An explicit `operators` list is the whole policy. Without one, every value
5
+ * operator is allowed but the null checks are not: they are opt-in (RFC 0023),
6
+ * so adding them left every existing published operator list unchanged.
7
+ */
8
+ export declare function filterAllowsOperator(definition: {
9
+ readonly operators?: readonly string[];
10
+ } | undefined, operator: string): boolean;
11
+ //# sourceMappingURL=filter-operator-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-operator-policy.d.ts","sourceRoot":"","sources":["../../src/utils/filter-operator-policy.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,EAClE,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT"}
@@ -0,0 +1,13 @@
1
+ import { isNullCheckFilterOperator } from '../constants.js';
2
+ /**
3
+ * Whether a caller filter may apply `operator` under a filter definition.
4
+ *
5
+ * An explicit `operators` list is the whole policy. Without one, every value
6
+ * operator is allowed but the null checks are not: they are opt-in (RFC 0023),
7
+ * so adding them left every existing published operator list unchanged.
8
+ */
9
+ export function filterAllowsOperator(definition, operator) {
10
+ return definition?.operators
11
+ ? definition.operators.includes(operator)
12
+ : !isNullCheckFilterOperator(operator);
13
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"filtered-aggregation-sql.d.ts","sourceRoot":"","sources":["../../src/utils/filtered-aggregation-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAgB,MAAM,aAAa,CAAC;AAErF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,KAAK,YAAY,GAAG,kBAAkB,CAAC;AA6CvC,wBAAgB,kCAAkC,CAChD,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,0BAA0B,GAAG,SAAS,EAC/C,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAmCR"}
1
+ {"version":3,"file":"filtered-aggregation-sql.d.ts","sourceRoot":"","sources":["../../src/utils/filtered-aggregation-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAgB,MAAM,aAAa,CAAC;AAErF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,KAAK,YAAY,GAAG,kBAAkB,CAAC;AAiDvC,wBAAgB,kCAAkC,CAChD,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,0BAA0B,GAAG,SAAS,EAC/C,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAmCR"}
@@ -31,6 +31,10 @@ function renderMeasureFilterCondition(ds, filter, joinCtx, dialect) {
31
31
  }
32
32
  return `${field} BETWEEN ${literal(filter.value[0])} AND ${literal(filter.value[1])}`;
33
33
  }
34
+ case 'isNull':
35
+ return `${field} IS NULL`;
36
+ case 'isNotNull':
37
+ return `${field} IS NOT NULL`;
34
38
  }
35
39
  }
36
40
  export function applyFilteredAggregationExpression(ds, spec, fieldOrExpr, joinCtx, dialect) {
@@ -1 +1 @@
1
- {"version":3,"file":"metric-query-validation.d.ts","sourceRoot":"","sources":["../../src/utils/metric-query-validation.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAI9E,OAAO,EAAsD,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQ3G,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,gBAAgB,GACzB,gBAAgB,CAuIlB"}
1
+ {"version":3,"file":"metric-query-validation.d.ts","sourceRoot":"","sources":["../../src/utils/metric-query-validation.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAI9E,OAAO,EAAsD,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAU3G,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,gBAAgB,GACzB,gBAAgB,CAuIlB"}
@@ -11,6 +11,8 @@ import { validateQualifiedFilter, validateRelationshipTenantRuntime } from './re
11
11
  import { segmentSelectionErrors } from './segments.js';
12
12
  import { datasetOnTimeKey, selectedTimeKeyError } from './dataset-time-keys.js';
13
13
  import { enforcedConstraintErrors } from './enforced-constraints.js';
14
+ import { filterAllowsOperator } from './filter-operator-policy.js';
15
+ import { SEMANTIC_FILTER_OPERATORS } from '../constants.js';
14
16
  export function validateMetricQueryInput(metric, query, context) {
15
17
  const errors = [...semanticQuerySyntaxErrors(query), ...protocolMetricCapabilityErrors(metric, query), ...queryTimezoneErrors(query.timezone)];
16
18
  const ref = getMetricRef(metric);
@@ -71,8 +73,8 @@ export function validateMetricQueryInput(metric, query, context) {
71
73
  continue;
72
74
  }
73
75
  const filterDefinition = ds.filters[filter.field];
74
- if (filterDefinition?.operators && !filterDefinition.operators.includes(filter.operator)) {
75
- errors.push(`Filter "${filter.field}" does not allow operator "${filter.operator}". Allowed: ${filterDefinition.operators.join(', ')}`);
76
+ if (!filterAllowsOperator(filterDefinition, filter.operator)) {
77
+ errors.push(`Filter "${filter.field}" does not allow operator "${filter.operator}". Allowed: ${(filterDefinition?.operators ?? SEMANTIC_FILTER_OPERATORS).join(', ')}`);
76
78
  continue;
77
79
  }
78
80
  const resolvedField = ds.filters[filter.field]?.field ?? filter.field;
@@ -4,12 +4,15 @@
4
4
  * `approxCountDistinct` runs locally, but it is an expression extension 2 and
5
5
  * deployment contract 3 feature (RFC 0015). Publishing emits contract 2 until
6
6
  * it can emit contract 3, so it refuses the measure with an error naming it.
7
- * `merge` reads ClickHouse aggregate-state columns and has no contract form.
7
+ * `merge` is a deployment measure with its state function (RFC 0022), but the
8
+ * expression grammar has no merge aggregate, so a metric over one is refused.
8
9
  */
9
- import type { ProtocolAggregation } from '@hypequery/protocol';
10
+ import type { ProtocolAggregation, ProtocolDatasetMeasure } from '@hypequery/protocol';
10
11
  import type { AggregationType } from '../types.js';
11
12
  type PortableAggregation = Exclude<ProtocolAggregation, 'approxCountDistinct'>;
12
- /** Returns `aggregation` when publishing can carry it; otherwise throws naming `owner`. */
13
+ /** A dataset measure's aggregation as the contract carries it; otherwise throws naming `owner`. */
14
+ export declare function requirePublishableMeasureAggregation(aggregation: AggregationType, owner: string): ProtocolDatasetMeasure['aggregation'];
15
+ /** Returns `aggregation` when an expression can carry it; otherwise throws naming `owner`. */
13
16
  export declare function requirePortableAggregation(aggregation: AggregationType, owner: string): PortableAggregation;
14
17
  export {};
15
18
  //# sourceMappingURL=portable-aggregations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"portable-aggregations.d.ts","sourceRoot":"","sources":["../../src/utils/portable-aggregations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AAE/E,2FAA2F;AAC3F,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,eAAe,EAC5B,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAcrB"}
1
+ {"version":3,"file":"portable-aggregations.d.ts","sourceRoot":"","sources":["../../src/utils/portable-aggregations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AAc/E,mGAAmG;AACnG,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,eAAe,EAC5B,KAAK,EAAE,MAAM,GACZ,sBAAsB,CAAC,aAAa,CAAC,CAGvC;AAED,8FAA8F;AAC9F,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,eAAe,EAC5B,KAAK,EAAE,MAAM,GACZ,mBAAmB,CASrB"}
@@ -4,17 +4,26 @@
4
4
  * `approxCountDistinct` runs locally, but it is an expression extension 2 and
5
5
  * deployment contract 3 feature (RFC 0015). Publishing emits contract 2 until
6
6
  * it can emit contract 3, so it refuses the measure with an error naming it.
7
- * `merge` reads ClickHouse aggregate-state columns and has no contract form.
7
+ * `merge` is a deployment measure with its state function (RFC 0022), but the
8
+ * expression grammar has no merge aggregate, so a metric over one is refused.
8
9
  */
9
- /** Returns `aggregation` when publishing can carry it; otherwise throws naming `owner`. */
10
- export function requirePortableAggregation(aggregation, owner) {
11
- if (aggregation === 'merge') {
12
- throw new Error(`${owner} uses merge, which cannot be published: the deployment contract has no aggregate-state ` +
13
- 'measures. Use it for local queries only.');
14
- }
10
+ function refuseApproximate(aggregation, owner) {
15
11
  if (aggregation === 'approxCountDistinct') {
16
12
  throw new Error(`${owner} uses approxCountDistinct, which cannot be published yet: approximate aggregations ` +
17
13
  'need deployment contract 3 (RFC 0015). Use it for local queries, or publish countDistinct instead.');
18
14
  }
15
+ }
16
+ /** A dataset measure's aggregation as the contract carries it; otherwise throws naming `owner`. */
17
+ export function requirePublishableMeasureAggregation(aggregation, owner) {
18
+ refuseApproximate(aggregation, owner);
19
+ return aggregation;
20
+ }
21
+ /** Returns `aggregation` when an expression can carry it; otherwise throws naming `owner`. */
22
+ export function requirePortableAggregation(aggregation, owner) {
23
+ if (aggregation === 'merge') {
24
+ throw new Error(`${owner} uses merge, which a published metric cannot express: the expression grammar has no ` +
25
+ 'aggregate-state merge. Publish the merge measure itself and query it, or use it for local queries only.');
26
+ }
27
+ refuseApproximate(aggregation, owner);
19
28
  return aggregation;
20
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-metric-expressions.d.ts","sourceRoot":"","sources":["../../src/utils/protocol-metric-expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEgB,KAAK,kBAAkB,EAAE,KAAK,wBAAwB,EAC5E,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAuC9G,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,CAgBzE;AAsDD,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,wBAAwB,GAAG,kBAAkB,CAEjG;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,wBAAwB,GAAG,kBAAkB,CAExG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB,CAQ9F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,wBAAwB,CASlF"}
1
+ {"version":3,"file":"protocol-metric-expressions.d.ts","sourceRoot":"","sources":["../../src/utils/protocol-metric-expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEgB,KAAK,kBAAkB,EAAE,KAAK,wBAAwB,EAC5E,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAuC9G,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,CAoBzE;AAsDD,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,wBAAwB,GAAG,kBAAkB,CAEjG;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,wBAAwB,GAAG,kBAAkB,CAExG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB,CAQ9F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,wBAAwB,CASlF"}
@@ -34,6 +34,10 @@ export function filterExpression(filter) {
34
34
  kind: 'reference',
35
35
  name: parseProtocolQualifiedIdentifier(filter.field),
36
36
  };
37
+ // A null check carries no right operand (RFC 0023).
38
+ if (filter.operator === 'isNull' || filter.operator === 'isNotNull') {
39
+ return { kind: 'comparison', operator: filter.operator, left };
40
+ }
37
41
  const right = {
38
42
  kind: 'literal',
39
43
  value: canonicalValue(filter.value),
@@ -3,7 +3,7 @@ import type { MetricFilter } from '../types.js';
3
3
  /**
4
4
  * A measure's fixed filters cross the contract boundary as RFC 0003
5
5
  * expressions. `protocol-adapter.ts` only ever emits `reference <op> literal`
6
- * for them, so this inverts exactly that shape and refuses anything else rather
6
+ * (or `reference isNull` / `isNotNull`) for them, so this inverts exactly that shape and refuses anything else rather
7
7
  * than partially interpreting an expression it cannot faithfully rebuild.
8
8
  */
9
9
  export declare function rehydrateMeasureFilter(expression: ProtocolExpression, unsupported: () => Error): MetricFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-rehydrate-filters.d.ts","sourceRoot":"","sources":["../../src/utils/protocol-rehydrate-filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,MAAM,KAAK,GACvB,YAAY,CASd"}
1
+ {"version":3,"file":"protocol-rehydrate-filters.d.ts","sourceRoot":"","sources":["../../src/utils/protocol-rehydrate-filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,MAAM,KAAK,GACvB,YAAY,CAcd"}
@@ -1,12 +1,18 @@
1
1
  /**
2
2
  * A measure's fixed filters cross the contract boundary as RFC 0003
3
3
  * expressions. `protocol-adapter.ts` only ever emits `reference <op> literal`
4
- * for them, so this inverts exactly that shape and refuses anything else rather
4
+ * (or `reference isNull` / `isNotNull`) for them, so this inverts exactly that shape and refuses anything else rather
5
5
  * than partially interpreting an expression it cannot faithfully rebuild.
6
6
  */
7
7
  export function rehydrateMeasureFilter(expression, unsupported) {
8
8
  if (expression.kind !== 'comparison')
9
9
  throw unsupported();
10
+ if (!('right' in expression)) {
11
+ // A null check (RFC 0023): `reference isNull`, with no value to unwrap.
12
+ if (expression.left.kind !== 'reference')
13
+ throw unsupported();
14
+ return { field: String(expression.left.name), operator: expression.operator };
15
+ }
10
16
  const { left, right, operator } = expression;
11
17
  if (left.kind !== 'reference' || right.kind !== 'literal')
12
18
  throw unsupported();
@@ -1 +1 @@
1
- {"version":3,"file":"query-timezone.d.ts","sourceRoot":"","sources":["../../src/utils/query-timezone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAM1F,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAS/D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CAG/D;AASD,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEtH;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAK9E;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GACtF,MAAM,CAER;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,sFAAsF;IACtF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;CACzC;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,EAAE,CAwCtB"}
1
+ {"version":3,"file":"query-timezone.d.ts","sourceRoot":"","sources":["../../src/utils/query-timezone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAM1F,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAS/D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CAG/D;AASD,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEtH;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAK9E;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GACtF,MAAM,CAER;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,sFAAsF;IACtF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;CACzC;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,EAAE,CA0CtB"}
@@ -69,7 +69,9 @@ export function queryTimeFilter(dialect, ds, filter, expression, timezone, optio
69
69
  ? queryTimeSql(dialect, expression, timezone)
70
70
  : expression;
71
71
  const local = { expression: localExpression, operator: filter.operator, value: filter.value };
72
- if (fieldType !== 'timestamp' || filter.operator === 'like')
72
+ // A null check has no value to read in any zone.
73
+ if (fieldType !== 'timestamp' || filter.operator === 'like'
74
+ || filter.operator === 'isNull' || filter.operator === 'isNotNull')
73
75
  return [local];
74
76
  const values = Array.isArray(filter.value) ? filter.value : [filter.value];
75
77
  const instants = values.map(parseTimestampInstant);
@@ -1 +1 @@
1
- {"version":3,"file":"relationship-validation.d.ts","sourceRoot":"","sources":["../../src/utils/relationship-validation.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACZ,MAAM,aAAa,CAAC;AAYrB,KAAK,iBAAiB,GAAG,IAAI,CAC3B,YAAY,GAAG,WAAW,EAC1B,YAAY,GAAG,SAAS,GAAG,SAAS,CACrC,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,GAAG,SAAS,CAqBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,GAAG,IAAI,CA4Bf"}
1
+ {"version":3,"file":"relationship-validation.d.ts","sourceRoot":"","sources":["../../src/utils/relationship-validation.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACZ,MAAM,aAAa,CAAC;AAYrB,KAAK,iBAAiB,GAAG,IAAI,CAC3B,YAAY,GAAG,WAAW,EAC1B,YAAY,GAAG,SAAS,GAAG,SAAS,CACrC,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,GAAG,SAAS,CAqBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,GAAG,IAAI,CA4Bf"}
@@ -1,4 +1,5 @@
1
1
  import { resolveRelationshipReference } from './relationship-measures.js';
2
+ import { filterAllowsOperator } from './filter-operator-policy.js';
2
3
  import { validateFilterValue } from '../validation.js';
3
4
  import { getRuntimeTenantPredicate, hasTenantRuntime, } from './tenant-runtime.js';
4
5
  import { runtimeConstraints } from './row-scope.js';
@@ -55,7 +56,7 @@ export function validateQualifiedFilter(ds, filter, context) {
55
56
  || definition.field !== targetDimensionName) {
56
57
  return `Filter "${filter.field}" is not exposed by target dataset "${target.name}".`;
57
58
  }
58
- if (definition.operators && !definition.operators.includes(filter.operator)) {
59
+ if (!filterAllowsOperator(definition, filter.operator)) {
59
60
  return `Filter "${filter.field}" does not allow operator "${filter.operator}".`;
60
61
  }
61
62
  return validateFilterValue(filter, targetDimension.fieldType);
@@ -1 +1 @@
1
- {"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../src/utils/segments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAM5G,UAAU,YAAY;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;CACpE;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,SAAS,GACtD,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAkCnC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,IAAI,CAQjG;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAiBvF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,YAAY,EAAE,CAE3G"}
1
+ {"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../src/utils/segments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAK5G,UAAU,YAAY;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;CACpE;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,SAAS,GACtD,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAqCnC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,IAAI,CAQjG;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAiBvF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,YAAY,EAAE,CAE3G"}
@@ -8,10 +8,9 @@
8
8
  * traverse a relationship or constrain the tenant column, which only trusted
9
9
  * runtime context scopes.
10
10
  */
11
- import { SEMANTIC_FILTER_OPERATORS } from '../constants.js';
11
+ import { isSemanticFilterOperator } from '../constants.js';
12
12
  import { validateFilterValue } from '../validation.js';
13
13
  const SEGMENT_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
14
- const OPERATORS = new Set(SEMANTIC_FILTER_OPERATORS);
15
14
  /** Throws when a declared segment is malformed; returns a frozen copy otherwise. */
16
15
  export function normalizeSegments(datasetName, owner, segments) {
17
16
  const fail = (name, message) => {
@@ -33,7 +32,7 @@ export function normalizeSegments(datasetName, owner, segments) {
33
32
  if (owner.tenantKey !== undefined && (column === owner.tenantKey || filter.field === owner.tenantKey)) {
34
33
  fail(name, `"${filter.field}" is the tenant column, which only runtime tenant scoping may constrain.`);
35
34
  }
36
- if (!OPERATORS.has(filter.operator))
35
+ if (!isSemanticFilterOperator(filter.operator))
37
36
  fail(name, `unsupported operator "${String(filter.operator)}".`);
38
37
  const valueError = validateFilterValue(filter, dimension.fieldType);
39
38
  if (valueError)
@@ -42,7 +41,10 @@ export function normalizeSegments(datasetName, owner, segments) {
42
41
  result.push([name, Object.freeze({
43
42
  filters: Object.freeze(segment.filters.map(filter => Object.freeze({
44
43
  ...filter,
45
- value: Array.isArray(filter.value) ? Object.freeze([...filter.value]) : filter.value,
44
+ // A null check (RFC 0023) has no value to copy.
45
+ ...(filter.value === undefined ? {} : {
46
+ value: Array.isArray(filter.value) ? Object.freeze([...filter.value]) : filter.value,
47
+ }),
46
48
  }))),
47
49
  ...(segment.label !== undefined ? { label: segment.label } : {}),
48
50
  ...(segment.description !== undefined ? { description: segment.description } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAgB9E;AAED,0FAA0F;AAC1F,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAG9E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAgBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CA6C7F"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAgB9E;AAED,0FAA0F;AAC1F,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAG9E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAgBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAsD7F"}
@@ -101,6 +101,15 @@ export function validateFilterValue(filter, fieldType) {
101
101
  return filter.value.every(value => matchesFieldType(fieldType, value))
102
102
  ? null
103
103
  : typeError(filter, fieldType, true);
104
+ case 'isNull':
105
+ case 'isNotNull': {
106
+ // Any field type may be NULL; the check itself takes no value (RFC 0023).
107
+ // Runtime input is untyped, so read the value the types say is absent.
108
+ const value = filter.value;
109
+ return value === undefined
110
+ ? null
111
+ : `"${filter.operator}" takes no value for field "${filter.field}"; omit "value".`;
112
+ }
104
113
  default:
105
114
  return `Unsupported semantic filter operator "${String(filter.operator)}".`;
106
115
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypequery/datasets",
3
- "version": "0.25.0",
3
+ "version": "0.27.0",
4
4
  "description": "Code-first TypeScript semantic layer for ClickHouse datasets, metrics, multi-tenancy, and AI agents",
5
5
  "keywords": [
6
6
  "semantic-layer",
@@ -55,7 +55,7 @@
55
55
  "!dist/**/type-tests/**"
56
56
  ],
57
57
  "dependencies": {
58
- "@hypequery/protocol": "^0.22.0",
58
+ "@hypequery/protocol": "^0.24.0",
59
59
  "@noble/hashes": "^2.4.0",
60
60
  "zod": "^4.6.6",
61
61
  "zod-to-json-schema": "^3.25.2"
@@ -73,7 +73,7 @@
73
73
  "typescript": "^6.0.3",
74
74
  "@vitest/coverage-v8": "^5.0.5",
75
75
  "vitest": "^5.0.5",
76
- "@hypequery/protocol-conformance": "^0.16.1"
76
+ "@hypequery/protocol-conformance": "^0.17.0"
77
77
  },
78
78
  "repository": {
79
79
  "type": "git",