@sfdxy/mule-lint 1.19.0 → 1.20.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.
Files changed (46) hide show
  1. package/README.md +65 -56
  2. package/dist/package.json +1 -1
  3. package/dist/src/engine/LintEngine.d.ts +10 -0
  4. package/dist/src/engine/LintEngine.d.ts.map +1 -1
  5. package/dist/src/engine/LintEngine.js +68 -4
  6. package/dist/src/engine/LintEngine.js.map +1 -1
  7. package/dist/src/rules/dataweave/DataWeaveRules.d.ts +6 -0
  8. package/dist/src/rules/dataweave/DataWeaveRules.d.ts.map +1 -1
  9. package/dist/src/rules/dataweave/DataWeaveRules.js +16 -0
  10. package/dist/src/rules/dataweave/DataWeaveRules.js.map +1 -1
  11. package/dist/src/rules/error-handling/CorrelationIdRule.d.ts +22 -1
  12. package/dist/src/rules/error-handling/CorrelationIdRule.d.ts.map +1 -1
  13. package/dist/src/rules/error-handling/CorrelationIdRule.js +107 -6
  14. package/dist/src/rules/error-handling/CorrelationIdRule.js.map +1 -1
  15. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts +14 -2
  16. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts.map +1 -1
  17. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js +40 -18
  18. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js.map +1 -1
  19. package/dist/src/rules/error-handling/HttpStatusRule.d.ts +5 -0
  20. package/dist/src/rules/error-handling/HttpStatusRule.d.ts.map +1 -1
  21. package/dist/src/rules/error-handling/HttpStatusRule.js +15 -0
  22. package/dist/src/rules/error-handling/HttpStatusRule.js.map +1 -1
  23. package/dist/src/rules/http/HttpContentTypeRule.d.ts +28 -1
  24. package/dist/src/rules/http/HttpContentTypeRule.d.ts.map +1 -1
  25. package/dist/src/rules/http/HttpContentTypeRule.js +68 -7
  26. package/dist/src/rules/http/HttpContentTypeRule.js.map +1 -1
  27. package/dist/src/rules/operations/UnusedFlowRule.d.ts +6 -1
  28. package/dist/src/rules/operations/UnusedFlowRule.d.ts.map +1 -1
  29. package/dist/src/rules/operations/UnusedFlowRule.js +23 -9
  30. package/dist/src/rules/operations/UnusedFlowRule.js.map +1 -1
  31. package/dist/src/rules/performance/ConnectionPoolingRule.d.ts +5 -0
  32. package/dist/src/rules/performance/ConnectionPoolingRule.d.ts.map +1 -1
  33. package/dist/src/rules/performance/ConnectionPoolingRule.js +18 -5
  34. package/dist/src/rules/performance/ConnectionPoolingRule.js.map +1 -1
  35. package/dist/src/rules/performance/ReconnectionStrategyRule.d.ts +7 -0
  36. package/dist/src/rules/performance/ReconnectionStrategyRule.d.ts.map +1 -1
  37. package/dist/src/rules/performance/ReconnectionStrategyRule.js +15 -2
  38. package/dist/src/rules/performance/ReconnectionStrategyRule.js.map +1 -1
  39. package/dist/src/rules/structure/StructureRules.d.ts +8 -1
  40. package/dist/src/rules/structure/StructureRules.d.ts.map +1 -1
  41. package/dist/src/rules/structure/StructureRules.js +11 -7
  42. package/dist/src/rules/structure/StructureRules.js.map +1 -1
  43. package/dist/src/types/Rule.d.ts +22 -0
  44. package/dist/src/types/Rule.d.ts.map +1 -1
  45. package/docs/best-practices/rules-catalog.md +107 -13
  46. package/package.json +1 -1
