@chkit/clickhouse 0.1.2-beta.5 → 0.2.0-beta.11

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.
@@ -0,0 +1,21 @@
1
+ import type { ClickHouseExecutor } from './index.js';
2
+ /**
3
+ * Canonicalize SQL fragments through ClickHouse's own formatter, so a schema
4
+ * fragment can be compared against what ClickHouse actually stores. The server
5
+ * rewrites expressions on the way in — spacing, operator precedence parens,
6
+ * `INTERVAL n UNIT` → `toIntervalUnit(n)` — which no local string normalizer can
7
+ * reproduce (#195).
8
+ *
9
+ * `wrap` distinguishes a scalar expression (wrapped as `SELECT <expr>`, prefix
10
+ * stripped back off) from a full `SELECT` query (formatted as-is). Formatting is
11
+ * batched into a single query using `formatQuerySingleLineOrNull`, which yields
12
+ * NULL for a fragment it can't parse rather than failing the whole batch — those
13
+ * are simply left out of the map so the caller falls back to string comparison.
14
+ *
15
+ * Returns a map from the input fragment to its ClickHouse-canonical form. A
16
+ * fragment missing from the map (unparseable, or an empty input) has no entry.
17
+ */
18
+ export declare function canonicalizeSqlFragments(executor: ClickHouseExecutor, fragments: readonly string[], options: {
19
+ wrap: boolean;
20
+ }): Promise<Map<string, string>>;
21
+ //# sourceMappingURL=canonicalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonicalize.d.ts","sourceRoot":"","sources":["../src/canonicalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAkCpD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwB9B"}
@@ -0,0 +1,70 @@
1
+ function quoteLiteral(value) {
2
+ return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "''")}'`;
3
+ }
4
+ function stripSelectPrefix(formatted) {
5
+ const match = formatted.match(/^SELECT\s+([\s\S]+)$/i);
6
+ return match?.[1]?.trim() ?? null;
7
+ }
8
+ // Keep each batched query well under ClickHouse's default max_query_size
9
+ // (262144 bytes) so a large schema doesn't overflow a single query — which would
10
+ // throw and silently drop the whole run back to string comparison.
11
+ const MAX_BATCH_LITERAL_BYTES = 128_000;
12
+ function batchFragments(fragments) {
13
+ const batches = [];
14
+ let current = [];
15
+ let size = 0;
16
+ for (const fragment of fragments) {
17
+ const cost = quoteLiteral(fragment).length + 2; // literal + ", " separator
18
+ if (current.length > 0 && size + cost > MAX_BATCH_LITERAL_BYTES) {
19
+ batches.push(current);
20
+ current = [];
21
+ size = 0;
22
+ }
23
+ current.push(fragment);
24
+ size += cost;
25
+ }
26
+ if (current.length > 0)
27
+ batches.push(current);
28
+ return batches;
29
+ }
30
+ /**
31
+ * Canonicalize SQL fragments through ClickHouse's own formatter, so a schema
32
+ * fragment can be compared against what ClickHouse actually stores. The server
33
+ * rewrites expressions on the way in — spacing, operator precedence parens,
34
+ * `INTERVAL n UNIT` → `toIntervalUnit(n)` — which no local string normalizer can
35
+ * reproduce (#195).
36
+ *
37
+ * `wrap` distinguishes a scalar expression (wrapped as `SELECT <expr>`, prefix
38
+ * stripped back off) from a full `SELECT` query (formatted as-is). Formatting is
39
+ * batched into a single query using `formatQuerySingleLineOrNull`, which yields
40
+ * NULL for a fragment it can't parse rather than failing the whole batch — those
41
+ * are simply left out of the map so the caller falls back to string comparison.
42
+ *
43
+ * Returns a map from the input fragment to its ClickHouse-canonical form. A
44
+ * fragment missing from the map (unparseable, or an empty input) has no entry.
45
+ */
46
+ export async function canonicalizeSqlFragments(executor, fragments, options) {
47
+ const result = new Map();
48
+ const unique = [...new Set(fragments.map((fragment) => fragment.trim()).filter((f) => f.length > 0))];
49
+ if (unique.length === 0)
50
+ return result;
51
+ const formatCall = options.wrap
52
+ ? `formatQuerySingleLineOrNull('SELECT ' || fragment)`
53
+ : `formatQuerySingleLineOrNull(fragment)`;
54
+ for (const batch of batchFragments(unique)) {
55
+ const arrayLiteral = batch.map(quoteLiteral).join(', ');
56
+ const rows = await executor.query(`SELECT arrayMap(fragment -> ${formatCall}, [${arrayLiteral}]) AS formatted`);
57
+ const formatted = rows[0]?.formatted ?? [];
58
+ for (let i = 0; i < batch.length; i += 1) {
59
+ const raw = batch[i];
60
+ const value = formatted[i];
61
+ if (raw === undefined || value == null)
62
+ continue;
63
+ const canonical = options.wrap ? stripSelectPrefix(value) : value.trim();
64
+ if (canonical)
65
+ result.set(raw, canonical);
66
+ }
67
+ }
68
+ return result;
69
+ }
70
+ //# sourceMappingURL=canonicalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonicalize.js","sourceRoot":"","sources":["../src/canonicalize.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export interface ParsedDictionaryAttribute {
4
4
  default?: string | number;
