@hypequery/datasets 0.23.1 → 0.25.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.
- package/README.md +14 -0
- package/dist/aggregations.d.ts +3 -0
- package/dist/aggregations.d.ts.map +1 -1
- package/dist/aggregations.js +6 -0
- package/dist/cache/definition-identity.d.ts +9 -6
- package/dist/cache/definition-identity.d.ts.map +1 -1
- package/dist/cache/definition-identity.js +14 -8
- package/dist/cache/protocol-cache-keys.d.ts.map +1 -1
- package/dist/cache/protocol-cache-keys.js +29 -6
- package/dist/cache/query-signature.d.ts.map +1 -1
- package/dist/cache/query-signature.js +12 -1
- package/dist/catalog.d.ts +7 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +5 -2
- package/dist/client-contract/query-schema.d.ts +19 -0
- package/dist/client-contract/query-schema.d.ts.map +1 -0
- package/dist/client-contract/query-schema.js +85 -0
- package/dist/constants.d.ts +5 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +7 -6
- package/dist/contract.d.ts +5 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +6 -3
- package/dist/dataset-compilation.d.ts +2 -0
- package/dist/dataset-compilation.d.ts.map +1 -1
- package/dist/dataset-sql-dialect.d.ts +119 -0
- package/dist/dataset-sql-dialect.d.ts.map +1 -1
- package/dist/dataset.d.ts +4 -2
- package/dist/dataset.d.ts.map +1 -1
- package/dist/dataset.js +23 -31
- package/dist/in-memory-backend.d.ts.map +1 -1
- package/dist/in-memory-backend.js +2 -0
- package/dist/index.d.ts +49 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -6
- package/dist/internal.d.ts +5 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +5 -1
- package/dist/measure.d.ts +9 -1
- package/dist/measure.d.ts.map +1 -1
- package/dist/measure.js +9 -1
- package/dist/metric-query-engine.d.ts +0 -1
- package/dist/metric-query-engine.d.ts.map +1 -1
- package/dist/metric-query-engine.js +11 -3
- package/dist/protocol-adapter.d.ts.map +1 -1
- package/dist/protocol-adapter.js +2 -3
- package/dist/protocol-deployment-adapter.d.ts.map +1 -1
- package/dist/protocol-deployment-adapter.js +7 -1
- package/dist/protocol-rehydrate.d.ts.map +1 -1
- package/dist/protocol-rehydrate.js +1 -0
- package/dist/protocol-schema-adapter.d.ts +7 -7
- package/dist/protocol-schema-adapter.d.ts.map +1 -1
- package/dist/protocol-schema-adapter.js +12 -245
- package/dist/query-builder-protocol.d.ts +34 -1
- package/dist/query-builder-protocol.d.ts.map +1 -1
- package/dist/query-planner.d.ts +14 -5
- package/dist/query-planner.d.ts.map +1 -1
- package/dist/query-planner.js +53 -34
- package/dist/relationship-check.d.ts.map +1 -1
- package/dist/relationship-check.js +8 -8
- package/dist/schemas.d.ts +17 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +16 -0
- package/dist/semantic-planner.d.ts.map +1 -1
- package/dist/semantic-planner.js +49 -13
- package/dist/semantic-query-schema.d.ts +8 -1
- package/dist/semantic-query-schema.d.ts.map +1 -1
- package/dist/semantic-query-schema.js +18 -12
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +4 -3
- package/dist/types.d.ts +105 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/aggregate-state-functions.d.ts +24 -0
- package/dist/utils/aggregate-state-functions.d.ts.map +1 -0
- package/dist/utils/aggregate-state-functions.js +60 -0
- package/dist/utils/approximate-measures.d.ts +3 -1
- package/dist/utils/approximate-measures.d.ts.map +1 -1
- package/dist/utils/approximate-measures.js +8 -2
- package/dist/utils/base-measure-definition.d.ts +16 -0
- package/dist/utils/base-measure-definition.d.ts.map +1 -1
- package/dist/utils/base-measure-definition.js +31 -0
- package/dist/utils/build-dataset-query-builder.d.ts +1 -1
- package/dist/utils/build-dataset-query-builder.d.ts.map +1 -1
- package/dist/utils/build-dataset-query-builder.js +26 -21
- package/dist/utils/by-name.d.ts +8 -0
- package/dist/utils/by-name.d.ts.map +1 -0
- package/dist/utils/by-name.js +44 -0
- package/dist/utils/calendar-shift-sql.d.ts +5 -4
- package/dist/utils/calendar-shift-sql.d.ts.map +1 -1
- package/dist/utils/calendar-shift-sql.js +8 -8
- package/dist/utils/clickhouse-dataset-sql-dialect.d.ts +2 -2
- package/dist/utils/clickhouse-dataset-sql-dialect.d.ts.map +1 -1
- package/dist/utils/clickhouse-dataset-sql-dialect.js +143 -1
- package/dist/utils/compile-dataset-query.d.ts +1 -1
- package/dist/utils/compile-dataset-query.d.ts.map +1 -1
- package/dist/utils/compile-dataset-query.js +22 -8
- package/dist/utils/composite-time-measure-sql.d.ts +3 -5
- package/dist/utils/composite-time-measure-sql.d.ts.map +1 -1
- package/dist/utils/composite-time-measure-sql.js +15 -16
- package/dist/utils/count-aggregations.d.ts +4 -0
- package/dist/utils/count-aggregations.d.ts.map +1 -0
- package/dist/utils/count-aggregations.js +6 -0
- package/dist/utils/dataset-definition-validation.d.ts +1 -1
- package/dist/utils/dataset-definition-validation.d.ts.map +1 -1
- package/dist/utils/dataset-definition-validation.js +55 -26
- package/dist/utils/dataset-derived-query.d.ts +2 -4
- package/dist/utils/dataset-derived-query.d.ts.map +1 -1
- package/dist/utils/dataset-derived-query.js +11 -14
- package/dist/utils/dataset-having.d.ts +5 -7
- package/dist/utils/dataset-having.d.ts.map +1 -1
- package/dist/utils/dataset-having.js +9 -12
- package/dist/utils/dataset-normalization.d.ts.map +1 -1
- package/dist/utils/dataset-normalization.js +1 -0
- package/dist/utils/dataset-query-validation.d.ts +1 -1
- package/dist/utils/dataset-query-validation.d.ts.map +1 -1
- package/dist/utils/dataset-query-validation.js +19 -2
- package/dist/utils/dataset-source.d.ts +42 -0
- package/dist/utils/dataset-source.d.ts.map +1 -0
- package/dist/utils/dataset-source.js +59 -0
- package/dist/utils/dataset-sql-dialect.d.ts +13 -2
- package/dist/utils/dataset-sql-dialect.d.ts.map +1 -1
- package/dist/utils/dataset-sql-dialect.js +74 -1
- package/dist/utils/dataset-time-keys.d.ts +32 -0
- package/dist/utils/dataset-time-keys.d.ts.map +1 -0
- package/dist/utils/dataset-time-keys.js +55 -0
- package/dist/utils/dataset-validation.d.ts.map +1 -1
- package/dist/utils/dataset-validation.js +7 -0
- package/dist/utils/deployable-formulas.d.ts +33 -0
- package/dist/utils/deployable-formulas.d.ts.map +1 -0
- package/dist/utils/deployable-formulas.js +102 -0
- package/dist/utils/derived-cte-validation.d.ts +5 -0
- package/dist/utils/derived-cte-validation.d.ts.map +1 -1
- package/dist/utils/derived-cte-validation.js +77 -8
- package/dist/utils/derived-measure-sql.d.ts +10 -2
- package/dist/utils/derived-measure-sql.d.ts.map +1 -1
- package/dist/utils/derived-measure-sql.js +23 -43
- package/dist/utils/enforced-constraints.d.ts +14 -0
- package/dist/utils/enforced-constraints.d.ts.map +1 -0
- package/dist/utils/enforced-constraints.js +57 -0
- package/dist/utils/filter-field-type.d.ts +14 -0
- package/dist/utils/filter-field-type.d.ts.map +1 -0
- package/dist/utils/filter-field-type.js +21 -0
- package/dist/utils/filtered-aggregation-sql.d.ts +2 -1
- package/dist/utils/filtered-aggregation-sql.d.ts.map +1 -1
- package/dist/utils/filtered-aggregation-sql.js +18 -35
- package/dist/utils/groupable.d.ts +7 -0
- package/dist/utils/groupable.d.ts.map +1 -0
- package/dist/utils/groupable.js +8 -0
- package/dist/utils/metric-derived-query.d.ts +2 -4
- package/dist/utils/metric-derived-query.d.ts.map +1 -1
- package/dist/utils/metric-derived-query.js +58 -51
- package/dist/utils/metric-query-builder.d.ts +1 -1
- package/dist/utils/metric-query-builder.d.ts.map +1 -1
- package/dist/utils/metric-query-builder.js +22 -20
- package/dist/utils/metric-query-validation.d.ts.map +1 -1
- package/dist/utils/metric-query-validation.js +14 -1
- package/dist/utils/portable-aggregations.d.ts +1 -0
- package/dist/utils/portable-aggregations.d.ts.map +1 -1
- package/dist/utils/portable-aggregations.js +5 -0
- package/dist/utils/protocol-schema-conversion.d.ts +12 -0
- package/dist/utils/protocol-schema-conversion.d.ts.map +1 -0
- package/dist/utils/protocol-schema-conversion.js +61 -0
- package/dist/utils/query-field-references.d.ts +10 -0
- package/dist/utils/query-field-references.d.ts.map +1 -0
- package/dist/utils/query-field-references.js +38 -0
- package/dist/utils/query-timezone.d.ts +41 -3
- package/dist/utils/query-timezone.d.ts.map +1 -1
- package/dist/utils/query-timezone.js +76 -9
- package/dist/utils/raw-sql-dialect-check.d.ts +12 -0
- package/dist/utils/raw-sql-dialect-check.d.ts.map +1 -0
- package/dist/utils/raw-sql-dialect-check.js +37 -0
- package/dist/utils/relationship-builder-plan.d.ts +37 -18
- package/dist/utils/relationship-builder-plan.d.ts.map +1 -1
- package/dist/utils/relationship-builder-plan.js +43 -28
- package/dist/utils/relationship-measure-sql.d.ts +14 -4
- package/dist/utils/relationship-measure-sql.d.ts.map +1 -1
- package/dist/utils/relationship-measure-sql.js +36 -10
- package/dist/utils/relationship-measures.d.ts.map +1 -1
- package/dist/utils/relationship-measures.js +3 -0
- package/dist/utils/relationship-validation.d.ts.map +1 -1
- package/dist/utils/relationship-validation.js +2 -0
- package/dist/utils/row-scope.d.ts +23 -0
- package/dist/utils/row-scope.d.ts.map +1 -0
- package/dist/utils/row-scope.js +26 -0
- package/dist/utils/scoped-dataset-source.d.ts +23 -0
- package/dist/utils/scoped-dataset-source.d.ts.map +1 -0
- package/dist/utils/scoped-dataset-source.js +34 -0
- package/dist/utils/semantic-tool.d.ts +2 -2
- package/dist/utils/semantic-tool.d.ts.map +1 -1
- package/dist/utils/semantic-tool.js +1 -1
- package/dist/utils/shift-measure-sql.d.ts +5 -4
- package/dist/utils/shift-measure-sql.d.ts.map +1 -1
- package/dist/utils/shift-measure-sql.js +25 -26
- package/dist/utils/shift-wall-time-sql.d.ts +2 -1
- package/dist/utils/shift-wall-time-sql.d.ts.map +1 -1
- package/dist/utils/shift-wall-time-sql.js +7 -7
- package/dist/utils/snapshot-execution-context.d.ts.map +1 -1
- package/dist/utils/snapshot-execution-context.js +3 -0
- package/dist/utils/statement-parameters.d.ts +58 -0
- package/dist/utils/statement-parameters.d.ts.map +1 -0
- package/dist/utils/statement-parameters.js +101 -0
- package/dist/utils/time-axis-calendar-guard.d.ts +2 -1
- package/dist/utils/time-axis-calendar-guard.d.ts.map +1 -1
- package/dist/utils/time-axis-calendar-guard.js +5 -7
- package/dist/utils/time-measure-axis-sql.d.ts +3 -2
- package/dist/utils/time-measure-axis-sql.d.ts.map +1 -1
- package/dist/utils/time-measure-axis-sql.js +20 -22
- package/dist/utils/time-measure-context-sql.d.ts +3 -2
- package/dist/utils/time-measure-context-sql.d.ts.map +1 -1
- package/dist/utils/time-measure-context-sql.js +11 -11
- package/dist/utils/time-measure-dataset-sql.d.ts +7 -5
- package/dist/utils/time-measure-dataset-sql.d.ts.map +1 -1
- package/dist/utils/time-measure-dataset-sql.js +17 -12
- package/dist/utils/time-measure-leaf-sql.d.ts +3 -2
- package/dist/utils/time-measure-leaf-sql.d.ts.map +1 -1
- package/dist/utils/time-measure-leaf-sql.js +19 -18
- package/dist/utils/time-measure-result-sql.d.ts.map +1 -1
- package/dist/utils/time-measure-result-sql.js +10 -11
- package/dist/utils/time-measure-source-sql.d.ts +5 -2
- package/dist/utils/time-measure-source-sql.d.ts.map +1 -1
- package/dist/utils/time-measure-source-sql.js +33 -23
- package/dist/utils/time-measure-values-sql.d.ts +4 -3
- package/dist/utils/time-measure-values-sql.d.ts.map +1 -1
- package/dist/utils/time-measure-values-sql.js +26 -29
- package/dist/utils/timestamp-instants.d.ts +17 -0
- package/dist/utils/timestamp-instants.d.ts.map +1 -0
- package/dist/utils/timestamp-instants.js +34 -0
- package/dist/utils/timestamp-text.d.ts +12 -0
- package/dist/utils/timestamp-text.d.ts.map +1 -0
- package/dist/utils/timestamp-text.js +18 -0
- package/dist/utils/zod-json-schema.d.ts +8 -0
- package/dist/utils/zod-json-schema.d.ts.map +1 -0
- package/dist/utils/zod-json-schema.js +18 -0
- package/dist/utils/zod-schema-version.d.ts +19 -0
- package/dist/utils/zod-schema-version.d.ts.map +1 -0
- package/dist/utils/zod-schema-version.js +6 -0
- package/dist/utils/zod-v3-protocol-schema.d.ts +10 -0
- package/dist/utils/zod-v3-protocol-schema.d.ts.map +1 -0
- package/dist/utils/zod-v3-protocol-schema.js +164 -0
- package/dist/utils/zod-v4-protocol-schema.d.ts +12 -0
- package/dist/utils/zod-v4-protocol-schema.d.ts.map +1 -0
- package/dist/utils/zod-v4-protocol-schema.js +171 -0
- package/dist/validation.d.ts +7 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +42 -8
- package/package.json +21 -12
- package/dist/api.type-test.d.ts +0 -2
- package/dist/api.type-test.d.ts.map +0 -1
- package/dist/api.type-test.js +0 -251
- package/dist/utils/time-arithmetic-sql.d.ts +0 -4
- package/dist/utils/time-arithmetic-sql.d.ts.map +0 -1
- package/dist/utils/time-arithmetic-sql.js +0 -9
- package/dist/utils/window-aggregation-sql.d.ts +0 -5
- package/dist/utils/window-aggregation-sql.d.ts.map +0 -1
- package/dist/utils/window-aggregation-sql.js +0 -17
package/dist/contract.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { windowCatalogMetadata } from './utils/window-catalog-metadata.js';
|
|
2
|
-
import { sha256 } from '@noble/hashes/sha2';
|
|
3
|
-
import { bytesToHex } from '@noble/hashes/utils';
|
|
2
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
3
|
+
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
4
4
|
import { getDatasetCatalogs, } from './catalog.js';
|
|
5
5
|
import { sortedRecord, uniqueSorted } from './utils/canonical-json.js';
|
|
6
6
|
import { snapshotSemanticMetadata } from './utils/semantic-metadata.js';
|
|
@@ -36,6 +36,7 @@ function datasetToContract(catalog, includeSql) {
|
|
|
36
36
|
...(catalog.description !== undefined ? { description: catalog.description } : {}),
|
|
37
37
|
...snapshotSemanticMetadata(catalog),
|
|
38
38
|
source: catalog.source,
|
|
39
|
+
...(catalog.rowResolution === undefined ? {} : { rowResolution: { ...catalog.rowResolution } }),
|
|
39
40
|
...(catalog.freshness !== undefined ? { freshness: { ...catalog.freshness } } : {}),
|
|
40
41
|
...(catalog.owner !== undefined ? { owner: catalog.owner } : {}),
|
|
41
42
|
...(catalog.defaults !== undefined
|
|
@@ -52,6 +53,7 @@ function datasetToContract(catalog, includeSql) {
|
|
|
52
53
|
: {}),
|
|
53
54
|
...(catalog.tenantKey !== undefined ? { tenantKey: catalog.tenantKey } : {}),
|
|
54
55
|
...(catalog.timeKey !== undefined ? { timeKey: catalog.timeKey } : {}),
|
|
56
|
+
...(catalog.timeKeys?.length ? { timeKeys: uniqueSorted(catalog.timeKeys) } : {}),
|
|
55
57
|
requiresTenant: catalog.requiresTenant,
|
|
56
58
|
supportedGrains: uniqueSorted(catalog.supportedGrains),
|
|
57
59
|
dimensions: sortedRecord(Object.entries(catalog.dimensions).map(([name, entry]) => [name, dimensionToContract(entry, includeSql)])),
|
|
@@ -103,6 +105,7 @@ function measureToContract(entry, includeSql) {
|
|
|
103
105
|
field: entry.field,
|
|
104
106
|
...(entry.argField !== undefined ? { argField: entry.argField } : {}),
|
|
105
107
|
...(entry.level !== undefined ? { level: entry.level } : {}),
|
|
108
|
+
...(entry.stateFunction !== undefined ? { stateFunction: entry.stateFunction } : {}),
|
|
106
109
|
...(includeSql && entry.sql !== undefined ? { sql: normalizeSql(entry.sql) } : {}),
|
|
107
110
|
...(entry.label !== undefined ? { label: entry.label } : {}),
|
|
108
111
|
...(entry.description !== undefined ? { description: entry.description } : {}),
|
|
@@ -159,7 +162,7 @@ export function contractToStableJson(contract) {
|
|
|
159
162
|
* `node:crypto` so the contract stays usable in browser/edge runtimes.
|
|
160
163
|
*/
|
|
161
164
|
export function hashContract(contract) {
|
|
162
|
-
return bytesToHex(sha256(contractToStableJson(contract)));
|
|
165
|
+
return bytesToHex(sha256(new TextEncoder().encode(contractToStableJson(contract))));
|
|
163
166
|
}
|
|
164
167
|
/** Normalizes SQL escape-hatch whitespace so equivalent SQL hashes identically. */
|
|
165
168
|
function normalizeSql(sql) {
|
|
@@ -24,6 +24,8 @@ export interface DatasetCompilationDescription {
|
|
|
24
24
|
}[];
|
|
25
25
|
readonly segments: readonly string[];
|
|
26
26
|
readonly by?: string;
|
|
27
|
+
/** The selected time axis, when the query names one. */
|
|
28
|
+
readonly timeKey?: string;
|
|
27
29
|
readonly timezone?: string;
|
|
28
30
|
readonly effectiveLimit?: number;
|
|
29
31
|
/** Includes the extra row used to determine pagination.hasMore. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-compilation.d.ts","sourceRoot":"","sources":["../src/dataset-compilation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,sFAAsF;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;CACzC;AAED,qFAAqF;AACrF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnF,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,mBAAmB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAClE,QAAQ,IAAI,6BAA6B,CAAC;IAC1C,gFAAgF;IAChF,MAAM,IAAI,6BAA6B,CAAC;CACzC"}
|
|
1
|
+
{"version":3,"file":"dataset-compilation.d.ts","sourceRoot":"","sources":["../src/dataset-compilation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,sFAAsF;AACtF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;CACzC;AAED,qFAAqF;AACrF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnF,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAmB,SAAQ,wBAAwB;IAClE,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,mBAAmB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAClE,QAAQ,IAAI,6BAA6B,CAAC;IAC1C,gFAAgF;IAChF,MAAM,IAAI,6BAA6B,CAAC;CACzC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { AggregationType, DimensionType, MeasureDefinition, TimeGrain } from './types.js';
|
|
2
|
+
import type { SemanticBinaryOperator, SemanticFunctionName } from './semantic-plan.js';
|
|
1
3
|
/**
|
|
2
4
|
* SQL rendering owned by the semantic datasets layer, separate from a query
|
|
3
5
|
* builder's compiler dialect. Extend this contract as emission sites migrate.
|
|
@@ -8,4 +10,121 @@ export interface DatasetSqlDialect {
|
|
|
8
10
|
/** Quote one output identifier; dots in a qualified semantic alias are literal. */
|
|
9
11
|
quoteIdentifier(identifier: string): string;
|
|
10
12
|
}
|
|
13
|
+
/** A formula binary operator, matching `SemanticExpression` `binary` nodes. */
|
|
14
|
+
export type DatasetSqlBinaryOperator = SemanticBinaryOperator;
|
|
15
|
+
/** The logical type of a bound value, when the planner knows it. */
|
|
16
|
+
export type DatasetSqlParameterType = DimensionType | {
|
|
17
|
+
readonly array: DimensionType;
|
|
18
|
+
};
|
|
19
|
+
/** A value bound into a statement, with its logical type when known. */
|
|
20
|
+
export interface DatasetSqlBoundParameter {
|
|
21
|
+
readonly value: unknown;
|
|
22
|
+
readonly type?: DatasetSqlParameterType;
|
|
23
|
+
}
|
|
24
|
+
/** Why a raw `sql` expression is not one safe expression under a dialect's lexical rules. */
|
|
25
|
+
export type DatasetRawSqlExpressionError = 'unterminated-literal' | 'statement-break';
|
|
26
|
+
/** A wall-clock component read from a zoned timestamp. */
|
|
27
|
+
export type DatasetSqlClockPart = 'Hour' | 'Minute' | 'Second';
|
|
28
|
+
/**
|
|
29
|
+
* Every engine-specific spelling the datasets planner emits outside the query
|
|
30
|
+
* builder. Arguments are already-rendered SQL expressions; implementations
|
|
31
|
+
* only spell them, so planning decisions stay shared across engines.
|
|
32
|
+
*
|
|
33
|
+
* Internal: engines implement the full rule set. The public
|
|
34
|
+
* `DatasetSqlDialect` hook may override a subset, which
|
|
35
|
+
* `resolveDatasetSqlDialect` merges onto the ClickHouse rules.
|
|
36
|
+
*/
|
|
37
|
+
export interface DatasetSqlDialectRules extends DatasetSqlDialect {
|
|
38
|
+
/** Spell the placeholder for the value at `index` in the rendered parameter array. */
|
|
39
|
+
placeholder(index: number, parameter: DatasetSqlBoundParameter): string;
|
|
40
|
+
/** A repeated value re-uses its placeholder (`$k`) rather than binding again. */
|
|
41
|
+
readonly reusesPlaceholders: boolean;
|
|
42
|
+
/** A builder's own positional `?` statement can be embedded verbatim. */
|
|
43
|
+
readonly embedsPositionalPieces: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* One ORDER BY term. Engines whose NULL placement differs from ClickHouse
|
|
46
|
+
* (NULLs last in both directions) add explicit `NULLS` clauses here so
|
|
47
|
+
* results order identically. No direction keeps the engine default (ASC).
|
|
48
|
+
*/
|
|
49
|
+
orderTerm(expression: string, direction?: 'ASC' | 'DESC'): string;
|
|
50
|
+
/**
|
|
51
|
+
* The trailing pagination clause, including its leading space, or ''.
|
|
52
|
+
* Engines that reject OFFSET without LIMIT supply a LIMIT here.
|
|
53
|
+
*/
|
|
54
|
+
paginate(limit: number | undefined, offset: number | undefined): string;
|
|
55
|
+
/** Quote a dotted physical source path (`analytics.orders`). */
|
|
56
|
+
quoteQualifiedName(name: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* A quoted table read with row-version resolution (ClickHouse `FINAL`), used
|
|
59
|
+
* for joined targets that declare `rowResolution`. Omit it on engines without such
|
|
60
|
+
* a modifier; those datasets are then refused instead of read unresolved.
|
|
61
|
+
*/
|
|
62
|
+
finalTable?(quotedSource: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Check that author-written raw `sql` is one expression under this engine's
|
|
65
|
+
* lexical rules: no terminator or comment hidden outside a literal. Engines
|
|
66
|
+
* differ (backslash escapes, `#` comments, triple-quoted strings), so an
|
|
67
|
+
* engine that cannot check its own raw SQL must reject it here rather than
|
|
68
|
+
* inherit another engine's rules.
|
|
69
|
+
*/
|
|
70
|
+
rawSqlExpressionError(sql: string): DatasetRawSqlExpressionError | undefined;
|
|
71
|
+
stringLiteral(value: string): string;
|
|
72
|
+
/** A literal compared against a column inside a measure filter. */
|
|
73
|
+
measureFilterLiteral(value: unknown): string;
|
|
74
|
+
/** Truncate a timestamp to the start of its grain bucket. */
|
|
75
|
+
truncateTime(time: string, grain: TimeGrain): string;
|
|
76
|
+
/** Truncate like `truncateTime`, returning a timestamp in the zone `timezone` evaluates to. */
|
|
77
|
+
truncateTimeInZone(time: string, grain: TimeGrain, timezone: string): string;
|
|
78
|
+
/** Move a timestamp forward by `amount` grains; `amount` may be an expression. */
|
|
79
|
+
addTime(time: string, amount: string | number, grain: TimeGrain): string;
|
|
80
|
+
/** Move a timestamp back by a literal number of grains. */
|
|
81
|
+
subtractTime(time: string, amount: number, grain: TimeGrain): string;
|
|
82
|
+
/** Whole grain boundaries crossed from `start` to `end`. */
|
|
83
|
+
timeDiff(grain: TimeGrain, start: string, end: string): string;
|
|
84
|
+
/** Convert a source time to the query timezone, a validated canonical IANA name. */
|
|
85
|
+
toQueryTimezone(time: string, timezone: string): string;
|
|
86
|
+
/** Parse a timestamp from a string expression, such as a bound placeholder, in the zone `timezone` evaluates to. */
|
|
87
|
+
parseTimestamp(value: string, timezone: string): string;
|
|
88
|
+
/** The timezone a zoned timestamp expression carries. */
|
|
89
|
+
timezoneOf(time: string): string;
|
|
90
|
+
/** One wall-clock component of a zoned timestamp. */
|
|
91
|
+
clockPart(part: DatasetSqlClockPart, time: string): string;
|
|
92
|
+
/** True when a value's physical type is a date without a time of day. */
|
|
93
|
+
isDateOnlyType(value: string): string;
|
|
94
|
+
/** Fail the statement with `message` when `condition` holds; evaluates to 0 otherwise. */
|
|
95
|
+
guard(condition: string, message: string): string;
|
|
96
|
+
ifElse(condition: string, then: string, otherwise: string): string;
|
|
97
|
+
greatest(...values: string[]): string;
|
|
98
|
+
least(...values: string[]): string;
|
|
99
|
+
/** NULL-safe equality. */
|
|
100
|
+
isNotDistinctFrom(left: string, right: string): string;
|
|
101
|
+
isNotNull(value: string): string;
|
|
102
|
+
/** Narrow a value the planner has already proven non-NULL. */
|
|
103
|
+
assumeNotNull(value: string): string;
|
|
104
|
+
/** Widen a value to a nullable type, so unmatched joins yield NULL. */
|
|
105
|
+
toNullable(value: string): string;
|
|
106
|
+
/** Count rows matching `condition`. */
|
|
107
|
+
countIf(condition: string): string;
|
|
108
|
+
/** Expand each row into `count` rows carrying the indices 0..count-1. */
|
|
109
|
+
seriesIndex(count: string): string;
|
|
110
|
+
/** True when `predicate`, which reads `index`, holds for some index in 0..count-1. */
|
|
111
|
+
anyIndex(index: string, count: string, predicate: string): string;
|
|
112
|
+
/** Pack expressions into one positional value, isolating their names. */
|
|
113
|
+
packRow(values: readonly string[]): string;
|
|
114
|
+
/** Read the 1-based `position` from a packed row. */
|
|
115
|
+
rowElement(row: string, position: number): string;
|
|
116
|
+
/** Every column of `relation` except `columns`. */
|
|
117
|
+
selectAllExcept(relation: string, columns: readonly string[]): string;
|
|
118
|
+
/** Join keyword matching each left row to the nearest preceding right row. */
|
|
119
|
+
readonly asofLeftJoin: string;
|
|
120
|
+
/** Wrap a filtered measure's input so non-matching rows contribute `fallback`. */
|
|
121
|
+
filteredAggregateInput(condition: string, value: string, fallback: '0' | 'NULL'): string;
|
|
122
|
+
/** A time-measure aggregate: NULL over an empty population unless it counts. */
|
|
123
|
+
windowAggregate(definition: MeasureDefinition, value: string, arg: string): string;
|
|
124
|
+
/** Re-aggregate partial results; NULL over an empty population. */
|
|
125
|
+
reaggregate(aggregation: AggregationType, value: string): string;
|
|
126
|
+
formulaLiteral(value: string | number | boolean | null): string;
|
|
127
|
+
formulaBinary(operator: DatasetSqlBinaryOperator, left: string, right: string): string;
|
|
128
|
+
formulaFunction(name: SemanticFunctionName, args: readonly string[]): string;
|
|
129
|
+
}
|
|
11
130
|
//# sourceMappingURL=dataset-sql-dialect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-sql-dialect.d.ts","sourceRoot":"","sources":["../src/dataset-sql-dialect.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7C"}
|
|
1
|
+
{"version":3,"file":"dataset-sql-dialect.d.ts","sourceRoot":"","sources":["../src/dataset-sql-dialect.ts"],"names":[],"mappings":"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"}
|
package/dist/dataset.d.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* source: "orders",
|
|
15
15
|
* tenantKey: "tenant_id",
|
|
16
16
|
* timeKey: "created_at",
|
|
17
|
+
* timeKeys: ["shipped_at"],
|
|
17
18
|
* dimensions: {
|
|
18
19
|
* id: dimension.string(),
|
|
19
20
|
* status: dimension.string({ label: "Order Status" }),
|
|
@@ -24,12 +25,13 @@
|
|
|
24
25
|
* orderCount: measure.count("id"),
|
|
25
26
|
* },
|
|
26
27
|
* relationships: {
|
|
27
|
-
* customer: belongsTo(() => Customers, { from: "
|
|
28
|
+
* customer: belongsTo(() => Customers, { from: "customer_id", to: "id" }),
|
|
28
29
|
* },
|
|
29
30
|
* });
|
|
30
31
|
* ```
|
|
31
32
|
*/
|
|
32
33
|
import type { NormalizedDatasetFilters } from './utils/dataset-filter-types.js';
|
|
33
34
|
import type { DatasetConfig, DatasetInstance, DatasetMeasureDefinition, DerivedMeasures, DimensionDefinition, RelationshipDefinition, SegmentDefinition, SemanticFiltersDefinition } from './types.js';
|
|
34
|
-
export declare function dataset<TDatasetName extends string, TDimensions extends Record<string, DimensionDefinition>, TDefinitions extends Record<string, DatasetMeasureDefinition> = {}, TRelationships extends Record<string, RelationshipDefinition> = Record<string, never>, const TSegments extends Record<string, SegmentDefinition> = {}, const TFilters extends SemanticFiltersDefinition | undefined = SemanticFiltersDefinition | undefined>(name: TDatasetName, config: DatasetConfig<TDimensions, TDefinitions, TRelationships, TSegments, TFilters>): DatasetInstance<TDimensions, TDefinitions, TRelationships, TDatasetName, DerivedMeasures<TDefinitions>, TSegments, NormalizedDatasetFilters<TDimensions, TFilters
|
|
35
|
+
export declare function dataset<TDatasetName extends string, TDimensions extends Record<string, DimensionDefinition>, TDefinitions extends Record<string, DatasetMeasureDefinition> = {}, TRelationships extends Record<string, RelationshipDefinition> = Record<string, never>, const TSegments extends Record<string, SegmentDefinition> = {}, const TFilters extends SemanticFiltersDefinition | undefined = SemanticFiltersDefinition | undefined, const TTimeKey extends string | undefined = undefined, const TTimeKeys extends readonly string[] = readonly []>(name: TDatasetName, config: DatasetConfig<TDimensions, TDefinitions, TRelationships, TSegments, TFilters, TTimeKey, TTimeKeys>): DatasetInstance<TDimensions, TDefinitions, TRelationships, TDatasetName, DerivedMeasures<TDefinitions>, TSegments, NormalizedDatasetFilters<TDimensions, TFilters>, TTimeKey, TTimeKeys[number]>;
|
|
36
|
+
export declare function dataset<TDatasetName extends string, TDimensions extends Record<string, DimensionDefinition>, TDefinitions extends Record<string, DatasetMeasureDefinition> = {}, TRelationships extends Record<string, RelationshipDefinition> = Record<string, never>, const TSegments extends Record<string, SegmentDefinition> = {}, const TFilters extends SemanticFiltersDefinition | undefined = SemanticFiltersDefinition | undefined, const TTimeKey extends string | undefined = string | undefined, const TTimeKeys extends readonly string[] = readonly string[]>(name: TDatasetName, config: DatasetConfig<TDimensions, TDefinitions, TRelationships, TSegments, TFilters, TTimeKey, TTimeKeys>): DatasetInstance<TDimensions, TDefinitions, TRelationships, TDatasetName, DerivedMeasures<TDefinitions>, TSegments, NormalizedDatasetFilters<TDimensions, TFilters>, TTimeKey, TTimeKeys[number]>;
|
|
35
37
|
//# sourceMappingURL=dataset.d.ts.map
|
package/dist/dataset.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,wBAAwB,EAExB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EAKtB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAwBpB,wBAAgB,OAAO,CACrB,YAAY,SAAS,MAAM,EAC3B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACvD,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,EAAE,EAClE,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrF,KAAK,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,EAC9D,KAAK,CAAC,QAAQ,SAAS,yBAAyB,GAAG,SAAS,GAAG,yBAAyB,GAAG,SAAS,EACpG,KAAK,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACrD,KAAK,CAAC,SAAS,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,EAEvD,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,GACzG,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAIpM,wBAAgB,OAAO,CACrB,YAAY,SAAS,MAAM,EAC3B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACvD,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,EAAE,EAClE,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrF,KAAK,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,EAC9D,KAAK,CAAC,QAAQ,SAAS,yBAAyB,GAAG,SAAS,GAAG,yBAAyB,GAAG,SAAS,EACpG,KAAK,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC9D,KAAK,CAAC,SAAS,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EAE7D,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,GACzG,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
package/dist/dataset.js
CHANGED
|
@@ -1,34 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* dataset() — creates a typed semantic model over a physical table.
|
|
3
|
-
*
|
|
4
|
-
* Relationships are modeled on the dataset. To-one relationships (`belongsTo`,
|
|
5
|
-
* `hasOne`) are queryable one hop deep as `<relationship>.<dimension>` and
|
|
6
|
-
* execute as LEFT JOINs; `hasMany` relationships remain metadata-only to avoid
|
|
7
|
-
* fan-out corrupting aggregates.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* import { dataset, dimension, measure, belongsTo } from '@hypequery/serve';
|
|
12
|
-
*
|
|
13
|
-
* const Orders = dataset("orders", {
|
|
14
|
-
* source: "orders",
|
|
15
|
-
* tenantKey: "tenant_id",
|
|
16
|
-
* timeKey: "created_at",
|
|
17
|
-
* dimensions: {
|
|
18
|
-
* id: dimension.string(),
|
|
19
|
-
* status: dimension.string({ label: "Order Status" }),
|
|
20
|
-
* createdAt: dimension.timestamp({ column: "created_at" }),
|
|
21
|
-
* },
|
|
22
|
-
* measures: {
|
|
23
|
-
* totalRevenue: measure.sum("amount", { label: "Total Revenue" }),
|
|
24
|
-
* orderCount: measure.count("id"),
|
|
25
|
-
* },
|
|
26
|
-
* relationships: {
|
|
27
|
-
* customer: belongsTo(() => Customers, { from: "customerId", to: "id" }),
|
|
28
|
-
* },
|
|
29
|
-
* });
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
1
|
+
import { validateProtocolRowResolution } from '@hypequery/protocol';
|
|
32
2
|
import { createDerivedMetricSpec, createMetricRef, isDerivedMetricConfig, } from './utils/dataset-metric-ref.js';
|
|
33
3
|
import { measureToAggregationSpec, normalizeDimensions, normalizeFilters, normalizeRelationships, } from './utils/dataset-normalization.js';
|
|
34
4
|
import { validateBaseMetric, validateDerivedMetric, } from './utils/dataset-validation.js';
|
|
@@ -71,6 +41,7 @@ export function dataset(name, config) {
|
|
|
71
41
|
__type: 'dataset',
|
|
72
42
|
name,
|
|
73
43
|
source: config.source,
|
|
44
|
+
...datasetRowResolution(name, config),
|
|
74
45
|
description: config.description,
|
|
75
46
|
...snapshotSemanticMetadata(config),
|
|
76
47
|
freshness: config.freshness === undefined ? undefined : { ...config.freshness },
|
|
@@ -81,6 +52,9 @@ export function dataset(name, config) {
|
|
|
81
52
|
},
|
|
82
53
|
tenantKey: config.tenantKey,
|
|
83
54
|
timeKey: config.timeKey,
|
|
55
|
+
...(config.timeKeys === undefined || config.timeKeys.length === 0
|
|
56
|
+
? {}
|
|
57
|
+
: { timeKeys: Object.freeze(config.timeKeys.filter(key => key !== config.timeKey)) }),
|
|
84
58
|
...(config.timeGrains === undefined ? {} : { timeGrains: Object.freeze([...config.timeGrains]) }),
|
|
85
59
|
dimensions,
|
|
86
60
|
measures,
|
|
@@ -94,3 +68,21 @@ export function dataset(name, config) {
|
|
|
94
68
|
};
|
|
95
69
|
return ds;
|
|
96
70
|
}
|
|
71
|
+
let warnedFinalDeprecated = false;
|
|
72
|
+
/**
|
|
73
|
+
* `rowResolution` on the instance, the one representation of row resolution.
|
|
74
|
+
* The deprecated `final: true` means `{ kind: 'final' }`; `final` stays on the
|
|
75
|
+
* instance, true whenever rows are resolved, for code that still reads it.
|
|
76
|
+
*/
|
|
77
|
+
function datasetRowResolution(name, config) {
|
|
78
|
+
if (config.rowResolution !== undefined)
|
|
79
|
+
return { final: true, rowResolution: validateProtocolRowResolution(config.rowResolution) };
|
|
80
|
+
if (!config.final)
|
|
81
|
+
return {};
|
|
82
|
+
if (!warnedFinalDeprecated) {
|
|
83
|
+
warnedFinalDeprecated = true;
|
|
84
|
+
console.warn(`[hypequery/datasets] Dataset "${name}": \`final: true\` is deprecated. `
|
|
85
|
+
+ "Use `rowResolution: { kind: 'final' }`, which also names the engine when needed.");
|
|
86
|
+
}
|
|
87
|
+
return { final: true, rowResolution: { kind: 'final' } };
|
|
88
|
+
}
|
|
@@ -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;
|
|
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"}
|
|
@@ -222,6 +222,8 @@ function aggregateRows(rows, aggregation) {
|
|
|
222
222
|
}
|
|
223
223
|
return percentileOf(numericValues(), aggregation.level);
|
|
224
224
|
}
|
|
225
|
+
case 'merge':
|
|
226
|
+
throw new Error(`Aggregation "merge" for "${aggregation.name}" reads stored aggregate states, which the in-memory backend cannot evaluate.`);
|
|
225
227
|
case 'stddev':
|
|
226
228
|
return Math.sqrt(sampleVarianceOf(numericValues()));
|
|
227
229
|
case 'variance':
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import * as schemas from './schemas.js';
|
|
1
2
|
export { dataset } from './dataset.js';
|
|
2
3
|
export { dimension } from './field.js';
|
|
3
4
|
export { measure } from './measure.js';
|
|
4
5
|
export { belongsTo, hasMany, hasOne } from './relationships.js';
|
|
5
6
|
export { checkRelationships } from './relationship-check.js';
|
|
6
7
|
export type { CheckRelationshipsOptions, CheckRelationshipsResult, RelationshipKeyIssue, } from './relationship-check.js';
|
|
7
|
-
export { sum, count, countDistinct, approxCountDistinct, avg, min, max, percentile, median, argMax, argMin, stddev, variance, } from './aggregations.js';
|
|
8
|
+
export { sum, count, countDistinct, approxCountDistinct, avg, min, max, percentile, median, argMax, argMin, stddev, variance, merge, } from './aggregations.js';
|
|
9
|
+
export { AGGREGATE_STATE_FUNCTIONS, type AggregateStateFunction } from './utils/aggregate-state-functions.js';
|
|
8
10
|
export { divide, multiply, subtract, add, nullIfZero, coalesce, round, floor, ceil, } from './formulas.js';
|
|
9
11
|
export { eq, neq, gt, gte, lt, lte, inList, notInList, between, like, asc, desc, filter, order, } from './query-helpers.js';
|
|
10
12
|
export { createDatasetRegistry } from './registry.js';
|
|
@@ -21,6 +23,7 @@ export { rehydrateProtocolDatasets, UNSUPPORTED_CONTRACT_REASONS, UnsupportedCon
|
|
|
21
23
|
export type { RehydratedDataset, RehydrateProtocolDatasetsOptions, UnsupportedContractReason, } from './protocol-rehydrate.js';
|
|
22
24
|
export { buildProtocolDatasetContract } from './protocol-adapter.js';
|
|
23
25
|
export { buildProtocolDeploymentContract } from './protocol-deployment-adapter.js';
|
|
26
|
+
export { assertDeployable } from './utils/deployable-formulas.js';
|
|
24
27
|
export type { BuildProtocolDeploymentContractOptions } from './protocol-deployment-adapter.js';
|
|
25
28
|
export { rehydrateProtocolDeploymentContract } from './protocol-rehydrate.js';
|
|
26
29
|
export type { BuildProtocolDatasetContractOptions } from './protocol-adapter.js';
|
|
@@ -31,9 +34,50 @@ export type { PortableSemanticBudget, PortableSemanticRuntime, PortableDatasetCo
|
|
|
31
34
|
export { compilePortableSqlExpression, DEFAULT_SQL_PORTABILITY_LIMITS, } from './sql-portability.js';
|
|
32
35
|
export type { SqlPortabilityIssue, SqlPortabilityIssueCode, SqlPortabilityLimits, SqlPortabilityOptions, SqlPortabilityResult, } from './sql-portability.js';
|
|
33
36
|
export type { SemanticContract, SerializeSemanticContractOptions, ContractDataset, ContractDimension, ContractMeasure, ContractMetric, ContractFilter, ContractRelationship, } from './contract.js';
|
|
34
|
-
|
|
35
|
-
export
|
|
36
|
-
|
|
37
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
38
|
+
export declare const generateDatasetTools: typeof schemas.generateDatasetTools;
|
|
39
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
40
|
+
export declare const toOpenAITools: typeof schemas.toOpenAITools;
|
|
41
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
42
|
+
export declare const toAISDKTools: typeof schemas.toAISDKTools;
|
|
43
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
44
|
+
export declare const toMcpTools: typeof schemas.toMcpTools;
|
|
45
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
46
|
+
export declare const buildDatasetInputSchema: typeof schemas.buildDatasetInputSchema;
|
|
47
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
48
|
+
export declare const buildMetricInputSchema: typeof schemas.buildMetricInputSchema;
|
|
49
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
50
|
+
export declare const buildCanonicalSemanticQuerySchemas: typeof schemas.buildCanonicalSemanticQuerySchemas;
|
|
51
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
52
|
+
export declare const toSemanticJsonSchema: typeof schemas.toSemanticJsonSchema;
|
|
53
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
54
|
+
export declare const DEFAULT_SEMANTIC_QUERY_SCHEMA_LIMITS: Readonly<{
|
|
55
|
+
maxResultSize: 10000;
|
|
56
|
+
maxOffset: 10000;
|
|
57
|
+
maxDimensions: 50;
|
|
58
|
+
maxMeasures: 50;
|
|
59
|
+
maxFilters: 100;
|
|
60
|
+
maxOrderBy: 50;
|
|
61
|
+
}>;
|
|
62
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
63
|
+
export declare const buildDatasetInputProtocolSchema: typeof schemas.buildDatasetInputProtocolSchema;
|
|
64
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
65
|
+
export declare const buildMetricInputProtocolSchema: typeof schemas.buildMetricInputProtocolSchema;
|
|
66
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
67
|
+
export declare const zodToProtocolSchema: typeof schemas.zodToProtocolSchema;
|
|
68
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
69
|
+
export declare const ProtocolSchemaAdapterError: typeof schemas.ProtocolSchemaAdapterError;
|
|
70
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
71
|
+
export type ProtocolSchemaAdapterError = schemas.ProtocolSchemaAdapterError;
|
|
72
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
73
|
+
export declare const buildClientContractQuerySchemas: typeof schemas.buildClientContractQuerySchemas;
|
|
74
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
75
|
+
export type CanonicalSemanticQuerySchemas = schemas.CanonicalSemanticQuerySchemas;
|
|
76
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
77
|
+
export type ClientContractQuerySchemas = schemas.ClientContractQuerySchemas;
|
|
78
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
79
|
+
export type ClientEndpointQuerySchema = schemas.ClientEndpointQuerySchema;
|
|
80
|
+
export type { SemanticMetricQueryContract, SemanticQuerySchemaLimits, SemanticQuerySchemaOptions, SemanticQuerySchemaSource, } from './semantic-query-schema.js';
|
|
37
81
|
export type { AISDKToolDefinition, DatasetToolAnalytics, DatasetToolMode, GenerateDatasetToolsOptions, JsonSchema, McpToolDefinition, OpenAIToolDefinition, SemanticToolDefinition, } from './tools.js';
|
|
38
82
|
export { createDatasetClient } from './executor.js';
|
|
39
83
|
export type { DatasetSqlDialect } from './dataset-sql-dialect.js';
|
|
@@ -50,8 +94,7 @@ export type { QueryBuilderLike, QueryBuilderFactoryLike, QueryBuilderFactoryComp
|
|
|
50
94
|
export { toQueryBuilderFactory } from './query-builder-protocol.js';
|
|
51
95
|
export { validateSQLIdentifier, isSafeSQLIdentifier, quoteSQLIdentifier } from './sql-utils.js';
|
|
52
96
|
export { GRAIN_FUNCTIONS, SEMANTIC_FILTER_OPERATORS, SEMANTIC_HAVING_OPERATORS, SUPPORTED_TIME_GRAINS } from './constants.js';
|
|
53
|
-
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, DatasetDefaults, DatasetFreshness, DatasetLimits, DatasetCachePolicy, SemanticMetadata, SemanticSensitivity, DatasetInstance, AnyDatasetInstance, BaseMetricConfig, DerivedMetricConfig, DatasetRegistryInstance, DatasetFieldNames, DatasetDimensionNames, DatasetQueryableDimensions, DatasetQueryableMeasures, DatasetMeasureNames, DatasetSegmentNames, DatasetOrderableNames, DatasetQueryFor, DatasetHavingCondition, DatasetHavingFor, DatasetHavingOperator, DatasetRow, DatasetRowFor, DatasetQueryResultFor, MetricQueryFor, MetricRow, MetricRowFor, MetricResultFor, KnownStringKeys, } from './types.js';
|
|
54
|
-
export { ProtocolSchemaAdapterError, zodToProtocolSchema } from './protocol-schema-adapter.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';
|
|
55
98
|
export type { DatasetCompilation, DatasetCompiledStatement, DatasetCompilationDescription, } from './dataset-compilation.js';
|
|
56
99
|
export { DATASET_EXECUTION_CAPABILITIES } from './execution-capabilities.js';
|
|
57
100
|
export type { DatasetFeature, DatasetFeatureSupport, DatasetExecutionCapabilities } from './execution-capabilities.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as schemas from './schemas.js';
|
|
1
2
|
// Dataset definition
|
|
2
3
|
export { dataset } from './dataset.js';
|
|
3
4
|
// Dimension helpers
|
|
@@ -8,7 +9,8 @@ export { measure } from './measure.js';
|
|
|
8
9
|
export { belongsTo, hasMany, hasOne } from './relationships.js';
|
|
9
10
|
export { checkRelationships } from './relationship-check.js';
|
|
10
11
|
// Aggregation helpers
|
|
11
|
-
export { sum, count, countDistinct, approxCountDistinct, avg, min, max, percentile, median, argMax, argMin, stddev, variance, } from './aggregations.js';
|
|
12
|
+
export { sum, count, countDistinct, approxCountDistinct, avg, min, max, percentile, median, argMax, argMin, stddev, variance, merge, } from './aggregations.js';
|
|
13
|
+
export { AGGREGATE_STATE_FUNCTIONS } from './utils/aggregate-state-functions.js';
|
|
12
14
|
// Formula helpers
|
|
13
15
|
export { divide, multiply, subtract, add, nullIfZero, coalesce, round, floor, ceil, } from './formulas.js';
|
|
14
16
|
// Semantic query helpers
|
|
@@ -28,16 +30,43 @@ export { serializeSemanticContract, contractToStableJson, hashContract, SEMANTIC
|
|
|
28
30
|
export { rehydrateProtocolDatasets, UNSUPPORTED_CONTRACT_REASONS, UnsupportedContractFeatureError, } from './protocol-rehydrate.js';
|
|
29
31
|
export { buildProtocolDatasetContract } from './protocol-adapter.js';
|
|
30
32
|
export { buildProtocolDeploymentContract } from './protocol-deployment-adapter.js';
|
|
33
|
+
export { assertDeployable } from './utils/deployable-formulas.js';
|
|
31
34
|
export { rehydrateProtocolDeploymentContract } from './protocol-rehydrate.js';
|
|
32
35
|
export { publishToCloud } from './cloud-publishing.js';
|
|
33
36
|
// Portable native execution of a semantic invocation (decision 0005).
|
|
34
37
|
export { createPortableSemanticExecutor, createPortableSemanticRuntime, PortableExecutionBudgetError, PortableExecutionTenantError, PortableExecutionUnsupportedError, } from './portable-executor.js';
|
|
35
38
|
// SQL portability compiler (R1A-07)
|
|
36
39
|
export { compilePortableSqlExpression, DEFAULT_SQL_PORTABILITY_LIMITS, } from './sql-portability.js';
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
export
|
|
40
|
+
// Zod-backed schemas and agent tools now live at `@hypequery/datasets/schemas`.
|
|
41
|
+
// These root re-exports remain for compatibility and are removed in 1.0.
|
|
42
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
43
|
+
export const generateDatasetTools = schemas.generateDatasetTools;
|
|
44
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
45
|
+
export const toOpenAITools = schemas.toOpenAITools;
|
|
46
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
47
|
+
export const toAISDKTools = schemas.toAISDKTools;
|
|
48
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
49
|
+
export const toMcpTools = schemas.toMcpTools;
|
|
50
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
51
|
+
export const buildDatasetInputSchema = schemas.buildDatasetInputSchema;
|
|
52
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
53
|
+
export const buildMetricInputSchema = schemas.buildMetricInputSchema;
|
|
54
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
55
|
+
export const buildCanonicalSemanticQuerySchemas = schemas.buildCanonicalSemanticQuerySchemas;
|
|
56
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
57
|
+
export const toSemanticJsonSchema = schemas.toSemanticJsonSchema;
|
|
58
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
59
|
+
export const DEFAULT_SEMANTIC_QUERY_SCHEMA_LIMITS = schemas.DEFAULT_SEMANTIC_QUERY_SCHEMA_LIMITS;
|
|
60
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
61
|
+
export const buildDatasetInputProtocolSchema = schemas.buildDatasetInputProtocolSchema;
|
|
62
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
63
|
+
export const buildMetricInputProtocolSchema = schemas.buildMetricInputProtocolSchema;
|
|
64
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
65
|
+
export const zodToProtocolSchema = schemas.zodToProtocolSchema;
|
|
66
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
67
|
+
export const ProtocolSchemaAdapterError = schemas.ProtocolSchemaAdapterError;
|
|
68
|
+
/** @deprecated Import from `@hypequery/datasets/schemas`; the root entry stops exporting it in 1.0. */
|
|
69
|
+
export const buildClientContractQuerySchemas = schemas.buildClientContractQuerySchemas;
|
|
41
70
|
// Dataset client
|
|
42
71
|
export { createDatasetClient } from './executor.js';
|
|
43
72
|
// Semantic query result cache
|
|
@@ -53,5 +82,4 @@ export { toQueryBuilderFactory } from './query-builder-protocol.js';
|
|
|
53
82
|
export { validateSQLIdentifier, isSafeSQLIdentifier, quoteSQLIdentifier } from './sql-utils.js';
|
|
54
83
|
// Constants
|
|
55
84
|
export { GRAIN_FUNCTIONS, SEMANTIC_FILTER_OPERATORS, SEMANTIC_HAVING_OPERATORS, SUPPORTED_TIME_GRAINS } from './constants.js';
|
|
56
|
-
export { ProtocolSchemaAdapterError, zodToProtocolSchema } from './protocol-schema-adapter.js';
|
|
57
85
|
export { DATASET_EXECUTION_CAPABILITIES } from './execution-capabilities.js';
|
package/dist/internal.d.ts
CHANGED
|
@@ -14,7 +14,8 @@ export type { InMemoryTable, InMemoryTables } from './in-memory-backend.js';
|
|
|
14
14
|
export type { PlanNode, SemanticBackend, SemanticBackendResult, SemanticExpression, SemanticAggregationPlan, SemanticDimensionPlan, SemanticGrainPlan, } from './semantic-plan.js';
|
|
15
15
|
export type { DatasetSqlDialect } from './dataset-sql-dialect.js';
|
|
16
16
|
export { clickhouseDatasetSqlDialect } from './utils/clickhouse-dataset-sql-dialect.js';
|
|
17
|
-
export { resolveDatasetSqlDialect } from './utils/dataset-sql-dialect.js';
|
|
17
|
+
export { defineDatasetSqlDialectRules, resolveDatasetSqlDialect } from './utils/dataset-sql-dialect.js';
|
|
18
|
+
export type { DatasetSqlDialectRules, DatasetSqlBoundParameter, DatasetSqlParameterType } from './dataset-sql-dialect.js';
|
|
18
19
|
export type { QueryBuilderLike, QueryBuilderFactoryLike } from './query-builder-protocol.js';
|
|
19
20
|
export type { ValidationResult } from './validation.js';
|
|
20
21
|
export { validateFilterValue, matchesFieldType } from './validation.js';
|
|
@@ -23,4 +24,7 @@ export { runDatasetQuery, buildDatasetQueryBuilder, validateDatasetQuery } from
|
|
|
23
24
|
export type { DatasetQueryExecutionOptions } from './dataset-query.js';
|
|
24
25
|
export { GRAIN_FUNCTIONS } from './constants.js';
|
|
25
26
|
export type { AnyDatasetInstance, DatasetQuery, DatasetQueryResult, } from './types.js';
|
|
27
|
+
export { queryFieldReferences } from './utils/query-field-references.js';
|
|
28
|
+
export { isZod4Schema } from './utils/zod-schema-version.js';
|
|
29
|
+
export type { AnyZodSchema } from './utils/zod-schema-version.js';
|
|
26
30
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EACV,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EACV,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACxG,YAAY,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC1H,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/internal.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
export { createDatasetClient, DatasetClientImpl, MetricQueryEngine } from './executor.js';
|
|
12
12
|
export { createInMemoryBackend } from './in-memory-backend.js';
|
|
13
13
|
export { clickhouseDatasetSqlDialect } from './utils/clickhouse-dataset-sql-dialect.js';
|
|
14
|
-
export { resolveDatasetSqlDialect } from './utils/dataset-sql-dialect.js';
|
|
14
|
+
export { defineDatasetSqlDialectRules, resolveDatasetSqlDialect } from './utils/dataset-sql-dialect.js';
|
|
15
15
|
export { validateFilterValue, matchesFieldType } from './validation.js';
|
|
16
16
|
// SQL utilities - used by serve for SQL generation
|
|
17
17
|
export { validateSQLIdentifier, isSafeSQLIdentifier, quoteSQLIdentifier } from './sql-utils.js';
|
|
@@ -19,3 +19,7 @@ export { validateSQLIdentifier, isSafeSQLIdentifier, quoteSQLIdentifier } from '
|
|
|
19
19
|
export { runDatasetQuery, buildDatasetQueryBuilder, validateDatasetQuery } from './dataset-query.js';
|
|
20
20
|
// Constants - used by serve
|
|
21
21
|
export { GRAIN_FUNCTIONS } from './constants.js';
|
|
22
|
+
// Query field references - used by serve to hold related fields to their dataset's policy
|
|
23
|
+
export { queryFieldReferences } from './utils/query-field-references.js';
|
|
24
|
+
// Zod major detection shared with serve, which accepts Zod 3 or Zod 4 schemas.
|
|
25
|
+
export { isZod4Schema } from './utils/zod-schema-version.js';
|
package/dist/measure.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createPercentileMeasure, createMedianMeasure, createDerivedMeasure } from './utils/base-measure-definition.js';
|
|
1
|
+
import { createPercentileMeasure, createMedianMeasure, createDerivedMeasure, createMergeMeasure } from './utils/base-measure-definition.js';
|
|
2
2
|
export { validatePercentileLevel } from './utils/base-measure-definition.js';
|
|
3
3
|
import { type ShiftMeasureOptions } from './utils/shift-measure-definition.js';
|
|
4
4
|
import type { MeasureTimeInterval, TimeGrain, WindowMeasureDefinition, ShiftMeasureDefinition } from './types.js';
|
|
@@ -61,6 +61,14 @@ export declare const measure: {
|
|
|
61
61
|
field: TField;
|
|
62
62
|
argField: TArg;
|
|
63
63
|
} & TOptions;
|
|
64
|
+
/**
|
|
65
|
+
* Finalize stored aggregate states: `measure.merge('uniq', 'users')` reads an
|
|
66
|
+
* `AggregateFunction(uniq, …)` column of an AggregatingMergeTree table as
|
|
67
|
+
* `uniqMerge(users)`. For `SimpleAggregateFunction` columns use the plain
|
|
68
|
+
* measure (`measure.sum`, `measure.max`). Not usable through relationships,
|
|
69
|
+
* with measure filters, or in published contracts.
|
|
70
|
+
*/
|
|
71
|
+
readonly merge: typeof createMergeMeasure;
|
|
64
72
|
/** Sample standard deviation (ClickHouse `stddevSamp`). */
|
|
65
73
|
readonly stddev: <const TField extends string, const TOptions extends import("./types.js").MeasureOptions = import("./types.js").MeasureOptions>(field: TField, opts?: TOptions | undefined) => import("./types.js").MeasureDefinition & {
|
|
66
74
|
aggregation: "stddev";
|
package/dist/measure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACzL,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AACnG,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEtG,eAAO,MAAM,OAAO;;;;;;;;;;;;;IAIlB;;;OAGG;;;;;;;;;;;;;;;;;IAKH,gFAAgF;;IAEhF,mDAAmD;;IAEnD;;;;;OAKG;;;;;;;;IAEH,gFAAgF;;;;;;;;IAEhF;;;;;;OAMG;;IAEH,2DAA2D;;;;;IAE3D,8CAA8C;;;;;IAE9C,qDAAqD;;IAErD,4EAA4E;2BAC9D,YAAY,SAAS,MAAM,eAAe,YAAY,YAAY,mBAAmB,YAAY,mBAAmB,KAAG,sBAAsB,CAAC,YAAY,CAAC;IAEzK,yEAAyE;8BACxD,YAAY,SAAS,MAAM,eAAe,YAAY,YAAY,mBAAmB,YAAY,oBAAoB,KAAG,uBAAuB,CAAC,YAAY,CAAC;IAE9K,+EAA+E;4BAChE,YAAY,SAAS,MAAM,eAAe,YAAY,SAAS,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,oBAAoB,KAAG,uBAAuB,CAAC,YAAY,CAAC;IAElL,2EAA2E;gCACxD,YAAY,SAAS,MAAM,eAAe,YAAY,YAAY,oBAAoB,KAAG,uBAAuB,CAAC,YAAY,CAAC;CAEzI,CAAC"}
|