package/README.md CHANGED
@@ -1,4 +1,13 @@
1
- # Mule-Lint
1
+ <p align="center">
2
+ <img src="assets/logo.svg" alt="Mule-Lint" width="600" />
3
+ </p>
4
+
5
+ <p align="center">
6
+ <a href="https://www.npmjs.com/package/@sfdxy/mule-lint"><img src="https://img.shields.io/npm/v/@sfdxy/mule-lint?style=flat-square&color=34d399" alt="npm version" /></a>
7
+ <a href="https://github.com/Avinava/mule-lint/actions"><img src="https://img.shields.io/github/actions/workflow/status/Avinava/mule-lint/ci.yml?style=flat-square&color=38bdf8" alt="CI" /></a>
8
+ <a href="https://github.com/Avinava/mule-lint/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/@sfdxy/mule-lint?style=flat-square&color=818cf8" alt="License" /></a>
9
+ <a href="https://www.npmjs.com/package/@sfdxy/mule-lint"><img src="https://img.shields.io/npm/dm/@sfdxy/mule-lint?style=flat-square&color=fbbf24" alt="Downloads" /></a>
10
+ </p>
2
11
 
3
12
  <p align="center">
4
13
  <strong>Enterprise-grade static analysis tool for MuleSoft applications</strong>
@@ -273,55 +282,55 @@ npx @sfdxy/mule-lint src/main/mule -f sarif -o results.sarif
273
282
 
274
283
  ### Core Rules (MVP)
275
284
 
276
- | ID | Name | Severity | Category | Description |
277
- | -------- | --------------------- | -------- | -------------- | ------------------------------------------------- |
278
- | MULE-001 | Global Error Handler | Error | Error Handling | Project should have global error handler |
279
- | MULE-002 | Flow Naming | Warning | Naming | Flows end with `-flow`, sub-flows with `-subflow` |
280
- | MULE-003 | Missing Error Handler | Error | Error Handling | Flows should have error handlers |
281
- | MULE-004 | Hardcoded URLs | Error | Security | Use property placeholders for URLs |
282
- | MULE-005 | HTTP Status Check | Warning | Error Handling | Error handlers should set httpStatus |
283
- | MULE-006 | Logger Category | Warning | Logging | Loggers should have category attribute |
284
- | MULE-007 | Correlation ID | Warning | Error Handling | Error handlers should reference correlationId |
285
- | MULE-008 | Choice Anti-Pattern | Warning | Standards | Avoid raise-error in otherwise |
286
- | MULE-009 | Generic Error Type | Warning | Error Handling | Avoid catching type="ANY" |
287
- | MULE-010 | DWL Standards | Info | Standards | Standard DataWeave files should exist |
285
+ | ID | Name | Severity | Category | Description |
286
+ | -------- | --------------------- | -------- | -------------- | -------------------------------------------------------------------- |
287
+ | MULE-001 | Global Error Handler | Warning | Error Handling | Any flow file should have a global error handler |
288
+ | MULE-002 | Flow Naming | Warning | Naming | Flows end with `-flow`, sub-flows with `-subflow` |
289
+ | MULE-003 | Missing Error Handler | Error | Error Handling | Flows should have error handlers |
290
+ | MULE-004 | Hardcoded URLs | Error | Security | Use property placeholders for URLs |
291
+ | MULE-005 | HTTP Status Check | Warning | Error Handling | Error handlers should set httpStatus (skipped for non-HTTP projects) |
292
+ | MULE-006 | Logger Category | Warning | Logging | Loggers should have category attribute |
293
+ | MULE-007 | Correlation ID | Warning | Error Handling | Error handlers should reference correlationId (checks DWL files too) |
294
+ | MULE-008 | Choice Anti-Pattern | Warning | Standards | Avoid raise-error in otherwise |
295
+ | MULE-009 | Generic Error Type | Warning | Error Handling | Avoid catching type="ANY" |
296
+ | MULE-010 | DWL Standards | Info | Standards | Standard DataWeave files should exist |
288
297
 
289
298
  ### Extended Rules
290
299
 
