@sfdxy/mule-lint 1.7.2 → 1.8.3

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 (157) hide show
  1. package/README.md +35 -0
  2. package/dist/bin/mule-lint-mcp.d.ts +3 -0
  3. package/dist/bin/mule-lint-mcp.d.ts.map +1 -0
  4. package/dist/bin/mule-lint-mcp.js +13 -0
  5. package/dist/bin/mule-lint-mcp.js.map +1 -0
  6. package/dist/package.json +6 -3
  7. package/dist/src/core/ComplexityCalculator.d.ts.map +1 -1
  8. package/dist/src/core/ComplexityCalculator.js +8 -8
  9. package/dist/src/core/ComplexityCalculator.js.map +1 -1
  10. package/dist/src/core/FileScanner.d.ts.map +1 -1
  11. package/dist/src/core/FileScanner.js +11 -12
  12. package/dist/src/core/FileScanner.js.map +1 -1
  13. package/dist/src/core/XPathHelper.d.ts.map +1 -1
  14. package/dist/src/core/XPathHelper.js +23 -23
  15. package/dist/src/core/XPathHelper.js.map +1 -1
  16. package/dist/src/core/XmlParser.js +1 -1
  17. package/dist/src/core/XmlParser.js.map +1 -1
  18. package/dist/src/core/YamlParser.d.ts.map +1 -1
  19. package/dist/src/core/YamlParser.js +1 -1
  20. package/dist/src/core/YamlParser.js.map +1 -1
  21. package/dist/src/engine/LintEngine.d.ts.map +1 -1
  22. package/dist/src/engine/LintEngine.js +6 -4
  23. package/dist/src/engine/LintEngine.js.map +1 -1
  24. package/dist/src/formatters/CsvFormatter.d.ts.map +1 -1
  25. package/dist/src/formatters/CsvFormatter.js +6 -4
  26. package/dist/src/formatters/CsvFormatter.js.map +1 -1
  27. package/dist/src/formatters/HtmlFormatter.d.ts.map +1 -1
  28. package/dist/src/formatters/HtmlFormatter.js +12 -7
  29. package/dist/src/formatters/HtmlFormatter.js.map +1 -1
  30. package/dist/src/formatters/SarifFormatter.d.ts.map +1 -1
  31. package/dist/src/formatters/SarifFormatter.js +20 -10
  32. package/dist/src/formatters/SarifFormatter.js.map +1 -1
  33. package/dist/src/formatters/TableFormatter.d.ts.map +1 -1
  34. package/dist/src/formatters/TableFormatter.js +1 -1
  35. package/dist/src/formatters/TableFormatter.js.map +1 -1
  36. package/dist/src/mcp/index.d.ts +13 -0
  37. package/dist/src/mcp/index.d.ts.map +1 -0
  38. package/dist/src/mcp/index.js +375 -0
  39. package/dist/src/mcp/index.js.map +1 -0
  40. package/dist/src/rules/api-led/ApiLedRules.d.ts.map +1 -1
  41. package/dist/src/rules/api-led/ApiLedRules.js +3 -1
  42. package/dist/src/rules/api-led/ApiLedRules.js.map +1 -1
  43. package/dist/src/rules/base/BaseRule.d.ts.map +1 -1
  44. package/dist/src/rules/base/BaseRule.js +1 -1
  45. package/dist/src/rules/base/BaseRule.js.map +1 -1
  46. package/dist/src/rules/complexity/FlowComplexityRule.d.ts.map +1 -1
  47. package/dist/src/rules/complexity/FlowComplexityRule.js +3 -5
  48. package/dist/src/rules/complexity/FlowComplexityRule.js.map +1 -1
  49. package/dist/src/rules/dataweave/DataWeaveRules.d.ts.map +1 -1
  50. package/dist/src/rules/dataweave/DataWeaveRules.js +5 -5
  51. package/dist/src/rules/dataweave/DataWeaveRules.js.map +1 -1
  52. package/dist/src/rules/dataweave/Java17DWErrorHandlingRule.d.ts +21 -0
  53. package/dist/src/rules/dataweave/Java17DWErrorHandlingRule.d.ts.map +1 -0
  54. package/dist/src/rules/dataweave/Java17DWErrorHandlingRule.js +162 -0
  55. package/dist/src/rules/dataweave/Java17DWErrorHandlingRule.js.map +1 -0
  56. package/dist/src/rules/documentation/FlowDescriptionRule.d.ts.map +1 -1
  57. package/dist/src/rules/documentation/FlowDescriptionRule.js +1 -1
  58. package/dist/src/rules/documentation/FlowDescriptionRule.js.map +1 -1
  59. package/dist/src/rules/documentation/MissingDocNameRule.d.ts.map +1 -1
  60. package/dist/src/rules/documentation/MissingDocNameRule.js +1 -1
  61. package/dist/src/rules/documentation/MissingDocNameRule.js.map +1 -1
  62. package/dist/src/rules/error-handling/CorrelationIdRule.d.ts.map +1 -1
  63. package/dist/src/rules/error-handling/CorrelationIdRule.js +1 -1
  64. package/dist/src/rules/error-handling/CorrelationIdRule.js.map +1 -1
  65. package/dist/src/rules/error-handling/GenericErrorRule.d.ts.map +1 -1
  66. package/dist/src/rules/error-handling/GenericErrorRule.js +2 -5
  67. package/dist/src/rules/error-handling/GenericErrorRule.js.map +1 -1
  68. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts.map +1 -1
  69. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js +1 -1
  70. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js.map +1 -1
  71. package/dist/src/rules/error-handling/HttpStatusRule.d.ts.map +1 -1
  72. package/dist/src/rules/error-handling/HttpStatusRule.js +1 -1
  73. package/dist/src/rules/error-handling/HttpStatusRule.js.map +1 -1
  74. package/dist/src/rules/error-handling/MissingErrorHandlerRule.d.ts.map +1 -1
  75. package/dist/src/rules/error-handling/MissingErrorHandlerRule.js +1 -1
  76. package/dist/src/rules/error-handling/MissingErrorHandlerRule.js.map +1 -1
  77. package/dist/src/rules/experimental/ExperimentalRules.d.ts.map +1 -1
  78. package/dist/src/rules/experimental/ExperimentalRules.js +1 -1
  79. package/dist/src/rules/experimental/ExperimentalRules.js.map +1 -1
  80. package/dist/src/rules/http/HttpContentTypeRule.d.ts.map +1 -1
  81. package/dist/src/rules/http/HttpContentTypeRule.js +1 -1
  82. package/dist/src/rules/http/HttpContentTypeRule.js.map +1 -1
  83. package/dist/src/rules/http/HttpTimeoutRule.d.ts.map +1 -1
  84. package/dist/src/rules/http/HttpTimeoutRule.js +1 -1
  85. package/dist/src/rules/http/HttpTimeoutRule.js.map +1 -1
  86. package/dist/src/rules/http/HttpUserAgentRule.d.ts.map +1 -1
  87. package/dist/src/rules/http/HttpUserAgentRule.js +1 -1
  88. package/dist/src/rules/http/HttpUserAgentRule.js.map +1 -1
  89. package/dist/src/rules/index.d.ts +1 -1
  90. package/dist/src/rules/index.d.ts.map +1 -1
  91. package/dist/src/rules/index.js +7 -5
  92. package/dist/src/rules/index.js.map +1 -1
  93. package/dist/src/rules/logging/LoggerCategoryRule.js +2 -2
  94. package/dist/src/rules/logging/LoggerCategoryRule.js.map +1 -1
  95. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.js +1 -1
  96. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.js.map +1 -1
  97. package/dist/src/rules/logging/LoggerPayloadRule.d.ts.map +1 -1
  98. package/dist/src/rules/logging/LoggerPayloadRule.js +3 -3
  99. package/dist/src/rules/logging/LoggerPayloadRule.js.map +1 -1
  100. package/dist/src/rules/naming/FlowCasingRule.d.ts.map +1 -1
  101. package/dist/src/rules/naming/FlowCasingRule.js +1 -1
  102. package/dist/src/rules/naming/FlowCasingRule.js.map +1 -1
  103. package/dist/src/rules/naming/FlowNamingRule.d.ts.map +1 -1
  104. package/dist/src/rules/naming/FlowNamingRule.js +3 -1
  105. package/dist/src/rules/naming/FlowNamingRule.js.map +1 -1
  106. package/dist/src/rules/naming/VariableNamingRule.d.ts.map +1 -1
  107. package/dist/src/rules/naming/VariableNamingRule.js +3 -3
  108. package/dist/src/rules/naming/VariableNamingRule.js.map +1 -1
  109. package/dist/src/rules/performance/AsyncErrorHandlerRule.d.ts.map +1 -1
  110. package/dist/src/rules/performance/AsyncErrorHandlerRule.js +1 -1
  111. package/dist/src/rules/performance/AsyncErrorHandlerRule.js.map +1 -1
  112. package/dist/src/rules/performance/LargeChoiceBlockRule.d.ts.map +1 -1
  113. package/dist/src/rules/performance/LargeChoiceBlockRule.js +1 -1
  114. package/dist/src/rules/performance/LargeChoiceBlockRule.js.map +1 -1
  115. package/dist/src/rules/performance/ScatterGatherRoutesRule.d.ts.map +1 -1
  116. package/dist/src/rules/performance/ScatterGatherRoutesRule.js +1 -1
  117. package/dist/src/rules/performance/ScatterGatherRoutesRule.js.map +1 -1
  118. package/dist/src/rules/security/HardcodedCredentialsRule.d.ts.map +1 -1
  119. package/dist/src/rules/security/HardcodedCredentialsRule.js +2 -2
  120. package/dist/src/rules/security/HardcodedCredentialsRule.js.map +1 -1
  121. package/dist/src/rules/security/HardcodedHttpRule.d.ts.map +1 -1
  122. package/dist/src/rules/security/HardcodedHttpRule.js +2 -6
  123. package/dist/src/rules/security/HardcodedHttpRule.js.map +1 -1
  124. package/dist/src/rules/security/InsecureTlsRule.d.ts.map +1 -1
  125. package/dist/src/rules/security/InsecureTlsRule.js +2 -2
  126. package/dist/src/rules/security/InsecureTlsRule.js.map +1 -1
  127. package/dist/src/rules/standards/ChoiceAntiPatternRule.d.ts.map +1 -1
  128. package/dist/src/rules/standards/ChoiceAntiPatternRule.js +2 -2
  129. package/dist/src/rules/standards/ChoiceAntiPatternRule.js.map +1 -1
  130. package/dist/src/rules/standards/DeprecatedComponentRule.d.ts.map +1 -1
  131. package/dist/src/rules/standards/DeprecatedComponentRule.js +1 -1
  132. package/dist/src/rules/standards/DeprecatedComponentRule.js.map +1 -1
  133. package/dist/src/rules/standards/DwlStandardsRule.d.ts.map +1 -1
  134. package/dist/src/rules/standards/DwlStandardsRule.js +1 -1
  135. package/dist/src/rules/standards/DwlStandardsRule.js.map +1 -1
  136. package/dist/src/rules/structure/StructureRules.d.ts.map +1 -1
  137. package/dist/src/rules/structure/StructureRules.js +6 -9
  138. package/dist/src/rules/structure/StructureRules.js.map +1 -1
  139. package/dist/src/rules/yaml/YamlRules.d.ts.map +1 -1
  140. package/dist/src/rules/yaml/YamlRules.js +13 -9
  141. package/dist/src/rules/yaml/YamlRules.js.map +1 -1
  142. package/dist/src/types/Config.d.ts.map +1 -1
  143. package/dist/src/types/Config.js +1 -5
  144. package/dist/src/types/Config.js.map +1 -1
  145. package/docs/README.md +95 -0
  146. package/docs/best-practices/documentation-standards.md +82 -0
  147. package/docs/best-practices/folder-structure.md +61 -0
  148. package/docs/best-practices/mulesoft-best-practices.md +902 -0
  149. package/docs/best-practices/rules-catalog.md +736 -0
  150. package/docs/linter/architecture.md +294 -0
  151. package/docs/linter/extending.md +426 -0
  152. package/docs/linter/folder-structure.md +251 -0
  153. package/docs/linter/images/html-report-dashboard.png +0 -0
  154. package/docs/linter/naming-conventions.md +300 -0
  155. package/docs/linter/rule-engine.md +532 -0
  156. package/docs/mcp-design.md +80 -0
  157. package/package.json +7 -4
