code-auditor-mcp 3.4.9 → 3.4.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.
Files changed (130) hide show
  1. package/.claude-plugin/marketplace.json +10 -3
  2. package/CHANGELOG.md +81 -0
  3. package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
  4. package/dist/analyzers/analyzerUtils.js +2 -1
  5. package/dist/analyzers/analyzerUtils.js.map +1 -1
  6. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +0 -2
  7. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
  8. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +74 -99
  9. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
  10. package/dist/analyzers/documentationAnalyzer.d.ts +1 -5
  11. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  12. package/dist/analyzers/documentationAnalyzer.js +13 -69
  13. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  14. package/dist/analyzers/invariantsAnalyzer.d.ts +1 -6
  15. package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
  16. package/dist/analyzers/invariantsAnalyzer.js +16 -41
  17. package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
  18. package/dist/analyzers/reactAnalyzer.d.ts +20 -3
  19. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  20. package/dist/analyzers/reactAnalyzer.js +4 -165
  21. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  22. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
  23. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +43 -69
  24. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
  25. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +62 -0
  26. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  27. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +357 -3
  28. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  29. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +81 -69
  30. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  31. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +319 -325
  32. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  33. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  34. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +32 -37
  35. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  36. package/dist/auditRunner.d.ts +2 -7
  37. package/dist/auditRunner.d.ts.map +1 -1
  38. package/dist/auditRunner.js +306 -434
  39. package/dist/auditRunner.js.map +1 -1
  40. package/dist/cli.js +27 -5
  41. package/dist/cli.js.map +1 -1
  42. package/dist/codeIndexDB.d.ts +22 -0
  43. package/dist/codeIndexDB.d.ts.map +1 -1
  44. package/dist/codeIndexDB.js +92 -44
  45. package/dist/codeIndexDB.js.map +1 -1
  46. package/dist/config/defaults.js +3 -3
  47. package/dist/config/defaults.js.map +1 -1
  48. package/dist/conventions/conventionMiner.d.ts +5 -4
  49. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  50. package/dist/conventions/conventionMiner.js +65 -25
  51. package/dist/conventions/conventionMiner.js.map +1 -1
  52. package/dist/dataPaths.js +1 -1
  53. package/dist/dataPaths.js.map +1 -1
  54. package/dist/invariants/index.d.ts +1 -1
  55. package/dist/invariants/index.d.ts.map +1 -1
  56. package/dist/invariants/index.js +1 -1
  57. package/dist/invariants/index.js.map +1 -1
  58. package/dist/invariants/ruleEngine.d.ts +38 -3
  59. package/dist/invariants/ruleEngine.d.ts.map +1 -1
  60. package/dist/invariants/ruleEngine.js +42 -174
  61. package/dist/invariants/ruleEngine.js.map +1 -1
  62. package/dist/languages/UniversalAnalyzer.d.ts +2 -2
  63. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
  64. package/dist/languages/UniversalAnalyzer.js +3 -1
  65. package/dist/languages/UniversalAnalyzer.js.map +1 -1
  66. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +3 -0
  67. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  68. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +60 -16
  69. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  70. package/dist/mcp-tools-shared.d.ts.map +1 -1
  71. package/dist/mcp-tools-shared.js +10 -6
  72. package/dist/mcp-tools-shared.js.map +1 -1
  73. package/dist/mcp.js +0 -0
  74. package/dist/mcpAuditJobs.d.ts.map +1 -1
  75. package/dist/mcpAuditJobs.js +4 -1
  76. package/dist/mcpAuditJobs.js.map +1 -1
  77. package/dist/pipeline.d.ts +74 -0
  78. package/dist/pipeline.d.ts.map +1 -0
  79. package/dist/pipeline.js +620 -0
  80. package/dist/pipeline.js.bak +465 -0
  81. package/dist/pipeline.js.bak2 +465 -0
  82. package/dist/pipeline.js.map +1 -0
  83. package/dist/pipelineAdapters.d.ts +116 -0
  84. package/dist/pipelineAdapters.d.ts.map +1 -0
  85. package/dist/pipelineAdapters.js +1146 -0
  86. package/dist/pipelineAdapters.js.map +1 -0
  87. package/dist/pipelineTypes.d.ts +44 -0
  88. package/dist/pipelineTypes.d.ts.map +1 -0
  89. package/dist/pipelineTypes.js +118 -0
  90. package/dist/pipelineTypes.js.map +1 -0
  91. package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
  92. package/dist/reporting/csvReportGenerator.js +2 -1
  93. package/dist/reporting/csvReportGenerator.js.map +1 -1
  94. package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
  95. package/dist/reporting/jsonReportGenerator.js +4 -2
  96. package/dist/reporting/jsonReportGenerator.js.map +1 -1
  97. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  98. package/dist/reporting/sarifReportGenerator.js +2 -1
  99. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  100. package/dist/styles/cssAstExtractor.d.ts +46 -0
  101. package/dist/styles/cssAstExtractor.d.ts.map +1 -0
  102. package/dist/styles/cssAstExtractor.js +439 -0
  103. package/dist/styles/cssAstExtractor.js.map +1 -0
  104. package/dist/styles/styleExtractor.d.ts +2 -2
  105. package/dist/styles/styleExtractor.d.ts.map +1 -1
  106. package/dist/styles/styleExtractor.js +69 -16
  107. package/dist/styles/styleExtractor.js.map +1 -1
  108. package/dist/styles/styleIndexer.d.ts.map +1 -1
  109. package/dist/styles/styleIndexer.js +4 -0
  110. package/dist/styles/styleIndexer.js.map +1 -1
  111. package/dist/styles/tailwindProbe.d.ts +2 -0
  112. package/dist/styles/tailwindProbe.d.ts.map +1 -1
  113. package/dist/styles/tailwindProbe.js +5 -5
  114. package/dist/styles/tailwindProbe.js.map +1 -1
  115. package/dist/styles/tailwindUtilityExpander.d.ts +3 -0
  116. package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
  117. package/dist/styles/tailwindUtilityExpander.js +7 -0
  118. package/dist/styles/tailwindUtilityExpander.js.map +1 -1
  119. package/dist/types.d.ts +216 -11
  120. package/dist/types.d.ts.map +1 -1
  121. package/dist/types.js.map +1 -1
  122. package/dist/utils/fileDiscovery.d.ts +4 -0
  123. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  124. package/dist/utils/fileDiscovery.js +7 -1
  125. package/dist/utils/fileDiscovery.js.map +1 -1
  126. package/dist/utils/reactDetection.d.ts.map +1 -1
  127. package/dist/utils/reactDetection.js +32 -0
  128. package/dist/utils/reactDetection.js.map +1 -1
  129. package/package.json +2 -4
  130. package/plugin/.claude-plugin/plugin.json +1 -1