291
- | ID | Name | Severity | Category | Description |
292
- | -------- | --------------------- | -------- | ------------- | --------------------------------- |
293
- | MULE-101 | Flow Casing | Warning | Naming | kebab-case for flows |
294
- | MULE-102 | Variable Naming | Warning | Naming | camelCase for variables |
295
- | MULE-201 | Hardcoded Credentials | Error | Security | Use `${secure::}` |
296
- | MULE-202 | Insecure TLS | Error | Security | No insecure="true" |
297
- | MULE-301 | Logger Payload | Warning | Logging | Don't log entire payload |
298
- | MULE-303 | Logger in Retry | Warning | Logging | Avoid loggers in until-successful |
299
- | MULE-401 | HTTP User-Agent | Warning | HTTP | Include User-Agent |
300
- | MULE-402 | HTTP Content-Type | Warning | HTTP | POST/PUT needs Content-Type |
301
- | MULE-403 | HTTP Timeout | Warning | HTTP | Set responseTimeout |
302
- | MULE-501 | Scatter-Gather | Info | Performance | Limit parallel routes |
303
- | MULE-502 | Async Error | Warning | Performance | Async needs error handling |
304
- | MULE-503 | Large Choice | Warning | Performance | Max 7 when clauses |
305
- | MULE-601 | Flow Description | Info | Documentation | Add doc:description |
306
- | MULE-604 | Missing doc:name | Warning | Documentation | Key components need doc:name |
307
- | MULE-701 | Deprecated | Warning | Standards | Detect deprecated elements |
308
- | MULE-801 | Flow Complexity | Warning | Complexity | Cyclomatic complexity threshold |
309
- | MULE-802 | Project Structure | Warning | Structure | Validate folder structure |
310
- | MULE-803 | Global Config | Warning | Structure | global.xml should exist |
311
- | MULE-804 | Monolithic XML | Warning | Structure | Split large XML files |
300
+ | ID | Name | Severity | Category | Description |
301
+ | -------- | --------------------- | -------- | ------------- | --------------------------------------------------------- |
302
+ | MULE-101 | Flow Casing | Warning | Naming | kebab-case for flows |
303
+ | MULE-102 | Variable Naming | Warning | Naming | camelCase for variables |
304
+ | MULE-201 | Hardcoded Credentials | Error | Security | Use `${secure::}` |
305
+ | MULE-202 | Insecure TLS | Error | Security | No insecure="true" |
306
+ | MULE-301 | Logger Payload | Warning | Logging | Don't log entire payload |
307
+ | MULE-303 | Logger in Retry | Warning | Logging | Avoid loggers in until-successful |
308
+ | MULE-401 | HTTP User-Agent | Warning | HTTP | Include User-Agent |
309
+ | MULE-402 | HTTP Content-Type | Warning | HTTP | POST/PUT needs Content-Type (static, CDATA, or inline DW) |
310
+ | MULE-403 | HTTP Timeout | Warning | HTTP | Set responseTimeout |
311
+ | MULE-501 | Scatter-Gather | Info | Performance | Limit parallel routes |
312
+ | MULE-502 | Async Error | Warning | Performance | Async needs error handling |
313
+ | MULE-503 | Large Choice | Warning | Performance | Max 7 when clauses |
314
+ | MULE-601 | Flow Description | Info | Documentation | Add doc:description |
315
+ | MULE-604 | Missing doc:name | Warning | Documentation | Key components need doc:name |
316
+ | MULE-701 | Deprecated | Warning | Standards | Detect deprecated elements |
317
+ | MULE-801 | Flow Complexity | Warning | Complexity | Cyclomatic complexity threshold |
318
+ | MULE-802 | Project Structure | Warning | Structure | Validate folder structure |
319
+ | MULE-803 | Global Config | Warning | Structure | global.xml should exist |
320
+ | MULE-804 | Monolithic XML | Warning | Structure | Split large XML files |
312
321
 
313
322
  ### DataWeave & API-Led Rules
314
323
 
