@typed-sql/compiler 1.0.0-beta.0 → 1.0.0-beta.2

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.
@@ -1,29 +1,180 @@
1
- const importPattern = /import\s*\{([\s\S]*?)\}\s*from\s*["']([^"']+)["']/g;
1
+ function isIdentifierStart(char) {
2
+ if (char === undefined)
3
+ return false;
4
+ const code = char.charCodeAt(0);
5
+ return (code >= 65 && code <= 90) || (code >= 97 && code <= 122) || char === "_" || char === "$";
6
+ }
7
+ function isIdentifierPart(char) {
8
+ if (isIdentifierStart(char))
9
+ return true;
10
+ if (char === undefined)
11
+ return false;
12
+ const code = char.charCodeAt(0);
13
+ return code >= 48 && code <= 57;
14
+ }
15
+ function isWhitespace(char) {
16
+ return char === " " || char === "\t" || char === "\n" || char === "\r" || char === "\f" || char === "\v";
17
+ }
18
+ function identifierAt(source, start) {
19
+ if (!isIdentifierStart(source[start]))
20
+ return undefined;
21
+ let end = start + 1;
22
+ while (isIdentifierPart(source[end]))
23
+ end += 1;
24
+ return { value: source.slice(start, end), end };
25
+ }
26
+ function skipTrivia(source, start) {
27
+ let index = start;
28
+ while (index < source.length) {
29
+ if (isWhitespace(source[index]))
30
+ index += 1;
31
+ else if (source[index] === "/" && source[index + 1] === "/")
32
+ index = skipLineComment(source, index);
33
+ else if (source[index] === "/" && source[index + 1] === "*")
34
+ index = skipBlockComment(source, index);
35
+ else
36
+ break;
37
+ }
38
+ return index;
39
+ }
40
+ function closingImportBrace(source, start) {
41
+ let depth = 1;
42
+ let index = start + 1;
43
+ while (index < source.length) {
44
+ const char = source[index];
45
+ if (char === '"' || char === "'")
46
+ index = skipQuoted(source, index, char);
47
+ else if (char === "/" && source[index + 1] === "/")
48
+ index = skipLineComment(source, index);
49
+ else if (char === "/" && source[index + 1] === "*")
50
+ index = skipBlockComment(source, index);
51
+ else if (char === "{") {
52
+ depth += 1;
53
+ index += 1;
54
+ }
55
+ else if (char === "}") {
56
+ depth -= 1;
57
+ if (depth === 0)
58
+ return index;
59
+ index += 1;
60
+ }
61
+ else
62
+ index += 1;
63
+ }
64
+ return undefined;
65
+ }
66
+ function importedSqlName(specifier) {
67
+ const tokens = [];
68
+ let index = 0;
69
+ while (index < specifier.length) {
70
+ index = skipTrivia(specifier, index);
71
+ const token = identifierAt(specifier, index);
72
+ if (token === undefined) {
73
+ index += 1;
74
+ continue;
75
+ }
76
+ tokens.push(token.value);
77
+ index = token.end;
78
+ }
79
+ if (tokens[0] !== "sql")
80
+ return undefined;
81
+ if (tokens.length === 1)
82
+ return "sql";
83
+ return tokens[1] === "as" && tokens[2] !== undefined ? tokens[2] : undefined;
84
+ }
2
85
  function importedSqlNames(source, sqlModules) {
3
86
  const names = new Set();
4
- for (const match of source.matchAll(importPattern)) {
5
- const specifiers = match[1];
6
- const moduleName = match[2];
7
- if (specifiers === undefined || moduleName === undefined)
87
+ let index = 0;
88
+ while (index < source.length) {
89
+ const char = source[index];
90
+ if (char === '"' || char === "'" || char === "`") {
91
+ index = skipQuoted(source, index, char);
92
+ continue;
93
+ }
94
+ if (char === "/" && source[index + 1] === "/") {
95
+ index = skipLineComment(source, index);
96
+ continue;
97
+ }
98
+ if (char === "/" && source[index + 1] === "*") {
99
+ index = skipBlockComment(source, index);
8
100
  continue;
9
- if (!sqlModules.has(moduleName))
101
+ }
102
+ const keyword = identifierAt(source, index);
103
+ if (keyword === undefined) {
104
+ index += 1;
10
105
  continue;
11
- for (const specifier of specifiers.split(",")) {
12
- const parts = specifier.trim().split(/\s+as\s+/);
13
- if (parts[0] === "sql")
14
- names.add(parts[1] ?? "sql");
15
106
  }
107
+ index = keyword.end;
108
+ if (keyword.value !== "import")
109
+ continue;
110
+ let cursor = skipTrivia(source, index);
111
+ if (source[cursor] !== "{")
112
+ continue;
113
+ const close = closingImportBrace(source, cursor);
114
+ if (close === undefined)
115
+ break;
116
+ const specifiers = source.slice(cursor + 1, close);
117
+ cursor = skipTrivia(source, close + 1);
118
+ const from = identifierAt(source, cursor);
119
+ if (from?.value !== "from")
120
+ continue;
121
+ cursor = skipTrivia(source, from.end);
122
+ const quote = source[cursor];
123
+ if (quote !== '"' && quote !== "'")
124
+ continue;
125
+ const moduleEnd = skipQuoted(source, cursor, quote);
126
+ if (moduleEnd > source.length || source[moduleEnd - 1] !== quote)
127
+ continue;
128
+ const moduleName = source.slice(cursor + 1, moduleEnd - 1);
129
+ if (sqlModules.has(moduleName)) {
130
+ for (const specifier of specifiers.split(",")) {
131
+ const localName = importedSqlName(specifier);
132
+ if (localName !== undefined)
133
+ names.add(localName);
134
+ }
135
+ }
136
+ index = moduleEnd;
16
137
  }
17
138
  return names;
18
139
  }
140
+ const MAX_LINE_START_CACHE_ENTRIES = 8;
141
+ const lineStartCache = new Map();
142
+ function lineStarts(source) {
143
+ const cached = lineStartCache.get(source);
144
+ if (cached !== undefined) {
145
+ lineStartCache.delete(source);
146
+ lineStartCache.set(source, cached);
147
+ return cached;
148
+ }
149
+ const starts = [0];
150
+ for (let index = 0; index < source.length; index += 1) {
151
+ if (source[index] === "\n")
152
+ starts.push(index + 1);
153
+ }
154
+ lineStartCache.set(source, starts);
155
+ while (lineStartCache.size > MAX_LINE_START_CACHE_ENTRIES) {
156
+ lineStartCache.delete(lineStartCache.keys().next().value);
157
+ }
158
+ return starts;
159
+ }
19
160
  function positionRange(source, start, end) {
20
- const before = source.slice(0, start);
21
- const lastNewline = before.lastIndexOf("\n");
161
+ const starts = lineStarts(source);
162
+ let low = 0;
163
+ let high = starts.length;
164
+ while (low < high) {
165
+ const middle = (low + high) >>> 1;
166
+ if ((starts[middle] ?? 0) <= start)
167
+ low = middle + 1;
168
+ else
169
+ high = middle;
170
+ }
171
+ const lineIndex = Math.max(0, low - 1);
172
+ const lineStart = starts[lineIndex] ?? 0;
22
173
  return {
23
174
  start,
24
175
  end,
25
- line: before.split("\n").length,
26
- column: start - lastNewline,
176
+ line: lineIndex + 1,
177
+ column: start - lineStart + 1,
27
178
  };
28
179
  }
29
180
  function skipQuoted(source, start, quote) {
@@ -74,11 +225,60 @@ function interpolationEnd(source, start) {
74
225
  }
75
226
  return source.length;
76
227
  }
77
- function extractTemplate(source, tagName, tagStart, backtick, placeholderFor) {
228
+ function hexadecimalValue(source, start, length) {
229
+ const value = source.slice(start, start + length);
230
+ return value.length === length && /^[\dA-Fa-f]+$/u.test(value) ? Number.parseInt(value, 16) : undefined;
231
+ }
232
+ function cookedEscape(source, start) {
233
+ const escaped = source[start + 1];
234
+ if (escaped === undefined)
235
+ return undefined;
236
+ const simple = {
237
+ "0": "\0",
238
+ b: "\b",
239
+ f: "\f",
240
+ n: "\n",
241
+ r: "\r",
242
+ t: "\t",
243
+ v: "\v",
244
+ };
245
+ if (escaped === "\n")
246
+ return { text: "", end: start + 2 };
247
+ if (escaped === "\r") {
248
+ return { text: "", end: source[start + 2] === "\n" ? start + 3 : start + 2 };
249
+ }
250
+ if (escaped === "0" && /\d/u.test(source[start + 2] ?? ""))
251
+ return undefined;
252
+ if (escaped in simple)
253
+ return { text: simple[escaped], end: start + 2 };
254
+ if (escaped === "x") {
255
+ const value = hexadecimalValue(source, start + 2, 2);
256
+ return value === undefined ? undefined : { text: String.fromCodePoint(value), end: start + 4 };
257
+ }
258
+ if (escaped === "u") {
259
+ if (source[start + 2] === "{") {
260
+ const close = source.indexOf("}", start + 3);
261
+ if (close === -1)
262
+ return undefined;
263
+ const digits = source.slice(start + 3, close);
264
+ if (!/^[\dA-Fa-f]{1,6}$/u.test(digits))
265
+ return undefined;
266
+ const value = Number.parseInt(digits, 16);
267
+ return value > 0x10ffff ? undefined : { text: String.fromCodePoint(value), end: close + 1 };
268
+ }
269
+ const value = hexadecimalValue(source, start + 2, 4);
270
+ return value === undefined ? undefined : { text: String.fromCodePoint(value), end: start + 6 };
271
+ }
272
+ if (/[1-9]/u.test(escaped))
273
+ return undefined;
274
+ return { text: escaped, end: start + 2 };
275
+ }
276
+ function extractTemplate(source, tagName, tagStart, backtick, placeholderFor, parameterOffset = 0) {
78
277
  let index = backtick + 1;
79
278
  let sql = "";
80
279
  let parameterCount = 0;
81
280
  const sqlOffsetMap = [];
281
+ const interpolations = [];
82
282
  while (index < source.length) {
83
283
  const char = source[index];
84
284
  if (char === "`") {
@@ -89,21 +289,39 @@ function extractTemplate(source, tagName, tagStart, backtick, placeholderFor) {
89
289
  insertionPosition: tagStart + tagName.length,
90
290
  range: positionRange(source, tagStart, index + 1),
91
291
  sqlOffsetMap,
292
+ interpolations,
92
293
  };
93
294
  }
94
- if (char === "\\" && index + 1 < source.length) {
95
- sql += source[index + 1];
96
- sqlOffsetMap.push(index);
97
- index += 2;
295
+ if (char === "\\") {
296
+ const cooked = cookedEscape(source, index);
297
+ if (cooked === undefined)
298
+ return undefined;
299
+ sql += cooked.text;
300
+ for (let offset = 0; offset < cooked.text.length; offset += 1)
301
+ sqlOffsetMap.push(index);
302
+ index = cooked.end;
98
303
  continue;
99
304
  }
100
305
  if (char === "$" && source[index + 1] === "{") {
101
306
  parameterCount += 1;
102
- const placeholder = placeholderFor(parameterCount);
307
+ const sourceStart = index;
308
+ const expressionStart = index + 2;
309
+ const sourceEnd = interpolationEnd(source, expressionStart);
310
+ const sqlStart = sql.length;
311
+ const placeholder = placeholderFor(parameterOffset + parameterCount);
103
312
  sql += placeholder;
104
313
  for (let offset = 0; offset < placeholder.length; offset += 1)
105
314
  sqlOffsetMap.push(index);
106
- index = interpolationEnd(source, index + 2);
315
+ interpolations.push({
316
+ index: parameterCount,
317
+ sourceStart,
318
+ expressionStart,
319
+ expressionEnd: Math.max(expressionStart, sourceEnd - 1),
320
+ sourceEnd,
321
+ sqlStart,
322
+ sqlEnd: sql.length,
323
+ });
324
+ index = sourceEnd;
107
325
  continue;
108
326
  }
109
327
  sql += char;
@@ -112,6 +330,146 @@ function extractTemplate(source, tagName, tagStart, backtick, placeholderFor) {
112
330
  }
113
331
  return undefined;
114
332
  }
333
+ function bindingNameBefore(source, start) {
334
+ let cursor = start - 1;
335
+ while (cursor >= 0 && isWhitespace(source[cursor]))
336
+ cursor -= 1;
337
+ if (source[cursor] !== "=")
338
+ return undefined;
339
+ cursor -= 1;
340
+ while (cursor >= 0 && isWhitespace(source[cursor]))
341
+ cursor -= 1;
342
+ const end = cursor + 1;
343
+ while (cursor >= 0 && isIdentifierPart(source[cursor]))
344
+ cursor -= 1;
345
+ const name = source.slice(cursor + 1, end);
346
+ return name.length > 0 && isIdentifierStart(name[0]) ? name : undefined;
347
+ }
348
+ function closingParenthesis(source, start) {
349
+ let depth = 1;
350
+ let index = start + 1;
351
+ while (index < source.length) {
352
+ const char = source[index];
353
+ if (char === '"' || char === "'" || char === "`")
354
+ index = skipQuoted(source, index, char);
355
+ else if (char === "/" && source[index + 1] === "/")
356
+ index = skipLineComment(source, index);
357
+ else if (char === "/" && source[index + 1] === "*")
358
+ index = skipBlockComment(source, index);
359
+ else if (char === "(") {
360
+ depth += 1;
361
+ index += 1;
362
+ }
363
+ else if (char === ")") {
364
+ depth -= 1;
365
+ if (depth === 0)
366
+ return index;
367
+ index += 1;
368
+ }
369
+ else
370
+ index += 1;
371
+ }
372
+ return undefined;
373
+ }
374
+ function trimmedRange(source, start, end) {
375
+ let first = start;
376
+ let last = end;
377
+ while (first < last && isWhitespace(source[first]))
378
+ first += 1;
379
+ while (last > first && isWhitespace(source[last - 1]))
380
+ last -= 1;
381
+ return { start: first, end: last };
382
+ }
383
+ function unwrappedRange(source, start, end) {
384
+ let range = trimmedRange(source, start, end);
385
+ while (source[range.start] === "(" && closingParenthesis(source, range.start) === range.end - 1) {
386
+ range = trimmedRange(source, range.start + 1, range.end - 1);
387
+ }
388
+ return range;
389
+ }
390
+ function structuralOperand(source, start, end, tagName) {
391
+ const range = trimmedRange(source, start, end);
392
+ const empty = `${tagName}.empty`;
393
+ if (source.slice(range.start, range.end) === empty)
394
+ return { kind: "empty", ...range };
395
+ const prefix = `${tagName}.fragment`;
396
+ if (!source.startsWith(prefix, range.start))
397
+ return undefined;
398
+ const backtick = skipTrivia(source, range.start + prefix.length);
399
+ if (source[backtick] !== "`" || skipQuoted(source, backtick, "`") !== range.end)
400
+ return undefined;
401
+ return { kind: "fragment", ...range, backtick };
402
+ }
403
+ export function parseStructuralInterpolation(source, interpolation, tagName) {
404
+ const expression = unwrappedRange(source, interpolation.expressionStart, interpolation.expressionEnd);
405
+ const { start, end } = expression;
406
+ let question;
407
+ let colon;
408
+ let round = 0;
409
+ let square = 0;
410
+ let curly = 0;
411
+ let index = start;
412
+ while (index < end) {
413
+ const char = source[index];
414
+ if (char === '"' || char === "'" || char === "`") {
415
+ index = skipQuoted(source, index, char);
416
+ continue;
417
+ }
418
+ if (char === "/" && source[index + 1] === "/") {
419
+ index = skipLineComment(source, index);
420
+ continue;
421
+ }
422
+ if (char === "/" && source[index + 1] === "*") {
423
+ index = skipBlockComment(source, index);
424
+ continue;
425
+ }
426
+ if (char === "(")
427
+ round += 1;
428
+ else if (char === ")")
429
+ round -= 1;
430
+ else if (char === "[")
431
+ square += 1;
432
+ else if (char === "]")
433
+ square -= 1;
434
+ else if (char === "{")
435
+ curly += 1;
436
+ else if (char === "}")
437
+ curly -= 1;
438
+ else if (round === 0 &&
439
+ square === 0 &&
440
+ curly === 0 &&
441
+ char === "?" &&
442
+ source[index + 1] !== "." &&
443
+ source[index + 1] !== "?" &&
444
+ source[index - 1] !== "?" &&
445
+ question === undefined)
446
+ question = index;
447
+ else if (round === 0 && square === 0 && curly === 0 && char === ":" && question !== undefined) {
448
+ colon = index;
449
+ break;
450
+ }
451
+ index += 1;
452
+ }
453
+ if (question === undefined || colon === undefined) {
454
+ const truthy = structuralOperand(source, start, end, tagName);
455
+ return truthy === undefined ? undefined : { truthy };
456
+ }
457
+ const truthy = structuralOperand(source, question + 1, colon, tagName);
458
+ const falsy = structuralOperand(source, colon + 1, end, tagName);
459
+ if (truthy === undefined || falsy === undefined)
460
+ return undefined;
461
+ const condition = unwrappedRange(source, start, question);
462
+ return {
463
+ condition: source.slice(condition.start, condition.end).replace(/\s+/gu, " "),
464
+ truthy,
465
+ falsy,
466
+ };
467
+ }
468
+ export function extractStructuralOperand(source, operand, tagName, placeholderFor, parameterOffset) {
469
+ if (operand.kind === "empty" || operand.backtick === undefined)
470
+ return undefined;
471
+ return extractTemplate(source, `${tagName}.fragment`, operand.start, operand.backtick, placeholderFor, parameterOffset);
472
+ }
115
473
  export function extractStaticQueries(source, placeholderFor, sqlModules = ["@typed-sql/core"]) {
116
474
  const names = importedSqlNames(source, new Set(sqlModules));
117
475
  if (names.size === 0)
@@ -136,10 +494,10 @@ export function extractStaticQueries(source, placeholderFor, sqlModules = ["@typ
136
494
  index = skipBlockComment(source, index);
137
495
  continue;
138
496
  }
139
- if (char !== undefined && /[A-Za-z_$]/.test(char)) {
497
+ if (isIdentifierStart(char)) {
140
498
  const start = index;
141
499
  index += 1;
142
- while (index < source.length && /[A-Za-z0-9_$]/.test(source[index]))
500
+ while (index < source.length && isIdentifierPart(source[index]))
143
501
  index += 1;
144
502
  const name = source.slice(start, index);
145
503
  if (!names.has(name))
@@ -160,6 +518,116 @@ export function extractStaticQueries(source, placeholderFor, sqlModules = ["@typ
160
518
  }
161
519
  return queries;
162
520
  }
521
+ export function extractAppendFragments(source, placeholderFor, sqlModules = ["@typed-sql/core"], queries = extractStaticQueries(source, placeholderFor, sqlModules)) {
522
+ const names = importedSqlNames(source, new Set(sqlModules));
523
+ if (names.size === 0)
524
+ return [];
525
+ const bindings = queries.flatMap((query) => {
526
+ const name = bindingNameBefore(source, query.range.start);
527
+ return name === undefined ? [] : [{ name, query }];
528
+ });
529
+ const fragments = [];
530
+ let index = 0;
531
+ while (index < source.length) {
532
+ const char = source[index];
533
+ if (char === '"' || char === "'" || char === "`") {
534
+ index = skipQuoted(source, index, char);
535
+ continue;
536
+ }
537
+ if (char === "/" && source[index + 1] === "/") {
538
+ index = skipLineComment(source, index);
539
+ continue;
540
+ }
541
+ if (char === "/" && source[index + 1] === "*") {
542
+ index = skipBlockComment(source, index);
543
+ continue;
544
+ }
545
+ const tag = identifierAt(source, index);
546
+ if (tag === undefined) {
547
+ index += 1;
548
+ continue;
549
+ }
550
+ index = tag.end;
551
+ if (!names.has(tag.value))
552
+ continue;
553
+ let cursor = skipTrivia(source, tag.end);
554
+ if (source[cursor] !== ".")
555
+ continue;
556
+ cursor = skipTrivia(source, cursor + 1);
557
+ const method = identifierAt(source, cursor);
558
+ if (method?.value !== "append")
559
+ continue;
560
+ cursor = skipTrivia(source, method.end);
561
+ if (source[cursor] !== "(")
562
+ continue;
563
+ const close = closingParenthesis(source, cursor);
564
+ if (close === undefined)
565
+ continue;
566
+ let argument = skipTrivia(source, cursor + 1);
567
+ const baseName = identifierAt(source, argument);
568
+ if (baseName === undefined) {
569
+ index = close + 1;
570
+ continue;
571
+ }
572
+ const base = bindings
573
+ .filter((binding) => binding.name === baseName.value && binding.query.range.start < index)
574
+ .sort((left, right) => right.query.range.start - left.query.range.start)[0]?.query;
575
+ argument = skipTrivia(source, baseName.end);
576
+ if (base === undefined || source[argument] !== ",") {
577
+ index = close + 1;
578
+ continue;
579
+ }
580
+ let fragmentCursor = argument + 1;
581
+ const prefix = [];
582
+ let parameterOffset = base.parameterCount;
583
+ while (fragmentCursor < close) {
584
+ const fragmentChar = source[fragmentCursor];
585
+ if (fragmentChar === '"' || fragmentChar === "'") {
586
+ fragmentCursor = skipQuoted(source, fragmentCursor, fragmentChar);
587
+ continue;
588
+ }
589
+ if (fragmentChar === "`") {
590
+ fragmentCursor = skipQuoted(source, fragmentCursor, fragmentChar);
591
+ continue;
592
+ }
593
+ if (fragmentChar === "/" && source[fragmentCursor + 1] === "/") {
594
+ fragmentCursor = skipLineComment(source, fragmentCursor);
595
+ continue;
596
+ }
597
+ if (fragmentChar === "/" && source[fragmentCursor + 1] === "*") {
598
+ fragmentCursor = skipBlockComment(source, fragmentCursor);
599
+ continue;
600
+ }
601
+ const fragmentTag = identifierAt(source, fragmentCursor);
602
+ if (fragmentTag === undefined) {
603
+ fragmentCursor += 1;
604
+ continue;
605
+ }
606
+ fragmentCursor = fragmentTag.end;
607
+ if (fragmentTag.value !== tag.value)
608
+ continue;
609
+ let memberCursor = skipTrivia(source, fragmentTag.end);
610
+ if (source[memberCursor] !== ".")
611
+ continue;
612
+ memberCursor = skipTrivia(source, memberCursor + 1);
613
+ const member = identifierAt(source, memberCursor);
614
+ if (member?.value !== "fragment")
615
+ continue;
616
+ const backtick = skipTrivia(source, member.end);
617
+ if (source[backtick] !== "`")
618
+ continue;
619
+ const fragment = extractTemplate(source, `${tag.value}.fragment`, fragmentTag.end - tag.value.length, backtick, placeholderFor, parameterOffset);
620
+ if (fragment !== undefined) {
621
+ fragments.push({ base, prefix: [...prefix], fragment, parameterOffset });
622
+ prefix.push(fragment);
623
+ parameterOffset += fragment.parameterCount;
624
+ fragmentCursor = fragment.range.end;
625
+ }
626
+ }
627
+ index = close + 1;
628
+ }
629
+ return fragments;
630
+ }
163
631
  export function mapSqlRange(source, query, range) {
164
632
  const start = query.sqlOffsetMap[range.start] ?? query.range.start;
165
633
  const last = range.end > range.start ? query.sqlOffsetMap[range.end - 1] : start;
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../src/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../src/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { ExtractedQuery } from "./scanner.js";
2
+ export interface ExpandedStructuralVariant {
3
+ readonly query: ExtractedQuery;
4
+ readonly choices: ReadonlyMap<string, boolean>;
5
+ readonly fragments: readonly {
6
+ readonly query: ExtractedQuery;
7
+ readonly parameterOffset: number;
8
+ }[];
9
+ }
10
+ export type StructuralExpansion = {
11
+ readonly kind: "variants";
12
+ readonly variants: readonly ExpandedStructuralVariant[];
13
+ } | {
14
+ readonly kind: "limit";
15
+ readonly conditionCount: number;
16
+ readonly variantCount: number;
17
+ };
18
+ /**
19
+ * Expands TypeScript-level SQL structure without interpreting SQL. Every completed statement is
20
+ * still resolved exclusively by the configured dialect plugin.
21
+ */
22
+ export declare function expandStructuralQuery(source: string, query: ExtractedQuery, placeholder: (index: number) => string, maximumVariants: number): StructuralExpansion | undefined;
23
+ export declare function structuralRowType(source: string, original: ExtractedQuery, rows: readonly {
24
+ readonly row: string;
25
+ readonly choices: ReadonlyMap<string, boolean>;
26
+ }[]): string;
27
+ //# sourceMappingURL=structural.d.ts.map