@@ -26,7 +26,7 @@ class DeprecatedComponentRule extends BaseRule_1.BaseRule {
26
26
  const elements = this.select(`//mule:${deprecated.element}`, doc);
27
27
  for (const element of elements) {
28
28
  issues.push(this.createIssue(element, `Deprecated component "${deprecated.element}" found`, {
29
- suggestion: `Use ${deprecated.replacement} instead`
29
+ suggestion: `Use ${deprecated.replacement} instead`,
30
30
  }));
31
31
  }
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeprecatedComponentRule.js","sourceRoot":"","sources":["../../../../src/rules/standards/DeprecatedComponentRule.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C;;;;GAIG;AACH,MAAa,uBAAwB,SAAQ,mBAAQ;IACjD,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,4BAA4B,CAAC;IACpC,WAAW,GAAG,4CAA4C,CAAC;IAC3D,QAAQ,GAAG,SAAkB,CAAC;IAC9B,QAAQ,GAAG,WAAoB,CAAC;IAEf,mBAAmB,GAAG;QACnC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE;QAC3D,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,6BAA6B,EAAE;QACxE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;QACvD,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,6BAA6B,EAAE;QAC3E,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,sBAAsB,EAAE;KACxE,CAAC;IAEF,QAAQ,CAAC,GAAa,EAAE,QAA2B;QAC/C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YAElE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,OAAO,EACP,yBAAyB,UAAU,CAAC,OAAO,SAAS,EACpD;oBACI,UAAU,EAAE,OAAO,UAAU,CAAC,WAAW,UAAU;iBACtD,CACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAlCD,0DAkCC"}
1
+ {"version":3,"file":"DeprecatedComponentRule.js","sourceRoot":"","sources":["../../../../src/rules/standards/DeprecatedComponentRule.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C;;;;GAIG;AACH,MAAa,uBAAwB,SAAQ,mBAAQ;IACjD,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,4BAA4B,CAAC;IACpC,WAAW,GAAG,4CAA4C,CAAC;IAC3D,QAAQ,GAAG,SAAkB,CAAC;IAC9B,QAAQ,GAAG,WAAoB,CAAC;IAEf,mBAAmB,GAAG;QACnC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE;QAC3D,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,6BAA6B,EAAE;QACxE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;QACvD,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,6BAA6B,EAAE;QAC3E,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,sBAAsB,EAAE;KACxE,CAAC;IAEF,QAAQ,CAAC,GAAa,EAAE,QAA2B;QAC/C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;YAElE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,WAAW,CACZ,OAAO,EACP,yBAAyB,UAAU,CAAC,OAAO,SAAS,EACpD;oBACI,UAAU,EAAE,OAAO,UAAU,CAAC,WAAW,UAAU;iBACtD,CACJ,CACJ,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AApCD,0DAoCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DwlStandardsRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/standards/DwlStandardsRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC1C,EAAE,SAAc;IAChB,IAAI,SAAwB;IAC5B,WAAW,SAAiF;IAC5F,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAGhC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAqB;IAEnD,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAsC5D;;OAEG;WACW,KAAK,IAAI,IAAI;CAG9B"}
1
+ {"version":3,"file":"DwlStandardsRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/standards/DwlStandardsRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC1C,EAAE,SAAc;IAChB,IAAI,SAAwB;IAC5B,WAAW,SAAiF;IAC5F,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAGhC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAqB;IAEnD,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAyC5D;;OAEG;WACW,KAAK,IAAI,IAAI;CAG9B"}
@@ -74,7 +74,7 @@ class DwlStandardsRule extends BaseRule_1.BaseRule {
74
74
  // Mark as checked to avoid duplicate warnings
75
75
  DwlStandardsRule.checkedProjects.add(context.projectRoot);
76
76
  issues.push(this.createFileIssue(`Recommended DataWeave standards files not found: ${missingFiles.join(', ')}`, {
77
- suggestion: 'Create standard DWL files for consistent error responses and common functions'
77
+ suggestion: 'Create standard DWL files for consistent error responses and common functions',
78
78
  }));
79
79
  }
80
80
  return issues;
@@ -1 +1 @@
1
- {"version":3,"file":"DwlStandardsRule.js","sourceRoot":"","sources":["../../../../src/rules/standards/DwlStandardsRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAA4C;AAC5C,wDAAoD;AACpD,2CAA6B;AAE7B;;;;;GAKG;AACH,MAAa,gBAAiB,SAAQ,mBAAQ;IAC1C,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,oBAAoB,CAAC;IAC5B,WAAW,GAAG,6EAA6E,CAAC;IAC5F,QAAQ,GAAG,MAAe,CAAC;IAC3B,QAAQ,GAAG,WAAoB,CAAC;IAEhC,+DAA+D;IACvD,MAAM,CAAC,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnD,QAAQ,CAAC,GAAa,EAAE,OAA0B;QAC9C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,8BAA8B;QAC9B,IAAI,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,qCAAqC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAW,OAAO,EAAE,eAAe,EAAE;YACrE,2CAA2C;YAC3C,6CAA6C;SAChD,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,8CAA8C;YAC9C,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAE1D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAC5B,oDAAoD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC7E;gBACI,UAAU,EAAE,+EAA+E;aAC9F,CACJ,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK;QACf,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;;AArDL,4CAsDC"}
1
+ {"version":3,"file":"DwlStandardsRule.js","sourceRoot":"","sources":["../../../../src/rules/standards/DwlStandardsRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAA4C;AAC5C,wDAAoD;AACpD,2CAA6B;AAE7B;;;;;GAKG;AACH,MAAa,gBAAiB,SAAQ,mBAAQ;IAC1C,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,oBAAoB,CAAC;IAC5B,WAAW,GAAG,6EAA6E,CAAC;IAC5F,QAAQ,GAAG,MAAe,CAAC;IAC3B,QAAQ,GAAG,WAAoB,CAAC;IAEhC,+DAA+D;IACvD,MAAM,CAAC,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnD,QAAQ,CAAC,GAAa,EAAE,OAA0B;QAC9C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,8BAA8B;QAC9B,IAAI,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,qCAAqC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAW,OAAO,EAAE,eAAe,EAAE;YACrE,2CAA2C;YAC3C,6CAA6C;SAChD,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAA,wBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,8CAA8C;YAC9C,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAE1D,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,eAAe,CAChB,oDAAoD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC7E;gBACI,UAAU,EACN,+EAA+E;aACtF,CACJ,CACJ,CAAC;QACN,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK;QACf,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;;AAxDL,4CAyDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StructureRules.d.ts","sourceRoot":"","sources":["../../../../src/rules/structure/StructureRules.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,oBAAqB,SAAQ,QAAQ;IAC9C,EAAE,SAAc;IAChB,IAAI,SAAuB;IAC3B,WAAW,SAAyD;IACpE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG5B;IAEF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAI/B;IAEF,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CAkChE;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC1C,EAAE,SAAc;IAChB,IAAI,SAAwB;IAC5B,WAAW,SAA+D;IAC1E,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAqB7D,OAAO,CAAC,gBAAgB;CAU3B;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC3C,EAAE,SAAc;IAChB,IAAI,SAAyB;IAC7B,WAAW,SAAwD;IACnE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CAqB/D"}
1
+ {"version":3,"file":"StructureRules.d.ts","sourceRoot":"","sources":["../../../../src/rules/structure/StructureRules.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,oBAAqB,SAAQ,QAAQ;IAC9C,EAAE,SAAc;IAChB,IAAI,SAAuB;IAC3B,WAAW,SAAyD;IACpE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2C;IAEzE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAI/B;IAEF,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CAkChE;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC1C,EAAE,SAAc;IAChB,IAAI,SAAwB;IAC5B,WAAW,SAA+D;IAC1E,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAqB7D,OAAO,CAAC,gBAAgB;CAQ3B;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC3C,EAAE,SAAc;IAChB,IAAI,SAAyB;IAC7B,WAAW,SAAwD;IACnE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CAqB/D"}
@@ -48,10 +48,7 @@ class ProjectStructureRule extends BaseRule_1.BaseRule {
48
48
  description = 'Validate standard MuleSoft project folder structure';
49
49
  severity = 'warning';
50
50
  category = 'structure';
51
- REQUIRED_DIRS = [
52
- 'src/main/mule',
53
- 'src/main/resources',
54
- ];
51
+ REQUIRED_DIRS = ['src/main/mule', 'src/main/resources'];
55
52
  RECOMMENDED_DIRS = [
56
53
  'src/main/resources/dwl',
57
54
  'src/main/resources/api',
@@ -69,7 +66,7 @@ class ProjectStructureRule extends BaseRule_1.BaseRule {
69
66
  message: `Missing required directory: ${dir}`,
70
67
  ruleId: this.id,
71
68
  severity: 'error',
72
- suggestion: `Create directory: mkdir -p ${dir}`
69
+ suggestion: `Create directory: mkdir -p ${dir}`,
73
70
  });
74
71
  }
75
72
  }
@@ -82,7 +79,7 @@ class ProjectStructureRule extends BaseRule_1.BaseRule {
82
79
  message: `Missing recommended directory: ${dir}`,
83
80
  ruleId: this.id,
84
81
  severity: 'info',
85
- suggestion: `Consider creating: ${dir}`
82
+ suggestion: `Consider creating: ${dir}`,
86
83
  });
87
84
  }
88
85
  }
@@ -113,7 +110,7 @@ class GlobalConfigRule extends BaseRule_1.BaseRule {
113
110
  message: 'Missing global.xml configuration file',
114
111
  ruleId: this.id,
115
112
  severity: this.severity,
116
- suggestion: 'Create src/main/mule/global.xml for shared configurations'
113
+ suggestion: 'Create src/main/mule/global.xml for shared configurations',
117
114
  });
118
115
  }