315
- | ID | Name | Severity | Category | Description |
316
- | ------- | ----------------- | -------- | --------- | --------------------------------- |
317
- | DW-001 | External DWL | Warning | DataWeave | Externalize complex transforms |
318
- | DW-002 | DWL Naming | Info | DataWeave | kebab-case for .dwl files |
319
- | DW-003 | DWL Modules | Info | DataWeave | Use common modules |
320
- | DW-004 | Java 17 DW Errors | Error | DataWeave | Java 17 compatible error handling |
321
- | API-001 | Experience Layer | Info | API-Led | Experience API patterns |
322
- | API-002 | Process Layer | Info | API-Led | Process layer orchestration |
323
- | API-003 | System Layer | Info | API-Led | System layer connections |
324
- | API-004 | Single SAPI | Warning | API-Led | Single system per SAPI |
324
+ | ID | Name | Severity | Category | Description |
325
+ | ------- | ----------------- | -------- | --------- | ---------------------------------------------------- |
326
+ | DW-001 | External DWL | Warning | DataWeave | Externalize complex transforms |
327
+ | DW-002 | DWL Naming | Info | DataWeave | kebab-case for .dwl files (configurable exemptPaths) |
328
+ | DW-003 | DWL Modules | Info | DataWeave | Use common modules |
329
+ | DW-004 | Java 17 DW Errors | Error | DataWeave | Java 17 compatible error handling |
330
+ | API-001 | Experience Layer | Info | API-Led | Experience API patterns |
331
+ | API-002 | Process Layer | Info | API-Led | Process layer orchestration |
332
+ | API-003 | System Layer | Info | API-Led | System layer connections |
333
+ | API-004 | Single SAPI | Warning | API-Led | Single system per SAPI |
325
334
 
326
335
  ### Experimental Rules
327
336
 
@@ -348,18 +357,18 @@ npx @sfdxy/mule-lint src/main/mule -f sarif -o results.sarif
348
357
 
349
358
  ### Operations & Resilience Rules
350
359
 
351
- | ID | Name | Severity | Category | Description |
352
- | ------- | ---------------------- | -------- | ------------- | ----------------------------------------------- |
353
- | RES-001 | Reconnection Strategy | Warning | Performance | Connectors should have reconnection strategies |
354
- | OPS-001 | Auto-Discovery | Info | Standards | APIs should have auto-discovery for API Manager |
355
- | OPS-002 | HTTP Port Placeholder | Warning | Standards | HTTP ports should use property placeholders |
356
- | OPS-003 | Externalized Cron | Warning | Standards | Cron expressions should use placeholders |
357
- | SEC-006 | Encryption Key in Logs | Error | Security | Detect sensitive data in log messages |
358
- | HYG-001 | Excessive Loggers | Warning | Logging | Flows should not have too many loggers |
359
- | HYG-002 | Commented Code | Info | Standards | Detect commented-out code blocks |
360
- | HYG-003 | Unused Flow | Warning | Standards | Detect flows/sub-flows never referenced |
361
- | API-005 | APIKit Validation | Info | Standards | APIs should use APIKit for interfaces |
362
- | DOC-001 | Display Name | Info | Documentation | Key components should have meaningful names |
360
+ | ID | Name | Severity | Category | Description |
361
+ | ------- | ---------------------- | -------- | ------------- | ---------------------------------------------------- |
362
+ | RES-001 | Reconnection Strategy | Warning | Performance | Connectors should have reconnection strategies |
363
+ | OPS-001 | Auto-Discovery | Info | Standards | APIs should have auto-discovery for API Manager |
364
+ | OPS-002 | HTTP Port Placeholder | Warning | Standards | HTTP ports should use property placeholders |
365
+ | OPS-003 | Externalized Cron | Warning | Standards | Cron expressions should use placeholders |
366
+ | SEC-006 | Encryption Key in Logs | Error | Security | Detect sensitive data in log messages |
367
+ | HYG-001 | Excessive Loggers | Warning | Logging | Flows should not have too many loggers |
368
+ | HYG-002 | Commented Code | Info | Standards | Detect commented-out code blocks |
369
+ | HYG-003 | Unused Flow | Warning | Standards | Detect flows/sub-flows never referenced (cross-file) |
370
+ | API-005 | APIKit Validation | Info | Standards | APIs should use APIKit for interfaces |
371
+ | DOC-001 | Display Name | Info | Documentation | Key components should have meaningful names |
363
372
 