5
5
  expression?: string;
6
6
  hierarchical?: boolean;
7
+ bidirectional?: boolean;
7
8
  injective?: boolean;
8
9
  isObjectId?: boolean;
9
10
  }
@@ -13,4 +14,9 @@ export declare function parseSourceFromCreateDictionaryQuery(query: string | und
13
14
  export declare function parseLayoutFromCreateDictionaryQuery(query: string | undefined): string | undefined;
14
15
  export declare function parseLifetimeFromCreateDictionaryQuery(query: string | undefined): string | undefined;
15
16
  export declare function parseCommentFromCreateDictionaryQuery(query: string | undefined): string | undefined;
17
+ export declare function parseDictionaryRangeFromCreateDictionaryQuery(query: string | undefined): {
18
+ min: string;
19
+ max: string;
20
+ } | undefined;
21
+ export declare function parseDictionarySettingsFromCreateDictionaryQuery(query: string | undefined): Record<string, string | number> | undefined;
16
22
  //# sourceMappingURL=create-dictionary-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-dictionary-parser.d.ts","sourceRoot":"","sources":["../src/create-dictionary-parser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAuKD,wBAAgB,kDAAkD,CAChE,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,yBAAyB,EAAE,CAmB7B;AAED,wBAAgB,kDAAkD,CAChE,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,EAAE,CAWV;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGlG;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGlG;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGpG;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKnG"}
1
+ {"version":3,"file":"create-dictionary-parser.d.ts","sourceRoot":"","sources":["../src/create-dictionary-parser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AA+MD,wBAAgB,kDAAkD,CAChE,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,yBAAyB,EAAE,CAmB7B;AAED,wBAAgB,kDAAkD,CAChE,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,EAAE,CAWV;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGlG;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGlG;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGpG;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKnG;AAOD,wBAAgB,6CAA6C,CAC3D,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAO1C;AAED,wBAAgB,gDAAgD,CAC9D,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAc7C"}
@@ -1,5 +1,12 @@
1
1
  import { splitTopLevelComma } from '@chkit/core';
2
- const MODIFIER_KEYWORDS = ['DEFAULT', 'EXPRESSION', 'HIERARCHICAL', 'INJECTIVE', 'IS_OBJECT_ID'];
2
+ const MODIFIER_KEYWORDS = [
3
+ 'DEFAULT',
4
+ 'EXPRESSION',
5
+ 'HIERARCHICAL',
6
+ 'BIDIRECTIONAL',
7
+ 'INJECTIVE',
8
+ 'IS_OBJECT_ID',
9
+ ];
3
10
  function extractBalancedParenGroup(text, fromIndex) {
4
11
  const openIndex = text.indexOf('(', fromIndex);
5
12
  if (openIndex === -1)
@@ -33,25 +40,52 @@ function extractBalancedParenGroup(text, fromIndex) {
33
40
  }
34
41
  return undefined;
35
42
  }
36
- function extractCreateDictionaryBody(query) {
37
- if (!query)
38
- return undefined;
43
+ /**
44
+ * Positions of the parens that open and close the attribute list — the close
45
+ * being the one right before the dictionary's `PRIMARY KEY ...` clause.
46
+ * Returns undefined when there is no balanced attribute list (e.g. a query we
47
+ * can't parse).
48
+ */
49
+ function findAttributeListBounds(query) {
39
50
  const nameMatch = query.match(/\bCREATE\s+(?:OR\s+REPLACE\s+)?DICTIONARY\s+(?:IF\s+NOT\s+EXISTS\s+)?[`\w.]+\s*/i);
40
51
  if (!nameMatch || nameMatch.index === undefined)
41
52
  return undefined;
42
53
  const start = nameMatch.index + nameMatch[0].length;
54
+ const openIndex = query.indexOf('(', start);
55
+ if (openIndex === -1)
56
+ return undefined;
43
57
  const group = extractBalancedParenGroup(query, start);
44
- if (!group)
58
+ return group ? { open: openIndex, close: group.endIndex - 1 } : undefined;
59
+ }
60
+ function extractCreateDictionaryBody(query) {
61
+ if (!query)
62
+ return undefined;
63
+ const bounds = findAttributeListBounds(query);
64
+ if (!bounds)
45
65
  return undefined;
46
- const trimmed = group.content.trim();
47
- return trimmed.length > 0 ? trimmed : undefined;
66
+ const body = query.slice(bounds.open + 1, bounds.close).trim();
67
+ return body.length > 0 ? body : undefined;
68
+ }
69
+ /**
70
+ * Everything after the attribute list: `PRIMARY KEY ... SOURCE(...) LAYOUT(...)
71
+ * ...`. This is where dictionary-level clauses live. Table-level keywords like
72
+ * SOURCE/RANGE can also appear inside an attribute's EXPRESSION (`range()` is a
73
+ * real ClickHouse array function) — searching the whole query would risk
74
+ * matching one of those instead of the real clause. Falls back to the whole
75
+ * query when the attribute list can't be located, preserving behaviour for
76
+ * unparseable inputs.
77
+ */
78
+ function extractDictionaryOptions(query) {
79
+ const bounds = findAttributeListBounds(query);
80
+ return bounds ? query.slice(bounds.close + 1) : query;
48
81
  }
49
82
  function extractKeywordParenBody(query, keyword) {
50
- const match = new RegExp(`\\b${keyword}\\s*\\(`, 'i').exec(query);
83
+ const options = extractDictionaryOptions(query);
84
+ const match = new RegExp(`\\b${keyword}\\s*\\(`, 'i').exec(options);
51
85
  if (!match || match.index === undefined)
52
86
  return undefined;
53
87
  const openIndex = match.index + match[0].length - 1;
54
- const group = extractBalancedParenGroup(query, openIndex);
88
+ const group = extractBalancedParenGroup(options, openIndex);
55
89
  return group ? group.content.trim() : undefined;
56
90
  }
57
91
  // Scans a single attribute's trailing text (everything after `name type`) for the
@@ -149,6 +183,11 @@ function applyAttributeModifiers(attribute, tail) {
149
183
  remaining = remaining.replace(/^HIERARCHICAL\b/i, '').trim();
150
184
  continue;
151
185
  }
186
+ if (/^BIDIRECTIONAL\b/i.test(remaining)) {
187
+ attribute.bidirectional = true;
188
+ remaining = remaining.replace(/^BIDIRECTIONAL\b/i, '').trim();
189
+ continue;
190
+ }
152
191
  if (/^INJECTIVE\b/i.test(remaining)) {
153
192
  attribute.injective = true;
154
193
  remaining = remaining.replace(/^INJECTIVE\b/i, '').trim();
@@ -190,7 +229,8 @@ export function parseDictionaryAttributesFromCreateDictionaryQuery(query) {
190
229
  export function parseDictionaryPrimaryKeyFromCreateDictionaryQuery(query) {
191
230
  if (!query)
192
231
  return [];
193
- const match = /\)\s*PRIMARY\s+KEY\s+([\s\S]*?)(?:\bSOURCE\s*\(|\bLAYOUT\s*\(|\bLIFETIME\s*\(|\bCOMMENT\b|;|$)/i.exec(query);
232
+ const options = extractDictionaryOptions(query);
233
+ const match = /^\s*PRIMARY\s+KEY\s+([\s\S]*?)(?:\bSOURCE\s*\(|\bLAYOUT\s*\(|\bLIFETIME\s*\(|\bCOMMENT\b|;|$)/i.exec(options);
194
234
  const raw = match?.[1]?.trim();
195
235
  if (!raw)
196
236
  return [];
@@ -221,4 +261,38 @@ export function parseCommentFromCreateDictionaryQuery(query) {
221
261
  return undefined;
222
262
  return match[1].replace(/\\'/g, "'").replace(/''/g, "'");
223
263
  }
264
+ function stripBackticks(value) {
265
+ const trimmed = value.trim();
266
+ return trimmed.startsWith('`') && trimmed.endsWith('`') ? trimmed.slice(1, -1) : trimmed;
267
+ }
268
+ export function parseDictionaryRangeFromCreateDictionaryQuery(query) {
269
+ if (!query)
270
+ return undefined;
271
+ const body = extractKeywordParenBody(query, 'RANGE');
272
+ if (!body)
273
+ return undefined;
274
+ const match = /^MIN\s+(\S+)\s+MAX\s+(\S+)$/i.exec(body.trim());
275
+ if (!match?.[1] || !match[2])
276
+ return undefined;
277
+ return { min: stripBackticks(match[1]), max: stripBackticks(match[2]) };
278
+ }
279
+ export function parseDictionarySettingsFromCreateDictionaryQuery(query) {
280
+ if (!query)
281
+ return undefined;
282
+ const body = extractKeywordParenBody(query, 'SETTINGS');
283
+ if (!body)
284
+ return undefined;
285
+ const out = {};
286
+ for (const part of splitTopLevelComma(body)) {
287
+ const eq = part.indexOf('=');
288
+ if (eq === -1)
289
+ continue;
290
+ const key = part.slice(0, eq).trim();
291
+ if (!key)
292
+ continue;
293
+ const { value } = consumeQuotedOrBareValue(part.slice(eq + 1).trim());
294
+ out[key] = value;
295
+ }
296
+ return Object.keys(out).length > 0 ? out : undefined;
297
+ }
224
298
  //# sourceMappingURL=create-dictionary-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-dictionary-parser.js","sourceRoot":"","sources":["../src/create-dictionary-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-dictionary-parser.js","sourceRoot":"","sources":["../src/create-dictionary-parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-table-parser.d.ts","sourceRoot":"","sources":["../src/create-table-parser.ts"],"names":[],"mappings":"AAEA,KAAK,yBAAyB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AA0DjD,wBAAgB,iCAAiC,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB9G;AAED,wBAAgB,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMrG;AAED,wBAAgB,+BAA+B,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMxG;AAED,wBAAgB,mCAAmC,CACjD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,gCAAgC,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMzG;AAED,wBAAgB,oCAAoC,CAClD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,kCAAkC,CAChD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,oCAAoC,CAClD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,yBAAyB,EAAE,CA8B7B"}
1
+ {"version":3,"file":"create-table-parser.d.ts","sourceRoot":"","sources":["../src/create-table-parser.ts"],"names":[],"mappings":"AAUA,KAAK,yBAAyB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AA6EjD,wBAAgB,iCAAiC,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoB9G;AAED,wBAAgB,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMrG;AAED,wBAAgB,+BAA+B,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOxG;AAED,wBAAgB,mCAAmC,CACjD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,gCAAgC,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMzG;AAED,wBAAgB,oCAAoC,CAClD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,kCAAkC,CAChD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,oCAAoC,CAClD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,yBAAyB,EAAE,CA8B7B"}
@@ -1,66 +1,83 @@
1
- import { normalizeProjectionIndex, normalizeSQLFragment, splitTopLevelComma } from '@chkit/core';
2
- function parseClauseFromCreateTableQuery(createTableQuery, clausePattern, stopPattern) {
1
+ import { findQuoteEnd, findTopLevelSQLPattern, isQuoteChar, normalizeProjectionIndex, normalizeSQLFragment, splitTopLevelComma, unquoteIdentifiers, } from '@chkit/core';
2
+ function parseClauseFromCreateTableQuery(createTableQuery, clausePattern, stopPattern, preserveWhitespace = false) {
3
3
  if (!createTableQuery)
4
4
  return undefined;
5
- const start = createTableQuery.match(clausePattern);
6
- if (!start || start.index === undefined)
5
+ // Table-level clauses (ENGINE, ORDER BY, PRIMARY KEY, ...) only appear after
6
+ // the column list. Searching the whole query would match a keyword inside the
7
+ // body — e.g. the `ORDER BY` of a projection's SELECT — and swallow the real
8
+ // clause plus everything up to the next stop keyword (issue #190).
9
+ const options = extractTableOptions(createTableQuery);
10
+ const start = findTopLevelSQLPattern(options, clausePattern);
11
+ if (!start)
7
12
  return undefined;
8
- const afterClause = createTableQuery.slice(start.index + start[0].length);
9
- const stop = afterClause.match(stopPattern);
13
+ const afterClause = options.slice(start.index + start.length);
14
+ const stop = findTopLevelSQLPattern(afterClause, stopPattern);
10
15
  const raw = (stop ? afterClause.slice(0, stop.index) : afterClause).trim();
11
16
  if (!raw)
12
17
  return undefined;
13
- return normalizeSQLFragment(raw);
18
+ return preserveWhitespace ? raw : normalizeSQLFragment(raw);
14
19
  }
15
- function extractCreateTableBody(createTableQuery) {
16
- if (!createTableQuery)
17
- return undefined;
18
- const engineMatch = /\)\s*ENGINE\s*=/i.exec(createTableQuery);
19
- if (!engineMatch || engineMatch.index === undefined)
20
- return undefined;
21
- const left = createTableQuery.slice(0, engineMatch.index + 1);
22
- const openIndex = left.indexOf('(');
23
- if (openIndex === -1)
24
- return undefined;
20
+ /**
21
+ * Positions of the parens that open and close the column list — the close being
22
+ * the one right before the table-level `ENGINE =`. Returns undefined when there
23
+ * is no balanced column list (e.g. a view, or a query we can't parse). Quoted
24
+ * strings and identifiers are skipped, so parens or commas inside a quoted
25
+ * table or column name never count.
26
+ */
27
+ function findColumnListBounds(createTableQuery) {
25
28
  let depth = 0;
26
- let inString = false;
27
- let stringQuote = "'";
28
- for (let i = openIndex; i < left.length; i += 1) {
29
- const char = left[i];
30
- if (!char)
31
- continue;
32
- if (inString) {
33
- if (char === stringQuote && left[i - 1] !== '\\') {
34
- inString = false;
35
- }
36
- continue;
37
- }
38
- if (char === "'" || char === '"') {
39
- inString = true;
40
- stringQuote = char;
29
+ let openIndex = -1;
30
+ for (let i = 0; i < createTableQuery.length; i += 1) {
31
+ const char = createTableQuery[i];
32
+ if (isQuoteChar(char)) {
33
+ i = findQuoteEnd(createTableQuery, i, char);
41
34
  continue;
42
35
  }
43
36
  if (char === '(') {
37
+ if (depth === 0)
38
+ openIndex = i;
44
39
  depth += 1;
45
40
  continue;
46
41
  }
47
42
  if (char === ')') {
48
43
  depth -= 1;
49
44
  if (depth === 0) {
50
- const body = left.slice(openIndex + 1, i).trim();
51
- return body.length > 0 ? body : undefined;
45
+ return /^\s*ENGINE\s*=/i.test(createTableQuery.slice(i + 1))
46
+ ? { open: openIndex, close: i }
47
+ : undefined;
52
48
  }
53
49
  }
54
50
  }
55
51
  return undefined;
56
52
  }
53
+ function extractCreateTableBody(createTableQuery) {
54
+ if (!createTableQuery)
55
+ return undefined;
56
+ const bounds = findColumnListBounds(createTableQuery);
57
+ if (!bounds)
58
+ return undefined;
59
+ const body = createTableQuery.slice(bounds.open + 1, bounds.close).trim();
60
+ return body.length > 0 ? body : undefined;
61
+ }
62
+ /**
63
+ * Everything after the column list: `ENGINE = ... PARTITION BY ... ORDER BY ...`.
64
+ * This is where table-level clauses live. Falls back to the whole query when the
65
+ * column list can't be located, preserving behaviour for unparseable inputs.
66
+ */
67
+ function extractTableOptions(createTableQuery) {
68
+ const bounds = findColumnListBounds(createTableQuery);
69
+ return bounds ? createTableQuery.slice(bounds.close + 1) : createTableQuery;
70
+ }
57
71
  export function parseSettingsFromCreateTableQuery(createTableQuery) {
58
72
  if (!createTableQuery)
59
73
  return {};
60
- const settingsMatch = createTableQuery.match(/\bSETTINGS\b([\s\S]*?)(?:;|$)/i);
61
- if (!settingsMatch?.[1])
74
+ const options = extractTableOptions(createTableQuery);
75
+ const start = findTopLevelSQLPattern(options, /\bSETTINGS\b/i);
76
+ if (!start)
62
77
  return {};
63
- const rawSettings = settingsMatch[1].trim();
78
+ const tail = options.slice(start.index + start.length);
79
+ const stop = findTopLevelSQLPattern(tail, /\bCOMMENT\b|;/i);
80
+ const rawSettings = (stop ? tail.slice(0, stop.index) : tail).trim();
64
81
  if (!rawSettings)
65
82
  return {};
66
83
  const items = splitTopLevelComma(rawSettings);
@@ -80,14 +97,14 @@ export function parseSettingsFromCreateTableQuery(createTableQuery) {
80
97
  export function parseTTLFromCreateTableQuery(createTableQuery) {
81
98
  if (!createTableQuery)
82
99
  return undefined;
83
- const ttlMatch = createTableQuery.match(/\bTTL\b([\s\S]*?)(?:\bSETTINGS\b|;|$)/i);
100
+ const ttlMatch = extractTableOptions(createTableQuery).match(/\bTTL\b([\s\S]*?)(?:\bSETTINGS\b|;|$)/i);
84
101
  const raw = ttlMatch?.[1]?.trim();
85
102
  if (!raw)
86
103
  return undefined;
87
104
  return normalizeSQLFragment(raw);
88
105
  }
89
106
  export function parseEngineFromCreateTableQuery(createTableQuery) {
90
- return parseClauseFromCreateTableQuery(createTableQuery, /\bENGINE\s*=\s*/i, /\bPRIMARY\s+KEY\b|\bORDER\s+BY\b|\bPARTITION\s+BY\b|\bUNIQUE\s+KEY\b|\bSAMPLE\s+BY\b|\bTTL\b|\bSETTINGS\b|;|$/i);
107
+ return parseClauseFromCreateTableQuery(createTableQuery, /\bENGINE\s*=\s*/i, /\bPRIMARY\s+KEY\b|\bORDER\s+BY\b|\bPARTITION\s+BY\b|\bUNIQUE\s+KEY\b|\bSAMPLE\s+BY\b|\bTTL\b|\bSETTINGS\b|\bCOMMENT\b|;|$/i, true);
91
108
  }
92
109
  export function parsePrimaryKeyFromCreateTableQuery(createTableQuery) {
93
110
  return parseClauseFromCreateTableQuery(createTableQuery, /\bPRIMARY\s+KEY\b/i, /\bORDER\s+BY\b|\bPARTITION\s+BY\b|\bUNIQUE\s+KEY\b|\bSAMPLE\s+BY\b|\bTTL\b|\bSETTINGS\b|;|$/i);
@@ -110,21 +127,21 @@ export function parseProjectionsFromCreateTableQuery(createTableQuery) {
110
127
  for (const part of parts) {
111
128
  // Index-only projections have no SELECT body, so they must be matched
112
129
  // before the parenthesized SELECT form.
113
- const indexMatch = part.match(/^\s*PROJECTION\s+(?:`([^`]+)`|([A-Za-z_][A-Za-z0-9_]*))\s+INDEX\s+([\s\S]+?)\s+TYPE\s+([A-Za-z_][A-Za-z0-9_]*)\s*$/i);
130
+ const indexMatch = part.match(/^\s*PROJECTION\s+(`(?:[^`\\]|\\.|``)+`|[A-Za-z_][A-Za-z0-9_]*)\s+INDEX\s+([\s\S]+?)\s+TYPE\s+([A-Za-z_][A-Za-z0-9_]*)\s*$/i);
114
131
  if (indexMatch) {
115
- const name = (indexMatch[1] ?? indexMatch[2] ?? '').trim();
116
- const index = normalizeProjectionIndex(indexMatch[3] ?? '');
117
- const type = (indexMatch[4] ?? '').trim();
132
+ const name = unquoteIdentifiers(indexMatch[1] ?? '').trim();
133
+ const index = normalizeProjectionIndex(indexMatch[2] ?? '');
134
+ const type = (indexMatch[3] ?? '').trim();
118
135
  if (!name || !index || !type)
119
136
  continue;
120
137
  projections.push({ name, index, type });
121
138
  continue;
122
139
  }
123
- const match = part.match(/^\s*PROJECTION\s+(?:`([^`]+)`|([A-Za-z_][A-Za-z0-9_]*))\s*\(([\s\S]*)\)\s*$/i);
140
+ const match = part.match(/^\s*PROJECTION\s+(`(?:[^`\\]|\\.|``)+`|[A-Za-z_][A-Za-z0-9_]*)\s*\(([\s\S]*)\)\s*$/i);
124
141
  if (!match)
125
142
  continue;
126
- const name = (match[1] ?? match[2] ?? '').trim();
127
- const query = normalizeSQLFragment((match[3] ?? '').trim());
143
+ const name = unquoteIdentifiers(match[1] ?? '').trim();
144
+ const query = normalizeSQLFragment((match[2] ?? '').trim());
128
145
  if (!name || !query)
129
146
  continue;
130
147
  projections.push({ name, query });
@@ -1 +1 @@
1
- {"version":3,"file":"create-table-parser.js","sourceRoot":"","sources":["../src/create-table-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-table-parser.js","sourceRoot":"","sources":["../src/create-table-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAMpB,SAAS,+BAA+B,CACtC,gBAAoC,EACpC,aAAqB,EACrB,WAAmB,EACnB,kBAAkB,GAAG,KAAK;IAE1B,IAAI,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAA;IACvC,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,mEAAmE;IACnE,MAAM,OAAO,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAC7D,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,OAAO,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAC3B,gBAAwB;IAExB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,SAAS,GAAG,CAAC,CAAC,CAAA;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,CAAC,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YAC3C,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,KAAK,KAAK,CAAC;gBAAE,SAAS,GAAG,CAAC,CAAA;YAC9B,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,CAAA;YACV,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC1D,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;oBAC/B,CAAC,CAAC,SAAS,CAAA;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,sBAAsB,CAAC,gBAAoC;IAClE,IAAI,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAA;IACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACrD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;IACzE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,gBAAwB;IACnD,MAAM,MAAM,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACrD,OAAO,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,gBAAoC;IACpF,IAAI,CAAC,gBAAgB;QAAE,OAAO,EAAE,CAAA;IAChC,MAAM,OAAO,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IAC3D,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;IACpE,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAA;IAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,SAAQ;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,gBAAoC;IAC/E,IAAI,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAA;IACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACtG,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,gBAAoC;IAClF,OAAO,+BAA+B,CACpC,gBAAgB,EAChB,kBAAkB,EAClB,4HAA4H,EAC5H,IAAI,CACL,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,gBAAoC;IAEpC,OAAO,+BAA+B,CACpC,gBAAgB,EAChB,oBAAoB,EACpB,8FAA8F,CAC/F,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,gBAAoC;IACnF,OAAO,+BAA+B,CACpC,gBAAgB,EAChB,iBAAiB,EACjB,iGAAiG,CAClG,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,gBAAoC;IAEpC,OAAO,+BAA+B,CACpC,gBAAgB,EAChB,qBAAqB,EACrB,6FAA6F,CAC9F,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,gBAAoC;IAEpC,OAAO,+BAA+B,CACpC,gBAAgB,EAChB,mBAAmB,EACnB,+FAA+F,CAChG,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,gBAAoC;IAEpC,MAAM,IAAI,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,WAAW,GAAgC,EAAE,CAAA;IACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,sEAAsE;QACtE,wCAAwC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAC3B,4HAA4H,CAC7H,CAAA;QACD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;YAC3D,MAAM,KAAK,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAC3D,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;YACzC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;gBAAE,SAAQ;YACtC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACvC,SAAQ;QACV,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,qFAAqF,CACtF,CAAA;QACD,IAAI,CAAC,KAAK;YAAE,SAAQ;QACpB,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACtD,MAAM,KAAK,GAAG,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3D,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,SAAQ;QAC7B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { ClickHouseExecutor } from './index.js';
2
2
  export declare function waitForTable(executor: ClickHouseExecutor, database: string, tableName: string): Promise<void>;
3
3
  export declare function waitForView(executor: ClickHouseExecutor, database: string, viewName: string): Promise<void>;
4
+ export declare function waitForDictionary(executor: ClickHouseExecutor, database: string, dictionaryName: string): Promise<void>;
4
5
  export declare function waitForColumn(executor: ClickHouseExecutor, database: string, tableName: string, columnName: string): Promise<void>;
5
6
  /**
6
7
  * Polls a query until its rows satisfy `predicate`, then returns them. Use for
@@ -1 +1 @@
1
- {"version":3,"file":"ddl-propagation.d.ts","sourceRoot":"","sources":["../src/ddl-propagation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAIpD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,QAAQ,EAAE,kBAAkB,EAC5B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,EACjC,KAAK,SAAgB,GACpB,OAAO,CAAC,CAAC,EAAE,CAAC,CAQd;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAWf;AAwBD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,kBAAkB,EAC5B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAsCf"}
1
+ {"version":3,"file":"ddl-propagation.d.ts","sourceRoot":"","sources":["../src/ddl-propagation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAuBpD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,QAAQ,EAAE,kBAAkB,EAC5B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,EACjC,KAAK,SAAgB,GACpB,OAAO,CAAC,CAAC,EAAE,CAAC,CAQd;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAWf;AAsCD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,kBAAkB,EAC5B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Cf"}