@hypequery/clickhouse 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/core/cte-scope.d.ts +91 -0
  2. package/dist/core/cte-scope.d.ts.map +1 -0
  3. package/dist/core/cte-scope.js +52 -0
  4. package/dist/core/dialects/clickhouse-dialect.d.ts.map +1 -1
  5. package/dist/core/dialects/clickhouse-dialect.js +4 -1
  6. package/dist/core/features/analytics.d.ts +13 -2
  7. package/dist/core/features/analytics.d.ts.map +1 -1
  8. package/dist/core/features/analytics.js +49 -3
  9. package/dist/core/features/joins.d.ts +5 -1
  10. package/dist/core/features/joins.d.ts.map +1 -1
  11. package/dist/core/features/joins.js +5 -1
  12. package/dist/core/formatters/sql-formatter.d.ts +1 -0
  13. package/dist/core/formatters/sql-formatter.d.ts.map +1 -1
  14. package/dist/core/formatters/sql-formatter.js +10 -3
  15. package/dist/core/query-builder.d.ts +89 -12
  16. package/dist/core/query-builder.d.ts.map +1 -1
  17. package/dist/core/query-builder.js +56 -4
  18. package/dist/core/query-node.d.ts.map +1 -1
  19. package/dist/core/query-node.js +7 -1
  20. package/dist/core/tests/integration/setup.d.ts +9 -0
  21. package/dist/core/tests/integration/setup.d.ts.map +1 -1
  22. package/dist/core/tests/test-utils.d.ts +23 -1
  23. package/dist/core/tests/test-utils.d.ts.map +1 -1
  24. package/dist/core/tests/test-utils.js +12 -3
  25. package/dist/core/types/builder-state.d.ts +68 -9
  26. package/dist/core/types/builder-state.d.ts.map +1 -1
  27. package/dist/core/types/builder-state.js +1 -0
  28. package/dist/core/types/select-types.d.ts +4 -2
  29. package/dist/core/types/select-types.d.ts.map +1 -1
  30. package/dist/core/utils/compound-parameter.d.ts +6 -0
  31. package/dist/core/utils/compound-parameter.d.ts.map +1 -0
  32. package/dist/core/utils/compound-parameter.js +70 -0
  33. package/dist/core/utils/cte-fragments.d.ts +17 -0
  34. package/dist/core/utils/cte-fragments.d.ts.map +1 -0
  35. package/dist/core/utils/cte-fragments.js +20 -0
  36. package/dist/core/utils/cte-scope-state.d.ts +5 -0
  37. package/dist/core/utils/cte-scope-state.d.ts.map +1 -0
  38. package/dist/core/utils/cte-scope-state.js +16 -0
  39. package/dist/core/utils/named-parameters.d.ts +30 -0
  40. package/dist/core/utils/named-parameters.d.ts.map +1 -0
  41. package/dist/core/utils/named-parameters.js +108 -0
  42. package/dist/core/utils/parameter-type.d.ts +10 -0
  43. package/dist/core/utils/parameter-type.d.ts.map +1 -0
  44. package/dist/core/utils/parameter-type.js +46 -0
  45. package/dist/core/utils/record-guards.d.ts +3 -0
  46. package/dist/core/utils/record-guards.d.ts.map +1 -0
  47. package/dist/core/utils/record-guards.js +7 -0
  48. package/dist/core/utils/sql-parens.d.ts +6 -0
  49. package/dist/core/utils/sql-parens.d.ts.map +1 -1
  50. package/dist/core/utils/sql-parens.js +6 -1
  51. package/dist/index.d.ts +4 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +1 -0
  54. package/dist/types/base.d.ts +39 -0
  55. package/dist/types/base.d.ts.map +1 -1
  56. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"named-parameters.d.ts","sourceRoot":"","sources":["../../../src/core/utils/named-parameters.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,UAAU,EAAE,OAAO,EAAE,CAAC;CACvB;AAoDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,OAAO,SAAQ,GACd,qBAAqB,CAgDvB"}