@@ -105,11 +105,73 @@ export declare class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
105
105
  * analysis, which is outside the product's stated scope per Spec 15 R3).
106
106
  */
107
107
  private isTemplateInDBProvenancedCall;
108
+ /**
109
+ * Detect that a node sits inside a D1 .prepare() call — the standard safe
110
+ * pattern for SQL in Cloudflare Workers.
111
+ *
112
+ * D1's parameterized API is `db.prepare(sql).bind(a, b, c).first()`.
113
+ * This method also recognises `.prepare()` WITHOUT a subsequent `.bind()`
114
+ * as safe: a prepared statement with no bind step has zero runtime
115
+ * parameters, so template interpolation in the SQL text is query
116
+ * composition with compile-time constants, not user input.
117
+ *
118
+ * Handles these patterns:
119
+ * • Direct chain: `db.prepare(sql).bind(a).all()`
120
+ * • Two-statement: `const stmt = db.prepare(sql); stmt.bind(a).all();`
121
+ * • No-param: `db.prepare(sql).first()` (no bind needed)
122
+ *
123
+ * Entry points:
124
+ * - a `template_string` node inside prepare()'s arguments
125
+ * - the prepare() call_expression itself
126
+ */
127
+ private isInPrepareBindChain;
128
+ /**
129
+ * Detect that a node sits inside a Durable Object .exec() call —
130
+ * Cloudflare's internal SQLite interface for Durable Objects.
131
+ *
132
+ * `storage.sql.exec(query, ...bindings)` accepts *spread* bind parameters
133
+ * after the query string. A call WITH spread binds is fully parameterized
134
+ * and safe. A call WITHOUT spread binds has no runtime parameters, so
135
+ * template interpolation is query-composition-time.
136
+ *
137
+ * Entry points: same as isInPrepareBindChain — a template_string inside
138
+ * the arguments, or the call_expression itself.
139
+ */
140
+ private isInExecChain;
141
+ /**
142
+ * Detect D1's convenience SQL methods — .all(), .first(), .run() —
143
+ * called with bind parameters as a second argument.
144
+ *
145
+ * `db.all(query, ...params)` is shorthand for
146
+ * `db.prepare(query).bind(...params).all()`. If there's a second argument
147
+ * (the bind params), the call is fully parameterized and safe.
148
+ */
149
+ private isD1ConvenienceCall;
150
+ /**
151
+ * Check the two-statement prepare→bind pattern: db.prepare() is assigned to
152
+ * a variable whose value is later .bind()'ed in the same function scope.
153
+ *
154
+ * const stmt = db.prepare(sql);
155
+ * const result = stmt.bind(x).all();
156
+ *
157
+ * The direct-chain check (isInPrepareBindChain Step 3) only catches the
158
+ * single-expression form `db.prepare(sql).bind(x).all()`. This method
159
+ * catches the common idiom where the prepared statement is stored in a local
160
+ * before being bound.
161
+ */
162
+ private isPrepareAssignedToVariable;
163
+ /**
164
+ * Walk up the AST to find the enclosing function node (function_declaration,
165
+ * arrow_function, or method_definition). Returns null if we reach the
166
+ * program root.
167
+ */
168
+ private findEnclosingFunctionNode;
108
169
  private isOrmPattern;
109
170
  private isDatabaseCall;
110
171
  private extractTables;
111
172
  private hasOrganizationFilter;
112
173
  private checkQuerySecurity;
174
+ private extractCallExpressionMethod;
113
175
  private extractMethodName;