364
373
  ### Project Governance Rules
365
374
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sfdxy/mule-lint",
3
- "version": "1.19.0",
3
+ "version": "1.20.0",
4
4
  "description": "Static analysis tool for MuleSoft applications - supports humans, AI agents, and CI/CD pipelines",
5
5
  "author": "Avinava",
6
6
  "license": "MIT",
@@ -64,5 +64,15 @@ export declare class LintEngine {
64
64
  * Collect metrics from a parsed XML document
65
65
  */
66
66
  private collectFileMetrics;
67
+ /**
68
+ * Pre-scan all XML files to build cross-file context:
69
+ * - allFlowRefs: union of all <flow-ref name="..."> targets across files
70
+ * - projectContext: whether the project has HTTP listeners / APIkit routers
71
+ *
72
+ * This runs before the main per-file rule execution so that rules can use
73
+ * the aggregated information (e.g. HYG-003 cross-file unused flow detection,
74
+ * MULE-005 HTTP-only project detection).
75
+ */
76
+ private preScanFiles;
67
77
  }
68
78
  //# sourceMappingURL=LintEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LintEngine.d.ts","sourceRoot":"","sources":["../../../src/engine/LintEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,KAAK,EAA2C,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAA2C,MAAM,iBAAiB,CAAC;AAQtF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,sBAAsB;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,EAAE,aAAa;IAMlC;;OAEG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAoH1D;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE;IAmB9D;;OAEG;IACI,eAAe,IAAI,IAAI,EAAE;IAOhC;;OAEG;IACH,OAAO,CAAC,WAAW;IAoDnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA4ChB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgCpB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,GAAG;IAOX;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAG3B"}
1
+ {"version":3,"file":"LintEngine.d.ts","sourceRoot":"","sources":["../../../src/engine/LintEngine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,KAAK,EAA2D,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAA2C,MAAM,iBAAiB,CAAC;AAQtF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,sBAAsB;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,EAAE,aAAa;IAMlC;;OAEG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgI1D;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE;IAmB9D;;OAEG;IACI,eAAe,IAAI,IAAI,EAAE;IAOhC;;OAEG;IACH,OAAO,CAAC,WAAW;IAwDnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAgDhB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgCpB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,GAAG;IAOX;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;CA4DrB"}
@@ -88,6 +88,10 @@ class LintEngine {
88
88
  exclude: this.config.exclude,
89
89
  });
90
90
  this.log(`Found ${files.length} files to scan`);
91
+ // Pre-scan: collect cross-file context before rule execution
92
+ const { allFlowRefs, projectContext } = isStandalone
93
+ ? { allFlowRefs: undefined, projectContext: undefined }
94
+ : this.preScanFiles(files);
91
95
  // Process each file and collect metrics
92
96
  const fileResults = [];
