@hypequery/clickhouse 2.8.1 → 2.9.1

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.
@@ -95,8 +95,7 @@ export interface IntrospectedSchema {`;
95
95
  const columns = await columnsQuery.json();
96
96
  typeDefinitions += `\n ${table.name}: {`;
97
97
  for (const column of columns) {
98
- const clickHouseType = column.type.replace(/'/g, "\\'"); // Escape single quotes, e.g. `DateTime('UTC')`
99
- typeDefinitions += `\n '${column.name}': '${clickHouseType}';`;
98
+ typeDefinitions += `\n '${column.name}': ${JSON.stringify(column.type)};`;
100
99
  }
101
100
  typeDefinitions += '\n };';
102
101
  }
@@ -114,7 +113,7 @@ export interface IntrospectedSchema {`;
114
113
 
115
114
  typeDefinitions += `export interface ${capitalizeFirstLetter(table.name)}Record {`;
116
115
  for (const column of columns) {
117
- const tsType = clickhouseToTsType(column.type).replace(/'/g, '');
116
+ const tsType = clickhouseToTsType(column.type);
118
117
  typeDefinitions += `\n '${column.name}': ${tsType};`;
119
118
  }
120
119
  typeDefinitions += '\n}\n\n';
@@ -2,8 +2,29 @@ function splitTopLevelArgs(value) {
2
2
  const parts = [];
3
3
  let current = '';
4
4
  let depth = 0;
5
+ let quote = null;
6
+ let escaped = false;
5
7
 
6
8
  for (const char of value) {
9
+ if (quote) {
10
+ current += char;
11
+
12
+ if (escaped) {
13
+ escaped = false;
14
+ } else if (char === '\\') {
15
+ escaped = true;
16
+ } else if (char === quote) {
17
+ quote = null;
18
+ }
19
+ continue;
20
+ }
21
+
22
+ if (char === "'" || char === '"' || char === '`') {
23
+ quote = char;
24
+ current += char;
25
+ continue;
26
+ }
27
+
7
28
  if (char === '(') {
8
29
  depth += 1;
9
30
  current += char;
@@ -32,6 +53,61 @@ function splitTopLevelArgs(value) {
32
53
  return parts;
33
54
  }
34
55
 
56
+ function decodeClickHouseEscape(char) {
57
+ switch (char) {
58
+ case 'b': return '\b';
59
+ case 'f': return '\f';
60
+ case 'n': return '\n';
61
+ case 'r': return '\r';
62
+ case 't': return '\t';
63
+ case '0': return '\0';
64
+ default: return char;
65
+ }
66
+ }
67
+
68
+ function parseBacktickTuplePart(part) {
69
+ let name = '';
70
+ let escaped = false;
71
+
72
+ for (let index = 1; index < part.length; index += 1) {
73
+ const char = part[index];
74
+
75
+ if (escaped) {
76
+ name += decodeClickHouseEscape(char);
77
+ escaped = false;
78
+ continue;
79
+ }
80
+
81
+ if (char === '\\') {
82
+ escaped = true;
83
+ continue;
84
+ }
85
+
86
+ if (char === '`') {
87
+ const type = part.slice(index + 1);
88
+ return /^\s+\S/s.test(type) ? { name, type: type.trim() } : null;
89
+ }
90
+
91
+ name += char;
92
+ }
93
+
94
+ return null;
95
+ }
96
+
97
+ function parseNamedTuplePart(value) {
98
+ const part = value.trim();
99
+ if (part.startsWith('`')) {
100
+ return parseBacktickTuplePart(part);
101
+ }
102
+
103
+ const match = /^([A-Za-z_][A-Za-z0-9_]*)\s+(.+)$/s.exec(part);
104
+ return match ? { name: match[1], type: match[2].trim() } : null;
105
+ }
106
+
107
+ function formatTypeScriptProperty(name) {
108
+ return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : JSON.stringify(name);
109
+ }
110
+
35
111
  function unwrapType(type, wrapperName) {
36
112
  // Trim whitespace and handle case-insensitive matching
37
113
  const trimmedType = type.trim();
@@ -102,28 +178,35 @@ function getPrimitiveTsType(type) {
102
178
  }
103
179
 
104
180
  export const clickhouseToTsType = (type) => {
105
- const wrappedArrayType = unwrapType(type, 'Array');
181
+ const normalizedType = type.trim();
182
+ const wrappedArrayType = unwrapType(normalizedType, 'Array');
106
183
  if (wrappedArrayType) {
107
184
  return `Array<${clickhouseToTsType(wrappedArrayType)}>`;
108
185
  }
109
186
 
110
- const wrappedNullableType = unwrapType(type, 'Nullable');
187
+ const wrappedNullableType = unwrapType(normalizedType, 'Nullable');
111
188
  if (wrappedNullableType) {
112
189
  return `${clickhouseToTsType(wrappedNullableType)} | null`;
113
190
  }
114
191
 
115
- const wrappedLowCardinalityType = unwrapType(type, 'LowCardinality');
192
+ const wrappedLowCardinalityType = unwrapType(normalizedType, 'LowCardinality');
116
193
  if (wrappedLowCardinalityType) {
117
194
  return clickhouseToTsType(wrappedLowCardinalityType);
118
195
  }
119
196
 
120
- const wrappedTupleType = unwrapType(type, 'Tuple');
197
+ const wrappedTupleType = unwrapType(normalizedType, 'Tuple');
121
198
  if (wrappedTupleType) {
122
199
  const tupleParts = splitTopLevelArgs(wrappedTupleType);
200
+ const namedParts = tupleParts.map(parseNamedTuplePart);
201
+ if (namedParts.length > 0 && namedParts.every(part => part !== null)) {
202
+ return `{ ${namedParts
203
+ .map(part => `${formatTypeScriptProperty(part.name)}: ${clickhouseToTsType(part.type)}`)
204
+ .join('; ')} }`;
205
+ }
123
206
  return `[${tupleParts.map(clickhouseToTsType).join(', ')}]`;
124
207
  }
125
208
 
126
- const wrappedMapType = unwrapType(type, 'Map');
209
+ const wrappedMapType = unwrapType(normalizedType, 'Map');
127
210
  if (wrappedMapType) {
128
211
  const mapParts = splitTopLevelArgs(wrappedMapType);
129
212
  if (mapParts.length === 2) {
@@ -134,7 +217,7 @@ export const clickhouseToTsType = (type) => {
134
217
  return 'Record<string, unknown>';
135
218
  }
136
219
 
137
- const primitiveType = getPrimitiveTsType(type);
220
+ const primitiveType = getPrimitiveTsType(normalizedType);
138
221
  if (primitiveType) return primitiveType;
139
222
 
140
223
  // Unsupported or more complex ClickHouse types currently preserve the historical fallback.
@@ -1,4 +1,4 @@
1
- import type { ParseTopLevelArgs } from './type-helpers.js';
1
+ import type { AreAllTuplePartsNamed, ParseNamedTupleFields, ParseTopLevelArgs } from './type-helpers.js';
2
2
  export type ClickHouseInteger = 'Int8' | 'Int16' | 'Int32' | 'Int64' | 'Int128' | 'Int256' | 'UInt8' | 'UInt16' | 'UInt32' | 'UInt64' | 'UInt128' | 'UInt256';
3
3
  export type ClickHouseJsSafeInteger = 'Int8' | 'Int16' | 'Int32' | 'UInt8' | 'UInt16' | 'UInt32';
4
4
  export type ClickHouseJsUnsafeInteger = Exclude<ClickHouseInteger, ClickHouseJsSafeInteger>;
@@ -11,7 +11,9 @@ export type ClickHouseBoolean = 'Bool' | 'Boolean';
11
11
  export type ClickHouseEnum = `Enum8(${string})` | `Enum16(${string})`;
12
12
  export type ClickHouseBaseType = ClickHouseInteger | ClickHouseFloat | ClickHouseDecimal | ClickHouseDateTime | ClickHouseString | ClickHouseJson | ClickHouseBoolean | ClickHouseEnum;
13
13
  export type ClickHouseType = ClickHouseBaseType | `Array(${string})` | `Nullable(${string})` | `LowCardinality(${string})` | `Map(${string}, ${string})` | `Tuple(${string})`;
14
- export type InferClickHouseType<T extends string, Depth extends number = 0> = Depth extends 5 ? unknown : T extends ClickHouseJsSafeInteger ? number : T extends ClickHouseJsUnsafeInteger ? string : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number : T extends ClickHouseDateTime ? string : T extends ClickHouseString ? string : T extends ClickHouseJson ? unknown : T extends ClickHouseEnum ? string : T extends ClickHouseBoolean ? boolean : T extends `Array(${infer U})` ? U extends ClickHouseType ? Array<InferClickHouseType<U, Add1<Depth>>> : unknown[] : T extends `Tuple(${infer U})` ? ParseTopLevelArgs<U> extends infer Parts extends string[] ? {
14
+ export type InferClickHouseType<T extends string, Depth extends number = 0> = Depth extends 5 ? unknown : T extends ClickHouseJsSafeInteger ? number : T extends ClickHouseJsUnsafeInteger ? string : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number : T extends ClickHouseDateTime ? string : T extends ClickHouseString ? string : T extends ClickHouseJson ? unknown : T extends ClickHouseEnum ? string : T extends ClickHouseBoolean ? boolean : T extends `Array(${infer U})` ? U extends ClickHouseType ? Array<InferClickHouseType<U, Add1<Depth>>> : unknown[] : T extends `Tuple(${infer U})` ? ParseTopLevelArgs<U> extends infer Parts extends string[] ? AreAllTuplePartsNamed<Parts> extends true ? ParseNamedTupleFields<Parts> extends infer Fields extends Record<string, string> ? {
15
+ [K in keyof Fields]: InferClickHouseType<Fields[K] & ClickHouseType, Add1<Depth>>;
16
+ } : never : {
15
17
  [K in keyof Parts]: InferClickHouseType<Parts[K] & ClickHouseType, Add1<Depth>>;
16
18
  } : unknown[] : T extends `Nullable(${infer U})` ? U extends ClickHouseType ? InferClickHouseType<U, Add1<Depth>> | null : unknown | null : T extends `LowCardinality(${infer U})` ? U extends ClickHouseType ? InferClickHouseType<U, Add1<Depth>> : unknown : T extends `Map(${string}, ${infer V})` ? V extends ClickHouseType ? Record<string, InferClickHouseType<V, Add1<Depth>>> : Record<string, unknown> : unknown;
17
19
  type Add1<T extends number> = T extends 0 ? 1 : T extends 1 ? 2 : T extends 2 ? 3 : T extends 3 ? 4 : 5;
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GACzB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAC1D,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GAAG,OAAO,GAAG,OAAO,GAC1B,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElC,MAAM,MAAM,yBAAyB,GACnC,OAAO,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GACzB,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GACvD,aAAa,MAAM,GAAG,GACtB,aAAa,MAAM,GAAG,GACtB,cAAc,MAAM,GAAG,GACvB,cAAc,MAAM,GAAG,GACvB,WAAW,MAAM,KAAK,MAAM,GAAG,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GAAG,QAAQ,GACjB,UAAU,GACV,aAAa,MAAM,IAAI,GACvB,cAAc,MAAM,GAAG,GACvB,cAAc,MAAM,MAAM,MAAM,IAAI,CAAC;AAEzC,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,eAAe,MAAM,GAAG,GACxB,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnD,MAAM,MAAM,cAAc,GACtB,SAAS,MAAM,GAAG,GAClB,UAAU,MAAM,GAAG,CAAC;AAExB,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,cAAc,GACd,iBAAiB,GACjB,cAAc,CAAC;AAEnB,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,SAAS,MAAM,GAAG,GAClB,YAAY,MAAM,GAAG,GACrB,kBAAkB,MAAM,GAAG,GAC3B,OAAO,MAAM,KAAK,MAAM,GAAG,GAC3B,SAAS,MAAM,GAAG,CAAC;AAGvB,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,GAAG,CAAC,IACxE,KAAK,SAAS,CAAC,GACb,OAAO,GACP,CAAC,SAAS,uBAAuB,GAAG,MAAM,GAC1C,CAAC,SAAS,yBAAyB,GAAG,MAAM,GAC5C,CAAC,SAAS,eAAe,GAAG,MAAM,GAClC,CAAC,SAAS,iBAAiB,GAAG,MAAM,GACpC,CAAC,SAAS,kBAAkB,GAAG,MAAM,GACrC,CAAC,SAAS,gBAAgB,GAAG,MAAM,GACnC,CAAC,SAAS,cAAc,GAAG,OAAO,GAClC,CAAC,SAAS,cAAc,GAAG,MAAM,GACjC,CAAC,SAAS,iBAAiB,GAAG,OAAO,GACrC,CAAC,SAAS,SAAS,MAAM,CAAC,GAAG,GAC7B,CAAC,SAAS,cAAc,GACxB,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAC1C,OAAO,EAAE,GACT,CAAC,SAAS,SAAS,MAAM,CAAC,GAAG,GAC7B,iBAAiB,CAAC,CAAC,CAAC,SAAS,MAAM,KAAK,SAAS,MAAM,EAAE,GACvD;KAAG,CAAC,IAAI,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;CAAE,GACnF,OAAO,EAAE,GACX,CAAC,SAAS,YAAY,MAAM,CAAC,GAAG,GAChC,CAAC,SAAS,cAAc,GACxB,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAC1C,OAAO,GAAG,IAAI,GACd,CAAC,SAAS,kBAAkB,MAAM,CAAC,GAAG,GACtC,CAAC,SAAS,cAAc,GACtB,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GACnC,OAAO,GACT,CAAC,SAAS,OAAO,MAAM,KAAK,MAAM,CAAC,GAAG,GACtC,CAAC,SAAS,cAAc,GACxB,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,OAAO,CAAC;AAEZ,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAGxG,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAG9D,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,gBAAgB,IAAI;KACvD,CAAC,IAAI,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAC"}
1
+ {"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ClickHouseJsSafeInteger, ClickHouseJsUnsafeInteger, ClickHouseFloat, ClickHouseDecimal, ClickHouseDateTime, ClickHouseString, ClickHouseJson, ClickHouseEnum, ClickHouseBoolean, ClickHouseType } from './clickhouse-types.js';
2
- import type { ParseTopLevelArgs } from './type-helpers.js';
2
+ import type { AreAllTuplePartsNamed, ParseNamedTupleFields, ParseTopLevelArgs } from './type-helpers.js';
3
3
  import type { ColumnType } from './schema.js';
4
4
  import type { Simplify } from '../core/types/type-helpers.js';
5
5
  type Add1<T extends number> = T extends 0 ? 1 : T extends 1 ? 2 : T extends 2 ? 3 : T extends 3 ? 4 : 5;
@@ -26,7 +26,9 @@ export type InsertJsonValue = string | number | boolean | null | InsertJsonValue
26
26
  export type InsertValue<T extends string, Depth extends number = 0> = [
27
27
  ClickHouseType
28
28
  ] extends [T] ? unknown : InsertValueOf<T, Depth>;
29
- type InsertValueOf<T extends string, Depth extends number> = Depth extends 5 ? unknown : T extends ClickHouseJsSafeInteger ? number : T extends ClickHouseJsUnsafeInteger ? string | number | bigint : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number | string : T extends 'Date' | 'Date32' ? string : T extends ClickHouseDateTime ? string | Date | number : T extends ClickHouseString ? string : T extends ClickHouseJson ? InsertJsonValue : T extends ClickHouseEnum ? string | number : T extends ClickHouseBoolean ? boolean : T extends `Array(${infer U})` ? U extends ClickHouseType ? Array<InsertValue<U, Add1<Depth>>> : unknown[] : T extends `Tuple(${infer U})` ? ParseTopLevelArgs<U> extends infer Parts extends string[] ? {
29
+ type InsertValueOf<T extends string, Depth extends number> = Depth extends 5 ? unknown : T extends ClickHouseJsSafeInteger ? number : T extends ClickHouseJsUnsafeInteger ? string | number | bigint : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number | string : T extends 'Date' | 'Date32' ? string : T extends ClickHouseDateTime ? string | Date | number : T extends ClickHouseString ? string : T extends ClickHouseJson ? InsertJsonValue : T extends ClickHouseEnum ? string | number : T extends ClickHouseBoolean ? boolean : T extends `Array(${infer U})` ? U extends ClickHouseType ? Array<InsertValue<U, Add1<Depth>>> : unknown[] : T extends `Tuple(${infer U})` ? ParseTopLevelArgs<U> extends infer Parts extends string[] ? AreAllTuplePartsNamed<Parts> extends true ? ParseNamedTupleFields<Parts> extends infer Fields extends Record<string, string> ? {
30
+ [K in keyof Fields]: InsertValue<Fields[K] & ClickHouseType, Add1<Depth>>;
31
+ } : never : {
30
32
  [K in keyof Parts]: InsertValue<Parts[K] & ClickHouseType, Add1<Depth>>;
31
33
  } : unknown[] : T extends `Nullable(${infer U})` ? U extends ClickHouseType ? InsertValue<U, Add1<Depth>> | null : unknown | null : T extends `LowCardinality(${infer U})` ? U extends ClickHouseType ? InsertValue<U, Add1<Depth>> : unknown : T extends `Map(${string}, ${infer V})` ? V extends ClickHouseType ? Record<string, InsertValue<V, Add1<Depth>>> : Record<string, unknown> : unknown;
32
34
  type IsNullableColumn<T extends string> = T extends `Nullable(${string})` ? true : T extends `LowCardinality(Nullable(${string}))` ? true : false;
@@ -1 +1 @@
1
- {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../src/types/insert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../src/types/insert.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,25 @@
1
- type TrimLeft<S extends string> = S extends ` ${infer R}` ? TrimLeft<R> : S;
2
- type TrimRight<S extends string> = S extends `${infer R} ` ? TrimRight<R> : S;
1
+ type ClickHouseWhitespace = ' ' | '\n' | '\r' | '\t';
2
+ type QuoteCharacter = "'" | '"' | '`';
3
+ type TrimLeft<S extends string> = S extends `${ClickHouseWhitespace}${infer R}` ? TrimLeft<R> : S;
4
+ type TrimRight<S extends string> = S extends `${infer R}${ClickHouseWhitespace}` ? TrimRight<R> : S;
3
5
  type Trim<S extends string> = TrimLeft<TrimRight<S>>;
4
6
  type Push<T extends string[], V extends string> = [...T, V];
5
- export type ParseTopLevelArgs<S extends string, Current extends string = '', Depth extends string[] = [], Result extends string[] = []> = S extends `${infer First}${infer Rest}` ? First extends '(' ? ParseTopLevelArgs<Rest, `${Current}${First}`, Push<Depth, First>, Result> : First extends ')' ? Depth extends [...infer Remaining extends string[], string] ? ParseTopLevelArgs<Rest, `${Current}${First}`, Remaining, Result> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : First extends ',' ? Depth['length'] extends 0 ? ParseTopLevelArgs<Rest, '', Depth, Push<Result, Trim<Current>>> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : Current extends '' ? Result : Push<Result, Trim<Current>>;
7
+ export type ParseTopLevelArgs<S extends string, Current extends string = '', Depth extends string[] = [], Result extends string[] = [], Quote extends QuoteCharacter | '' = '', Escaped extends boolean = false> = S extends `${infer First}${infer Rest}` ? Quote extends QuoteCharacter ? Escaped extends true ? ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result, Quote, false> : First extends '\\' ? ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result, Quote, true> : First extends Quote ? ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result, '', false> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result, Quote, false> : First extends QuoteCharacter ? ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result, First, false> : First extends '(' ? ParseTopLevelArgs<Rest, `${Current}${First}`, Push<Depth, First>, Result> : First extends ')' ? Depth extends [...infer Remaining extends string[], string] ? ParseTopLevelArgs<Rest, `${Current}${First}`, Remaining, Result> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : First extends ',' ? Depth['length'] extends 0 ? ParseTopLevelArgs<Rest, '', Depth, Push<Result, Trim<Current>>> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : ParseTopLevelArgs<Rest, `${Current}${First}`, Depth, Result> : Current extends '' ? Result : Push<Result, Trim<Current>>;
8
+ type LowercaseLetter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
9
+ type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
10
+ type IdentifierStart = LowercaseLetter | Uppercase<LowercaseLetter> | '_';
11
+ type IdentifierCharacter = IdentifierStart | Digit;
12
+ type DecodeClickHouseEscape<C extends string> = C extends 'b' ? '\b' : C extends 'f' ? '\f' : C extends 'n' ? '\n' : C extends 'r' ? '\r' : C extends 't' ? '\t' : C extends '0' ? '\0' : C;
13
+ type TakeIdentifierRest<S extends string, Name extends string> = S extends `${infer First}${infer Rest}` ? First extends IdentifierCharacter ? TakeIdentifierRest<Rest, `${Name}${First}`> : First extends ClickHouseWhitespace ? TrimLeft<Rest> extends infer Type extends string ? Type extends '' ? never : [Name, Type] : never : never : never;
14
+ type TakeUnquotedIdentifier<S extends string> = S extends `${infer First}${infer Rest}` ? First extends IdentifierStart ? TakeIdentifierRest<Rest, First> : never : never;
15
+ type TakeBacktickIdentifier<S extends string, Name extends string = '', Escaped extends boolean = false> = S extends `${infer First}${infer Rest}` ? Escaped extends true ? TakeBacktickIdentifier<Rest, `${Name}${DecodeClickHouseEscape<First>}`, false> : First extends '\\' ? TakeBacktickIdentifier<Rest, Name, true> : First extends '`' ? Rest extends `${ClickHouseWhitespace}${infer Type}` ? TrimLeft<Type> extends infer TrimmedType extends string ? TrimmedType extends '' ? never : [Name, TrimmedType] : never : never : TakeBacktickIdentifier<Rest, `${Name}${First}`, false> : never;
16
+ /** Split a canonical named Tuple element into its field name and ClickHouse type. */
17
+ export type ParseNamedTuplePart<S extends string> = Trim<S> extends infer Part extends string ? Part extends `\`${infer Rest}` ? TakeBacktickIdentifier<Rest> : TakeUnquotedIdentifier<Part> : never;
18
+ /** Whether every Tuple argument has an explicit field name. */
19
+ export type AreAllTuplePartsNamed<Parts extends readonly string[]> = Parts extends readonly [infer First extends string, ...infer Rest extends string[]] ? [ParseNamedTuplePart<First>] extends [never] ? false : AreAllTuplePartsNamed<Rest> : true;
20
+ /** Convert named Tuple arguments into a field-name-to-ClickHouse-type map. */
21
+ export type ParseNamedTupleFields<Parts extends readonly string[]> = {
22
+ [Part in Parts[number] as ParseNamedTuplePart<Part> extends [infer Name extends string, string] ? Name : never]: ParseNamedTuplePart<Part> extends [string, infer Type extends string] ? Type : never;
23
+ };
6
24
  export {};
7
25
  //# sourceMappingURL=type-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-helpers.d.ts","sourceRoot":"","sources":["../../src/types/type-helpers.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5E,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9E,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAG5D,MAAM,MAAM,iBAAiB,CAC3B,CAAC,SAAS,MAAM,EAChB,OAAO,SAAS,MAAM,GAAG,EAAE,EAC3B,KAAK,SAAS,MAAM,EAAE,GAAG,EAAE,EAC3B,MAAM,SAAS,MAAM,EAAE,GAAG,EAAE,IAC1B,CAAC,SAAS,GAAG,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,GACvC,KAAK,SAAS,GAAG,GACf,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,GACzE,KAAK,SAAS,GAAG,GACf,KAAK,SAAS,CAAC,GAAG,MAAM,SAAS,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,GACzD,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,GAChE,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAC9D,KAAK,SAAS,GAAG,GACf,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GACvB,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAC/D,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAC9D,iBAAiB,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAClE,OAAO,SAAS,EAAE,GAChB,MAAM,GACN,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"type-helpers.d.ts","sourceRoot":"","sources":["../../src/types/type-helpers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypequery/clickhouse",
3
- "version": "2.8.1",
3
+ "version": "2.9.1",
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.11.0"
51
+ "@hypequery/protocol": "0.11.1"
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.13.5"
77
+ "@hypequery/datasets": "0.13.6"
78
78
  },
79
79
  "ts-node": {
80
80
  "esm": true,