@hypequery/protocol 0.23.0 → 0.24.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 +3 -1
- package/dist/client-contract/index.d.ts +1 -1
- package/dist/client-contract/index.d.ts.map +1 -1
- package/dist/client-contract/nodes.d.ts +3 -1
- package/dist/client-contract/nodes.d.ts.map +1 -1
- package/dist/client-contract/nodes.js +32 -2
- package/dist/client-contract/primitives.d.ts +4 -0
- package/dist/client-contract/primitives.d.ts.map +1 -1
- package/dist/client-contract/primitives.js +24 -1
- package/dist/client-contract/query.d.ts.map +1 -1
- package/dist/client-contract/query.js +6 -2
- package/dist/client-contract/types.d.ts +9 -0
- package/dist/client-contract/types.d.ts.map +1 -1
- package/dist/client-contract/validate.d.ts.map +1 -1
- package/dist/client-contract/validate.js +9 -3
- package/dist/deployments/segments.d.ts +2 -1
- package/dist/deployments/segments.d.ts.map +1 -1
- package/dist/deployments/segments.js +8 -3
- package/dist/deployments/types.d.ts +1 -1
- package/dist/deployments/types.d.ts.map +1 -1
- package/dist/deployments/validate.js +1 -1
- package/dist/expressions/index.d.ts +2 -1
- package/dist/expressions/index.d.ts.map +1 -1
- package/dist/expressions/index.js +1 -0
- package/dist/expressions/null-checks.d.ts +10 -0
- package/dist/expressions/null-checks.d.ts.map +1 -0
- package/dist/expressions/null-checks.js +13 -0
- package/dist/expressions/types.d.ts +10 -2
- package/dist/expressions/types.d.ts.map +1 -1
- package/dist/expressions/validate.d.ts.map +1 -1
- package/dist/expressions/validate.js +16 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -84,7 +84,9 @@ and HTTP-backed MCP. Use `decodeProtocolClientContract(text)` at an untrusted JS
|
|
|
84
84
|
text boundary (bounded, rejects duplicate members), or
|
|
85
85
|
`validateProtocolClientContract(value)` for an already decoded signed object.
|
|
86
86
|
`prepareProtocolClientContract(unsigned)` computes the domain-separated schema
|
|
87
|
-
and view hashes and refuses preexisting hash fields.
|
|
87
|
+
and view hashes and refuses preexisting hash fields. An endpoint's optional
|
|
88
|
+
`annotations` (group and field labels/descriptions) are presentation text:
|
|
89
|
+
they are covered by the view hash but not by the endpoint schema hash.
|
|
88
90
|
|
|
89
91
|
`validateProtocolClientQuery(contract, endpointId, input, 'http' | 'mcp')` validates
|
|
90
92
|
and normalizes the strict client profile. Its result contains the registered
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { validateProtocolClientContract, prepareProtocolClientContract } from './validate.js';
|
|
2
2
|
export { ProtocolClientContractError, CLIENT_ERROR_MESSAGES } from './errors.js';
|
|
3
3
|
export type { ProtocolClientContractErrorCode } from './errors.js';
|
|
4
|
-
export type { ClientDimension, ClientMeasure, ClientFilter, ClientTime, ClientQueryLimits, ClientDatasetEndpoint, ClientMetricEndpoint, ProtocolClientEndpoint, ProtocolClientContract, PreparedProtocolClientContract, ClientFieldType, ClientWireType, } from './types.js';
|
|
4
|
+
export type { ClientDimension, ClientMeasure, ClientFilter, ClientTime, ClientQueryLimits, ClientEndpointAnnotations, ClientFieldAnnotation, ClientDatasetEndpoint, ClientMetricEndpoint, ProtocolClientEndpoint, ProtocolClientContract, PreparedProtocolClientContract, ClientFieldType, ClientWireType, } from './types.js';
|
|
5
5
|
export { validateProtocolClientQuery } from './query.js';
|
|
6
6
|
export type { ClientQueryPlan } from './query.js';
|
|
7
7
|
export { decodeProtocolClientContract } from './decode.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client-contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACjF,YAAY,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EACV,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAC3E,qBAAqB,EAAE,oBAAoB,EAAE,sBAAsB,EACnE,sBAAsB,EAAE,8BAA8B,EAAE,eAAe,EAAE,cAAc,GACxF,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client-contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACjF,YAAY,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EACV,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAC3E,yBAAyB,EAAE,qBAAqB,EAChD,qBAAqB,EAAE,oBAAoB,EAAE,sBAAsB,EACnE,sBAAsB,EAAE,8BAA8B,EAAE,eAAe,EAAE,cAAc,GACxF,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { ClientDimension, ClientFilter, ClientMeasure, ClientQueryLimits, ClientTime } from './types.js';
|
|
1
|
+
import type { ClientDimension, ClientEndpointAnnotations, ClientFilter, ClientMeasure, ClientQueryLimits, ClientTime } from './types.js';
|
|
2
2
|
export declare function dimension(input: unknown, path: string): ClientDimension;
|
|
3
3
|
export declare function measure(input: unknown, path: string): ClientMeasure;
|
|
4
4
|
export declare function filter(input: unknown, path: string): ClientFilter;
|
|
5
5
|
export declare function fields<T>(input: unknown, path: string, validate: (v: unknown, p: string) => T): Record<string, T>;
|
|
6
6
|
export declare function time(input: unknown, path: string): ClientTime | null;
|
|
7
7
|
export declare function limits(input: unknown, path: string): ClientQueryLimits;
|
|
8
|
+
/** Presentation text; references to dimension/measure keys are checked with the endpoint's. */
|
|
9
|
+
export declare function annotations(input: unknown, path: string): ClientEndpointAnnotations;
|
|
8
10
|
//# sourceMappingURL=nodes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/client-contract/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/client-contract/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAyB,YAAY,EAAE,aAAa,EAC1G,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKpD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAYvE;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAKnE;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAQjE;AACD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CASjH;AACD,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CASpE;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAUtE;AAQD,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,yBAAyB,CAiBnF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { clientError } from './errors.js';
|
|
2
|
-
import { bool, choice, CLIENT_FIELD_TYPES, CLIENT_GRAINS, CLIENT_OPERATORS, integer, name, names, pointer, record, shape, timezone } from './primitives.js';
|
|
2
|
+
import { bool, choice, CLIENT_FIELD_TYPES, CLIENT_GRAINS, CLIENT_OPERATORS, integer, name, names, optionalShape, pointer, record, shape, text, timezone } from './primitives.js';
|
|
3
3
|
export function dimension(input, path) {
|
|
4
4
|
const value = shape(input, ['type', 'wireType', 'nullable', 'groupable', 'orderable'], path);
|
|
5
5
|
const type = choice(value.type, CLIENT_FIELD_TYPES, pointer(path, 'type'));
|
|
@@ -24,7 +24,7 @@ export function measure(input, path) {
|
|
|
24
24
|
export function filter(input, path) {
|
|
25
25
|
const value = shape(input, ['type', 'operators'], path);
|
|
26
26
|
const type = choice(value.type, CLIENT_FIELD_TYPES, pointer(path, 'type'));
|
|
27
|
-
const allowed = type === 'boolean' ? ['eq', 'neq', 'in', 'notIn']
|
|
27
|
+
const allowed = type === 'boolean' ? ['eq', 'neq', 'in', 'notIn', 'isNull', 'isNotNull']
|
|
28
28
|
: type === 'number' ? CLIENT_OPERATORS.filter(item => item !== 'like') : CLIENT_OPERATORS;
|
|
29
29
|
const operators = names(value.operators, pointer(path, 'operators'), allowed);
|
|
30
30
|
if (operators.length === 0)
|
|
@@ -66,3 +66,33 @@ export function limits(input, path) {
|
|
|
66
66
|
}
|
|
67
67
|
return result;
|
|
68
68
|
}
|
|
69
|
+
function annotation(input, path, keys) {
|
|
70
|
+
const value = optionalShape(input, keys, path);
|
|
71
|
+
const result = Object.create(null);
|
|
72
|
+
if (Object.hasOwn(value, 'label'))
|
|
73
|
+
result.label = text(value.label, pointer(path, 'label'));
|
|
74
|
+
if (Object.hasOwn(value, 'description'))
|
|
75
|
+
result.description = text(value.description, pointer(path, 'description'));
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
/** Presentation text; references to dimension/measure keys are checked with the endpoint's. */
|
|
79
|
+
export function annotations(input, path) {
|
|
80
|
+
const result = annotation(input, path, ['label', 'description', 'fields']);
|
|
81
|
+
const value = input;
|
|
82
|
+
if (Object.hasOwn(value, 'fields')) {
|
|
83
|
+
const fieldsPath = pointer(path, 'fields');
|
|
84
|
+
const entries = record(value.fields, fieldsPath);
|
|
85
|
+
const keys = Object.keys(entries);
|
|
86
|
+
if (keys.length > 512)
|
|
87
|
+
clientError('HQ_CLIENT_LIMIT', fieldsPath);
|
|
88
|
+
if (keys.length === 0)
|
|
89
|
+
clientError('HQ_CLIENT_SHAPE', fieldsPath);
|
|
90
|
+
const described = Object.create(null);
|
|
91
|
+
for (const key of keys.sort()) {
|
|
92
|
+
name(key, fieldsPath, true);
|
|
93
|
+
described[key] = annotation(entries[key], pointer(fieldsPath, key), ['label', 'description']);
|
|
94
|
+
}
|
|
95
|
+
result.fields = described;
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
@@ -4,6 +4,8 @@ export declare const CLIENT_GRAINS: readonly ["minute", "hour", "day", "week", "
|
|
|
4
4
|
export declare const CLIENT_OPERATORS: string[];
|
|
5
5
|
export declare function pointer(path: string, key: string | number): string;
|
|
6
6
|
export declare function record(input: unknown, path: string): ClientRecord;
|
|
7
|
+
/** Closed object whose listed members are all optional; at least one is required. */
|
|
8
|
+
export declare function optionalShape(input: unknown, keys: readonly string[], path: string): ClientRecord;
|
|
7
9
|
export declare function shape(input: unknown, keys: readonly string[], path: string): ClientRecord;
|
|
8
10
|
export declare function choice<T extends string>(input: unknown, choices: readonly T[], path: string): T;
|
|
9
11
|
export declare function bool(input: unknown, path: string): boolean;
|
|
@@ -11,5 +13,7 @@ export declare function integer(input: unknown, low: number, high: number, path:
|
|
|
11
13
|
export declare function name(input: unknown, path: string, qualified?: boolean): string;
|
|
12
14
|
export declare function names(input: unknown, path: string, allowed?: readonly string[]): string[];
|
|
13
15
|
export declare function route(input: unknown, path: string): string;
|
|
16
|
+
/** Deployment label/description rules: non-blank, control-free, at most 4096 UTF-8 bytes. */
|
|
17
|
+
export declare function text(input: unknown, path: string): string;
|
|
14
18
|
export declare function timezone(input: unknown, path: string): string;
|
|
15
19
|
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/client-contract/primitives.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,eAAO,MAAM,kBAAkB,uDAAwD,CAAC;AACxF,eAAO,MAAM,aAAa,wEAAyE,CAAC;AACpG,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/client-contract/primitives.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,eAAO,MAAM,kBAAkB,uDAAwD,CAAC;AACxF,eAAO,MAAM,aAAa,wEAAyE,CAAC;AACpG,eAAO,MAAM,gBAAgB,UAAmG,CAAC;AACjI,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAElE;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAGjE;AACD,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAKjG;AACD,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAKzF;AACD,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAG/F;AACD,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1D;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvF;AACD,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,MAAM,CAO5E;AACD,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAOzF;AACD,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED,6FAA6F;AAC7F,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQzD;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7D"}
|
|
@@ -3,7 +3,7 @@ import { parseProtocolIdentifier } from '../identifiers/identifiers.js';
|
|
|
3
3
|
import { clientError } from './errors.js';
|
|
4
4
|
export const CLIENT_FIELD_TYPES = ['string', 'number', 'boolean', 'timestamp'];
|
|
5
5
|
export const CLIENT_GRAINS = ['minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'];
|
|
6
|
-
export const CLIENT_OPERATORS = ['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'notIn', 'between', 'like'];
|
|
6
|
+
export const CLIENT_OPERATORS = ['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'notIn', 'between', 'like', 'isNull', 'isNotNull'];
|
|
7
7
|
export function pointer(path, key) {
|
|
8
8
|
return path + '/' + String(key).replaceAll('~', '~0').replaceAll('/', '~1');
|
|
9
9
|
}
|
|
@@ -12,6 +12,15 @@ export function record(input, path) {
|
|
|
12
12
|
clientError('HQ_CLIENT_SHAPE', path);
|
|
13
13
|
return input;
|
|
14
14
|
}
|
|
15
|
+
/** Closed object whose listed members are all optional; at least one is required. */
|
|
16
|
+
export function optionalShape(input, keys, path) {
|
|
17
|
+
const value = record(input, path);
|
|
18
|
+
if (Object.keys(value).some(key => !keys.includes(key)))
|
|
19
|
+
clientError('HQ_CLIENT_UNKNOWN_FIELD', path);
|
|
20
|
+
if (!keys.some(key => Object.hasOwn(value, key)))
|
|
21
|
+
clientError('HQ_CLIENT_SHAPE', path);
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
15
24
|
export function shape(input, keys, path) {
|
|
16
25
|
const value = record(input, path);
|
|
17
26
|
if (Object.keys(value).some(key => !keys.includes(key)))
|
|
@@ -67,6 +76,20 @@ export function route(input, path) {
|
|
|
67
76
|
clientError('HQ_CLIENT_PATH', path);
|
|
68
77
|
return input;
|
|
69
78
|
}
|
|
79
|
+
const textEncoder = new TextEncoder();
|
|
80
|
+
/** Deployment label/description rules: non-blank, control-free, at most 4096 UTF-8 bytes. */
|
|
81
|
+
export function text(input, path) {
|
|
82
|
+
if (typeof input !== 'string' || input.trim().length === 0 || input.length > 4096)
|
|
83
|
+
clientError('HQ_CLIENT_SHAPE', path);
|
|
84
|
+
for (let index = 0; index < input.length; index++) {
|
|
85
|
+
const code = input.charCodeAt(index);
|
|
86
|
+
if (code <= 0x1f || (code >= 0x7f && code <= 0x9f))
|
|
87
|
+
clientError('HQ_CLIENT_SHAPE', path);
|
|
88
|
+
}
|
|
89
|
+
if (textEncoder.encode(input).byteLength > 4096)
|
|
90
|
+
clientError('HQ_CLIENT_SHAPE', path);
|
|
91
|
+
return input;
|
|
92
|
+
}
|
|
70
93
|
export function timezone(input, path) {
|
|
71
94
|
if (typeof input !== 'string' || !CLIENT_TIMEZONE_NAMES.has(input))
|
|
72
95
|
clientError('HQ_CLIENT_SHAPE', path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/client-contract/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/client-contract/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAMzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AA6ED,gGAAgG;AAChG,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,GAAE,MAAM,GAAG,KAAc,GACxF,eAAe,CAmBjB"}
|
|
@@ -2,6 +2,7 @@ import { clientError, ProtocolClientContractError } from './errors.js';
|
|
|
2
2
|
import { validateProtocolClientContract } from './validate.js';
|
|
3
3
|
import { record, shape, integer, timezone } from './primitives.js';
|
|
4
4
|
import { freezeClientData, snapshotClientData } from './safe-data.js';
|
|
5
|
+
import { isProtocolNullCheckOperator } from '../expressions/null-checks.js';
|
|
5
6
|
function array(input, maximum) {
|
|
6
7
|
if (!Array.isArray(input) || input.length > maximum)
|
|
7
8
|
clientError('HQ_CLIENT_QUERY');
|
|
@@ -39,13 +40,16 @@ function bodyFor(endpoint, source, transport) {
|
|
|
39
40
|
clientError('HQ_CLIENT_QUERY');
|
|
40
41
|
const filters = array(source.filters === undefined ? [] : source.filters, caps.maxPredicates);
|
|
41
42
|
for (const item of filters) {
|
|
42
|
-
|
|
43
|
+
// A null check names no value (RFC 0023), so one carrying `value` fails as an unknown member.
|
|
44
|
+
const nullCheck = isProtocolNullCheckOperator(record(item, '').operator);
|
|
45
|
+
const filter = shape(item, nullCheck ? ['field', 'operator'] : ['field', 'operator', 'value'], '');
|
|
43
46
|
if (typeof filter.field !== 'string' || !Object.hasOwn(endpoint.filters, filter.field))
|
|
44
47
|
clientError('HQ_CLIENT_QUERY');
|
|
45
48
|
const definition = endpoint.filters[filter.field];
|
|
46
49
|
if (typeof filter.operator !== 'string' || !definition.operators.includes(filter.operator))
|
|
47
50
|
clientError('HQ_CLIENT_QUERY');
|
|
48
|
-
|
|
51
|
+
if (!nullCheck)
|
|
52
|
+
predicateValue(filter.value, definition.type, filter.operator, caps.maxFilterValues);
|
|
49
53
|
}
|
|
50
54
|
const having = array(source.having === undefined ? [] : source.having, caps.maxPredicates - filters.length);
|
|
51
55
|
for (const item of having) {
|
|
@@ -32,6 +32,14 @@ export interface ClientQueryLimits {
|
|
|
32
32
|
readonly maxOrderBy: number;
|
|
33
33
|
readonly maxFilterValues: number;
|
|
34
34
|
}
|
|
35
|
+
export interface ClientFieldAnnotation {
|
|
36
|
+
readonly label?: string;
|
|
37
|
+
readonly description?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Presentation text only; excluded from schemaHash and never a capability. */
|
|
40
|
+
export interface ClientEndpointAnnotations extends ClientFieldAnnotation {
|
|
41
|
+
readonly fields?: Readonly<Record<string, ClientFieldAnnotation>>;
|
|
42
|
+
}
|
|
35
43
|
interface ClientEndpointBase {
|
|
36
44
|
readonly id: string;
|
|
37
45
|
readonly dataset: string;
|
|
@@ -42,6 +50,7 @@ interface ClientEndpointBase {
|
|
|
42
50
|
readonly time: ClientTime | null;
|
|
43
51
|
readonly metadata: boolean;
|
|
44
52
|
readonly limits: ClientQueryLimits;
|
|
53
|
+
readonly annotations?: ClientEndpointAnnotations;
|
|
45
54
|
readonly schemaHash: string;
|
|
46
55
|
}
|
|
47
56
|
export interface ClientDatasetEndpoint extends ClientEndpointBase {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client-contract/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client-contract/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/client-contract/validate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,8BAA8B,EAAE,sBAAsB,EAA0B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/client-contract/validate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,8BAA8B,EAAE,sBAAsB,EAA0B,MAAM,YAAY,CAAC;AA2EjH,6EAA6E;AAC7E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAErF;AACD,8FAA8F;AAC9F,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,8BAA8B,CAE5F"}
|
|
@@ -2,15 +2,16 @@ import { boundClientDescriptors } from './bounds.js';
|
|
|
2
2
|
import { clientError } from './errors.js';
|
|
3
3
|
import { CLIENT_CONTRACT_DOMAIN, CLIENT_SCHEMA_DOMAIN, clientDigest } from './codec.js';
|
|
4
4
|
import { bool, choice, name, names, pointer, record, route, shape } from './primitives.js';
|
|
5
|
-
import { dimension, fields, filter, limits, measure, time } from './nodes.js';
|
|
5
|
+
import { annotations, dimension, fields, filter, limits, measure, time } from './nodes.js';
|
|
6
6
|
import { clientCanonical, freezeClientData, snapshotClientData } from './safe-data.js';
|
|
7
7
|
const ENDPOINT_FIELDS = ['id', 'kind', 'dataset', 'path', 'dimensions', 'measures', 'filters',
|
|
8
8
|
'time', 'metadata', 'limits'];
|
|
9
9
|
function endpoint(input, path, signed) {
|
|
10
10
|
const raw = record(input, path);
|
|
11
11
|
const kind = choice(raw.kind, ['dataset', 'metric'], pointer(path, 'kind'));
|
|
12
|
+
const annotated = Object.hasOwn(raw, 'annotations');
|
|
12
13
|
const value = shape(raw, [...ENDPOINT_FIELDS, ...(kind === 'dataset' ? ['defaultMeasures'] : []),
|
|
13
|
-
...(signed ? ['schemaHash'] : [])], path);
|
|
14
|
+
...(annotated ? ['annotations'] : []), ...(signed ? ['schemaHash'] : [])], path);
|
|
14
15
|
const id = name(value.id, pointer(path, 'id'));
|
|
15
16
|
const dataset = name(value.dataset, pointer(path, 'dataset'));
|
|
16
17
|
const result = {
|
|
@@ -24,6 +25,8 @@ function endpoint(input, path, signed) {
|
|
|
24
25
|
};
|
|
25
26
|
if (kind === 'dataset')
|
|
26
27
|
result.defaultMeasures = names(value.defaultMeasures, pointer(path, 'defaultMeasures'));
|
|
28
|
+
if (annotated)
|
|
29
|
+
result.annotations = annotations(value.annotations, pointer(path, 'annotations'));
|
|
27
30
|
if (signed)
|
|
28
31
|
result.schemaHash = value.schemaHash;
|
|
29
32
|
return result;
|
|
@@ -48,6 +51,9 @@ function references(value, path) {
|
|
|
48
51
|
|| defaults.length > item.limits.maxMeasures || item.limits.defaultLimit > item.limits.maxLimit) {
|
|
49
52
|
clientError('HQ_CLIENT_REFERENCE', path);
|
|
50
53
|
}
|
|
54
|
+
if (Object.keys(item.annotations?.fields ?? {}).some(key => !Object.hasOwn(item.dimensions, key)
|
|
55
|
+
&& !Object.hasOwn(item.measures, key)))
|
|
56
|
+
clientError('HQ_CLIENT_REFERENCE', path);
|
|
51
57
|
}
|
|
52
58
|
function contract(input, signed) {
|
|
53
59
|
const raw = record(snapshotClientData(input), '');
|
|
@@ -72,7 +78,7 @@ function contract(input, signed) {
|
|
|
72
78
|
endpoints.forEach((item, index) => references(item, '/endpoints/' + index));
|
|
73
79
|
endpoints.sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0);
|
|
74
80
|
for (const [index, item] of endpoints.entries()) {
|
|
75
|
-
const { schemaHash, limits: _limits, ...schema } = item;
|
|
81
|
+
const { schemaHash, limits: _limits, annotations: _annotations, ...schema } = item;
|
|
76
82
|
const hash = clientDigest(CLIENT_SCHEMA_DOMAIN, schema);
|
|
77
83
|
if (signed && schemaHash !== hash)
|
|
78
84
|
clientError('HQ_CLIENT_IDENTITY', '/endpoints/' + index + '/schemaHash');
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import type { ProtocolExpression } from '../expressions/index.js';
|
|
6
6
|
import type { ProtocolDatasetDimension, ProtocolDatasetTenantPolicy } from './types.js';
|
|
7
7
|
/**
|
|
8
|
-
* True for a comparison between references and literals
|
|
8
|
+
* True for a comparison between references and literals (a null check has
|
|
9
|
+
* only `left`), or a logical tree
|
|
9
10
|
* whose leaves are all such comparisons. Aggregates, arithmetic, and calls are
|
|
10
11
|
* excluded: a segment selects rows by their own dimension values.
|
|
11
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../src/deployments/segments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAExF
|
|
1
|
+
{"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../src/deployments/segments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAExF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAS1E;AAMD,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAsB7E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,wBAAwB,EAAE,EAC/C,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAMT"}
|
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
* predicate shape, and which references a predicate may make.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* True for a comparison between references and literals
|
|
6
|
+
* True for a comparison between references and literals (a null check has
|
|
7
|
+
* only `left`), or a logical tree
|
|
7
8
|
* whose leaves are all such comparisons. Aggregates, arithmetic, and calls are
|
|
8
9
|
* excluded: a segment selects rows by their own dimension values.
|
|
9
10
|
*/
|
|
10
11
|
export function isSegmentPredicate(expression) {
|
|
11
12
|
if (expression.kind === 'comparison') {
|
|
12
|
-
return isSegmentOperand(expression.left)
|
|
13
|
+
return isSegmentOperand(expression.left)
|
|
14
|
+
&& (!('right' in expression) || isSegmentOperand(expression.right));
|
|
13
15
|
}
|
|
14
16
|
if (expression.kind !== 'logical')
|
|
15
17
|
return false;
|
|
@@ -28,8 +30,11 @@ export function expressionReferences(expression) {
|
|
|
28
30
|
case 'literal':
|
|
29
31
|
return [];
|
|
30
32
|
case 'binary':
|
|
31
|
-
case 'comparison':
|
|
32
33
|
return [...expressionReferences(expression.left), ...expressionReferences(expression.right)];
|
|
34
|
+
case 'comparison':
|
|
35
|
+
return 'right' in expression
|
|
36
|
+
? [...expressionReferences(expression.left), ...expressionReferences(expression.right)]
|
|
37
|
+
: expressionReferences(expression.left);
|
|
33
38
|
case 'call':
|
|
34
39
|
return expression.args.flatMap(expressionReferences);
|
|
35
40
|
case 'logical':
|
|
@@ -80,7 +80,7 @@ export interface ProtocolDatasetMeasure extends ProtocolSemanticMetadata {
|
|
|
80
80
|
export interface ProtocolDatasetFilter extends ProtocolSemanticMetadata {
|
|
81
81
|
readonly name: ProtocolIdentifier;
|
|
82
82
|
readonly field: ProtocolQualifiedIdentifier;
|
|
83
|
-
readonly operators: readonly ('eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'between' | 'like')[];
|
|
83
|
+
readonly operators: readonly ('eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'between' | 'like' | 'isNull' | 'isNotNull')[];
|
|
84
84
|
readonly label?: string;
|
|
85
85
|
readonly description?: string;
|
|
86
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/deployments/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/deployments/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ function isApproximateMeasure(value) {
|
|
|
22
22
|
&& isApproximateStateFunction(value.stateFunction));
|
|
23
23
|
}
|
|
24
24
|
const OPERATORS = new Set([
|
|
25
|
-
'eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'notIn', 'between', 'like',
|
|
25
|
+
'eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'notIn', 'between', 'like', 'isNull', 'isNotNull',
|
|
26
26
|
]);
|
|
27
27
|
const GRAINS = new Set(['day', 'week', 'month', 'quarter', 'year']);
|
|
28
28
|
const GRAINS_V3 = new Set(['minute', 'hour', ...GRAINS]);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { ProtocolExpressionError } from './errors.js';
|
|
2
2
|
export { DEFAULT_PROTOCOL_EXPRESSION_LIMITS } from './limits.js';
|
|
3
3
|
export { validateProtocolExpression, validateProtocolSemanticQuery } from './validate.js';
|
|
4
|
-
export
|
|
4
|
+
export { PROTOCOL_NULL_CHECK_OPERATORS, isProtocolNullCheckOperator } from './null-checks.js';
|
|
5
|
+
export type { ProtocolAggregation, ProtocolBinaryOperator, ProtocolComparisonOperator, ProtocolDatasetQuery, ProtocolExpression, ProtocolExpressionErrorCode, ProtocolExpressionExtension, ProtocolExpressionLimits, ProtocolExpressionOptions, ProtocolFunctionName, ProtocolMetricQuery, ProtocolNullCheckOperator, ProtocolOrderBy, ProtocolSemanticQuery, ProtocolQueryTimeGrain, ProtocolTimeGrain, ProtocolValueComparisonOperator, } from './types.js';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/expressions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/expressions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC9F,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,+BAA+B,GAChC,MAAM,YAAY,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { ProtocolExpressionError } from './errors.js';
|
|
2
2
|
export { DEFAULT_PROTOCOL_EXPRESSION_LIMITS } from './limits.js';
|
|
3
3
|
export { validateProtocolExpression, validateProtocolSemanticQuery } from './validate.js';
|
|
4
|
+
export { PROTOCOL_NULL_CHECK_OPERATORS, isProtocolNullCheckOperator } from './null-checks.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProtocolNullCheckOperator } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Comparison operators that test a field for NULL (RFC 0023). They take no
|
|
4
|
+
* right-hand value: a comparison, filter, or client predicate using one must
|
|
5
|
+
* omit it, and validators reject one that carries a value.
|
|
6
|
+
*/
|
|
7
|
+
export declare const PROTOCOL_NULL_CHECK_OPERATORS: readonly ProtocolNullCheckOperator[];
|
|
8
|
+
/** True for `isNull` and `isNotNull`, the comparison operators without a value. */
|
|
9
|
+
export declare function isProtocolNullCheckOperator(operator: unknown): operator is ProtocolNullCheckOperator;
|
|
10
|
+
//# sourceMappingURL=null-checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"null-checks.d.ts","sourceRoot":"","sources":["../../src/expressions/null-checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,yBAAyB,EAG5E,CAAC;AAEH,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,yBAAyB,CAEpG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comparison operators that test a field for NULL (RFC 0023). They take no
|
|
3
|
+
* right-hand value: a comparison, filter, or client predicate using one must
|
|
4
|
+
* omit it, and validators reject one that carries a value.
|
|
5
|
+
*/
|
|
6
|
+
export const PROTOCOL_NULL_CHECK_OPERATORS = Object.freeze([
|
|
7
|
+
'isNull',
|
|
8
|
+
'isNotNull',
|
|
9
|
+
]);
|
|
10
|
+
/** True for `isNull` and `isNotNull`, the comparison operators without a value. */
|
|
11
|
+
export function isProtocolNullCheckOperator(operator) {
|
|
12
|
+
return operator === 'isNull' || operator === 'isNotNull';
|
|
13
|
+
}
|
|
@@ -2,7 +2,11 @@ import type { ProtocolIdentifier, ProtocolQualifiedIdentifier } from '../identif
|
|
|
2
2
|
import type { CanonicalValue } from '../values/index.js';
|
|
3
3
|
export type ProtocolBinaryOperator = 'add' | 'subtract' | 'multiply' | 'divide';
|
|
4
4
|
export type ProtocolFunctionName = 'nullIfZero' | 'coalesce' | 'round' | 'floor' | 'ceil';
|
|
5
|
-
|
|
5
|
+
/** Comparison operators that compare `left` with a `right` value. */
|
|
6
|
+
export type ProtocolValueComparisonOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'between' | 'like';
|
|
7
|
+
/** Comparison operators that test `left` for NULL and take no `right` (RFC 0023). */
|
|
8
|
+
export type ProtocolNullCheckOperator = 'isNull' | 'isNotNull';
|
|
9
|
+
export type ProtocolComparisonOperator = ProtocolValueComparisonOperator | ProtocolNullCheckOperator;
|
|
6
10
|
/**
|
|
7
11
|
* Every aggregation any supported expression extension accepts.
|
|
8
12
|
* `approxCountDistinct` is extension 2 (RFC 0015); the validator rejects it
|
|
@@ -26,9 +30,13 @@ export type ProtocolExpression = {
|
|
|
26
30
|
readonly args: readonly ProtocolExpression[];
|
|
27
31
|
} | {
|
|
28
32
|
readonly kind: 'comparison';
|
|
29
|
-
readonly operator:
|
|
33
|
+
readonly operator: ProtocolValueComparisonOperator;
|
|
30
34
|
readonly left: ProtocolExpression;
|
|
31
35
|
readonly right: ProtocolExpression;
|
|
36
|
+
} | {
|
|
37
|
+
readonly kind: 'comparison';
|
|
38
|
+
readonly operator: ProtocolNullCheckOperator;
|
|
39
|
+
readonly left: ProtocolExpression;
|
|
32
40
|
} | {
|
|
33
41
|
readonly kind: 'logical';
|
|
34
42
|
readonly operator: 'and' | 'or';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/expressions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAC1F,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/expressions/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/expressions/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/expressions/validate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,kBAAkB,EAGlB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAkRpB,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,yBAA8B,GACtC,kBAAkB,CAEpB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,yBAA8B,GACtC,qBAAqB,CAwDvB"}
|
|
@@ -2,8 +2,11 @@ import { ProtocolIdentifierError, parseProtocolIdentifier, parseProtocolQualifie
|
|
|
2
2
|
import { ProtocolValueError, validateCanonicalValue } from '../values/index.js';
|
|
3
3
|
import { expressionError } from './errors.js';
|
|
4
4
|
import { resolveExpressionLimits } from './limits.js';
|
|
5
|
+
import { isProtocolNullCheckOperator } from './null-checks.js';
|
|
5
6
|
const BINARY = new Set(['add', 'subtract', 'multiply', 'divide']);
|
|
6
|
-
const COMPARISONS = new Set([
|
|
7
|
+
const COMPARISONS = new Set([
|
|
8
|
+
'eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'notIn', 'between', 'like', 'isNull', 'isNotNull',
|
|
9
|
+
]);
|
|
7
10
|
const AGGREGATIONS_V1 = new Set([
|
|
8
11
|
'sum', 'count', 'countDistinct', 'avg', 'min', 'max',
|
|
9
12
|
'argMax', 'argMin', 'percentile', 'stddev', 'variance',
|
|
@@ -149,10 +152,21 @@ function validateExpression(input, path, depth, state) {
|
|
|
149
152
|
});
|
|
150
153
|
}
|
|
151
154
|
case 'comparison': {
|
|
152
|
-
|
|
155
|
+
// A null check tests `left` alone (RFC 0023); a right-hand value is refused.
|
|
156
|
+
const nullCheck = isProtocolNullCheckOperator(value.operator);
|
|
157
|
+
if (nullCheck && Object.hasOwn(value, 'right'))
|
|
158
|
+
expressionError('HQ_EXPRESSION_INVALID_ARITY', `${path}.right`);
|
|
159
|
+
exactFields(value, nullCheck ? ['kind', 'operator', 'left'] : ['kind', 'operator', 'left', 'right'], [], path);
|
|
153
160
|
const operator = stringValue(value.operator, `${path}.operator`);
|
|
154
161
|
if (!COMPARISONS.has(operator))
|
|
155
162
|
expressionError('HQ_EXPRESSION_INVALID_OPERATOR', `${path}.operator`);
|
|
163
|
+
if (nullCheck) {
|
|
164
|
+
return freezeRecord({
|
|
165
|
+
kind,
|
|
166
|
+
operator,
|
|
167
|
+
left: validateExpression(value.left, `${path}.left`, depth + 1, state),
|
|
168
|
+
});
|
|
169
|
+
}
|
|
156
170
|
const left = validateExpression(value.left, `${path}.left`, depth + 1, state);
|
|
157
171
|
const right = validateExpression(value.right, `${path}.right`, depth + 1, state);
|
|
158
172
|
validateComparisonOperands(operator, right, `${path}.right`);
|
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,10 @@ export type { ArrayTaggedValue, BytesTaggedValue, CanonicalValue, CanonicalValue
|
|
|
3
3
|
export { PROTOCOL_IDENTIFIER_LIMITS, ProtocolIdentifierError, isProtocolIdentifier, isProtocolQualifiedIdentifier, joinProtocolQualifiedIdentifier, parseProtocolIdentifier, parseProtocolQualifiedIdentifier, splitProtocolQualifiedIdentifier, } from './identifiers/index.js';
|
|
4
4
|
export { PROTOCOL_CACHE_KEY_LIMITS, ProtocolCacheKeyError, deriveProtocolCacheKey, deriveProtocolCacheNamespaceToken, } from './cache-keys/index.js';
|
|
5
5
|
export { ProtocolCachePreimageError, buildProtocolCachePreimage, deriveProtocolTenantFingerprint, } from './cache-preimages/index.js';
|
|
6
|
-
export { DEFAULT_PROTOCOL_EXPRESSION_LIMITS, ProtocolExpressionError, validateProtocolExpression, validateProtocolSemanticQuery, } from './expressions/index.js';
|
|
6
|
+
export { DEFAULT_PROTOCOL_EXPRESSION_LIMITS, PROTOCOL_NULL_CHECK_OPERATORS, ProtocolExpressionError, isProtocolNullCheckOperator, validateProtocolExpression, validateProtocolSemanticQuery, } from './expressions/index.js';
|
|
7
7
|
export { DEFAULT_PROTOCOL_SCHEMA_LIMITS, DEFAULT_PROTOCOL_SCHEMA_VALUE_LIMITS, ProtocolSchemaError, ProtocolSchemaValueError, applyProtocolSchemaValue, createProtocolSchemaValueParser, resolveProtocolSchemaValueLimits, validateProtocolSchema, } from './schemas/index.js';
|
|
8
8
|
export type { ProtocolSchema, ProtocolSchemaErrorCode, ProtocolSchemaLimits, ProtocolSchemaOptions, ProtocolSchemaValueLimits, ProtocolSchemaValueOptions, ProtocolSchemaValueParser, } from './schemas/index.js';
|
|
9
|
-
export type { ProtocolAggregation, ProtocolBinaryOperator, ProtocolComparisonOperator, ProtocolDatasetQuery, ProtocolExpression, ProtocolExpressionErrorCode, ProtocolExpressionExtension, ProtocolExpressionLimits, ProtocolExpressionOptions, ProtocolFunctionName, ProtocolMetricQuery, ProtocolOrderBy, ProtocolSemanticQuery, ProtocolQueryTimeGrain, ProtocolTimeGrain, } from './expressions/index.js';
|
|
9
|
+
export type { ProtocolAggregation, ProtocolBinaryOperator, ProtocolComparisonOperator, ProtocolDatasetQuery, ProtocolExpression, ProtocolExpressionErrorCode, ProtocolExpressionExtension, ProtocolExpressionLimits, ProtocolExpressionOptions, ProtocolFunctionName, ProtocolMetricQuery, ProtocolNullCheckOperator, ProtocolOrderBy, ProtocolSemanticQuery, ProtocolQueryTimeGrain, ProtocolTimeGrain, ProtocolValueComparisonOperator, } from './expressions/index.js';
|
|
10
10
|
export type { DeriveProtocolCacheKeyOptions, ProtocolCacheKeyErrorCode, ProtocolCacheKeyNamespace, } from './cache-keys/index.js';
|
|
11
11
|
export type { BuildProtocolCachePreimageOptions, ProtocolCachePreimageErrorCode, ProtocolCacheTenantScope, } from './cache-preimages/index.js';
|
|
12
12
|
export type { ProtocolIdentifier, ProtocolIdentifierErrorCode, ProtocolQualifiedIdentifier, } from './identifiers/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,EACvB,gCAAgC,EAChC,gCAAgC,GACjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,iCAAiC,GAClC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,kCAAkC,EAClC,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,8BAA8B,EAC9B,oCAAoC,EACpC,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,gCAAgC,EAChC,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export { DEFAULT_CANONICAL_VALUE_LIMITS, ProtocolValueError, decodeCanonicalValu
|
|
|
2
2
|
export { PROTOCOL_IDENTIFIER_LIMITS, ProtocolIdentifierError, isProtocolIdentifier, isProtocolQualifiedIdentifier, joinProtocolQualifiedIdentifier, parseProtocolIdentifier, parseProtocolQualifiedIdentifier, splitProtocolQualifiedIdentifier, } from './identifiers/index.js';
|
|
3
3
|
export { PROTOCOL_CACHE_KEY_LIMITS, ProtocolCacheKeyError, deriveProtocolCacheKey, deriveProtocolCacheNamespaceToken, } from './cache-keys/index.js';
|
|
4
4
|
export { ProtocolCachePreimageError, buildProtocolCachePreimage, deriveProtocolTenantFingerprint, } from './cache-preimages/index.js';
|
|
5
|
-
export { DEFAULT_PROTOCOL_EXPRESSION_LIMITS, ProtocolExpressionError, validateProtocolExpression, validateProtocolSemanticQuery, } from './expressions/index.js';
|
|
5
|
+
export { DEFAULT_PROTOCOL_EXPRESSION_LIMITS, PROTOCOL_NULL_CHECK_OPERATORS, ProtocolExpressionError, isProtocolNullCheckOperator, validateProtocolExpression, validateProtocolSemanticQuery, } from './expressions/index.js';
|
|
6
6
|
export { DEFAULT_PROTOCOL_SCHEMA_LIMITS, DEFAULT_PROTOCOL_SCHEMA_VALUE_LIMITS, ProtocolSchemaError, ProtocolSchemaValueError, applyProtocolSchemaValue, createProtocolSchemaValueParser, resolveProtocolSchemaValueLimits, validateProtocolSchema, } from './schemas/index.js';
|
|
7
7
|
export { DEFAULT_PROTOCOL_QUERY_IMPLEMENTATION_LIMITS, ProtocolQueryImplementationError, validateProtocolQueryImplementation, validateProtocolSqlExpression, } from './query-implementations/index.js';
|
|
8
8
|
export { DEFAULT_PROTOCOL_QUERY_EVENT_LIMITS, ProtocolQueryDiagnosticsError, ProtocolQueryEventError, validateProtocolQueryDiagnostics, validateProtocolQueryEvent, } from './events/index.js';
|