@@ -0,0 +1,108 @@
1
+ import { escapeValue } from '../utils.js';
2
+ import { skipNonCode } from './sql-parens.js';
3
+ import { serializeCompoundParameter } from './compound-parameter.js';
4
+ const IDENTIFIER_START = /[A-Za-z_]/;
5
+ const IDENTIFIER_CHAR = /[A-Za-z0-9_]/;
6
+ function readIdentifier(sql, start) {
7
+ if (!IDENTIFIER_START.test(sql[start] ?? ''))
8
+ return undefined;
9
+ let i = start + 1;
10
+ while (i < sql.length && IDENTIFIER_CHAR.test(sql[i]))
11
+ i += 1;
12
+ return sql.slice(start, i);
13
+ }
14
+ /**
15
+ * Reads a `{name:Type}` placeholder starting at the `{`. The type is consumed
16
+ * with paren nesting so `{ids:Array(UInt64)}` matches, and anything that is not
17
+ * shaped like a placeholder — a `{shard}` macro, a brace in an expression —
18
+ * returns undefined so it is left untouched.
19
+ */
20
+ function matchPlaceholder(sql, start) {
21
+ const name = readIdentifier(sql, start + 1);
22
+ if (name === undefined)
23
+ return undefined;
24
+ let i = start + 1 + name.length;
25
+ if (sql[i] !== ':')
26
+ return undefined;
27
+ i += 1;
28
+ const typeStart = i;
29
+ let depth = 0;
30
+ while (i < sql.length) {
31
+ const skippedTo = skipNonCode(sql, i);
32
+ if (skippedTo !== undefined) {
33
+ i = skippedTo;
34
+ continue;
35
+ }
36
+ const ch = sql[i];
37
+ if (ch === '{')
38
+ return undefined;
39
+ if (ch === '(')
40
+ depth += 1;
41
+ else if (ch === ')')
42
+ depth -= 1;
43
+ else if (ch === '}' && depth === 0) {
44
+ const type = sql.slice(typeStart, i).trim();
45
+ return type ? { name, type, end: i + 1 } : undefined;
46
+ }
47
+ i += 1;
48
+ }
49
+ return undefined;
50
+ }
51
+ /**
52
+ * Rewrites ClickHouse-style `{name:Type}` placeholders to the positional `?`
53
+ * markers the builder binds against, pairing each with its value.
54
+ *
55
+ * TODO: Remove this client-side rewrite and its CAST/compound serialization
56
+ * once native server-side query_params binding replaces positional parameters.
57
+ * The public {name:Type} placeholder API can stay unchanged.
58
+ *
59
+ * Each marker is wrapped in a `CAST` to the declared type, which is what the
60
+ * server's own `{name:Type}` substitution does. Without it the value arrives as
61
+ * a String and any expression that depends on the real type fails to compile.
62
+ *
63
+ * Placeholders inside string literals, quoted identifiers, heredocs, and
64
+ * comments are data and are left alone, so a body can talk about braces without
65
+ * having them bound.
66
+ *
67
+ * Values that no placeholder references are ignored: a caller may pass one
68
+ * context object to several fragments.
69
+ */
70
+ export function bindNamedParameters(sql, values = {}, context = 'SQL') {
71
+ const parameters = [];
72
+ let bound = '';
73
+ let copiedTo = 0;
74
+ let i = 0;
75
+ while (i < sql.length) {
76
+ const skippedTo = skipNonCode(sql, i);
77
+ if (skippedTo !== undefined) {
78
+ i = skippedTo;
79
+ continue;
80
+ }
81
+ if (sql[i] !== '{') {
82
+ i += 1;
83
+ continue;
84
+ }
85
+ const placeholder = matchPlaceholder(sql, i);
86
+ if (!placeholder) {
87
+ const name = readIdentifier(sql, i + 1);
88
+ const afterName = name === undefined ? undefined : sql[i + 1 + name.length];
89
+ if (name !== undefined && (afterName === '}' || afterName === ':') && name in values) {
90
+ throw new Error(`${context} placeholder "{${name}}" is missing a type. Write it as {${name}:Type}, for example {${name}:UUID}.`);
91
+ }
92
+ i += 1;
93
+ continue;
94
+ }
95
+ if (!(placeholder.name in values)) {
96
+ throw new Error(`${context} references parameter "${placeholder.name}", but no value was provided for it.`);
97
+ }
98
+ // The declared type has to survive substitution: a bare escaped literal
99
+ // reaches the server as a String, which breaks any expression that needs
100
+ // the real type — a UUID join key, for instance.
101
+ bound += `${sql.slice(copiedTo, i)}CAST(?, ${escapeValue(placeholder.type)})`;
102
+ const value = values[placeholder.name];
103
+ parameters.push(serializeCompoundParameter(value, placeholder.type));
104
+ copiedTo = placeholder.end;
105
+ i = placeholder.end;
106
+ }
107
+ return { sql: bound + sql.slice(copiedTo), parameters };
108
+ }
@@ -0,0 +1,10 @@
1
+ export declare function parseParameterType(type: string): {
2
+ name: string;
3
+ args: string[];
4
+ };
5
+ /** Named tuple fields can still be supplied positionally as JavaScript arrays. */
6
+ export declare function parseTupleField(field: string): {
7
+ name?: string;
8
+ type: string;
9
+ };
10
+ //# sourceMappingURL=parameter-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-type.d.ts","sourceRoot":"","sources":["../../../src/core/utils/parameter-type.ts"],"names":[],"mappings":"AA0BA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAIjF;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAW9E"}
@@ -0,0 +1,46 @@
1
+ import { skipNonCode } from './sql-parens.js';
2
+ /** Split type arguments without treating quoted or nested commas as separators. */
3
+ function splitTypeArguments(input) {
4
+ const parts = [];
5
+ let depth = 0;
6
+ let start = 0;
7
+ let i = 0;
8
+ while (i < input.length) {
9
+ const end = skipNonCode(input, i);
10
+ if (end !== undefined) {
11
+ i = end;
12
+ continue;
13
+ }
14
+ if (input[i] === '(')
15
+ depth += 1;
16
+ if (input[i] === ')')
17
+ depth -= 1;
18
+ if (input[i] === ',' && depth === 0) {
19
+ parts.push(input.slice(start, i).trim());
20
+ start = i + 1;
21
+ }
22
+ i += 1;
23
+ }
24
+ if (input.slice(start).trim())
25
+ parts.push(input.slice(start).trim());
26
+ return parts;
27
+ }
28
+ export function parseParameterType(type) {
29
+ const match = /^([A-Za-z][A-Za-z0-9]*)\s*(?:\(([\s\S]*)\))?$/.exec(type.trim());
30
+ if (!match)
31
+ throw new Error(`Cannot serialize parameter with type ${type}`);
32
+ return { name: match[1], args: match[2] === undefined ? [] : splitTypeArguments(match[2]) };
33
+ }
34
+ /** Named tuple fields can still be supplied positionally as JavaScript arrays. */
35
+ export function parseTupleField(field) {
36
+ if (field[0] === '`' || field[0] === '"') {
37
+ const end = skipNonCode(field, 0);
38
+ const quote = field[0];
39
+ const name = field.slice(1, end - 1)
40
+ .replace(new RegExp(`${quote}${quote}`, 'g'), quote)
41
+ .replace(/\\(.)/gs, (_, char) => ({ n: '\n', r: '\r', t: '\t', '0': '\0', b: '\b', f: '\f' }[char] ?? char));
42
+ return { name, type: field.slice(end).trim() };
43
+ }
44
+ const named = /^([A-Za-z_][A-Za-z0-9_]*)\s+([A-Za-z][\s\S]*)$/.exec(field);
45
+ return named ? { name: named[1], type: named[2] } : { type: field };
46
+ }
@@ -0,0 +1,3 @@
1
+ /** Accept plain objects and null-prototype records, excluding class instances. */
2
+ export declare function isPlainRecord(value: unknown): value is Record<string, unknown>;
3
+ //# sourceMappingURL=record-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-guards.d.ts","sourceRoot":"","sources":["../../../src/core/utils/record-guards.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI9E"}
@@ -0,0 +1,7 @@
1
+ /** Accept plain objects and null-prototype records, excluding class instances. */
2
+ export function isPlainRecord(value) {
3
+ if (value === null || typeof value !== 'object')
4
+ return false;
5
+ const prototype = Object.getPrototypeOf(value);
6
+ return prototype === Object.prototype || prototype === null;
7
+ }
@@ -1,3 +1,9 @@
1
+ /**
2
+ * When `start` opens a region that is not SQL code — a literal, a quoted
3
+ * identifier, a heredoc, or a comment — returns the index just past it.
4
+ * Scanners use it so markers inside such a region stay data.
5
+ */
6
+ export declare function skipNonCode(sql: string, start: number): number | undefined;
1
7
  /**
2
8
  * Split on positional parameter markers that occur in SQL code. Question marks
3
9
  * inside literals, quoted identifiers, heredocs, or comments are data, not
@@ -1 +1 @@
1
- {"version":3,"file":"sql-parens.d.ts","sourceRoot":"","sources":["../../../src/core/utils/sql-parens.ts"],"names":[],"mappings":"AAqGA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB1D;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAchE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA8B/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAuBzD"}
1
+ {"version":3,"file":"sql-parens.d.ts","sourceRoot":"","sources":["../../../src/core/utils/sql-parens.ts"],"names":[],"mappings":"AAuEA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAqB1E;AASD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB1D;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAchE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA8B/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAuBzD"}
@@ -65,7 +65,12 @@ function isLineCommentStart(sql, start) {
65
65
  return true;
66
66
  return sql[start] === '#' && (sql[start + 1] === ' ' || sql[start + 1] === '!');
67
67
  }
68
- function skipNonCode(sql, start) {
68
+ /**
69
+ * When `start` opens a region that is not SQL code — a literal, a quoted
70
+ * identifier, a heredoc, or a comment — returns the index just past it.
71
+ * Scanners use it so markers inside such a region stay data.
72
+ */
73
+ export function skipNonCode(sql, start) {
69
74
  const ch = sql[start];
70
75
  if (ch === "'" || ch === '"' || ch === '`') {
71
76
  return skipQuoted(sql, start, ch);
package/dist/index.d.ts CHANGED
@@ -20,7 +20,10 @@ export { MemoryCacheProvider as MemoryLRUCacheProvider } from './core/cache/prov
20
20
  export { NoopCacheProvider } from './core/cache/providers/noop.js';
21
21
  export type { ColumnType, TableColumn, TableSchema, TableRecord, DatabaseSchema, InferColumnType, } from './types/schema.js';
22
22
  export type { InsertRow, InsertRowForColumns, InsertValue, InsertJsonValue, } from './types/insert.js';
23
- export type { OrderDirection, QueryConfig, AggregationType } from './types/base.js';
23
+ export type { OrderDirection, QueryConfig, AggregationType, RawCteBody } from './types/base.js';
24
+ export { CteScope } from './core/cte-scope.js';
25
+ export type { CteScopeDeps } from './core/cte-scope.js';
26
+ export type { CteBody } from './core/features/analytics.js';
24
27
  export type { FilterOperator, OperatorValueMap, FilterConditionInput } from './types/filters.js';
25
28
  export type { JoinPath, JoinPathOptions } from './core/join-relationships.js';
26
29
  export { CrossFilter } from './core/cross-filter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ export { CacheController } from './core/cache/controller.js';
18
18
  export { MemoryCacheProvider } from './core/cache/providers/memory-lru.js';
19
19
  export { MemoryCacheProvider as MemoryLRUCacheProvider } from './core/cache/providers/memory-lru.js';
20
20
  export { NoopCacheProvider } from './core/cache/providers/noop.js';
21
+ export { CteScope } from './core/cte-scope.js';
21
22
  export { CrossFilter } from './core/cross-filter.js';
22
23
  export { logger } from './core/utils/logger.js';
23
24
  // Re-export SQL expression utilities
@@ -16,6 +16,12 @@ export interface QueryConfig<_T, _Schema> {
16
16
  orderBy?: OrderByItemNode[];
17
17
  joins?: JoinNode[];
18
18
  ctes?: CteNode[];
19
+ /**
20
+ * Renders the `WITH` clause as `WITH RECURSIVE`. `RECURSIVE` is a property of
21
+ * the clause rather than of a single entry, so one recursive CTE marks the
22
+ * whole list — the same rule SQL itself uses.
23
+ */
24
+ recursiveCtes?: boolean;
19
25
  unionQueries?: string[];
20
26
  settings?: ClickHouseSettings;
21
27
  }
@@ -69,6 +75,12 @@ export interface TableSourceNode {
69
75
  kind: 'table';
70
76
  name: string;
71
77
  final?: boolean;
78
+ /**
79
+ * The name resolves to a CTE declared on this query rather than to a table.
80
+ * It renders identically, but table-only modifiers (`FINAL`, `PREWHERE`) do
81
+ * not apply to it.
82
+ */
83
+ cte?: boolean;
72
84
  }
73
85
  export interface SubquerySourceNode {
74
86
  kind: 'subquery';
@@ -117,7 +129,34 @@ export interface LimitByNode {
117
129
  }
118
130
  export interface CteNode {
119
131
  kind: 'cte';
132
+ /**
133
+ * The entry as a single rendered fragment, with any parameter values already
134
+ * substituted. Kept as the canonical field so consumers reading it keep
135
+ * working; compilation prefers `name`/`body` when they are present.
136
+ */
120
137
  expression: string;
138
+ /** CTE alias. Present for named CTEs, absent for `withScalar` entries. */
139
+ name?: string;
140
+ /**
141
+ * The CTE body with `?` placeholders left in place, so its values can stay
142
+ * bound instead of being escaped into `expression`.
143
+ */
144
+ body?: string;
145
+ /** Values for the placeholders in `body`, in order. */
146
+ parameters?: unknown[];
147
+ }
148
+ /**
149
+ * A raw CTE body with its values kept out of the SQL text. Placeholders use
150
+ * ClickHouse's `{name:Type}` form and are matched by name against `parameters`.
151
+ *
152
+ * Required for a recursive CTE, whose recursive term references an alias that
153
+ * no builder can express; ordinary CTEs are better written as a builder.
154
+ */
155
+ export interface RawCteBody {
156
+ /** The CTE body, with `{name:Type}` placeholders for its values. */
157
+ sql: string;
158
+ /** Values for those placeholders, keyed by placeholder name. */
159
+ parameters?: Record<string, unknown>;
121
160
  }
122
161
  export interface SelectQueryNode<T, Schema> extends QueryConfig<T, Schema> {
123
162
  kind: 'select-query';
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,WAAW,CAAC,EAAE,EAAE,OAAO;IACtC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AACrC,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,EAAE,GACX,SAAS,EAAE,EAAE,GACb,CAAC,SAAS,EAAE,SAAS,CAAC,GACtB,MAAM,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QACX,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;QAC3B,UAAU,EAAE,QAAQ,CAAC;KACtB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED,MAAM,MAAM,QAAQ,GAAG,iBAAiB,GAAG,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAE5G,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,kBAAkB,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,OAAO,GAAG,YAAY,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,EAAE,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,MAAM,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;IACxE,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,OAAO,IACrH,SAAS,SAAS,IAAI,GACpB;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM;CAAE,GACzD,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,YAAY,GAAG,MAAM,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GACvF,MAAM,CAAC,CAAC,SAAS,SAAS,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypequery/clickhouse",
3
- "version": "2.10.0",
3
+ "version": "2.11.0",
4
4
  "description": "Type-safe ClickHouse query builder and schema generator for TypeScript analytics",
5
5
  "keywords": [
6
6
  "clickhouse",
@@ -48,7 +48,7 @@
48
48
  "dependencies": {
49
49
  "@clickhouse/client": "^1.18.3",
50
50
  "dotenv": "^16.0.0",
51
- "@hypequery/protocol": "0.12.0"
51
+ "@hypequery/protocol": "0.13.0"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@clickhouse/client-web": "^0.2.0 || ^1.0.0",
@@ -74,7 +74,7 @@
74
74
  "typescript": "^5.7.3",
75
75
  "@vitest/coverage-v8": "^3.2.6",
76
76
  "vitest": "^3.2.6",
77
- "@hypequery/datasets": "0.14.0"
77
+ "@hypequery/datasets": "0.16.0"
78
78
  },
79
79
  "ts-node": {
80
80
  "esm": true,