@memberjunction/generic-database-provider 5.14.0 → 5.16.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.
@@ -84,6 +84,9 @@ export declare class QueryCompositionEngine {
84
84
  * Useful for dependency extraction during the save pipeline.
85
85
  * Only considers tokens outside of SQL comments.
86
86
  *
87
+ * Uses MJLexer for structured tokenization instead of regex, providing
88
+ * full parsing of category paths, query names, and parameter lists.
89
+ *
87
90
  * @param sql - The SQL text to parse
88
91
  * @returns Array of parsed token metadata
89
92
  */
@@ -106,18 +109,6 @@ export declare class QueryCompositionEngine {
106
109
  * Recursively resolves composition tokens in SQL, building up CTE entries.
107
110
  */
108
111
  private resolveTokensRecursive;
109
- /**
110
- * Parses the content inside a {{query:"..."}} token.
111
- */
112
- private parseTokenContent;
113
- /**
114
- * Splits parameter string by commas, respecting quoted values.
115
- */
116
- private splitParams;
117
- /**
118
- * Looks up a query by category path + name in the metadata provider.
119
- */
120
- private lookupQuery;
121
112
  /**
122
113
  * Looks up a query by category path + name, checking inline dependencies first,
123
114
  * then falling back to the metadata provider.
@@ -174,8 +165,23 @@ export declare class QueryCompositionEngine {
174
165
  private simpleHash;
175
166
  /**
176
167
  * Assembles CTE entries into a WITH clause prepended to the main SQL.
168
+ *
169
+ * Handles the case where a dependency query's SQL itself contains a WITH clause
170
+ * (inner CTEs). SQL does not allow nested WITH clauses, so inner CTEs are "hoisted"
171
+ * out as sibling CTE definitions preceding the dependency's own CTE.
177
172
  */
178
173
  private assembleCTEs;
174
+ /**
175
+ * Extracts inner CTE definitions from SQL that starts with a WITH clause.
176
+ *
177
+ * Delegates to {@link SQLParser.ExtractCTEs} which uses AST parsing first
178
+ * (via node-sql-parser), falling back to a paren-depth regex approach when
179
+ * AST parsing fails (e.g. SQL contains Nunjucks template tokens).
180
+ *
181
+ * @param sql SQL starting with a WITH clause
182
+ * @param platform Database platform, used to select the AST dialect
183
+ */
184
+ private hoistInnerCTEs;
179
185
  /**
180
186
  * Strips a trailing ORDER BY clause from SQL that will be wrapped in a CTE.
181
187
  *
@@ -197,8 +203,8 @@ export declare class QueryCompositionEngine {
197
203
  private stripTrailingOrderBy;
198
204
  /**
199
205
  * Attempts to strip the top-level ORDER BY clause using AST parsing.
200
- * Tries direct parsing first, then Nunjucks-preprocessed parsing if the SQL
201
- * contains template syntax. Handles UNION/EXCEPT by walking the _next chain.
206
+ * Tries direct parsing first, then MJPlaceholder-preprocessed parsing if the SQL
207
+ * contains MJ template syntax. Handles UNION/EXCEPT by walking the _next chain.
202
208
  */
203
209
  private stripOrderByViaAST;
204
210
  /**
@@ -227,11 +233,16 @@ export declare class QueryCompositionEngine {
227
233
  private stripLastTopLevelOrderBy;
228
234
  /**
229
235
  * Finds character positions of all ORDER BY keywords at the outermost level
230
- * (paren depth 0, not inside strings, comments, or Nunjucks tags).
236
+ * (paren depth 0, not inside strings, comments, or MJ template tokens).
237
+ *
238
+ * Uses MJLexer to skip MJ tokens ({{ }}, {% %}, {# #}), then scans only
239
+ * SQL_TEXT segments for ORDER BY keywords while tracking paren depth and
240
+ * respecting SQL string literals and comments.
231
241
  */
232
242
  private findTopLevelOrderByPositions;
233
243
  /**
234
244
  * Preprocesses Nunjucks templates into valid SQL for AST parsing.
245
+ * Uses MJPlaceholderSubstitution for context-aware placeholder generation.
235
246
  */
236
247
  private preprocessNunjucks;
237
248
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"queryCompositionEngine.d.ts","sourceRoot":"","sources":["../src/queryCompositionEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queryCompositionEngine.d.ts","sourceRoot":"","sources":["../src/queryCompositionEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAY5G;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,6DAA6D;IAC7D,eAAe,EAAE,OAAO,CAAC;IACzB,8FAA8F;IAC9F,0BAA0B,EAAE,OAAO,CAAC;CACvC;AAED;;GAEG;AACH,UAAU,sBAAsB;IAC5B,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,UAAU,EAAE,eAAe,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,UAAU,eAAe;IACrB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0FAA0F;IAC1F,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AA6BD;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAsB;IAC/B;;;;OAIG;IACI,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOjD;;;;;;;;;;OAUG;IACI,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,EAAE;IA0BpE;;;;;;;;;;;;OAYG;IACI,kBAAkB,CACrB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,QAAQ,EACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,kBAAkB,CAAC,EAAE,mBAAmB,EAAE,GAC3C,iBAAiB;IA2CpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+H9B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAwB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmC/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAuB9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAmCpB;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAQhC;;;;;;;OAOG;IACH,OAAO,CAAC,4BAA4B;IAwDpC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IASzB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;;;;;;;OAQG;IACH,OAAO,CAAC,8BAA8B;CAkDzC"}
@@ -1,28 +1,12 @@
1
1
  import { UUIDsEqual } from "@memberjunction/global";
2
2
  import { SQLServerDialect, PostgreSQLDialect } from "@memberjunction/sql-dialect";
3
+ import { SQLParser } from "@memberjunction/sql-parser";
3
4
  import { Metadata, QueryInfo } from "@memberjunction/core";
4
- import NodeSqlParser from 'node-sql-parser';
5
- const { Parser: SqlParser } = NodeSqlParser;
6
5
  /**
7
6
  * Maximum depth for recursive query composition resolution.
8
7
  * Prevents runaway recursion from deeply nested compositions.
9
8
  */
10
9
  const MAX_COMPOSITION_DEPTH = 10;
11
- /**
12
- * Regex for matching {{query:"CategoryPath/QueryName(params)"}} tokens.
13
- * Captures the full content inside the quotes including optional parameters.
14
- */
15
- const COMPOSITION_TOKEN_REGEX = /\{\{query:"([^"]+)"\}\}/g;
16
- /**
17
- * Regex for parsing the inner reference: path/QueryName(param1=value1, param2=value2)
18
- * Group 1: full path including query name (everything before optional parentheses)
19
- * Group 2: parameters string (inside parentheses, optional)
20
- */
21
- const REFERENCE_PARSE_REGEX = /^(.+?)(?:\((.+)\))?$/;
22
- /**
23
- * Regex for parsing individual parameter assignments: key=value or key='literal'
24
- */
25
- const PARAM_PARSE_REGEX = /^\s*(\w+)\s*=\s*(?:'([^']*)'|(\w+))\s*$/;
26
10
  /**
27
11
  * QueryCompositionEngine resolves {{query:"CategoryPath/QueryName(params)"}} tokens
28
12
  * in query SQL into Common Table Expressions (CTEs). It handles:
@@ -46,13 +30,17 @@ export class QueryCompositionEngine {
46
30
  if (!sql)
47
31
  return false;
48
32
  const stripped = this.stripSQLComments(sql);
49
- return stripped.includes('{{query:"');
33
+ const tokens = SQLParser.Tokenize(stripped);
34
+ return tokens.some(t => t.type === 'MJ_COMPOSITION_REF');
50
35
  }
51
36
  /**
52
37
  * Parses all {{query:"..."}} tokens from SQL without resolving them.
53
38
  * Useful for dependency extraction during the save pipeline.
54
39
  * Only considers tokens outside of SQL comments.
55
40
  *
41
+ * Uses MJLexer for structured tokenization instead of regex, providing
42
+ * full parsing of category paths, query names, and parameter lists.
43
+ *
56
44
  * @param sql - The SQL text to parse
57
45
  * @returns Array of parsed token metadata
58
46
  */
@@ -60,16 +48,24 @@ export class QueryCompositionEngine {
60
48
  if (!sql)
61
49
  return [];
62
50
  const stripped = this.stripSQLComments(sql);
63
- const tokens = [];
64
- let match;
65
- const regex = new RegExp(COMPOSITION_TOKEN_REGEX.source, 'g');
66
- while ((match = regex.exec(stripped)) !== null) {
67
- const parsed = this.parseTokenContent(match[0], match[1]);
68
- if (parsed) {
69
- tokens.push(parsed);
70
- }
71
- }
72
- return tokens;
51
+ const refs = SQLParser.ExtractCompositionRefs(stripped);
52
+ return refs.map(ref => {
53
+ const categorySegments = ref.categoryPath
54
+ ? ref.categoryPath.split('/').map((s) => s.trim()).filter((s) => s.length > 0)
55
+ : [];
56
+ const fullPath = [...categorySegments, ref.queryName].join('/');
57
+ return {
58
+ FullToken: ref.raw,
59
+ CategorySegments: categorySegments,
60
+ QueryName: ref.queryName,
61
+ FullPath: fullPath,
62
+ Parameters: ref.parameters.map(p => ({
63
+ Name: p.key,
64
+ StaticValue: p.isPassThrough ? null : p.value,
65
+ PassThroughName: p.isPassThrough ? p.value : null,
66
+ })),
67
+ };
68
+ });
73
69
  }
74
70
  /**
75
71
  * Resolves all {{query:"..."}} composition tokens in the given SQL into CTEs.
@@ -191,80 +187,8 @@ export class QueryCompositionEngine {
191
187
  }
192
188
  return resolvedSQL;
193
189
  }
194
- /**
195
- * Parses the content inside a {{query:"..."}} token.
196
- */
197
- parseTokenContent(fullToken, content) {
198
- const refMatch = REFERENCE_PARSE_REGEX.exec(content.trim());
199
- if (!refMatch)
200
- return null;
201
- const fullPath = refMatch[1].trim();
202
- const paramsString = refMatch[2] || '';
203
- // Split path into segments; last segment is the query name
204
- const segments = fullPath.split('/').map(s => s.trim()).filter(s => s.length > 0);
205
- if (segments.length === 0)
206
- return null;
207
- const queryName = segments[segments.length - 1];
208
- const categorySegments = segments.slice(0, -1);
209
- // Parse parameters
210
- const parameters = [];
211
- if (paramsString.trim().length > 0) {
212
- const paramParts = this.splitParams(paramsString);
213
- for (const part of paramParts) {
214
- const paramMatch = PARAM_PARSE_REGEX.exec(part);
215
- if (paramMatch) {
216
- parameters.push({
217
- Name: paramMatch[1],
218
- StaticValue: paramMatch[2] !== undefined ? paramMatch[2] : null,
219
- PassThroughName: paramMatch[3] !== undefined ? paramMatch[3] : null
220
- });
221
- }
222
- }
223
- }
224
- return {
225
- FullToken: fullToken,
226
- CategorySegments: categorySegments,
227
- QueryName: queryName,
228
- FullPath: fullPath,
229
- Parameters: parameters
230
- };
231
- }
232
- /**
233
- * Splits parameter string by commas, respecting quoted values.
234
- */
235
- splitParams(paramsString) {
236
- const parts = [];
237
- let current = '';
238
- let inQuote = false;
239
- for (const ch of paramsString) {
240
- if (ch === "'" && !inQuote) {
241
- inQuote = true;
242
- current += ch;
243
- }
244
- else if (ch === "'" && inQuote) {
245
- inQuote = false;
246
- current += ch;
247
- }
248
- else if (ch === ',' && !inQuote) {
249
- parts.push(current.trim());
250
- current = '';
251
- }
252
- else {
253
- current += ch;
254
- }
255
- }
256
- if (current.trim().length > 0) {
257
- parts.push(current.trim());
258
- }
259
- return parts;
260
- }
261
- /**
262
- * Looks up a query by category path + name in the metadata provider.
263
- */
264
- lookupQuery(token) {
265
- const result = this.lookupQueryWithInline(token);
266
- return result.Query;
267
- }
190
+ // parseTokenContent and splitParams removed — composition token parsing
191
+ // is now handled by MJLexer via SQLParser.ExtractCompositionRefs()
268
192
  /**
269
193
  * Looks up a query by category path + name, checking inline dependencies first,
270
194
  * then falling back to the metadata provider.
@@ -460,6 +384,10 @@ export class QueryCompositionEngine {
460
384
  }
461
385
  /**
462
386
  * Assembles CTE entries into a WITH clause prepended to the main SQL.
387
+ *
388
+ * Handles the case where a dependency query's SQL itself contains a WITH clause
389
+ * (inner CTEs). SQL does not allow nested WITH clauses, so inner CTEs are "hoisted"
390
+ * out as sibling CTE definitions preceding the dependency's own CTE.
463
391
  */
464
392
  assembleCTEs(cteEntries, mainSQL, platform) {
465
393
  if (cteEntries.length === 0)
@@ -468,7 +396,21 @@ export class QueryCompositionEngine {
468
396
  const trimmedMain = mainSQL.trimStart();
469
397
  const startsWithWith = /^WITH\s/i.test(trimmedMain);
470
398
  const dialect = this.getDialect(platform);
471
- const cteDefinitions = cteEntries.map(entry => `${entry.CTEName} AS (\n${this.stripTrailingOrderBy(entry.SQL, dialect)}\n)`);
399
+ // Build CTE definitions, hoisting any inner WITH clauses from dependency SQL
400
+ const cteDefinitions = [];
401
+ for (const entry of cteEntries) {
402
+ const strippedSQL = this.stripTrailingOrderBy(entry.SQL, dialect);
403
+ const trimmedSQL = strippedSQL.trimStart();
404
+ if (/^WITH\s/i.test(trimmedSQL)) {
405
+ // Dependency SQL has its own WITH clause — hoist inner CTEs as siblings
406
+ const { innerCTEDefinitions, mainSelect } = this.hoistInnerCTEs(trimmedSQL, platform);
407
+ cteDefinitions.push(...innerCTEDefinitions);
408
+ cteDefinitions.push(`${entry.CTEName} AS (\n${mainSelect}\n)`);
409
+ }
410
+ else {
411
+ cteDefinitions.push(`${entry.CTEName} AS (\n${strippedSQL}\n)`);
412
+ }
413
+ }
472
414
  if (startsWithWith) {
473
415
  // Main SQL has its own WITH — merge by removing the leading WITH
474
416
  // and prepending our CTEs before it
@@ -477,6 +419,29 @@ export class QueryCompositionEngine {
477
419
  }
478
420
  return `WITH ${cteDefinitions.join(',\n')}\n${mainSQL}`;
479
421
  }
422
+ /**
423
+ * Extracts inner CTE definitions from SQL that starts with a WITH clause.
424
+ *
425
+ * Delegates to {@link SQLParser.ExtractCTEs} which uses AST parsing first
426
+ * (via node-sql-parser), falling back to a paren-depth regex approach when
427
+ * AST parsing fails (e.g. SQL contains Nunjucks template tokens).
428
+ *
429
+ * @param sql SQL starting with a WITH clause
430
+ * @param platform Database platform, used to select the AST dialect
431
+ */
432
+ hoistInnerCTEs(sql, platform) {
433
+ const dialect = platform === 'postgresql' ? 'PostgresQL' : 'TransactSQL';
434
+ const extraction = SQLParser.ExtractCTEs(sql, dialect);
435
+ if (!extraction) {
436
+ // Should not happen since caller already verified WITH prefix,
437
+ // but handle gracefully by treating the whole SQL as the main select
438
+ return { innerCTEDefinitions: [], mainSelect: sql };
439
+ }
440
+ return {
441
+ innerCTEDefinitions: extraction.CTEDefinitions,
442
+ mainSelect: extraction.MainStatement,
443
+ };
444
+ }
480
445
  /**
481
446
  * Strips a trailing ORDER BY clause from SQL that will be wrapped in a CTE.
482
447
  *
@@ -521,14 +486,16 @@ export class QueryCompositionEngine {
521
486
  }
522
487
  /**
523
488
  * Attempts to strip the top-level ORDER BY clause using AST parsing.
524
- * Tries direct parsing first, then Nunjucks-preprocessed parsing if the SQL
525
- * contains template syntax. Handles UNION/EXCEPT by walking the _next chain.
489
+ * Tries direct parsing first, then MJPlaceholder-preprocessed parsing if the SQL
490
+ * contains MJ template syntax. Handles UNION/EXCEPT by walking the _next chain.
526
491
  */
527
492
  stripOrderByViaAST(sql, parserDialect) {
528
493
  const directResult = this.tryASTStrip(sql, parserDialect);
529
494
  if (directResult !== null)
530
495
  return directResult;
531
- if (/\{[%{#]/.test(sql)) {
496
+ // Check for MJ extensions using MJLexer (replaces regex check)
497
+ const mjParse = SQLParser.Analyze(sql);
498
+ if (mjParse.hasMJExtensions) {
532
499
  return this.tryNunjucksAwareStrip(sql, parserDialect);
533
500
  }
534
501
  return null;
@@ -538,8 +505,10 @@ export class QueryCompositionEngine {
538
505
  */
539
506
  tryASTStrip(sql, parserDialect) {
540
507
  try {
541
- const parser = new SqlParser();
542
- const ast = parser.astify(sql, { database: parserDialect });
508
+ // Use SQLParser.ParseSQL for FOR XML multi-directive workaround
509
+ const ast = SQLParser.ParseSQL(sql, parserDialect);
510
+ if (!ast)
511
+ return null;
543
512
  const stmt = Array.isArray(ast) ? ast[0] : ast;
544
513
  if (!stmt)
545
514
  return sql;
@@ -550,7 +519,7 @@ export class QueryCompositionEngine {
550
519
  if (this.isOrderByLegalInCTE(orderByStmt))
551
520
  return sql;
552
521
  orderByStmt.orderby = null;
553
- return parser.sqlify(Array.isArray(ast) ? ast : [stmt], { database: parserDialect });
522
+ return SQLParser.SqlifyAST(Array.isArray(ast) ? ast : [stmt], parserDialect);
554
523
  }
555
524
  catch {
556
525
  return null;
@@ -575,8 +544,9 @@ export class QueryCompositionEngine {
575
544
  tryNunjucksAwareStrip(sql, parserDialect) {
576
545
  const preprocessed = this.preprocessNunjucks(sql);
577
546
  try {
578
- const parser = new SqlParser();
579
- const ast = parser.astify(preprocessed, { database: parserDialect });
547
+ const ast = SQLParser.ParseSQL(preprocessed, parserDialect);
548
+ if (!ast)
549
+ return null;
580
550
  const stmt = Array.isArray(ast) ? ast[0] : ast;
581
551
  if (!stmt)
582
552
  return sql;
@@ -620,106 +590,86 @@ export class QueryCompositionEngine {
620
590
  }
621
591
  /**
622
592
  * Finds character positions of all ORDER BY keywords at the outermost level
623
- * (paren depth 0, not inside strings, comments, or Nunjucks tags).
593
+ * (paren depth 0, not inside strings, comments, or MJ template tokens).
594
+ *
595
+ * Uses MJLexer to skip MJ tokens ({{ }}, {% %}, {# #}), then scans only
596
+ * SQL_TEXT segments for ORDER BY keywords while tracking paren depth and
597
+ * respecting SQL string literals and comments.
624
598
  */
625
599
  findTopLevelOrderByPositions(sql) {
600
+ const tokens = SQLParser.Tokenize(sql);
626
601
  const positions = [];
627
- let i = 0;
628
602
  let parenDepth = 0;
629
- while (i < sql.length) {
630
- if (sql[i] === "'") {
631
- i++;
632
- while (i < sql.length) {
633
- if (sql[i] === "'" && i + 1 < sql.length && sql[i + 1] === "'") {
634
- i += 2;
603
+ for (const token of tokens) {
604
+ // Only scan SQL_TEXT tokens — MJ tokens are skipped entirely
605
+ if (token.type !== 'SQL_TEXT')
606
+ continue;
607
+ const text = token.raw;
608
+ let i = 0;
609
+ while (i < text.length) {
610
+ const ch = text[i];
611
+ // Skip single-quoted string literals
612
+ if (ch === "'") {
613
+ i++;
614
+ while (i < text.length) {
615
+ if (text[i] === "'" && i + 1 < text.length && text[i + 1] === "'") {
616
+ i += 2;
617
+ }
618
+ else if (text[i] === "'") {
619
+ i++;
620
+ break;
621
+ }
622
+ else {
623
+ i++;
624
+ }
635
625
  }
636
- else if (sql[i] === "'") {
626
+ continue;
627
+ }
628
+ // Skip line comments
629
+ if (ch === '-' && i + 1 < text.length && text[i + 1] === '-') {
630
+ while (i < text.length && text[i] !== '\n')
637
631
  i++;
638
- break;
639
- }
640
- else {
632
+ continue;
633
+ }
634
+ // Skip block comments
635
+ if (ch === '/' && i + 1 < text.length && text[i + 1] === '*') {
636
+ i += 2;
637
+ while (i < text.length) {
638
+ if (text[i] === '*' && i + 1 < text.length && text[i + 1] === '/') {
639
+ i += 2;
640
+ break;
641
+ }
641
642
  i++;
642
643
  }
644
+ continue;
643
645
  }
644
- continue;
645
- }
646
- if (sql[i] === '-' && i + 1 < sql.length && sql[i + 1] === '-') {
647
- while (i < sql.length && sql[i] !== '\n')
648
- i++;
649
- continue;
650
- }
651
- if (sql[i] === '/' && i + 1 < sql.length && sql[i + 1] === '*') {
652
- i += 2;
653
- while (i < sql.length) {
654
- if (sql[i] === '*' && i + 1 < sql.length && sql[i + 1] === '/') {
655
- i += 2;
656
- break;
657
- }
646
+ if (ch === '(') {
647
+ parenDepth++;
658
648
  i++;
649
+ continue;
659
650
  }
660
- continue;
661
- }
662
- if (sql[i] === '{' && i + 1 < sql.length && sql[i + 1] === '%') {
663
- i += 2;
664
- while (i < sql.length) {
665
- if (sql[i] === '%' && i + 1 < sql.length && sql[i + 1] === '}') {
666
- i += 2;
667
- break;
668
- }
651
+ if (ch === ')') {
652
+ parenDepth--;
669
653
  i++;
654
+ continue;
670
655
  }
671
- continue;
672
- }
673
- if (sql[i] === '{' && i + 1 < sql.length && sql[i + 1] === '{') {
674
- i += 2;
675
- while (i < sql.length) {
676
- if (sql[i] === '}' && i + 1 < sql.length && sql[i + 1] === '}') {
677
- i += 2;
678
- break;
656
+ if (parenDepth === 0 && /^ORDER\s+BY\b/i.test(text.substring(i))) {
657
+ const absPos = token.start + i;
658
+ if (absPos === 0 || /[\s,;()\n]/.test(sql[absPos - 1])) {
659
+ positions.push(absPos);
679
660
  }
680
- i++;
681
661
  }
682
- continue;
683
- }
684
- if (sql[i] === '(') {
685
- parenDepth++;
686
- i++;
687
- continue;
688
- }
689
- if (sql[i] === ')') {
690
- parenDepth--;
691
662
  i++;
692
- continue;
693
- }
694
- if (parenDepth === 0 && /^ORDER\s+BY\b/i.test(sql.substring(i))) {
695
- if (i === 0 || /[\s,;()\n]/.test(sql[i - 1])) {
696
- positions.push(i);
697
- }
698
663
  }
699
- i++;
700
664
  }
701
665
  return positions;
702
666
  }
703
667
  /**
704
668
  * Preprocesses Nunjucks templates into valid SQL for AST parsing.
669
+ * Uses MJPlaceholderSubstitution for context-aware placeholder generation.
705
670
  */
706
671
  preprocessNunjucks(sql) {
707
- let processed = sql;
708
- processed = processed.replace(/\{\{\s*[\w.]+\s*\|\s*sqlString\s*\}\}/g, "'placeholder'");
709
- processed = processed.replace(/\{\{\s*[\w.]+\s*\|\s*sqlNumber\s*\}\}/g, '0');
710
- processed = processed.replace(/\{\{\s*[\w.]+\s*\|\s*sqlDate\s*\}\}/g, "'2000-01-01'");
711
- processed = processed.replace(/\{\{\s*[\w.]+\s*\|\s*sqlIn\s*\}\}/g, "('placeholder')");
712
- processed = processed.replace(/\{\{\s*[\w.]+\s*\|\s*sqlIdentifier\s*\}\}/g, 'placeholder');
713
- processed = processed.replace(/\{\{\s*[\w.]+\s*(?:\|[^}]*)?\}\}/g, "'placeholder'");
714
- processed = processed.replace(/\{%[-\s]*if\s+[^%]*[-\s]*%\}/g, '');
715
- processed = processed.replace(/\{%[-\s]*endif[-\s]*%\}/g, '');
716
- processed = processed.replace(/\{%[-\s]*else[-\s]*%\}/g, '');
717
- processed = processed.replace(/\{%[-\s]*elif\s+[^%]*[-\s]*%\}/g, '');
718
- processed = processed.replace(/\{%[-\s]*for\s+[^%]*[-\s]*%\}/g, '');
719
- processed = processed.replace(/\{%[-\s]*endfor[-\s]*%\}/g, '');
720
- processed = processed.replace(/\{%[-\s]*set\s+[^%]*[-\s]*%\}/g, '');
721
- processed = processed.replace(/\{#[^#]*#\}/g, '');
722
- return processed;
672
+ return SQLParser.Substitute(sql).cleanSQL;
723
673
  }
724
674
  /**
725
675
  * Injects OFFSET 0 ROWS after the last top-level ORDER BY clause to make it
@@ -1 +1 @@
1
- {"version":3,"file":"queryCompositionEngine.js","sourceRoot":"","sources":["../src/queryCompositionEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queryCompositionEngine.js","sourceRoot":"","sources":["../src/queryCompositionEngine.ts"],"names":[],"mappings":"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"}