93
97
  const metricsAggregator = {
@@ -108,7 +112,7 @@ class LintEngine {
108
112
  flowComplexityData: [],
109
113
  };
110
114
  for (const file of files) {
111
- const result = this.processFile(file, projectRoot, isStandalone, metricsAggregator);
115
+ const result = this.processFile(file, projectRoot, isStandalone, metricsAggregator, allFlowRefs, projectContext);
112
116
  fileResults.push(result);
113
117
  }
114
118
  // Run Project Rules (only once per scan, if not standalone)
@@ -210,7 +214,7 @@ class LintEngine {
210
214
  /**
211
215
  * Process a single file
212
216
  */
213
- processFile(file, projectRoot, isStandalone = false, metricsAggregator) {
217
+ processFile(file, projectRoot, isStandalone = false, metricsAggregator, allFlowRefs, projectContext) {
214
218
  this.log(` Processing: ${file.relativePath}`);
215
219
  try {
216
220
  const content = (0, FileScanner_1.readFileContent)(file.absolutePath);
@@ -224,7 +228,7 @@ class LintEngine {
224
228
  parseError: parseResult.error,
225
229
  };
226
230
  }
227
- const issues = this.runRules(parseResult.document, file.absolutePath, projectRoot, isStandalone);
231
+ const issues = this.runRules(parseResult.document, file.absolutePath, projectRoot, isStandalone, allFlowRefs, projectContext);
228
232
  // Collect metrics from parsed document
229
233
  if (metricsAggregator) {
230
234
  this.collectFileMetrics(parseResult.document, file.relativePath, metricsAggregator);
@@ -250,7 +254,7 @@ class LintEngine {
250
254
  /**
251
255
  * Run all enabled rules against a document
252
256
  */
253
- runRules(doc, filePath, projectRoot, isStandalone = false) {
257
+ runRules(doc, filePath, projectRoot, isStandalone = false, allFlowRefs, projectContext) {
254
258
  const issues = [];
255
259
  const enabledRules = this.getEnabledRules();
256
260
  for (const rule of enabledRules) {
@@ -264,6 +268,8 @@ class LintEngine {
264
268
  relativePath: path.relative(projectRoot, filePath),
265
269
  projectRoot,
266
270
  config: this.getRuleConfig(rule.id),
271
+ allFlowRefs,
272
+ projectContext,
267
273
  };
268
274
  const ruleIssues = rule.validate(doc, context);
269
275
  // Apply severity override from config
@@ -371,6 +377,64 @@ class LintEngine {
371
377
  collectFileMetrics(doc, relativePath, metrics) {
372
378
  (0, MetricsCollector_1.collectFileMetrics)(doc, relativePath, metrics);
373
379
  }
380
+ /**
381
+ * Pre-scan all XML files to build cross-file context:
382
+ * - allFlowRefs: union of all <flow-ref name="..."> targets across files
383
+ * - projectContext: whether the project has HTTP listeners / APIkit routers
384
+ *
385
+ * This runs before the main per-file rule execution so that rules can use
386
+ * the aggregated information (e.g. HYG-003 cross-file unused flow detection,
387
+ * MULE-005 HTTP-only project detection).
388
+ */
389
+ preScanFiles(files) {
390
+ const allFlowRefs = new Set();
391
+ const projectContext = {
392
+ hasHttpListener: false,
393
+ hasApikitRouter: false,
394
+ };
395
+ for (const file of files) {
396
+ // Only process XML files
397
+ if (!file.absolutePath.endsWith('.xml')) {
398
+ continue;
399
+ }
400
+ try {
401
+ const content = (0, FileScanner_1.readFileContent)(file.absolutePath);
402
+ const parseResult = (0, XmlParser_1.parseXml)(content, file.relativePath);
403
+ if (!parseResult.success || !parseResult.document) {
404
+ continue;
405
+ }
406
+ const doc = parseResult.document;
407
+ // Collect flow-ref targets
408
+ const allElements = doc.getElementsByTagName('*');
409
+ for (let i = 0; i < allElements.length; i++) {
410
+ const el = allElements[i];
411
+ const localName = el.localName ?? el.nodeName.split(':').pop() ?? '';
412
+ if (localName === 'flow-ref') {
413
+ const name = el.getAttribute('name');
414
+ if (name) {
415
+ allFlowRefs.add(name);
416
+ }
417
+ }
418
+ // Detect HTTP listener
419
+ if (localName === 'listener') {
420
+ projectContext.hasHttpListener = true;
421
+ }
422
+ // Detect APIkit router or console
423
+ if (localName === 'router' || localName === 'console') {
424
+ // Check namespace to be sure it's apikit
425
+ const nodeName = el.nodeName;
426
+ if (nodeName.includes('apikit:')) {
427
+ projectContext.hasApikitRouter = true;
428
+ }
429
+ }
430
+ }
431
+ }
432
+ catch {
433
+ // Ignore unreadable files during pre-scan
434
+ }
435
+ }
436
+ return { allFlowRefs, projectContext };
437
+ }
374
438
  }
375
439
  exports.LintEngine = LintEngine;
376
440
  //# sourceMappingURL=LintEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LintEngine.js","sourceRoot":"","sources":["../../../src/engine/LintEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LintEngine.js","sourceRoot":"","sources":["../../../src/engine/LintEngine.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,12 @@ export declare class ExternalDwlRule extends BaseRule {
18
18
  *
19
19
  * DataWeave files should follow naming conventions for consistency.
20
20
  * Supports configurable conventions: 'kebab-case' (default), 'camelCase', or 'any'.
21
+ *
22
+ * IMPORTANT: DataWeave module files (imported via `import X from dwl::path::X`)
23
+ * MUST use camelCase because the module identifier in the import statement must
24
+ * exactly match the filename, and hyphens are not valid in DataWeave identifiers.
25
+ * Use the `exemptPaths` option to exclude module directories from this rule, or
26
+ * set `convention: "camelCase"` for projects that use DW modules extensively.
21
27
  */
22
28
  export declare class DwlNamingRule extends BaseRule {
23
29
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"DataWeaveRules.d.ts","sourceRoot":"","sources":["../../../../src/rules/dataweave/DataWeaveRules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,EAAE,SAAY;IACd,IAAI,SAAyC;IAC7C,WAAW,SAA4D;IACvE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CA+B7D;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,EAAE,SAAY;IACd,IAAI,SAAqB;IACzB,WAAW,SAC8E;IACzF,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAoC7D,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,YAAY;CAiBrB;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,EAAE,SAAY;IACd,IAAI,SAAiB;IACrB,WAAW,SAAkD;IAC7D,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAwB7D,OAAO,CAAC,OAAO;CAQhB"}
1
+ {"version":3,"file":"DataWeaveRules.d.ts","sourceRoot":"","sources":["../../../../src/rules/dataweave/DataWeaveRules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,EAAE,SAAY;IACd,IAAI,SAAyC;IAC7C,WAAW,SAA4D;IACvE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CA+B7D;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,EAAE,SAAY;IACd,IAAI,SAAqB;IACzB,WAAW,SAC8E;IACzF,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAgD7D,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,YAAY;CAiBrB;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,EAAE,SAAY;IACd,IAAI,SAAiB;IACrB,WAAW,SAAkD;IAC7D,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAwB7D,OAAO,CAAC,OAAO;CAQhB"}
@@ -75,6 +75,12 @@ exports.ExternalDwlRule = ExternalDwlRule;
75
75
  *
76
76
  * DataWeave files should follow naming conventions for consistency.
77
77
  * Supports configurable conventions: 'kebab-case' (default), 'camelCase', or 'any'.
78
+ *
79
+ * IMPORTANT: DataWeave module files (imported via `import X from dwl::path::X`)
80
+ * MUST use camelCase because the module identifier in the import statement must
81
+ * exactly match the filename, and hyphens are not valid in DataWeave identifiers.
82
+ * Use the `exemptPaths` option to exclude module directories from this rule, or
83
+ * set `convention: "camelCase"` for projects that use DW modules extensively.
78
84
  */
79
85
  class DwlNamingRule extends BaseRule_1.BaseRule {
80
86
  id = 'DW-002';
@@ -94,9 +100,19 @@ class DwlNamingRule extends BaseRule_1.BaseRule {
94
100
  if (convention === 'any') {
95
101
  return issues;
96
102
  }
103
+ // Get configurable exempt paths (glob-style patterns relative to projectRoot).
104
+ // Files matching any exempt pattern are skipped entirely regardless of convention.
105
+ // Use this for DataWeave module directories where camelCase is required by the
106
+ // DataWeave runtime import system (e.g., "src/main/resources/dwl/lookups/**").
107
+ const exemptPaths = this.getOption(context, 'exemptPaths', []);
97
108
  const dwlFiles = this.findDwlFiles(dwlDir);
98
109
  for (const file of dwlFiles) {
99
110
  const basename = path.basename(file, '.dwl');
111
+ // Check if this file matches any exempt path pattern
112
+ const relativeToDwlDir = path.relative(context.projectRoot, file);
113
+ if (exemptPaths.length > 0 && this.isExcluded(relativeToDwlDir, exemptPaths)) {
114
+ continue;
115
+ }
100
116
  if (!this.isValidDwlName(basename, convention)) {
101
117
  const suggestedName = this.toConvention(basename, convention);
102
118
  issues.push({
@@ -1 +1 @@
1
- {"version":3,"file":"DataWeaveRules.js","sourceRoot":"","sources":["../../../../src/rules/dataweave/DataWeaveRules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataWeaveRules.js","sourceRoot":"","sources":["../../../../src/rules/dataweave/DataWeaveRules.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,13 @@ import { BaseRule } from '../base/BaseRule';
5
5
  *
6
6
  * Error handlers should include correlation ID for traceability.
7
7
  * This helps track errors across distributed systems.
8
+ *
9
+ * The rule checks three patterns:
10
+ * 1. Inline correlationId reference in the error handler XML text/attributes
11
+ * 2. External DWL file referenced via resource="..." attribute on ee:set-payload
12
+ * (the DWL file content is read from disk and inspected)
13
+ * 3. If a resource reference exists but the file cannot be read, the issue is
14
+ * downgraded to 'info' to avoid false positives on valid code
8
15
  */
9
16
  export declare class CorrelationIdRule extends BaseRule {
10
17
  id: string;
@@ -14,11 +21,25 @@ export declare class CorrelationIdRule extends BaseRule {
14
21
  category: "error-handling";
15
22
  issueType: IssueType;
16
23
  private readonly CORRELATION_PATTERNS;
17
- validate(doc: Document, _context: ValidationContext): Issue[];
24
+ validate(doc: Document, context: ValidationContext): Issue[];
25
+ /**
26
+ * Inspect resource="..." attributes on ee:set-payload (and similar) elements
27
+ * within the error handler.
28
+ *
29
+ * @returns
30
+ * 'found' — correlationId pattern detected in a referenced DWL file
31
+ * 'unresolvable' — resource reference exists but could not be read
32
+ * 'not-found' — no resource references present or none contain correlationId
33
+ */
34
+ private checkResourceReferences;
18
35
  /**
19
36
  * Check if a node or its descendants contain correlation ID reference
20
37
  */
21
38
  private containsCorrelationId;
39
+ /**
40
+ * Check whether a raw file content string contains a correlationId pattern
41
+ */
42
+ private contentContainsCorrelationId;
22
43
  /**
23
44
  * Find the parent flow element for context
24
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CorrelationIdRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/error-handling/CorrelationIdRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,EAAE,SAAc;IAChB,IAAI,SAAqC;IACzC,WAAW,SAA2E;IACtF,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,gBAAgB,CAAU;IACrC,SAAS,EAAE,SAAS,CAAS;IAG7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CASnC;IAEF,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,KAAK,EAAE;IA+B7D;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,cAAc;CAUvB"}
1
+ {"version":3,"file":"CorrelationIdRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/error-handling/CorrelationIdRule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,EAAE,SAAc;IAChB,IAAI,SAAqC;IACzC,WAAW,SAA2E;IACtF,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,gBAAgB,CAAU;IACrC,SAAS,EAAE,SAAS,CAAS;IAG7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CASnC;IAEF,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAwD5D;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAKpC;;OAEG;IACH,OAAO,CAAC,cAAc;CAUvB"}