114
176
  /**
115
177
  * Spec 21 R6.2: Three-tier org-filter detection.
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalDataAccessAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDataAccessAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UniversalDataAccessAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDataAccessAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js';
7
7
  import { buildProvenanceContext, isDBProvenanced, DB_CALL_METHODS, } from '../provenance.js';
8
+ import { DEFAULT_SCHEMA_CONFIG } from './UniversalSchemaAnalyzer.js';
8
9
  export const DEFAULT_DATA_ACCESS_CONFIG = {
9
10
  checkOrgFilters: true,
10
11
  checkSQLInjection: true,
@@ -66,9 +67,10 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
66
67
  const p0 = performance.now();
67
68
  const provenanceContext = buildProvenanceContext(ast, adapter, sourceCode, {
68
69
  mode: detectionMode,
69
- dbReceiverNames: schemaConfig.dbReceiverNames ?? ['db', 'database', 'sql', 'stmt', 'connection', 'pool', 'client'],
70
- dbBindingNames: schemaConfig.dbBindingNames ?? ['env.DB'],
71
- dbCallMethods: schemaConfig.dbCallMethods ?? [...DB_CALL_METHODS],
70
+ // Single source of truth for DB detection patterns — see DEFAULT_SCHEMA_CONFIG.
71
+ dbReceiverNames: schemaConfig.dbReceiverNames ?? DEFAULT_SCHEMA_CONFIG.dbReceiverNames,
72
+ dbBindingNames: schemaConfig.dbBindingNames ?? DEFAULT_SCHEMA_CONFIG.dbBindingNames,
73
+ dbCallMethods: schemaConfig.dbCallMethods ?? DEFAULT_SCHEMA_CONFIG.dbCallMethods,
72
74
  });
73
75
  const timingAcc = schemaConfig._provenanceTiming;
74
76
  if (timingAcc)
@@ -170,6 +172,21 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
170
172
  // Skip if the node text is too short or doesn't contain meaningful content
171
173
  if (!nodeText || nodeText.trim().length < 10)
172
174
  continue;
175
+ // When a call_expression like db.prepare(\`...\`) spans multiple lines,
176
+ // findNodes discovers both the call_expression (via path 1) and the
177
+ // template_string inside its arguments (via path 2). The template string
178
+ // is the more precise target for injection checks, and isDynamicString-
179
+ // Construction on a call_expression delegates to its template arguments
180
+ // anyway. Skip the call_expression here so we don't double-report the
181
+ // same injection risk.
182
+ if (this.isFunctionCall(node, adapter)) {
183
+ const args = adapter.getChildren(node).find(c => adapter.getNodeType(c) === 'arguments');
184
+ if (args) {
185
+ const hasTemplate = adapter.getChildren(args).some(c => this.isTemplateLiteral(c, adapter));
186
+ if (hasTemplate)
187
+ continue;
188
+ }
189
+ }
173
190
  // Determine if this is a database-related call
174
191
  const isSqlQuery = this.containsSQLKeywords(nodeText);
175
192
  const isOrmCall = this.isOrmPattern(nodeText);
@@ -366,6 +383,275 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
366
383
  }
367
384
  return false;
368
385
  }
386
+ /**
387
+ * Detect that a node sits inside a D1 .prepare() call — the standard safe
388
+ * pattern for SQL in Cloudflare Workers.
389
+ *
390
+ * D1's parameterized API is `db.prepare(sql).bind(a, b, c).first()`.
391
+ * This method also recognises `.prepare()` WITHOUT a subsequent `.bind()`
392
+ * as safe: a prepared statement with no bind step has zero runtime
393
+ * parameters, so template interpolation in the SQL text is query
394
+ * composition with compile-time constants, not user input.
395
+ *
396
+ * Handles these patterns:
397
+ * • Direct chain: `db.prepare(sql).bind(a).all()`
398
+ * • Two-statement: `const stmt = db.prepare(sql); stmt.bind(a).all();`
399
+ * • No-param: `db.prepare(sql).first()` (no bind needed)
400
+ *
401
+ * Entry points:
402
+ * - a `template_string` node inside prepare()'s arguments
403
+ * - the prepare() call_expression itself
404
+ */
405
+ isInPrepareBindChain(node, adapter, sourceCode) {
406
+ // Step 1: Find the prepare call_expression from the node.
407
+ let prepareCall;
408
+ if (adapter.getNodeType(node) === 'template_string') {
409
+ // Walk up through arguments → call_expression
410
+ const args = adapter.getParent(node);
411
+ if (!args || adapter.getNodeType(args) !== 'arguments')
412
+ return false;
413
+ prepareCall = adapter.getParent(args);
414
+ }
415
+ else if (adapter.getNodeType(node) === 'call_expression') {
416
+ // Node is the call_expression itself — check if it's a prepare() call.
417
+ prepareCall = node;
418
+ }
419
+ else {
420
+ return false;
421
+ }
422
+ if (!prepareCall || adapter.getNodeType(prepareCall) !== 'call_expression') {
423
+ return false;
424
+ }
425
+ // Step 2: Verify the call_expression is .prepare() by inspecting its
426
+ // callee — the first child that is a member_expression, which may be
427
+ // wrapped inside an await_expression (await db.prepare(sql)).
428
+ let prepareCallee = adapter.getChildren(prepareCall).find(c => adapter.getNodeType(c) === 'member_expression');
429
+ if (!prepareCallee) {
430
+ const awaitExpr = adapter.getChildren(prepareCall).find(c => adapter.getNodeType(c) === 'await_expression');
431
+ if (awaitExpr) {
432
+ prepareCallee = adapter.getChildren(awaitExpr).find(c => adapter.getNodeType(c) === 'member_expression');
433
+ }
434
+ }
435
+ if (!prepareCallee)
436
+ return false;
437
+ const hasPrepareProp = adapter.getChildren(prepareCallee).some(c => adapter.getNodeType(c) === 'property_identifier' &&
438
+ adapter.getNodeText(c, sourceCode) === 'prepare');
439
+ if (!hasPrepareProp)
440
+ return false;
441
+ // Step 3: Walk up from the prepare call_expression to find .bind()
442
+ // chained onto it. The parent of prepareCall should be a
443
+ // member_expression whose property is "bind".
444
+ const memberExpr = adapter.getParent(prepareCall);
445
+ if (memberExpr && adapter.getNodeType(memberExpr) === 'member_expression') {
446
+ const hasBindProp = adapter.getChildren(memberExpr).some(c => adapter.getNodeType(c) === 'property_identifier' &&
447
+ adapter.getNodeText(c, sourceCode) === 'bind');
448
+ if (hasBindProp) {
449
+ // Step 4: The member_expression's parent must be a call_expression
450
+ // (the actual .bind() invocation).
451
+ const bindCall = adapter.getParent(memberExpr);
452
+ if (bindCall && adapter.getNodeType(bindCall) === 'call_expression') {
453
+ return true;
454
+ }
455
+ }
456
+ }
457
+ // Step 5 (two-statement pattern): The direct-chain check failed. Check
458
+ // whether the prepare() result is assigned to a variable that is later
459
+ // .bind()'ed in the same function scope.
460
+ // Pattern: const stmt = db.prepare(sql);
461
+ // stmt.bind(x).all();
462
+ if (this.isPrepareAssignedToVariable(prepareCall, adapter, sourceCode)) {
463
+ return true;
464
+ }
465
+ // Step 6 (no-param prepare): Node is inside .prepare() with no .bind()
466
+ // found in the direct chain or local scope. Without .bind() the query
467
+ // has no runtime parameterisation at the statement level. Fall through
468
+ // to let checkQuerySecurity determine whether template interpolation
469
+ // makes the query dynamic.
470
+ return false;
471
+ }
472
+ /**
473
+ * Detect that a node sits inside a Durable Object .exec() call —
474
+ * Cloudflare's internal SQLite interface for Durable Objects.
475
+ *
476
+ * `storage.sql.exec(query, ...bindings)` accepts *spread* bind parameters
477
+ * after the query string. A call WITH spread binds is fully parameterized
478
+ * and safe. A call WITHOUT spread binds has no runtime parameters, so
479
+ * template interpolation is query-composition-time.
480
+ *
481
+ * Entry points: same as isInPrepareBindChain — a template_string inside
482
+ * the arguments, or the call_expression itself.
483
+ */
484
+ isInExecChain(node, adapter, sourceCode) {
485
+ // Step 1: Find the exec call_expression from the node.
486
+ let execCall;
487
+ if (adapter.getNodeType(node) === 'template_string') {
488
+ const args = adapter.getParent(node);
489
+ if (!args || adapter.getNodeType(args) !== 'arguments')
490
+ return false;
491
+ execCall = adapter.getParent(args);
492
+ }
493
+ else if (adapter.getNodeType(node) === 'call_expression') {
494
+ execCall = node;
495
+ }
496
+ else {
497
+ return false;
498
+ }
499
+ if (!execCall || adapter.getNodeType(execCall) !== 'call_expression') {
500
+ return false;
501
+ }
502
+ // Step 2: Verify the call_expression is .exec() — the member_expression
503
+ // may be inside an await_expression wrapper (await sql.exec(query)).
504
+ let execCallee = adapter.getChildren(execCall).find(c => adapter.getNodeType(c) === 'member_expression');
505
+ if (!execCallee) {
506
+ const awaitExpr = adapter.getChildren(execCall).find(c => adapter.getNodeType(c) === 'await_expression');
507
+ if (awaitExpr) {
508
+ execCallee = adapter.getChildren(awaitExpr).find(c => adapter.getNodeType(c) === 'member_expression');
509
+ }
510
+ }
511
+ if (!execCallee)
512
+ return false;
513
+ const hasExecProp = adapter.getChildren(execCallee).some(c => adapter.getNodeType(c) === 'property_identifier' &&
514
+ adapter.getNodeText(c, sourceCode) === 'exec');
515
+ if (!hasExecProp)
516
+ return false;
517
+ // Step 3: Check for spread bind parameters after the template.
518
+ // `sql.exec(template, ...binds)` — the spread element in arguments
519
+ // means values are parameterized.
520
+ const args = adapter.getChildren(execCall).find(c => adapter.getNodeType(c) === 'arguments');
521
+ if (args) {
522
+ const argChildren = adapter.getChildren(args);
523
+ const hasSpread = argChildren.some(c => adapter.getNodeType(c) === 'spread_element');
524
+ if (hasSpread) {
525
+ return true; // Parameterized via spread binds
526
+ }
527
+ }
528
+ // Step 4: No spread binds — the query has no runtime bind parameters.
529
+ // Fall through so checkQuerySecurity determines whether template
530
+ // interpolation makes the query dynamic. The "in-process SQLite"
531
+ // argument does not make dynamic interpolation safe — if user-supplied
532
+ // values reach the SQL text they are still injectable regardless of
533
+ // whether the DB is remote or in-process.
534
+ return false;
535
+ }
536
+ /**
537
+ * Detect D1's convenience SQL methods — .all(), .first(), .run() —
538
+ * called with bind parameters as a second argument.
539
+ *
540
+ * `db.all(query, ...params)` is shorthand for
541
+ * `db.prepare(query).bind(...params).all()`. If there's a second argument
542
+ * (the bind params), the call is fully parameterized and safe.
543
+ */
544
+ isD1ConvenienceCall(node, adapter, sourceCode) {
545
+ const D1_CONVENIENCE = new Set(['all', 'first', 'run']);
546
+ // Find the call_expression.
547
+ let call;
548
+ if (adapter.getNodeType(node) === 'template_string') {
549
+ const args = adapter.getParent(node);
550
+ if (!args || adapter.getNodeType(args) !== 'arguments')
551
+ return false;
552
+ call = adapter.getParent(args);
553
+ }
554
+ else if (adapter.getNodeType(node) === 'call_expression') {
555
+ call = node;
556
+ }
557
+ else {
558
+ return false;
559
+ }
560
+ if (!call || adapter.getNodeType(call) !== 'call_expression')
561
+ return false;
562
+ // Verify the callee is one of .all / .first / .run — the
563
+ // member_expression may be inside an await_expression wrapper
564
+ // (await db.all(query, params)).
565
+ let callee = adapter.getChildren(call).find(c => adapter.getNodeType(c) === 'member_expression');
566
+ if (!callee) {
567
+ const awaitExpr = adapter.getChildren(call).find(c => adapter.getNodeType(c) === 'await_expression');
568
+ if (awaitExpr) {
569
+ callee = adapter.getChildren(awaitExpr).find(c => adapter.getNodeType(c) === 'member_expression');
570
+ }
571
+ }
572
+ if (!callee)
573
+ return false;
574
+ const methodName = adapter.getChildren(callee).find(c => adapter.getNodeType(c) === 'property_identifier' &&
575
+ D1_CONVENIENCE.has(adapter.getNodeText(c, sourceCode)));
576
+ if (!methodName)
577
+ return false;
578
+ // Check for bind parameters — must have more than one argument.
579
+ // The first argument is the query text; any subsequent argument
580
+ // carries bind values for the ? placeholders.
581
+ const args = adapter.getChildren(call).find(c => adapter.getNodeType(c) === 'arguments');
582
+ if (!args)
583
+ return false;
584
+ const argChildren = adapter.getChildren(args);
585
+ // Filter out commas and whitespace; count real argument nodes.
586
+ const realArgs = argChildren.filter(c => !['(', ')', ',', 'comment'].includes(adapter.getNodeType(c)));
587
+ return realArgs.length >= 2;
588
+ }
589
+ /**
590
+ * Check the two-statement prepare→bind pattern: db.prepare() is assigned to
591
+ * a variable whose value is later .bind()'ed in the same function scope.
592
+ *
593
+ * const stmt = db.prepare(sql);
594
+ * const result = stmt.bind(x).all();
595
+ *
596
+ * The direct-chain check (isInPrepareBindChain Step 3) only catches the
597
+ * single-expression form `db.prepare(sql).bind(x).all()`. This method
598
+ * catches the common idiom where the prepared statement is stored in a local
599
+ * before being bound.
600
+ */
601
+ isPrepareAssignedToVariable(prepareCall, adapter, sourceCode) {
602
+ // The parent of the prepare call_expression reveals how the result is used.
603
+ const parent = adapter.getParent(prepareCall);
604
+ if (!parent)
605
+ return false;
606
+ const parentType = adapter.getNodeType(parent);
607
+ let varName = null;
608
+ if (parentType === 'variable_declarator') {
609
+ // const stmt = db.prepare(sql)
610
+ const children = adapter.getChildren(parent);
611
+ const nameChild = children.find(c => adapter.getNodeType(c) === 'identifier');
612
+ if (nameChild) {
613
+ varName = adapter.getNodeText(nameChild, sourceCode);
614
+ }
615
+ }
616
+ else if (parentType === 'assignment_expression') {
617
+ // stmt = db.prepare(sql)
618
+ const children = adapter.getChildren(parent);
619
+ const left = children.find(c => adapter.getNodeType(c) === 'identifier' ||
620
+ adapter.getNodeType(c) === 'member_expression');
621
+ if (left) {
622
+ varName = adapter.getNodeText(left, sourceCode);
623
+ }
624
+ }
625
+ if (!varName)
626
+ return false;
627
+ // Scan the enclosing function scope for `.bind()` on this variable.
628
+ const fnNode = this.findEnclosingFunctionNode(prepareCall, adapter);
629
+ if (!fnNode)
630
+ return false;
631
+ const fnText = adapter.getNodeText(fnNode, sourceCode);
632
+ const escaped = varName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
633
+ const bindPattern = new RegExp(String.raw `\b${escaped}\.bind\s*\(`, 'u');
634
+ return bindPattern.test(fnText);
635
+ }
636
+ /**
637
+ * Walk up the AST to find the enclosing function node (function_declaration,
638
+ * arrow_function, or method_definition). Returns null if we reach the
639
+ * program root.
640
+ */
641
+ findEnclosingFunctionNode(node, adapter) {
642
+ let current = node;
643
+ while (current) {
644
+ const type = adapter.getNodeType(current);
645
+ if (type === 'function_declaration' ||
646
+ type === 'function_expression' ||
647
+ type === 'arrow_function' ||
648
+ type === 'method_definition') {
649
+ return current;
650
+ }
651
+ current = adapter.getParent(current);
652
+ }
653
+ return null;
654
+ }
369
655
  isOrmPattern(text) {
370
656
  // Common ORM method patterns
371
657
  const ormPatterns = [
@@ -481,6 +767,25 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
481
767
  return false;
482
768
  }
483
769
  checkQuerySecurity(node, text, ast, adapter, sourceCode, config) {
770
+ // Check for D1's .prepare().bind() chain — queries parameterized via
771
+ // .bind() are safe even when the template literal text doesn't contain
772
+ // '?' placeholders (the bind args carry the values). Walk up the AST
773
+ // from the template-string node to detect the enclosing chain.
774
+ if (this.isInPrepareBindChain(node, adapter, sourceCode)) {
775
+ return { parameterized: true, injectionRisk: false };
776
+ }
777
+ // Check for Durable Objects' .exec() — the internal SQLite interface.
778
+ // Spread binds (sql.exec(template, ...binds)) mean parameterized; without
779
+ // binds, template interpolation is query-composition-time, not runtime.
780
+ if (this.isInExecChain(node, adapter, sourceCode)) {
781
+ return { parameterized: true, injectionRisk: false };
782
+ }
783
+ // Check for D1 convenience methods — .all(), .first(), .run() with bind
784
+ // parameters. db.all(query, ...params) is shorthand for the full
785
+ // prepare().bind().all() chain.
786
+ if (this.isD1ConvenienceCall(node, adapter, sourceCode)) {
787
+ return { parameterized: true, injectionRisk: false };
788
+ }
484
789
  const parameterized = (config.securityPatterns?.parameterizedQueries || []).some(pattern => text.includes(pattern));
485
790
  if (parameterized) {
486
791
  return { parameterized: true, injectionRisk: false };
@@ -536,7 +841,56 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
536
841
  message: `Cannot protect interpolated content: ${names}`,
537
842
  };
538
843
  }
844
+ extractCallExpressionMethod(callExpr, adapter, sourceCode) {
845
+ // Extract the method name from the callee of a call expression.
846
+ // For `sql.exec(...)` the callee is a member_expression whose
847
+ // property_identifier is "exec". Walking the AST avoids picking up SQL
848
+ // keywords (COUNT, JOIN, WHERE, ...) that appear inside template literals
849
+ // in the call arguments, which a regex scan of the full call-expression
850
+ // text would incorrectly match.
851
+ const children = adapter.getChildren(callExpr);
852
+ const callee = children.find(c => {
853
+ const t = adapter.getNodeType(c);
854
+ return t === 'member_expression' || t === 'identifier';
855
+ });
856
+ if (callee) {
857
+ const calleeType = adapter.getNodeType(callee);
858
+ if (calleeType === 'member_expression') {
859
+ const mc = adapter.getChildren(callee);
860
+ const prop = mc.find(c => adapter.getNodeType(c) === 'property_identifier');
861
+ if (prop)
862
+ return adapter.getNodeText(prop, sourceCode);
863
+ }
864
+ else {
865
+ // Bare identifier call (e.g. `exec(...)`)
866
+ return adapter.getNodeText(callee, sourceCode);
867
+ }
868
+ }
869
+ // Fallback: regex on just the callee portion of the text
870
+ const callText = adapter.getNodeText(callExpr, sourceCode);
871
+ const m = callText.match(/\.(\w+)\s*[<(]/);
872
+ return m ? m[1] : 'unknown';
873
+ }
539
874
  extractMethodName(node, adapter, sourceCode) {
875
+ const nodeType = adapter.getNodeType(node);
876
+ // For template literals inside a DB-provenanced call, extract the method
877
+ // name from the enclosing call expression instead of the template body.
878
+ if (nodeType === 'template_string' || nodeType === 'template_literal') {
879
+ const parent = adapter.getParent(node);
880
+ if (parent && adapter.getNodeType(parent) === 'arguments') {
881
+ const callExpr = adapter.getParent(parent);
882
+ if (callExpr && adapter.getNodeType(callExpr) === 'call_expression') {
883
+ return this.extractCallExpressionMethod(callExpr, adapter, sourceCode);
884
+ }
885
+ }
886
+ }
887
+ // For call expressions themselves, extract from the callee child. The
888
+ // full node text includes the arguments (which may contain template
889
+ // literals with SQL keywords), so a naive regex scan of the whole text
890
+ // can match COUNT, JOIN, WHERE, etc. instead of the real method name.
891
+ if (nodeType === 'call_expression') {
892
+ return this.extractCallExpressionMethod(node, adapter, sourceCode);
893
+ }
540
894
  const text = adapter.getNodeText(node, sourceCode);
541
895
  const match = text.match(/([\p{L}\p{N}_]+)\s*\(/u);
542
896
  return match ? match[1] : 'unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalDataAccessAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDataAccessAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,eAAe,GAGhB,MAAM,kBAAkB,CAAC;AA2D1B,MAAM,CAAC,MAAM,0BAA0B,GAA6B;IAClE,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IAEvB,SAAS,EAAE;QACT,SAAS,EAAE;YACT,IAAI,EAAE,kBAAkB;YACxB,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC;YAC/G,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;YAC3E,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;SAC7D;KACF;IACD,oBAAoB,EAAE;QACpB,gBAAgB;QAChB,iBAAiB;QACjB,OAAO;QACP,QAAQ;QACR,UAAU;QACV,WAAW;QACX,WAAW;QACX,YAAY;KACb;IACD,gDAAgD;IAChD,eAAe,EAAE,EAAE,EAAG,oCAAoC;IAC1D,gBAAgB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,CAAC,EAAG,SAAS;IACxF,OAAO,EAAE,EAAE,EAAY,wDAAwD;IAC/E,aAAa,EAAE;QACb,GAAG,EAAE;YACH,kDAAkD;YAClD,gDAAgD;YAChD,wCAAwC,EAAG,gDAAgD;YAC3F,qCAAqC,EAAO,eAAe;YAC3D,yCAAyC;YACzC,0CAA0C;YAC1C,0CAA0C;SAC3C;QACD,GAAG,EAAE,CAAC,wCAAwC,EAAE,wCAAwC,EAAE,0CAA0C,CAAC;QACrI,YAAY,EAAE,CAAC,oDAAoD,CAAC;KACrE;IACD,qBAAqB,EAAE;QACrB,iBAAiB,EAAE,CAAC;QACpB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,CAAC;KACpB;IACD,gBAAgB,EAAE;QAChB,iBAAiB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC;QAC3D,oBAAoB,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC;KACzE;CACF,CAAC;AAyBF,MAAM,OAAO,2BAA4B,SAAQ,iBAAiB;IACvD,IAAI,GAAG,aAAa,CAAC;IACrB,WAAW,GAAG,+DAA+D,CAAC;IAC9E,QAAQ,GAAG,UAAU,CAAC;IAErB,KAAK,CAAC,UAAU,CACxB,GAAQ,EACR,OAAwB,EACxB,MAAgC,EAChC,UAAkB;QAElB,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,EAAE,GAAG,0BAA0B,EAAE,GAAG,MAAM,EAAE,CAAC;QAEjE,sFAAsF;QACtF,MAAM,aAAa,GAChB,MAAc,CAAC,SAAS,EAAE,IAAI,IAAI,QAAQ,CAAC;QAC9C,MAAM,YAAY,GAAI,MAAc,CAAC;QACrC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE;YACzE,IAAI,EAAE,aAAa;YACnB,eAAe,EAAE,YAAY,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC;YAClH,cAAc,EAAE,YAAY,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC;YACzD,aAAa,EAAE,YAAY,CAAC,aAAa,IAAI,CAAC,GAAG,eAAe,CAAC;SAClE,CAAC,CAAC;QACH,MAAM,SAAS,GAAoC,YAAY,CAAC,iBAAiB,CAAC;QAClF,IAAI,SAAS;YAAE,SAAS,CAAC,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAE3D,uCAAuC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEhE,yDAAyD;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAE7G,sEAAsE;QACtE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YAElE,uBAAuB;YACvB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;QACtG,CAAC;QAED,2FAA2F;QAC3F,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAEpG,yCAAyC;QACzC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QAErF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,OAAkC,EAClC,MAAgC;QAEhC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuD,CAAC;QAEjF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;YACpE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACpC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CACtE,CAAC;YAEF,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE;gBACpB,UAAU;gBACV,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;aACvE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,GAAQ,EACR,OAAwB,EACxB,UAAkB,EAClB,SAAmE,EACnE,MAAgC,EAChC,iBAAqC;QAErC,MAAM,KAAK,GAAmB,EAAE,CAAC;QAEhC,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;YACtC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAEvD,2DAA2D;gBAC3D,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBACvC,wEAAwE;oBACxE,IAAI,iBAAiB,EAAE,CAAC;wBACtB,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;4BACnF,OAAO,IAAI,CAAC;wBACd,CAAC;oBACH,CAAC;gBACH,CAAC;gBAEF,8DAA8D;gBAC9D,iEAAiE;gBACjE,sEAAsE;gBACtE,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;gBAC1F,CAAC;gBAEA,oEAAoE;gBACpE,oEAAoE;gBACpE,0DAA0D;gBAC1D,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC7C,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC,CAAC;QAEJ,yDAAyD;QACzD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;QACjD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM,WAAW,GAAc,EAAE,CAAC;QAClC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,sDAAsD;gBACtD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC5E,IAAI,eAAe,EAAE,CAAC;oBACpB,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,+BAA+B;oBAC/B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE/D,2EAA2E;YAC3E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE;gBAAE,SAAS;YAEvD,+CAA+C;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAE9C,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAElE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;gBAE3F,kDAAkD;gBAClD,IAAI,QAAQ,GAAG,SAAS,CAAC;gBACzB,IAAI,UAAU,EAAE,CAAC;oBACf,QAAQ,GAAG,KAAK,CAAC;gBACnB,CAAC;qBAAM,IAAI,SAAS,EAAE,CAAC;oBACrB,mCAAmC;oBACnC,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,SAAS,EAAE,CAAC;wBAC7C,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;4BAC1B,QAAQ,GAAG,MAAM,CAAC;4BAClB,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC;oBACzD,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;oBAC9B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;oBAClC,MAAM;oBACN,qBAAqB,EAAE,YAAY;oBACnC,qBAAqB,EAAE,QAAQ,CAAC,aAAa;oBAC7C,mBAAmB,EAAE,QAAQ,CAAC,aAAa;oBAC3C,iBAAiB,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC;iBACjE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,YAAY,CAClB,IAAkB,EAClB,UAAkB,EAClB,MAAgC;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7D,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAErF,IAAI,UAAU,GAAsC,QAAQ,CAAC;QAC7D,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;aAAM,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;QAED,IAAI,eAAe,GAA8B,KAAK,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/E,eAAe,GAAG,MAAM,CAAC;QAC3B,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,eAAe,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,OAAO;YACL,UAAU;YACV,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ;YACR,WAAW;YACX,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,IAAkB,EAClB,QAAuB,EACvB,QAAgB,EAChB,MAAgC,EAChC,cAAmC;QAEnC,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,uEAAuE;QACvE,8DAA8D;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,IAAI,WAAW,CAAC;QACrD,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAE9C,MAAM,OAAO,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1D,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAErE,+BAA+B;QAC/B,qEAAqE;QACrE,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,2EAA2E;QAC3E,sCAAsC;QACtC,IAAI,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,QAAQ,EACR,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EACxC,mCAAmC,IAAI,CAAC,MAAM,8BAA8B,EAC5E,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,MAAM,CACP,CAAC,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,IAAI,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACnI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,QAAQ,EACR,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EACxC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,EACvE,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,MAAM,CACP,CAAC,CAAC;QACL,CAAC;QAGD,6BAA6B;QAC7B,IAAI,QAAQ,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,QAAQ,EACR,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EACxC,sBAAsB,IAAI,CAAC,MAAM,CAAC,MAAM,qCAAqC,EAC7E,SAAS,EACT,eAAe,EACf,SAAS,EACT,MAAM,CACP,CAAC,CAAC;QACL,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YACzE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,QAAQ,EACR,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EACxC,uBAAuB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAC5E,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,MAAM,CACP,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,GAAQ,EACR,OAAwB,EACxB,UAAkB,EAClB,MAAgC;QAEhC,MAAM,UAAU,GAAgB,EAAE,CAAC;QAGnC,yCAAyC;QACzC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;YACzC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;SACtD,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEpD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,GAAG,MAAM,uBAAuB,CAAC;gBACjD,MAAM,KAAK,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxD,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACtC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBAExD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,qJAAqJ,EACrJ,YAAY,EAA0C,iCAAiC;gBACvF,sBAAsB,EACtB,SAAS,EACT,GAAG,CACJ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAa,EAAE,OAAwB;QAC5D,OAAO,IAAI,CAAC,IAAI,KAAK,iBAAiB;YAC/B,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC;IACxC,CAAC;IAEO,iBAAiB,CAAC,IAAa,EAAE,OAAwB;QAC/D,OAAO,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC;IACzC,CAAC;IAEO,oBAAoB,CAAC,IAAa,EAAE,OAAwB;QAClE,8DAA8D;QAC9D,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB;YACpC,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAChE,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;IACnE,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACtC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;OAUG;IACK,oBAAoB,CAAC,IAAY;QACvC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;OAUG;IACK,6BAA6B,CACnC,IAAa,EACb,OAAwB,EACxB,UAAkB,EAClB,iBAAqC;QAErC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE/C,kEAAkE;QAClE,kEAAkE;QAClE,6DAA6D;QAC7D,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,iBAAiB;gBAAE,OAAO,KAAK,CAAC;YACnF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,OAAO,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;YAC5F,CAAC;YACD,+DAA+D;YAC/D,oBAAoB;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,6BAA6B;QAC7B,MAAM,WAAW,GAAG;YAClB,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,kBAAkB;YAClB,mBAAmB;YACnB,eAAe;YACf,eAAe;YACf,eAAe;YACf,kBAAkB;YAClB,mBAAmB;YACnB,eAAe;YACf,kBAAkB;YAClB,mBAAmB;YACnB,aAAa;YACb,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,eAAe;YACf,mBAAmB;YACnB,kBAAkB;YAClB,cAAc;YACd,iBAAiB;SAClB,CAAC;QAEF,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAEO,cAAc,CAAC,IAAY,EAAE,QAAkB;QACrD,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,MAAgC;QAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QAEjC,qBAAqB;QACrB,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gEAAgE;QAChE,2EAA2E;QAC3E,MAAM,kBAAkB,GAAG,+CAA+C,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACrD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,MAAM,cAAc,GAAG,0DAA0D,CAAC;QAClF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEO,qBAAqB,CAAC,IAAY,EAAE,MAAgC;QAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAErC,2EAA2E;QAC3E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ;YACtD,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY;SACnD,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEb,yCAAyC;QACzC,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACrD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wEAAwE;QACxE,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAE3C,8DAA8D;YAC9D,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,4EAA4E;YAC5E,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,mFAAmF;YACnF,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,+DAA+D;YAC/D,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,YAAY,IAAI,CAAC;gBAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,YAAY,GAAG,CAAC,EAAE,CAAC;gBACjD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,0DAA0D;YAC1D,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,YAAY,IAAI,CAAC;gBAC3C,SAAS,CAAC,QAAQ,CAAC,OAAO,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,kBAAkB,CACxB,IAAa,EACb,IAAY,EACZ,GAAQ,EACR,OAAwB,EACxB,UAAkB,EAClB,MAAgC;QAMhC,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACzF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACvB,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QACvD,CAAC;QAED,2EAA2E;QAC3E,yEAAyE;QACzE,8DAA8D;QAC9D,IAAI,CAAC,OAAO,CAAC,2BAA2B,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YACrE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QACxD,CAAC;QAED,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QACxD,CAAC;QAED,yEAAyE;QACzE,yBAAyB;QACzB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QACxD,CAAC;QAED,sEAAsE;QACtE,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,2EAA2E;gBAC3E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,sEAAsE;YACtE,oEAAoE;YACpE,oDAAoD;YACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,oBAAoB;gBACxD,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC;gBAC1D,CAAC,CAAC,IAAI,CAAC;YAET,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACvB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,uDAAuD;YACvD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QACxD,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO;YACL,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,wCAAwC,KAAK,EAAE;SACzD,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,IAAa,EAAE,OAAwB,EAAE,UAAkB;QACnF,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACK,iBAAiB,CAAC,MAAgB,EAAE,MAAgC;QAC1E,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;QAC/G,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE5F,oEAAoE;QACpE,wDAAwD;QACxD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC7E,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACzB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAEvC,qDAAqD;YACrD,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;gBAC9D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,kEAAkE;YAClE,IAAI,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,2BAA2B;YAC3B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,IAAa,EAAE,OAAwB;QAC7D,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC;IACnE,CAAC;IAEO,kBAAkB,CAAC,IAAY;QACrC,MAAM,QAAQ,GAAG;YACf,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,sBAAsB;YACtB,kCAAkC;SACnC,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,uEAAuE;IAEvE;;;OAGG;IACK,gBAAgB,CACtB,GAAQ,EACR,OAAwB,EACxB,UAAkB,EAClB,MAAgC,EAChC,iBAAqC;QAErC,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,2EAA2E;QAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;YACrC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC;SAClF,CAAC,CAAC;QAEH,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,yEAAyE;QACzE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE/C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC/D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE;gBAAE,SAAS;YAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,wDAAwD;YACxD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAE3C,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACzE,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACrC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEvB,0DAA0D;YAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,GAAG,WAAW,aAAa,CAAC;YAC5C,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAExD,gCAAgC;YAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC;gBACjC,CAAC,CAAC,YAAY,QAAQ,CAAC,KAAK,eAAe;gBAC3C,CAAC,CAAC,EAAE,CAAC;YAEP,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAClC,GAAG,CAAC,QAAQ,EACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAoC,gCAAgC;YACvF,6BAA6B,QAAQ,GAAG;gBACxC,iBAAiB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK;gBAC3D,mFAAmF,EACnF,SAAS,EAA8C,2BAA2B;YAClF,YAAY,EACZ,SAAS,EACT,GAAG,CACJ,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH;;;;;OAKG;IACK,YAAY,CAClB,IAAa,EACb,OAAwB,EACxB,UAAkB,EAClB,iBAAqC;QAErC,gEAAgE;QAChE,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5D,qDAAqD;YACrD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvC,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;oBACnF,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,8DAA8D;YAC9D,8DAA8D;YAC9D,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;oBAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC3C,IAAI,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,iBAAiB,EAAE,CAAC;wBACpE,OAAO,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;oBAC5F,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,oEAAoE;QACpE,sEAAsE;QACtE,uEAAuE;QACvE,sEAAsE;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAE/D,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAC3I,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBACzE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACK,iBAAiB,CACvB,IAAa,EACb,OAAwB;QAExB,IAAI,OAAO,GAAmB,IAAI,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,UAAU,GAAc,EAAE,CAAC;QAEjC,OAAO,OAAO,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM;gBAAE,MAAM;YAEnB,kDAAkD;YAClD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YAED,+DAA+D;YAC/D,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC7C,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YAED,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzC,8DAA8D;QAC9D,yCAAyC;QACzC,OAAO;YACL,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;YACvB,KAAK,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,IAAa,EAAE,OAAwB;QAChE,4BAA4B;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;YAAE,OAAO,KAAK,CAAC;QAElD,kFAAkF;QAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC3C,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CACxD,CAAC;QACF,IAAI,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QAEhC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,qBAAqB;YAC5E,CAAC,CAAE,YAAoB,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;YACrE,CAAC,CAAC,EAAE,CAAC;QAEP,mFAAmF;QACnF,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAEhH,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAE3E,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAa,EAAE,OAAwB;QAC7D,qBAAqB;QACrB,IAAK,IAAY,CAAC,IAAI;YAAE,OAAQ,IAAY,CAAC,IAAI,CAAC;QAClD,IAAK,IAAY,CAAC,IAAI;YAAE,OAAQ,IAAY,CAAC,IAAI,CAAC;QAElD,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAK,KAAa,CAAC,IAAI;gBAAE,OAAQ,KAAa,CAAC,IAAI,CAAC;YACpD,IAAK,KAAa,CAAC,IAAI;gBAAE,OAAQ,KAAa,CAAC,IAAI,CAAC;QACtD,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACK,yBAAyB,CAAC,IAAa,EAAE,OAAwB;QACvE,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,OAAO,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAE1C,+DAA+D;YAC/D,IACE,IAAI,KAAK,gBAAgB;gBACzB,IAAI,KAAK,sBAAsB;gBAC/B,IAAI,KAAK,qBAAqB;gBAC9B,IAAI,KAAK,gCAAgC;gBACzC,IAAI,KAAK,+BAA+B,EACxC,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAChD,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC;YACxB,CAAC;YAED,wCAAwC;YACxC,IAAI,IAAI,KAAK,mBAAmB,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAChD,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC;YACxB,CAAC;YAED,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAAa,EAAE,OAAwB;QACzD,2BAA2B;QAC3B,IAAK,IAAY,CAAC,IAAI,IAAI,OAAQ,IAAY,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAQ,IAAY,CAAC,IAAI,CAAC;QAC5F,IAAK,IAAY,CAAC,IAAI,IAAI,OAAQ,IAAY,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAQ,IAAY,CAAC,IAAI,CAAC;QAC5F,+EAA+E;QAC/E,MAAM,OAAO,GAAI,IAAI,CAAC,GAAW,EAAE,IAAI,CAAC;QACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;QAEtE,qDAAqD;QACrD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC7C,IACE,SAAS,KAAK,YAAY;oBAC1B,SAAS,KAAK,qBAAqB,EACnC,CAAC;oBACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC9C,IAAI,IAAI;wBAAE,OAAO,IAAI,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
1
+ {"version":3,"file":"UniversalDataAccessAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDataAccessAnalyzer.ts"],"names":[],"mappings":"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"}