119
116
  return issues;
@@ -121,7 +118,7 @@ class GlobalConfigRule extends BaseRule_1.BaseRule {
121
118
  findGlobalConfig(dir) {
122
119
  try {
123
120
  const files = fs.readdirSync(dir);
124
- return files.some(f => f.toLowerCase().includes('global') && f.endsWith('.xml'));
121
+ return files.some((f) => f.toLowerCase().includes('global') && f.endsWith('.xml'));
125
122
  }
126
123
  catch {
127
124
  return false;
@@ -153,7 +150,7 @@ class MonolithicXmlRule extends BaseRule_1.BaseRule {
153
150
  message: `File has ${totalFlows} flows/sub-flows - consider splitting`,
154
151
  ruleId: this.id,
155
152
  severity: this.severity,
156
- suggestion: 'Split into multiple XML files by domain or function'
153
+ suggestion: 'Split into multiple XML files by domain or function',
157
154
  });
158
155
  }
159
156
  return issues;
@@ -1 +1 @@
1
- {"version":3,"file":"StructureRules.js","sourceRoot":"","sources":["../../../../src/rules/structure/StructureRules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StructureRules.js","sourceRoot":"","sources":["../../../../src/rules/structure/StructureRules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"YamlRules.d.ts","sourceRoot":"","sources":["../../../../src/rules/yaml/YamlRules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAY,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAC9C,EAAE,SAAc;IAChB,IAAI,SAAkC;IACtC,WAAW,SAA2D;IACtE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CA+ChE;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC5C,EAAE,SAAc;IAChB,IAAI,SAAgC;IACpC,WAAW,SAA0D;IACrE,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IA2B7D,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,aAAa;CAqBxB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAC9C,EAAE,SAAc;IAChB,IAAI,SAA0B;IAC9B,WAAW,SAA0D;IACrE,QAAQ,EAAG,OAAO,CAAU;IAC5B,QAAQ,EAAG,UAAU,CAAU;IAE/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAmB7D,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,aAAa;CAqBxB"}
1
+ {"version":3,"file":"YamlRules.d.ts","sourceRoot":"","sources":["../../../../src/rules/yaml/YamlRules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAY,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAC9C,EAAE,SAAc;IAChB,IAAI,SAAkC;IACtC,WAAW,SAA2D;IACtE,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CAmDhE;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC5C,EAAE,SAAc;IAChB,IAAI,SAAgC;IACpC,WAAW,SAA0D;IACrE,QAAQ,EAAG,MAAM,CAAU;IAC3B,QAAQ,EAAG,WAAW,CAAU;IAEhC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IA2B7D,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,aAAa;CAqBxB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAC9C,EAAE,SAAc;IAChB,IAAI,SAA0B;IAC9B,WAAW,SAA0D;IACrE,QAAQ,EAAG,OAAO,CAAU;IAC5B,QAAQ,EAAG,UAAU,CAAU;IAE/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAmB7D,OAAO,CAAC,wBAAwB;IAmChC,OAAO,CAAC,aAAa;CAqBxB"}
@@ -55,16 +55,20 @@ class EnvironmentFilesRule extends BaseRule_1.BaseRule {
55
55
  const configSubDir = path.join(configDir, 'config');
56
56
  const propertiesDir = path.join(configDir, 'properties');
57
57
  // Check all possible locations for property files
58
- const searchDirs = [configDir, configSubDir, propertiesDir].filter(d => fs.existsSync(d));
58
+ const searchDirs = [configDir, configSubDir, propertiesDir].filter((d) => fs.existsSync(d));
59
59
  if (searchDirs.length === 0) {
60
60
  return []; // No config directory found
61
61
  }
62
- const requiredEnvs = this.getOption(context, 'environments', ['dev', 'qa', 'prod']);
62
+ const requiredEnvs = this.getOption(context, 'environments', [
63
+ 'dev',
64
+ 'qa',
65
+ 'prod',
66
+ ]);
63
67
  const existingFiles = new Set();
64
68
  for (const dir of searchDirs) {
65
69
  try {
66
70
  const files = fs.readdirSync(dir);
67
- files.forEach(f => existingFiles.add(f.toLowerCase()));
71
+ files.forEach((f) => existingFiles.add(f.toLowerCase()));
68
72
  }
69
73
  catch {
70
74
  // Directory not readable
@@ -82,7 +86,7 @@ class EnvironmentFilesRule extends BaseRule_1.BaseRule {
82
86
  message: `Missing environment properties file for "${env}"`,
83
87
  ruleId: this.id,
84
88
  severity: this.severity,
85
- suggestion: `Create ${env}.yaml or config-${env}.yaml in src/main/resources/`
89
+ suggestion: `Create ${env}.yaml or config-${env}.yaml in src/main/resources/`,
86
90
  });
87
91
  }
88
92
  }
@@ -110,14 +114,14 @@ class PropertyNamingRule extends BaseRule_1.BaseRule {
110
114
  if (!content)
111
115
  continue;
112
116
  const keys = YamlParser_1.YamlParser.getAllKeys(content);
113
- const invalidKeys = keys.filter(key => !this.isValidPropertyName(key));
117
+ const invalidKeys = keys.filter((key) => !this.isValidPropertyName(key));
114
118
  if (invalidKeys.length > 0) {
115
119
  issues.push({
116
120
  line: 1,
117
121
  message: `Invalid property names in ${path.basename(yamlFile)}: ${invalidKeys.slice(0, 3).join(', ')}${invalidKeys.length > 3 ? '...' : ''}`,
118
122
  ruleId: this.id,
119
123
  severity: this.severity,
120
- suggestion: 'Use category.property format (e.g., db.host, api.timeout)'
124
+ suggestion: 'Use category.property format (e.g., db.host, api.timeout)',
121
125
  });
122
126
  }
123
127
  }
@@ -128,8 +132,8 @@ class PropertyNamingRule extends BaseRule_1.BaseRule {
128
132
  // Valid: external-sapi.basepath, ramp.polling.max_retries
129
133
  // Invalid: DBHOST, DbHost (no uppercase at start of segment)
130
134
  // Now allows camelCase, hyphens in categories, underscores in properties
131
- return /^[a-z][a-zA-Z0-9_-]*(\.[a-z][a-zA-Z0-9_-]*)+$/.test(key) ||
132
- /^[a-z][a-zA-Z0-9_-]*$/.test(key); // Single word keys OK too
135
+ return (/^[a-z][a-zA-Z0-9_-]*(\.[a-z][a-zA-Z0-9_-]*)+$/.test(key) ||
136
+ /^[a-z][a-zA-Z0-9_-]*$/.test(key)); // Single word keys OK too
133
137
  }
134
138
  findYamlFiles(dir) {
135
139
  const files = [];
@@ -196,7 +200,7 @@ class PlaintextSecretsRule extends BaseRule_1.BaseRule {
196
200
  message: `Plaintext secret "${fullKey}" in ${path.basename(filePath)}`,
197
201
  ruleId: this.id,
198
202
  severity: this.severity,
199
- suggestion: 'Encrypt value with ![...] or move to secure properties file'
203
+ suggestion: 'Encrypt value with ![...] or move to secure properties file',
200
204
  });
201
205
  }
202
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"YamlRules.js","sourceRoot":"","sources":["../../../../src/rules/yaml/YamlRules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"YamlRules.js","sourceRoot":"","sources":["../../../../src/rules/yaml/YamlRules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/types/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;IAE5C,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,mCAAmC;IACnC,gBAAgB,EAAE,aAAa,CAAC;IAEhC,mCAAmC;IACnC,aAAa,EAAE,OAAO,CAAC;IAEvB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAU5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uBAAuB;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/types/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;IAE5C,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,mCAAmC;IACnC,gBAAgB,EAAE,aAAa,CAAC;IAEhC,mCAAmC;IACnC,aAAa,EAAE,OAAO,CAAC;IAEvB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAM5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uBAAuB;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -7,11 +7,7 @@ exports.DEFAULT_CONFIG = void 0;
7
7
  exports.DEFAULT_CONFIG = {
8
8
  rules: {},
9
9
  include: ['src/main/mule/**/*.xml'],
10
- exclude: [
11
- '**/test/**',
12
- '**/*.munit.xml',
13
- '**/target/**',
14
- ],
10
+ exclude: ['**/test/**', '**/*.munit.xml', '**/target/**'],
15
11
  defaultFormatter: 'table',
16
12
  failOnWarning: false,
17
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/types/Config.ts"],"names":[],"mappings":";;;AAoCA;;GAEG;AACU,QAAA,cAAc,GAAe;IACtC,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC,wBAAwB,CAAC;IACnC,OAAO,EAAE;QACL,YAAY;QACZ,gBAAgB;QAChB,cAAc;KACjB;IACD,gBAAgB,EAAE,OAAO;IACzB,aAAa,EAAE,KAAK;CACvB,CAAC"}
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/types/Config.ts"],"names":[],"mappings":";;;AAoCA;;GAEG;AACU,QAAA,cAAc,GAAe;IACtC,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC,wBAAwB,CAAC;IACnC,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,CAAC;IACzD,gBAAgB,EAAE,OAAO;IACzB,aAAa,EAAE,KAAK;CACvB,CAAC"}
package/docs/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # Mule-Lint Documentation
2
+
3
+ Welcome to the Mule-Lint documentation. This documentation is organized into two sections:
4
+
5
+ ---
6
+
7
+ ## 📘 MuleSoft Best Practices
8
+
9
+ Comprehensive guidelines for building maintainable, secure, and performant Mule applications. These guidelines cover more than just what the linter validates - they represent industry best practices for MuleSoft development.
10
+
11
+ | Document | Description |
12
+ |----------|-------------|
13
+ | [Best Practices Guide](best-practices/mulesoft-best-practices.md) | Complete MuleSoft development best practices |
14
+ | [Rules Catalog](best-practices/rules-catalog.md) | All 40 linter rules with examples |
15
+
16
+ ---
17
+
18
+ ## 🔧 Linter Technical Documentation
19
+
20
+ For contributors and those extending mule-lint.
21
+
22
+ | Document | Description |
23
+ |----------|-------------|
24
+ | [Architecture](linter/architecture.md) | System design, patterns, and data flow |
25
+ | [Rule Engine](linter/rule-engine.md) | Rule engine internals and interfaces |
26
+ | [Extending](linter/extending.md) | How to create custom rules |
27
+ | [Folder Structure](linter/folder-structure.md) | Project organization |
28
+ | [Naming Conventions](linter/naming-conventions.md) | Code style and naming standards |
29
+
30
+ ---
31
+
32
+ ## Quick Start
33
+
34
+ ### Installation
35
+
36
+ ```bash
37
+ npm install -g @sfdxy/mule-lint
38
+ ```
39
+
40
+ ### Common Commands
41
+
42
+ ```bash
43
+ # Scan with human-readable output
44
+ mule-lint ./src/main/mule
45
+
46
+ # Scan with JSON output
47
+ mule-lint ./src/main/mule -f json
48
+
49
+ # Scan with SARIF output for AI agents/IDEs
50
+ mule-lint ./src/main/mule -f sarif
51
+
52
+ # Generate HTML report
53
+ mule-lint ./src/main/mule -f html -o report.html
54
+
55
+ # Use config file
56
+ mule-lint ./src/main/mule -c .mulelintrc.json
57
+
58
+ # CI/CD: fail on warnings
59
+ mule-lint ./src/main/mule --fail-on-warning
60
+ ```
61
+
62
+ ### Exit Codes
63
+
64
+ | Code | Meaning |
65
+ |------|---------|
66
+ | 0 | Success (no errors) |
67
+ | 1 | Errors found |
68
+ | 2 | CLI/Configuration error |
69
+ | 3 | Parse errors (malformed XML) |
70
+
71
+ ---
72
+
73
+ ## Rule Families
74
+
75
+ | Family | Prefix | Count | Description |
76
+ |--------|--------|-------|-------------|
77
+ | Core MuleSoft | MULE-XXX | 29 | Core Mule 4 XML validation |
78
+ | YAML Properties | YAML-XXX | 3 | YAML configuration validation |
79
+ | DataWeave | DW-XXX | 3 | DataWeave file validation |
80
+ | API-Led | API-XXX | 3 | API-Led connectivity patterns |
81
+ | Experimental | EXP-XXX | 3 | Beta rules for evaluation |
82
+
83
+ **Total: 40 rules**
84
+
85
+ ---
86
+
87
+ ## For AI Agents
88
+
89
+ Use SARIF output format for structured results:
90
+
91
+ ```bash
92
+ mule-lint ./src/main/mule -f sarif > report.sarif
93
+ ```
94
+
95
+ SARIF output follows the [SARIF 2.1.0 specification](https://sarifweb.azurewebsites.net/) with rule definitions, precise file locations, and fix suggestions.
@@ -0,0 +1,82 @@
1
+ # MuleSoft Documentation Standards
2
+
3
+ Detailed, up-to-date documentation is critical for the long-term maintainability of integration projects. This guide outlines how to document MuleSoft applications effectively.
4
+
5
+ ## 1. Code-Level Documentation
6
+
7
+ ### Flow Documentation
8
+ Every flow should have a `doc:description` explaining its purpose, input, and output.
9
+
10
+ ```xml
11
+ <flow name="process-order-flow"
12
+ doc:name="Process Order"
13
+ doc:description="Orchestrates the order fulfillment process. Input: Order JSON. Output: Order Status JSON.">
14
+ <!-- ... -->
15
+ </flow>
16
+ ```
17
+
18
+ ### Component Documentation
19
+ Use the `doc:name` attribute to provide a human-readable display name for components in the Studio canvas.
20
+ * **Bad**: `Request`, `Transform Message`
21
+ * **Good**: `Request System API`, `Map to Common Model`
22
+
23
+ ### Complex DataWeave
24
+ For complex transformations, use Javadoc-style comments within the `.dwl` file to explain the logic.
25
+
26
+ ```dataweave
27
+ /**
28
+ * Maps the canonical Order model to the SAP specific format.
29
+ * Handles extensive field mapping and conditionally populates optional fields.
30
+ *
31
+ * @param payload The canonical Order object
32
+ * @return SAP Order structure
33
+ */
34
+ %dw 2.0
35
+ output application/xml
36
+ ---
37
+ {
38
+ // ...
39
+ }
40
+ ```
41
+
42
+ ## 2. README.md Structure
43
+
44
+ Every repository must contain a `README.md` at the root. Use this template:
45
+
46
+ ```markdown
47
+ # [Application Name]
48
+
49
+ [Short Description of what the application does]
50
+
51
+ ## Architecture
52
+ - **Layer**: [System/Process/Experience]
53
+ - **Domain**: [e.g., Finance, Logistics]
54
+ - **Dependencies**: [List dependent System APIs or external systems]
55
+
56
+ ## Setup & Installation
57
+ 1. Clone the repo
58
+ 2. Configure `dev.yaml` with your credentials...
59
+
60
+ ## Features
61
+ - Order Creation
62
+ - Inventory Check
63
+
64
+ ## API Specification
65
+ [Link to Exchange or local RAML]
66
+ ```
67
+
68
+ ## 3. API Documentation (Exchange)
69
+
70
+ Maintain your API specification (RAML/OAS) in Anypoint Exchange.
71
+ * **Description**: Provide a high-level overview of the API.
72
+ * **Examples**: Include valid request/response examples for every endpoint.
73
+ * **Status Codes**: Document all possible HTTP return codes (200, 400, 401, 500).
74
+
75
+ ## 4. Commit Messages
76
+
77
+ Follow [Conventional Commits](https://www.conventionalcommits.org/):
78
+
79
+ * `feat: add new order processing logic`
80
+ * `fix: resolve null pointer in mapping`
81
+ * `docs: update README with deployment steps`
82
+ * `chore: upgrade mule maven plugin`
@@ -0,0 +1,61 @@
1
+ # MuleSoft Project Folder Structure Best Practices
2
+
3
+ This guide outlines the recommended folder structure for MuleSoft projects to ensure consistency, maintainability, and alignment with Maven standards.
4
+
5
+ ## Standard Directory Layout
6
+
7
+ Every Mule 4 project should follow this standard Maven layout:
8
+
9
+ ```text
10
+ my-mule-project/
11
+ ├── src/
12
+ │ ├── main/
13
+ │ │ ├── mule/ # Mule configuration files (XMLs)
14
+ │ │ │ ├── global.xml # Shared global configurations
15
+ │ │ │ ├── error-handler.xml # Global error handling strategy
16
+ │ │ │ ├── api/ # API Implementation (generated by APIKit)
17
+ │ │ │ └── business/ # Business logic flows
18
+ │ │ ├── resources/ # Non-Mule resources
19
+ │ │ │ ├── api/ # RAML/OAS specifications
20
+ │ │ │ ├── dwl/ # DataWeave scripts (.dwl)
21
+ │ │ │ ├── properties/ # Environment properties (.yaml)
22
+ │ │ │ ├── schemas/ # JSON/XML schemas
23
+ │ │ │ └── examples/ # Sample data for tests/mocks
24
+ │ │ └── java/ # Custom Java code
25
+ │ └── test/
26
+ │ ├── munit/ # MUnit test suites
27
+ │ └── resources/ # Test-specific resources (mocks, test data)
28
+ ├── pom.xml # Maven build configuration
29
+ ├── mule-artifact.json # Mule application descriptor
30
+ └── README.md # Application documentation
31
+ ```
32
+
33
+ ## Key Directories Explained
34
+
35
+ ### `src/main/mule`
36
+ Contains the actual Mule flow definitions.
37
+ * **Best Practice**: Split monolithic XML files into logic units.
38
+ * `global.xml`: Configuration elements only (HTTP Listener Config, Database Config, etc.).
39
+ * `api.xml`: The main entry point (APIKit Router).
40
+ * `[feature]-impl.xml`: Implementation flows for a specific feature.
41
+
42
+ ### `src/main/resources`
43
+ Contains external assets needed by the application.
44
+ * **`dwl/`**: Store complex DataWeave transformations here as separate `.dwl` files. Avoid inline scripts longer than 5 lines.
45
+ * **`properties/`**: Store externalized configuration. Use environment-specific files (e.g., `dev.yaml`, `prod.yaml`).
46
+ * **`api/`**: The API definition (RAML or OAS).
47
+
48
+ ### `src/test/munit`
49
+ Contains your MUnit test suites.
50
+ * **Naming**: Match the source file name, e.g., `orders-test-suite.xml` tests `orders-impl.xml`.
51
+
52
+ ## Naming Conventions
53
+
54
+ * **Files**: Use `kebab-case` (e.g., `process-orders.xml`, `common-utils.dwl`).
55
+ * **Directories**: Use `kebab-case` (e.g., `business-logic`, `error-handling`).
56
+
57
+ ## Why this structure?
58
+
59
+ 1. **Maven Compatibility**: Follows the standard `src/main/` and `src/test/` convention required by the Mule Maven Plugin.
60
+ 2. **Separation of Concerns**: clearly separates code (Mule/Java) from configuration (properties) and tests.
61
+ 3. **Maintainability**: Splitting resources into `dwl`, `examples`, and `schemas` prevents the generic `resources` folder from becoming cluttered.