@sfdxy/mule-lint 1.4.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 (206) hide show
  1. package/README.md +413 -0
  2. package/dist/bin/mule-lint.d.ts +3 -0
  3. package/dist/bin/mule-lint.d.ts.map +1 -0
  4. package/dist/bin/mule-lint.js +123 -0
  5. package/dist/bin/mule-lint.js.map +1 -0
  6. package/dist/src/core/ComplexityCalculator.d.ts +42 -0
  7. package/dist/src/core/ComplexityCalculator.d.ts.map +1 -0
  8. package/dist/src/core/ComplexityCalculator.js +123 -0
  9. package/dist/src/core/ComplexityCalculator.js.map +1 -0
  10. package/dist/src/core/FileScanner.d.ts +58 -0
  11. package/dist/src/core/FileScanner.d.ts.map +1 -0
  12. package/dist/src/core/FileScanner.js +161 -0
  13. package/dist/src/core/FileScanner.js.map +1 -0
  14. package/dist/src/core/XPathHelper.d.ts +81 -0
  15. package/dist/src/core/XPathHelper.d.ts.map +1 -0
  16. package/dist/src/core/XPathHelper.js +229 -0
  17. package/dist/src/core/XPathHelper.js.map +1 -0
  18. package/dist/src/core/XmlParser.d.ts +38 -0
  19. package/dist/src/core/XmlParser.d.ts.map +1 -0
  20. package/dist/src/core/XmlParser.js +131 -0
  21. package/dist/src/core/XmlParser.js.map +1 -0
  22. package/dist/src/core/YamlParser.d.ts +30 -0
  23. package/dist/src/core/YamlParser.d.ts.map +1 -0
  24. package/dist/src/core/YamlParser.js +120 -0
  25. package/dist/src/core/YamlParser.js.map +1 -0
  26. package/dist/src/core/index.d.ts +4 -0
  27. package/dist/src/core/index.d.ts.map +1 -0
  28. package/dist/src/core/index.js +21 -0
  29. package/dist/src/core/index.js.map +1 -0
  30. package/dist/src/engine/LintEngine.d.ts +60 -0
  31. package/dist/src/engine/LintEngine.d.ts.map +1 -0
  32. package/dist/src/engine/LintEngine.js +271 -0
  33. package/dist/src/engine/LintEngine.js.map +1 -0
  34. package/dist/src/engine/index.d.ts +2 -0
  35. package/dist/src/engine/index.d.ts.map +1 -0
  36. package/dist/src/engine/index.js +18 -0
  37. package/dist/src/engine/index.js.map +1 -0
  38. package/dist/src/formatters/JsonFormatter.d.ts +18 -0
  39. package/dist/src/formatters/JsonFormatter.d.ts.map +1 -0
  40. package/dist/src/formatters/JsonFormatter.js +45 -0
  41. package/dist/src/formatters/JsonFormatter.js.map +1 -0
  42. package/dist/src/formatters/SarifFormatter.d.ts +8 -0
  43. package/dist/src/formatters/SarifFormatter.d.ts.map +1 -0
  44. package/dist/src/formatters/SarifFormatter.js +115 -0
  45. package/dist/src/formatters/SarifFormatter.js.map +1 -0
  46. package/dist/src/formatters/TableFormatter.d.ts +10 -0
  47. package/dist/src/formatters/TableFormatter.d.ts.map +1 -0
  48. package/dist/src/formatters/TableFormatter.js +100 -0
  49. package/dist/src/formatters/TableFormatter.js.map +1 -0
  50. package/dist/src/formatters/index.d.ts +10 -0
  51. package/dist/src/formatters/index.d.ts.map +1 -0
  52. package/dist/src/formatters/index.js +42 -0
  53. package/dist/src/formatters/index.js.map +1 -0
  54. package/dist/src/index.d.ts +6 -0
  55. package/dist/src/index.d.ts.map +1 -0
  56. package/dist/src/index.js +28 -0
  57. package/dist/src/index.js.map +1 -0
  58. package/dist/src/rules/api-led/ApiLedRules.d.ts +42 -0
  59. package/dist/src/rules/api-led/ApiLedRules.d.ts.map +1 -0
  60. package/dist/src/rules/api-led/ApiLedRules.js +95 -0
  61. package/dist/src/rules/api-led/ApiLedRules.js.map +1 -0
  62. package/dist/src/rules/base/BaseRule.d.ts +89 -0
  63. package/dist/src/rules/base/BaseRule.d.ts.map +1 -0
  64. package/dist/src/rules/base/BaseRule.js +137 -0
  65. package/dist/src/rules/base/BaseRule.js.map +1 -0
  66. package/dist/src/rules/complexity/FlowComplexityRule.d.ts +18 -0
  67. package/dist/src/rules/complexity/FlowComplexityRule.d.ts.map +1 -0
  68. package/dist/src/rules/complexity/FlowComplexityRule.js +58 -0
  69. package/dist/src/rules/complexity/FlowComplexityRule.js.map +1 -0
  70. package/dist/src/rules/dataweave/DataWeaveRules.d.ts +45 -0
  71. package/dist/src/rules/dataweave/DataWeaveRules.d.ts.map +1 -0
  72. package/dist/src/rules/dataweave/DataWeaveRules.js +168 -0
  73. package/dist/src/rules/dataweave/DataWeaveRules.js.map +1 -0
  74. package/dist/src/rules/documentation/FlowDescriptionRule.d.ts +16 -0
  75. package/dist/src/rules/documentation/FlowDescriptionRule.d.ts.map +1 -0
  76. package/dist/src/rules/documentation/FlowDescriptionRule.js +33 -0
  77. package/dist/src/rules/documentation/FlowDescriptionRule.js.map +1 -0
  78. package/dist/src/rules/documentation/MissingDocNameRule.d.ts +17 -0
  79. package/dist/src/rules/documentation/MissingDocNameRule.d.ts.map +1 -0
  80. package/dist/src/rules/documentation/MissingDocNameRule.js +44 -0
  81. package/dist/src/rules/documentation/MissingDocNameRule.js.map +1 -0
  82. package/dist/src/rules/error-handling/CorrelationIdRule.d.ts +26 -0
  83. package/dist/src/rules/error-handling/CorrelationIdRule.d.ts.map +1 -0
  84. package/dist/src/rules/error-handling/CorrelationIdRule.js +86 -0
  85. package/dist/src/rules/error-handling/CorrelationIdRule.js.map +1 -0
  86. package/dist/src/rules/error-handling/GenericErrorRule.d.ts +22 -0
  87. package/dist/src/rules/error-handling/GenericErrorRule.d.ts.map +1 -0
  88. package/dist/src/rules/error-handling/GenericErrorRule.js +51 -0
  89. package/dist/src/rules/error-handling/GenericErrorRule.js.map +1 -0
  90. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts +17 -0
  91. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts.map +1 -0
  92. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js +77 -0
  93. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js.map +1 -0
  94. package/dist/src/rules/error-handling/HttpStatusRule.d.ts +21 -0
  95. package/dist/src/rules/error-handling/HttpStatusRule.d.ts.map +1 -0
  96. package/dist/src/rules/error-handling/HttpStatusRule.js +57 -0
  97. package/dist/src/rules/error-handling/HttpStatusRule.js.map +1 -0
  98. package/dist/src/rules/error-handling/MissingErrorHandlerRule.d.ts +17 -0
  99. package/dist/src/rules/error-handling/MissingErrorHandlerRule.d.ts.map +1 -0
  100. package/dist/src/rules/error-handling/MissingErrorHandlerRule.js +51 -0
  101. package/dist/src/rules/error-handling/MissingErrorHandlerRule.js.map +1 -0
  102. package/dist/src/rules/experimental/ExperimentalRules.d.ts +43 -0
  103. package/dist/src/rules/experimental/ExperimentalRules.d.ts.map +1 -0
  104. package/dist/src/rules/experimental/ExperimentalRules.js +92 -0
  105. package/dist/src/rules/experimental/ExperimentalRules.js.map +1 -0
  106. package/dist/src/rules/http/HttpContentTypeRule.d.ts +17 -0
  107. package/dist/src/rules/http/HttpContentTypeRule.d.ts.map +1 -0
  108. package/dist/src/rules/http/HttpContentTypeRule.js +50 -0
  109. package/dist/src/rules/http/HttpContentTypeRule.js.map +1 -0
  110. package/dist/src/rules/http/HttpTimeoutRule.d.ts +16 -0
  111. package/dist/src/rules/http/HttpTimeoutRule.d.ts.map +1 -0
  112. package/dist/src/rules/http/HttpTimeoutRule.js +33 -0
  113. package/dist/src/rules/http/HttpTimeoutRule.js.map +1 -0
  114. package/dist/src/rules/http/HttpUserAgentRule.d.ts +17 -0
  115. package/dist/src/rules/http/HttpUserAgentRule.d.ts.map +1 -0
  116. package/dist/src/rules/http/HttpUserAgentRule.js +48 -0
  117. package/dist/src/rules/http/HttpUserAgentRule.js.map +1 -0
  118. package/dist/src/rules/index.d.ts +45 -0
  119. package/dist/src/rules/index.d.ts.map +1 -0
  120. package/dist/src/rules/index.js +205 -0
  121. package/dist/src/rules/index.js.map +1 -0
  122. package/dist/src/rules/logging/LoggerCategoryRule.d.ts +21 -0
  123. package/dist/src/rules/logging/LoggerCategoryRule.d.ts.map +1 -0
  124. package/dist/src/rules/logging/LoggerCategoryRule.js +61 -0
  125. package/dist/src/rules/logging/LoggerCategoryRule.js.map +1 -0
  126. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.d.ts +16 -0
  127. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.d.ts.map +1 -0
  128. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.js +29 -0
  129. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.js.map +1 -0
  130. package/dist/src/rules/logging/LoggerPayloadRule.d.ts +17 -0
  131. package/dist/src/rules/logging/LoggerPayloadRule.d.ts.map +1 -0
  132. package/dist/src/rules/logging/LoggerPayloadRule.js +39 -0
  133. package/dist/src/rules/logging/LoggerPayloadRule.js.map +1 -0
  134. package/dist/src/rules/naming/FlowCasingRule.d.ts +18 -0
  135. package/dist/src/rules/naming/FlowCasingRule.d.ts.map +1 -0
  136. package/dist/src/rules/naming/FlowCasingRule.js +40 -0
  137. package/dist/src/rules/naming/FlowCasingRule.js.map +1 -0
  138. package/dist/src/rules/naming/FlowNamingRule.d.ts +17 -0
  139. package/dist/src/rules/naming/FlowNamingRule.d.ts.map +1 -0
  140. package/dist/src/rules/naming/FlowNamingRule.js +60 -0
  141. package/dist/src/rules/naming/FlowNamingRule.js.map +1 -0
  142. package/dist/src/rules/naming/VariableNamingRule.d.ts +18 -0
  143. package/dist/src/rules/naming/VariableNamingRule.d.ts.map +1 -0
  144. package/dist/src/rules/naming/VariableNamingRule.js +39 -0
  145. package/dist/src/rules/naming/VariableNamingRule.js.map +1 -0
  146. package/dist/src/rules/performance/AsyncErrorHandlerRule.d.ts +16 -0
  147. package/dist/src/rules/performance/AsyncErrorHandlerRule.d.ts.map +1 -0
  148. package/dist/src/rules/performance/AsyncErrorHandlerRule.js +34 -0
  149. package/dist/src/rules/performance/AsyncErrorHandlerRule.js.map +1 -0
  150. package/dist/src/rules/performance/LargeChoiceBlockRule.d.ts +16 -0
  151. package/dist/src/rules/performance/LargeChoiceBlockRule.d.ts.map +1 -0
  152. package/dist/src/rules/performance/LargeChoiceBlockRule.js +32 -0
  153. package/dist/src/rules/performance/LargeChoiceBlockRule.js.map +1 -0
  154. package/dist/src/rules/performance/ScatterGatherRoutesRule.d.ts +16 -0
  155. package/dist/src/rules/performance/ScatterGatherRoutesRule.d.ts.map +1 -0
  156. package/dist/src/rules/performance/ScatterGatherRoutesRule.js +32 -0
  157. package/dist/src/rules/performance/ScatterGatherRoutesRule.js.map +1 -0
  158. package/dist/src/rules/security/HardcodedCredentialsRule.d.ts +19 -0
  159. package/dist/src/rules/security/HardcodedCredentialsRule.d.ts.map +1 -0
  160. package/dist/src/rules/security/HardcodedCredentialsRule.js +66 -0
  161. package/dist/src/rules/security/HardcodedCredentialsRule.js.map +1 -0
  162. package/dist/src/rules/security/HardcodedHttpRule.d.ts +33 -0
  163. package/dist/src/rules/security/HardcodedHttpRule.d.ts.map +1 -0
  164. package/dist/src/rules/security/HardcodedHttpRule.js +108 -0
  165. package/dist/src/rules/security/HardcodedHttpRule.js.map +1 -0
  166. package/dist/src/rules/security/InsecureTlsRule.d.ts +16 -0
  167. package/dist/src/rules/security/InsecureTlsRule.d.ts.map +1 -0
  168. package/dist/src/rules/security/InsecureTlsRule.js +36 -0
  169. package/dist/src/rules/security/InsecureTlsRule.js.map +1 -0
  170. package/dist/src/rules/standards/ChoiceAntiPatternRule.d.ts +17 -0
  171. package/dist/src/rules/standards/ChoiceAntiPatternRule.d.ts.map +1 -0
  172. package/dist/src/rules/standards/ChoiceAntiPatternRule.js +43 -0
  173. package/dist/src/rules/standards/ChoiceAntiPatternRule.js.map +1 -0
  174. package/dist/src/rules/standards/DeprecatedComponentRule.d.ts +17 -0
  175. package/dist/src/rules/standards/DeprecatedComponentRule.d.ts.map +1 -0
  176. package/dist/src/rules/standards/DeprecatedComponentRule.js +37 -0
  177. package/dist/src/rules/standards/DeprecatedComponentRule.js.map +1 -0
  178. package/dist/src/rules/standards/DwlStandardsRule.d.ts +22 -0
  179. package/dist/src/rules/standards/DwlStandardsRule.d.ts.map +1 -0
  180. package/dist/src/rules/standards/DwlStandardsRule.js +90 -0
  181. package/dist/src/rules/standards/DwlStandardsRule.js.map +1 -0
  182. package/dist/src/rules/structure/StructureRules.d.ts +45 -0
  183. package/dist/src/rules/structure/StructureRules.d.ts.map +1 -0
  184. package/dist/src/rules/structure/StructureRules.js +163 -0
  185. package/dist/src/rules/structure/StructureRules.js.map +1 -0
  186. package/dist/src/rules/yaml/YamlRules.d.ts +46 -0
  187. package/dist/src/rules/yaml/YamlRules.d.ts.map +1 -0
  188. package/dist/src/rules/yaml/YamlRules.js +226 -0
  189. package/dist/src/rules/yaml/YamlRules.js.map +1 -0
  190. package/dist/src/types/Config.d.ts +50 -0
  191. package/dist/src/types/Config.d.ts.map +1 -0
  192. package/dist/src/types/Config.js +18 -0
  193. package/dist/src/types/Config.js.map +1 -0
  194. package/dist/src/types/Report.d.ts +47 -0
  195. package/dist/src/types/Report.d.ts.map +1 -0
  196. package/dist/src/types/Report.js +3 -0
  197. package/dist/src/types/Report.js.map +1 -0
  198. package/dist/src/types/Rule.d.ts +76 -0
  199. package/dist/src/types/Rule.d.ts.map +1 -0
  200. package/dist/src/types/Rule.js +3 -0
  201. package/dist/src/types/Rule.js.map +1 -0
  202. package/dist/src/types/index.d.ts +4 -0
  203. package/dist/src/types/index.d.ts.map +1 -0
  204. package/dist/src/types/index.js +21 -0
  205. package/dist/src/types/index.js.map +1 -0
  206. package/package.json +70 -0
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ALL_RULES = exports.LargeChoiceBlockRule = exports.AsyncErrorHandlerRule = exports.ScatterGatherRoutesRule = exports.MissingDocNameRule = exports.FlowDescriptionRule = exports.HttpTimeoutRule = exports.HttpContentTypeRule = exports.HttpUserAgentRule = exports.DeprecatedComponentRule = exports.DwlStandardsRule = exports.ChoiceAntiPatternRule = exports.LoggerInUntilSuccessfulRule = exports.LoggerPayloadRule = exports.LoggerCategoryRule = exports.InsecureTlsRule = exports.HardcodedCredentialsRule = exports.HardcodedHttpRule = exports.VariableNamingRule = exports.FlowCasingRule = exports.FlowNamingRule = exports.GenericErrorRule = exports.CorrelationIdRule = exports.HttpStatusRule = exports.MissingErrorHandlerRule = exports.GlobalErrorHandlerRule = void 0;
18
+ exports.getRulesByCategory = getRulesByCategory;
19
+ exports.getRuleById = getRuleById;
20
+ exports.getAllRuleIds = getAllRuleIds;
21
+ // Export base rule
22
+ __exportStar(require("./base/BaseRule"), exports);
23
+ // Import all rules - Error Handling
24
+ const GlobalErrorHandlerRule_1 = require("./error-handling/GlobalErrorHandlerRule");
25
+ const MissingErrorHandlerRule_1 = require("./error-handling/MissingErrorHandlerRule");
26
+ const HttpStatusRule_1 = require("./error-handling/HttpStatusRule");
27
+ const CorrelationIdRule_1 = require("./error-handling/CorrelationIdRule");
28
+ const GenericErrorRule_1 = require("./error-handling/GenericErrorRule");
29
+ // Import all rules - Naming
30
+ const FlowNamingRule_1 = require("./naming/FlowNamingRule");
31
+ const FlowCasingRule_1 = require("./naming/FlowCasingRule");
32
+ const VariableNamingRule_1 = require("./naming/VariableNamingRule");
33
+ // Import all rules - Security
34
+ const HardcodedHttpRule_1 = require("./security/HardcodedHttpRule");
35
+ const HardcodedCredentialsRule_1 = require("./security/HardcodedCredentialsRule");
36
+ const InsecureTlsRule_1 = require("./security/InsecureTlsRule");
37
+ // Import all rules - Logging
38
+ const LoggerCategoryRule_1 = require("./logging/LoggerCategoryRule");
39
+ const LoggerPayloadRule_1 = require("./logging/LoggerPayloadRule");
40
+ const LoggerInUntilSuccessfulRule_1 = require("./logging/LoggerInUntilSuccessfulRule");
41
+ // Import all rules - Standards
42
+ const ChoiceAntiPatternRule_1 = require("./standards/ChoiceAntiPatternRule");
43
+ const DwlStandardsRule_1 = require("./standards/DwlStandardsRule");
44
+ const DeprecatedComponentRule_1 = require("./standards/DeprecatedComponentRule");
45
+ // Import all rules - HTTP
46
+ const HttpUserAgentRule_1 = require("./http/HttpUserAgentRule");
47
+ const HttpContentTypeRule_1 = require("./http/HttpContentTypeRule");
48
+ const HttpTimeoutRule_1 = require("./http/HttpTimeoutRule");
49
+ // Import all rules - Documentation
50
+ const FlowDescriptionRule_1 = require("./documentation/FlowDescriptionRule");
51
+ const MissingDocNameRule_1 = require("./documentation/MissingDocNameRule");
52
+ // Import all rules - Performance
53
+ const ScatterGatherRoutesRule_1 = require("./performance/ScatterGatherRoutesRule");
54
+ const AsyncErrorHandlerRule_1 = require("./performance/AsyncErrorHandlerRule");
55
+ const LargeChoiceBlockRule_1 = require("./performance/LargeChoiceBlockRule");
56
+ // Import all rules - Complexity
57
+ const FlowComplexityRule_1 = require("./complexity/FlowComplexityRule");
58
+ // Import all rules - YAML
59
+ const YamlRules_1 = require("./yaml/YamlRules");
60
+ // Import all rules - Structure
61
+ const StructureRules_1 = require("./structure/StructureRules");
62
+ // Import all rules - DataWeave
63
+ const DataWeaveRules_1 = require("./dataweave/DataWeaveRules");
64
+ // Import all rules - API-Led
65
+ const ApiLedRules_1 = require("./api-led/ApiLedRules");
66
+ // Import all rules - Experimental
67
+ const ExperimentalRules_1 = require("./experimental/ExperimentalRules");
68
+ // Export individual rules - Error Handling
69
+ var GlobalErrorHandlerRule_2 = require("./error-handling/GlobalErrorHandlerRule");
70
+ Object.defineProperty(exports, "GlobalErrorHandlerRule", { enumerable: true, get: function () { return GlobalErrorHandlerRule_2.GlobalErrorHandlerRule; } });
71
+ var MissingErrorHandlerRule_2 = require("./error-handling/MissingErrorHandlerRule");
72
+ Object.defineProperty(exports, "MissingErrorHandlerRule", { enumerable: true, get: function () { return MissingErrorHandlerRule_2.MissingErrorHandlerRule; } });
73
+ var HttpStatusRule_2 = require("./error-handling/HttpStatusRule");
74
+ Object.defineProperty(exports, "HttpStatusRule", { enumerable: true, get: function () { return HttpStatusRule_2.HttpStatusRule; } });
75
+ var CorrelationIdRule_2 = require("./error-handling/CorrelationIdRule");
76
+ Object.defineProperty(exports, "CorrelationIdRule", { enumerable: true, get: function () { return CorrelationIdRule_2.CorrelationIdRule; } });
77
+ var GenericErrorRule_2 = require("./error-handling/GenericErrorRule");
78
+ Object.defineProperty(exports, "GenericErrorRule", { enumerable: true, get: function () { return GenericErrorRule_2.GenericErrorRule; } });
79
+ // Export individual rules - Naming
80
+ var FlowNamingRule_2 = require("./naming/FlowNamingRule");
81
+ Object.defineProperty(exports, "FlowNamingRule", { enumerable: true, get: function () { return FlowNamingRule_2.FlowNamingRule; } });
82
+ var FlowCasingRule_2 = require("./naming/FlowCasingRule");
83
+ Object.defineProperty(exports, "FlowCasingRule", { enumerable: true, get: function () { return FlowCasingRule_2.FlowCasingRule; } });
84
+ var VariableNamingRule_2 = require("./naming/VariableNamingRule");
85
+ Object.defineProperty(exports, "VariableNamingRule", { enumerable: true, get: function () { return VariableNamingRule_2.VariableNamingRule; } });
86
+ // Export individual rules - Security
87
+ var HardcodedHttpRule_2 = require("./security/HardcodedHttpRule");
88
+ Object.defineProperty(exports, "HardcodedHttpRule", { enumerable: true, get: function () { return HardcodedHttpRule_2.HardcodedHttpRule; } });
89
+ var HardcodedCredentialsRule_2 = require("./security/HardcodedCredentialsRule");
90
+ Object.defineProperty(exports, "HardcodedCredentialsRule", { enumerable: true, get: function () { return HardcodedCredentialsRule_2.HardcodedCredentialsRule; } });
91
+ var InsecureTlsRule_2 = require("./security/InsecureTlsRule");
92
+ Object.defineProperty(exports, "InsecureTlsRule", { enumerable: true, get: function () { return InsecureTlsRule_2.InsecureTlsRule; } });
93
+ // Export individual rules - Logging
94
+ var LoggerCategoryRule_2 = require("./logging/LoggerCategoryRule");
95
+ Object.defineProperty(exports, "LoggerCategoryRule", { enumerable: true, get: function () { return LoggerCategoryRule_2.LoggerCategoryRule; } });
96
+ var LoggerPayloadRule_2 = require("./logging/LoggerPayloadRule");
97
+ Object.defineProperty(exports, "LoggerPayloadRule", { enumerable: true, get: function () { return LoggerPayloadRule_2.LoggerPayloadRule; } });
98
+ var LoggerInUntilSuccessfulRule_2 = require("./logging/LoggerInUntilSuccessfulRule");
99
+ Object.defineProperty(exports, "LoggerInUntilSuccessfulRule", { enumerable: true, get: function () { return LoggerInUntilSuccessfulRule_2.LoggerInUntilSuccessfulRule; } });
100
+ // Export individual rules - Standards
101
+ var ChoiceAntiPatternRule_2 = require("./standards/ChoiceAntiPatternRule");
102
+ Object.defineProperty(exports, "ChoiceAntiPatternRule", { enumerable: true, get: function () { return ChoiceAntiPatternRule_2.ChoiceAntiPatternRule; } });
103
+ var DwlStandardsRule_2 = require("./standards/DwlStandardsRule");
104
+ Object.defineProperty(exports, "DwlStandardsRule", { enumerable: true, get: function () { return DwlStandardsRule_2.DwlStandardsRule; } });
105
+ var DeprecatedComponentRule_2 = require("./standards/DeprecatedComponentRule");
106
+ Object.defineProperty(exports, "DeprecatedComponentRule", { enumerable: true, get: function () { return DeprecatedComponentRule_2.DeprecatedComponentRule; } });
107
+ // Export individual rules - HTTP
108
+ var HttpUserAgentRule_2 = require("./http/HttpUserAgentRule");
109
+ Object.defineProperty(exports, "HttpUserAgentRule", { enumerable: true, get: function () { return HttpUserAgentRule_2.HttpUserAgentRule; } });
110
+ var HttpContentTypeRule_2 = require("./http/HttpContentTypeRule");
111
+ Object.defineProperty(exports, "HttpContentTypeRule", { enumerable: true, get: function () { return HttpContentTypeRule_2.HttpContentTypeRule; } });
112
+ var HttpTimeoutRule_2 = require("./http/HttpTimeoutRule");
113
+ Object.defineProperty(exports, "HttpTimeoutRule", { enumerable: true, get: function () { return HttpTimeoutRule_2.HttpTimeoutRule; } });
114
+ // Export individual rules - Documentation
115
+ var FlowDescriptionRule_2 = require("./documentation/FlowDescriptionRule");
116
+ Object.defineProperty(exports, "FlowDescriptionRule", { enumerable: true, get: function () { return FlowDescriptionRule_2.FlowDescriptionRule; } });
117
+ var MissingDocNameRule_2 = require("./documentation/MissingDocNameRule");
118
+ Object.defineProperty(exports, "MissingDocNameRule", { enumerable: true, get: function () { return MissingDocNameRule_2.MissingDocNameRule; } });
119
+ // Export individual rules - Performance
120
+ var ScatterGatherRoutesRule_2 = require("./performance/ScatterGatherRoutesRule");
121
+ Object.defineProperty(exports, "ScatterGatherRoutesRule", { enumerable: true, get: function () { return ScatterGatherRoutesRule_2.ScatterGatherRoutesRule; } });
122
+ var AsyncErrorHandlerRule_2 = require("./performance/AsyncErrorHandlerRule");
123
+ Object.defineProperty(exports, "AsyncErrorHandlerRule", { enumerable: true, get: function () { return AsyncErrorHandlerRule_2.AsyncErrorHandlerRule; } });
124
+ var LargeChoiceBlockRule_2 = require("./performance/LargeChoiceBlockRule");
125
+ Object.defineProperty(exports, "LargeChoiceBlockRule", { enumerable: true, get: function () { return LargeChoiceBlockRule_2.LargeChoiceBlockRule; } });
126
+ /**
127
+ * All available rules - instantiated and ready to use
128
+ * Total: 25 rules
129
+ */
130
+ exports.ALL_RULES = [
131
+ // Error Handling Rules (MULE-001, 003, 005, 007, 009)
132
+ new GlobalErrorHandlerRule_1.GlobalErrorHandlerRule(),
133
+ new MissingErrorHandlerRule_1.MissingErrorHandlerRule(),
134
+ new HttpStatusRule_1.HttpStatusRule(),
135
+ new CorrelationIdRule_1.CorrelationIdRule(),
136
+ new GenericErrorRule_1.GenericErrorRule(),
137
+ // Naming Rules (MULE-002, 101, 102)
138
+ new FlowNamingRule_1.FlowNamingRule(),
139
+ new FlowCasingRule_1.FlowCasingRule(),
140
+ new VariableNamingRule_1.VariableNamingRule(),
141
+ // Security Rules (MULE-004, 201, 202)
142
+ new HardcodedHttpRule_1.HardcodedHttpRule(),
143
+ new HardcodedCredentialsRule_1.HardcodedCredentialsRule(),
144
+ new InsecureTlsRule_1.InsecureTlsRule(),
145
+ // Logging Rules (MULE-006, 301, 303)
146
+ new LoggerCategoryRule_1.LoggerCategoryRule(),
147
+ new LoggerPayloadRule_1.LoggerPayloadRule(),
148
+ new LoggerInUntilSuccessfulRule_1.LoggerInUntilSuccessfulRule(),
149
+ // Standards Rules (MULE-008, 010, 701)
150
+ new ChoiceAntiPatternRule_1.ChoiceAntiPatternRule(),
151
+ new DwlStandardsRule_1.DwlStandardsRule(),
152
+ new DeprecatedComponentRule_1.DeprecatedComponentRule(),
153
+ // HTTP Rules (MULE-401, 402, 403)
154
+ new HttpUserAgentRule_1.HttpUserAgentRule(),
155
+ new HttpContentTypeRule_1.HttpContentTypeRule(),
156
+ new HttpTimeoutRule_1.HttpTimeoutRule(),
157
+ // Documentation Rules (MULE-601, 604)
158
+ new FlowDescriptionRule_1.FlowDescriptionRule(),
159
+ new MissingDocNameRule_1.MissingDocNameRule(),
160
+ // Performance Rules (MULE-501, 502, 503)
161
+ new ScatterGatherRoutesRule_1.ScatterGatherRoutesRule(),
162
+ new AsyncErrorHandlerRule_1.AsyncErrorHandlerRule(),
163
+ new LargeChoiceBlockRule_1.LargeChoiceBlockRule(),
164
+ // Complexity Rules (MULE-801)
165
+ new FlowComplexityRule_1.FlowComplexityRule(),
166
+ // YAML Rules (YAML-001, 003, 004)
167
+ new YamlRules_1.EnvironmentFilesRule(),
168
+ new YamlRules_1.PropertyNamingRule(),
169
+ new YamlRules_1.PlaintextSecretsRule(),
170
+ // Structure Rules (MULE-802, 803, 804)
171
+ new StructureRules_1.ProjectStructureRule(),
172
+ new StructureRules_1.GlobalConfigRule(),
173
+ new StructureRules_1.MonolithicXmlRule(),
174
+ // DataWeave Rules (DW-001, 002, 003)
175
+ new DataWeaveRules_1.ExternalDwlRule(),
176
+ new DataWeaveRules_1.DwlNamingRule(),
177
+ new DataWeaveRules_1.DwlModulesRule(),
178
+ // API-Led Rules (API-001, 002, 003)
179
+ new ApiLedRules_1.ExperienceLayerRule(),
180
+ new ApiLedRules_1.ProcessLayerRule(),
181
+ new ApiLedRules_1.SystemLayerRule(),
182
+ // Experimental Rules (EXP-001, 002, 003)
183
+ new ExperimentalRules_1.FlowRefDepthRule(),
184
+ new ExperimentalRules_1.ConnectorConfigNamingRule(),
185
+ new ExperimentalRules_1.MUnitCoverageRule(),
186
+ ];
187
+ /**
188
+ * Get rules by category
189
+ */
190
+ function getRulesByCategory(category) {
191
+ return exports.ALL_RULES.filter(rule => rule.category === category);
192
+ }
193
+ /**
194
+ * Get rule by ID
195
+ */
196
+ function getRuleById(id) {
197
+ return exports.ALL_RULES.find(rule => rule.id === id);
198
+ }
199
+ /**
200
+ * Get all rule IDs
201
+ */
202
+ function getAllRuleIds() {
203
+ return exports.ALL_RULES.map(rule => rule.id);
204
+ }
205
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAuLA,gDAEC;AAKD,kCAEC;AAKD,sCAEC;AAvMD,mBAAmB;AACnB,kDAAgC;AAEhC,oCAAoC;AACpC,oFAAiF;AACjF,sFAAmF;AACnF,oEAAiE;AACjE,0EAAuE;AACvE,wEAAqE;AAErE,4BAA4B;AAC5B,4DAAyD;AACzD,4DAAyD;AACzD,oEAAiE;AAEjE,8BAA8B;AAC9B,oEAAiE;AACjE,kFAA+E;AAC/E,gEAA6D;AAE7D,6BAA6B;AAC7B,qEAAkE;AAClE,mEAAgE;AAChE,uFAAoF;AAEpF,+BAA+B;AAC/B,6EAA0E;AAC1E,mEAAgE;AAChE,iFAA8E;AAE9E,0BAA0B;AAC1B,gEAA6D;AAC7D,oEAAiE;AACjE,4DAAyD;AAEzD,mCAAmC;AACnC,6EAA0E;AAC1E,2EAAwE;AAExE,iCAAiC;AACjC,mFAAgF;AAChF,+EAA4E;AAC5E,6EAA0E;AAE1E,gCAAgC;AAChC,wEAAqE;AAErE,0BAA0B;AAC1B,gDAAkG;AAElG,+BAA+B;AAC/B,+DAAuG;AAEvG,+BAA+B;AAC/B,+DAA4F;AAE5F,6BAA6B;AAC7B,uDAA+F;AAE/F,kCAAkC;AAClC,wEAAkH;AAIlH,2CAA2C;AAC3C,kFAAiF;AAAxE,gIAAA,sBAAsB,OAAA;AAC/B,oFAAmF;AAA1E,kIAAA,uBAAuB,OAAA;AAChC,kEAAiE;AAAxD,gHAAA,cAAc,OAAA;AACvB,wEAAuE;AAA9D,sHAAA,iBAAiB,OAAA;AAC1B,sEAAqE;AAA5D,oHAAA,gBAAgB,OAAA;AAEzB,mCAAmC;AACnC,0DAAyD;AAAhD,gHAAA,cAAc,OAAA;AACvB,0DAAyD;AAAhD,gHAAA,cAAc,OAAA;AACvB,kEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,qCAAqC;AACrC,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA;AAC1B,gFAA+E;AAAtE,oIAAA,wBAAwB,OAAA;AACjC,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AAExB,oCAAoC;AACpC,mEAAkE;AAAzD,wHAAA,kBAAkB,OAAA;AAC3B,iEAAgE;AAAvD,sHAAA,iBAAiB,OAAA;AAC1B,qFAAoF;AAA3E,0IAAA,2BAA2B,OAAA;AAEpC,sCAAsC;AACtC,2EAA0E;AAAjE,8HAAA,qBAAqB,OAAA;AAC9B,iEAAgE;AAAvD,oHAAA,gBAAgB,OAAA;AACzB,+EAA8E;AAArE,kIAAA,uBAAuB,OAAA;AAEhC,iCAAiC;AACjC,8DAA6D;AAApD,sHAAA,iBAAiB,OAAA;AAC1B,kEAAiE;AAAxD,0HAAA,mBAAmB,OAAA;AAC5B,0DAAyD;AAAhD,kHAAA,eAAe,OAAA;AAExB,0CAA0C;AAC1C,2EAA0E;AAAjE,0HAAA,mBAAmB,OAAA;AAC5B,yEAAwE;AAA/D,wHAAA,kBAAkB,OAAA;AAE3B,wCAAwC;AACxC,iFAAgF;AAAvE,kIAAA,uBAAuB,OAAA;AAChC,6EAA4E;AAAnE,8HAAA,qBAAqB,OAAA;AAC9B,2EAA0E;AAAjE,4HAAA,oBAAoB,OAAA;AAE7B;;;GAGG;AACU,QAAA,SAAS,GAAW;IAC7B,sDAAsD;IACtD,IAAI,+CAAsB,EAAE;IAC5B,IAAI,iDAAuB,EAAE;IAC7B,IAAI,+BAAc,EAAE;IACpB,IAAI,qCAAiB,EAAE;IACvB,IAAI,mCAAgB,EAAE;IAEtB,oCAAoC;IACpC,IAAI,+BAAc,EAAE;IACpB,IAAI,+BAAc,EAAE;IACpB,IAAI,uCAAkB,EAAE;IAExB,sCAAsC;IACtC,IAAI,qCAAiB,EAAE;IACvB,IAAI,mDAAwB,EAAE;IAC9B,IAAI,iCAAe,EAAE;IAErB,qCAAqC;IACrC,IAAI,uCAAkB,EAAE;IACxB,IAAI,qCAAiB,EAAE;IACvB,IAAI,yDAA2B,EAAE;IAEjC,uCAAuC;IACvC,IAAI,6CAAqB,EAAE;IAC3B,IAAI,mCAAgB,EAAE;IACtB,IAAI,iDAAuB,EAAE;IAE7B,kCAAkC;IAClC,IAAI,qCAAiB,EAAE;IACvB,IAAI,yCAAmB,EAAE;IACzB,IAAI,iCAAe,EAAE;IAErB,sCAAsC;IACtC,IAAI,yCAAmB,EAAE;IACzB,IAAI,uCAAkB,EAAE;IAExB,yCAAyC;IACzC,IAAI,iDAAuB,EAAE;IAC7B,IAAI,6CAAqB,EAAE;IAC3B,IAAI,2CAAoB,EAAE;IAE1B,8BAA8B;IAC9B,IAAI,uCAAkB,EAAE;IAExB,kCAAkC;IAClC,IAAI,gCAAoB,EAAE;IAC1B,IAAI,8BAAkB,EAAE;IACxB,IAAI,gCAAoB,EAAE;IAE1B,uCAAuC;IACvC,IAAI,qCAAoB,EAAE;IAC1B,IAAI,iCAAgB,EAAE;IACtB,IAAI,kCAAiB,EAAE;IAEvB,qCAAqC;IACrC,IAAI,gCAAe,EAAE;IACrB,IAAI,8BAAa,EAAE;IACnB,IAAI,+BAAc,EAAE;IAEpB,oCAAoC;IACpC,IAAI,iCAAmB,EAAE;IACzB,IAAI,8BAAgB,EAAE;IACtB,IAAI,6BAAe,EAAE;IAErB,yCAAyC;IACzC,IAAI,oCAAgB,EAAE;IACtB,IAAI,6CAAyB,EAAE;IAC/B,IAAI,qCAAiB,EAAE;CAC1B,CAAC;AAEF;;GAEG;AACH,SAAgB,kBAAkB,CAAC,QAAgB;IAC/C,OAAO,iBAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,EAAU;IAClC,OAAO,iBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa;IACzB,OAAO,iBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { ValidationContext, Issue } from '../../types';
2
+ import { BaseRule } from '../base/BaseRule';
3
+ /**
4
+ * MULE-006: Logger Category Required
5
+ *
6
+ * All loggers must have a category attribute for proper log filtering.
7
+ * Without categories, logs are harder to filter and analyze.
8
+ */
9
+ export declare class LoggerCategoryRule extends BaseRule {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ severity: "warning";
14
+ category: "logging";
15
+ validate(doc: Document, context: ValidationContext): Issue[];
16
+ /**
17
+ * Suggest a category based on file path
18
+ */
19
+ private suggestCategory;
20
+ }
21
+ //# sourceMappingURL=LoggerCategoryRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggerCategoryRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/logging/LoggerCategoryRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC5C,EAAE,SAAc;IAChB,IAAI,SAA8B;IAClC,WAAW,SAA2E;IACtF,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,SAAS,CAAU;IAE9B,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;IA8C5D;;OAEG;IACH,OAAO,CAAC,eAAe;CAW1B"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoggerCategoryRule = void 0;
4
+ const BaseRule_1 = require("../base/BaseRule");
5
+ /**
6
+ * MULE-006: Logger Category Required
7
+ *
8
+ * All loggers must have a category attribute for proper log filtering.
9
+ * Without categories, logs are harder to filter and analyze.
10
+ */
11
+ class LoggerCategoryRule extends BaseRule_1.BaseRule {
12
+ id = 'MULE-006';
13
+ name = 'Logger Category Required';
14
+ description = 'All loggers should have a category attribute for proper log filtering';
15
+ severity = 'warning';
16
+ category = 'logging';
17
+ validate(doc, context) {
18
+ const issues = [];
19
+ // Get optional required prefix
20
+ const requiredPrefix = this.getOption(context, 'requiredPrefix', null);
21
+ // Find loggers without category
22
+ const loggersWithoutCategory = this.select('//mule:logger[not(@category)]', doc);
23
+ for (const logger of loggersWithoutCategory) {
24
+ const docName = this.getDocName(logger) ?? 'Logger';
25
+ const suggestedCategory = this.suggestCategory(context.relativePath);
26
+ issues.push(this.createIssue(logger, `Logger "${docName}" is missing 'category' attribute`, {
27
+ suggestion: `Add category="${suggestedCategory}"`
28
+ }));
29
+ }
30
+ // If required prefix is set, verify all loggers use it
31
+ if (requiredPrefix) {
32
+ const loggersWithCategory = this.select('//mule:logger[@category]', doc);
33
+ for (const logger of loggersWithCategory) {
34
+ const category = this.getAttribute(logger, 'category');
35
+ if (category && !category.startsWith(requiredPrefix)) {
36
+ const docName = this.getDocName(logger) ?? 'Logger';
37
+ issues.push(this.createIssue(logger, `Logger "${docName}" category "${category}" should start with "${requiredPrefix}"`, {
38
+ suggestion: `Update category to "${requiredPrefix}.${category}"`,
39
+ severity: 'info'
40
+ }));
41
+ }
42
+ }
43
+ }
44
+ return issues;
45
+ }
46
+ /**
47
+ * Suggest a category based on file path
48
+ */
49
+ suggestCategory(relativePath) {
50
+ // Convert file path to a category
51
+ // e.g., src/main/mule/impl/orders-impl.xml -> com.myorg.impl.orders
52
+ const baseName = relativePath
53
+ .replace(/^src\/main\/mule\//, '')
54
+ .replace(/\.xml$/, '')
55
+ .replace(/[/\\]/g, '.')
56
+ .replace(/-/g, '.');
57
+ return `com.myorg.${baseName}`;
58
+ }
59
+ }
60
+ exports.LoggerCategoryRule = LoggerCategoryRule;
61
+ //# sourceMappingURL=LoggerCategoryRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggerCategoryRule.js","sourceRoot":"","sources":["../../../../src/rules/logging/LoggerCategoryRule.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C;;;;;GAKG;AACH,MAAa,kBAAmB,SAAQ,mBAAQ;IAC5C,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,0BAA0B,CAAC;IAClC,WAAW,GAAG,uEAAuE,CAAC;IACtF,QAAQ,GAAG,SAAkB,CAAC;IAC9B,QAAQ,GAAG,SAAkB,CAAC;IAE9B,QAAQ,CAAC,GAAa,EAAE,OAA0B;QAC9C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,+BAA+B;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAgB,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAEtF,gCAAgC;QAChC,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QAEjF,KAAK,MAAM,MAAM,IAAI,sBAAsB,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;YACpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAErE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,MAAM,EACN,WAAW,OAAO,mCAAmC,EACrD;gBACI,UAAU,EAAE,iBAAiB,iBAAiB,GAAG;aACpD,CACJ,CAAC,CAAC;QACP,CAAC;QAED,uDAAuD;QACvD,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;YAEzE,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACvD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;oBACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;oBAEpD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,MAAM,EACN,WAAW,OAAO,eAAe,QAAQ,wBAAwB,cAAc,GAAG,EAClF;wBACI,UAAU,EAAE,uBAAuB,cAAc,IAAI,QAAQ,GAAG;wBAChE,QAAQ,EAAE,MAAM;qBACnB,CACJ,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,YAAoB;QACxC,kCAAkC;QAClC,oEAAoE;QACpE,MAAM,QAAQ,GAAG,YAAY;aACxB,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;aACjC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAExB,OAAO,aAAa,QAAQ,EAAE,CAAC;IACnC,CAAC;CACJ;AAnED,gDAmEC"}
@@ -0,0 +1,16 @@
1
+ import { ValidationContext, Issue } from '../../types';
2
+ import { BaseRule } from '../base/BaseRule';
3
+ /**
4
+ * MULE-303: Logger in Until-Successful
5
+ *
6
+ * Avoid loggers inside until-successful scope (floods logs on retries).
7
+ */
8
+ export declare class LoggerInUntilSuccessfulRule extends BaseRule {
9
+ id: string;
10
+ name: string;
11
+ description: string;
12
+ severity: "warning";
13
+ category: "logging";
14
+ validate(doc: Document, _context: ValidationContext): Issue[];
15
+ }
16
+ //# sourceMappingURL=LoggerInUntilSuccessfulRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggerInUntilSuccessfulRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/logging/LoggerInUntilSuccessfulRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,QAAQ;IACrD,EAAE,SAAc;IAChB,IAAI,SAAgC;IACpC,WAAW,SAAiD;IAC5D,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,SAAS,CAAU;IAE9B,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,KAAK,EAAE;CAqBhE"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoggerInUntilSuccessfulRule = void 0;
4
+ const BaseRule_1 = require("../base/BaseRule");
5
+ /**
6
+ * MULE-303: Logger in Until-Successful
7
+ *
8
+ * Avoid loggers inside until-successful scope (floods logs on retries).
9
+ */
10
+ class LoggerInUntilSuccessfulRule extends BaseRule_1.BaseRule {
11
+ id = 'MULE-303';
12
+ name = 'Logger in Until-Successful';
13
+ description = 'Avoid loggers inside until-successful scope';
14
+ severity = 'warning';
15
+ category = 'logging';
16
+ validate(doc, _context) {
17
+ const issues = [];
18
+ const loggersInUntilSuccessful = this.select('//mule:until-successful//mule:logger', doc);
19
+ for (const logger of loggersInUntilSuccessful) {
20
+ const docName = this.getDocName(logger) ?? 'Logger';
21
+ issues.push(this.createIssue(logger, `Logger "${docName}" inside until-successful may flood logs on retries`, {
22
+ suggestion: 'Move logger outside until-successful or use conditional logging'
23
+ }));
24
+ }
25
+ return issues;
26
+ }
27
+ }
28
+ exports.LoggerInUntilSuccessfulRule = LoggerInUntilSuccessfulRule;
29
+ //# sourceMappingURL=LoggerInUntilSuccessfulRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggerInUntilSuccessfulRule.js","sourceRoot":"","sources":["../../../../src/rules/logging/LoggerInUntilSuccessfulRule.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C;;;;GAIG;AACH,MAAa,2BAA4B,SAAQ,mBAAQ;IACrD,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,4BAA4B,CAAC;IACpC,WAAW,GAAG,6CAA6C,CAAC;IAC5D,QAAQ,GAAG,SAAkB,CAAC;IAC9B,QAAQ,GAAG,SAAkB,CAAC;IAE9B,QAAQ,CAAC,GAAa,EAAE,QAA2B;QAC/C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CACxC,sCAAsC,EACtC,GAAG,CACN,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,wBAAwB,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,MAAM,EACN,WAAW,OAAO,qDAAqD,EACvE;gBACI,UAAU,EAAE,iEAAiE;aAChF,CACJ,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA5BD,kEA4BC"}
@@ -0,0 +1,17 @@
1
+ import { ValidationContext, Issue } from '../../types';
2
+ import { BaseRule } from '../base/BaseRule';
3
+ /**
4
+ * MULE-301: Logger Payload Reference
5
+ *
6
+ * Loggers should not directly reference #[payload] for security/performance.
7
+ */
8
+ export declare class LoggerPayloadRule extends BaseRule {
9
+ id: string;
10
+ name: string;
11
+ description: string;
12
+ severity: "warning";
13
+ category: "logging";
14
+ validate(doc: Document, _context: ValidationContext): Issue[];
15
+ private hasDirectPayloadReference;
16
+ }
17
+ //# sourceMappingURL=LoggerPayloadRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggerPayloadRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/logging/LoggerPayloadRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC3C,EAAE,SAAc;IAChB,IAAI,SAA8B;IAClC,WAAW,SAAoD;IAC/D,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,SAAS,CAAU;IAE9B,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAwB7D,OAAO,CAAC,yBAAyB;CAMpC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoggerPayloadRule = void 0;
4
+ const BaseRule_1 = require("../base/BaseRule");
5
+ /**
6
+ * MULE-301: Logger Payload Reference
7
+ *
8
+ * Loggers should not directly reference #[payload] for security/performance.
9
+ */
10
+ class LoggerPayloadRule extends BaseRule_1.BaseRule {
11
+ id = 'MULE-301';
12
+ name = 'Logger Payload Reference';
13
+ description = 'Loggers should not directly log entire payload';
14
+ severity = 'warning';
15
+ category = 'logging';
16
+ validate(doc, _context) {
17
+ const issues = [];
18
+ const loggers = this.select('//mule:logger[@message]', doc);
19
+ for (const logger of loggers) {
20
+ const message = this.getAttribute(logger, 'message') ?? '';
21
+ // Check for direct payload logging
22
+ if (this.hasDirectPayloadReference(message)) {
23
+ const docName = this.getDocName(logger) ?? 'Logger';
24
+ issues.push(this.createIssue(logger, `Logger "${docName}" logs entire payload - security/performance risk`, {
25
+ suggestion: 'Log specific fields instead: #[payload.orderId]'
26
+ }));
27
+ }
28
+ }
29
+ return issues;
30
+ }
31
+ hasDirectPayloadReference(message) {
32
+ // Match #[payload] but not #[payload.something]
33
+ return /\#\[payload\s*\]/.test(message) ||
34
+ /\#\[\s*payload\s*\]/.test(message) ||
35
+ message === '#[payload]';
36
+ }
37
+ }
38
+ exports.LoggerPayloadRule = LoggerPayloadRule;
39
+ //# sourceMappingURL=LoggerPayloadRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggerPayloadRule.js","sourceRoot":"","sources":["../../../../src/rules/logging/LoggerPayloadRule.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C;;;;GAIG;AACH,MAAa,iBAAkB,SAAQ,mBAAQ;IAC3C,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,0BAA0B,CAAC;IAClC,WAAW,GAAG,gDAAgD,CAAC;IAC/D,QAAQ,GAAG,SAAkB,CAAC;IAC9B,QAAQ,GAAG,SAAkB,CAAC;IAE9B,QAAQ,CAAC,GAAa,EAAE,QAA2B;QAC/C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAE5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;YAE3D,mCAAmC;YACnC,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,MAAM,EACN,WAAW,OAAO,mDAAmD,EACrE;oBACI,UAAU,EAAE,iDAAiD;iBAChE,CACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,yBAAyB,CAAC,OAAe;QAC7C,gDAAgD;QAChD,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;YACnC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;YACnC,OAAO,KAAK,YAAY,CAAC;IACjC,CAAC;CACJ;AArCD,8CAqCC"}
@@ -0,0 +1,18 @@
1
+ import { ValidationContext, Issue } from '../../types';
2
+ import { BaseRule } from '../base/BaseRule';
3
+ /**
4
+ * MULE-101: Flow Name Casing
5
+ *
6
+ * Flow names should follow consistent casing (kebab-case recommended).
7
+ */
8
+ export declare class FlowCasingRule extends BaseRule {
9
+ id: string;
10
+ name: string;
11
+ description: string;
12
+ severity: "warning";
13
+ category: "naming";
14
+ private readonly KEBAB_CASE_PATTERN;
15
+ validate(doc: Document, _context: ValidationContext): Issue[];
16
+ private toKebabCase;
17
+ }
18
+ //# sourceMappingURL=FlowCasingRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowCasingRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/naming/FlowCasingRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IACxC,EAAE,SAAc;IAChB,IAAI,SAAsB;IAC1B,WAAW,SAAoD;IAC/D,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,QAAQ,CAAU;IAE7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoD;IAEvF,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAuB7D,OAAO,CAAC,WAAW;CAMtB"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowCasingRule = void 0;
4
+ const BaseRule_1 = require("../base/BaseRule");
5
+ /**
6
+ * MULE-101: Flow Name Casing
7
+ *
8
+ * Flow names should follow consistent casing (kebab-case recommended).
9
+ */
10
+ class FlowCasingRule extends BaseRule_1.BaseRule {
11
+ id = 'MULE-101';
12
+ name = 'Flow Name Casing';
13
+ description = 'Flow names should follow kebab-case convention';
14
+ severity = 'warning';
15
+ category = 'naming';
16
+ KEBAB_CASE_PATTERN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*(-flow|-subflow)?$/;
17
+ validate(doc, _context) {
18
+ const issues = [];
19
+ const flows = this.select('//mule:flow | //mule:sub-flow', doc);
20
+ for (const flow of flows) {
21
+ const name = this.getNameAttribute(flow);
22
+ if (!name)
23
+ continue;
24
+ if (!this.KEBAB_CASE_PATTERN.test(name)) {
25
+ issues.push(this.createIssue(flow, `Flow name "${name}" should be kebab-case`, {
26
+ suggestion: `Rename to "${this.toKebabCase(name)}"`
27
+ }));
28
+ }
29
+ }
30
+ return issues;
31
+ }
32
+ toKebabCase(name) {
33
+ return name
34
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
35
+ .replace(/[\s_]+/g, '-')
36
+ .toLowerCase();
37
+ }
38
+ }
39
+ exports.FlowCasingRule = FlowCasingRule;
40
+ //# sourceMappingURL=FlowCasingRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowCasingRule.js","sourceRoot":"","sources":["../../../../src/rules/naming/FlowCasingRule.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C;;;;GAIG;AACH,MAAa,cAAe,SAAQ,mBAAQ;IACxC,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,kBAAkB,CAAC;IAC1B,WAAW,GAAG,gDAAgD,CAAC;IAC/D,QAAQ,GAAG,SAAkB,CAAC;IAC9B,QAAQ,GAAG,QAAiB,CAAC;IAEZ,kBAAkB,GAAG,gDAAgD,CAAC;IAEvF,QAAQ,CAAC,GAAa,EAAE,QAA2B;QAC/C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,IAAI,EACJ,cAAc,IAAI,wBAAwB,EAC1C;oBACI,UAAU,EAAE,cAAc,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG;iBACtD,CACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,WAAW,CAAC,IAAY;QAC5B,OAAO,IAAI;aACN,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;aACnC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,WAAW,EAAE,CAAC;IACvB,CAAC;CACJ;AAtCD,wCAsCC"}
@@ -0,0 +1,17 @@
1
+ import { ValidationContext, Issue } from '../../types';
2
+ import { BaseRule } from '../base/BaseRule';
3
+ /**
4
+ * MULE-002: Flow Naming Convention
5
+ *
6
+ * Flows must end with "-flow" suffix, sub-flows with "-subflow".
7
+ * This ensures consistent naming across the project.
8
+ */
9
+ export declare class FlowNamingRule extends BaseRule {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ severity: "warning";
14
+ category: "naming";
15
+ validate(doc: Document, context: ValidationContext): Issue[];
16
+ }
17
+ //# sourceMappingURL=FlowNamingRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowNamingRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/naming/FlowNamingRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IACxC,EAAE,SAAc;IAChB,IAAI,SAA4B;IAChC,WAAW,SAAoF;IAC/F,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,QAAQ,CAAU;IAE7B,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,KAAK,EAAE;CAyD/D"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowNamingRule = void 0;
4
+ const BaseRule_1 = require("../base/BaseRule");
5
+ /**
6
+ * MULE-002: Flow Naming Convention
7
+ *
8
+ * Flows must end with "-flow" suffix, sub-flows with "-subflow".
9
+ * This ensures consistent naming across the project.
10
+ */
11
+ class FlowNamingRule extends BaseRule_1.BaseRule {
12
+ id = 'MULE-002';
13
+ name = 'Flow Naming Convention';
14
+ description = 'Flows should end with "-flow", sub-flows with "-subflow" for consistent naming';
15
+ severity = 'warning';
16
+ category = 'naming';
17
+ validate(doc, context) {
18
+ const issues = [];
19
+ // Get configurable suffixes
20
+ const flowSuffix = this.getOption(context, 'flowSuffix', '-flow');
21
+ const subflowSuffix = this.getOption(context, 'subflowSuffix', '-subflow');
22
+ const excludePatterns = this.getOption(context, 'excludePatterns', [
23
+ '*-api-main',
24
+ '*-api-console',
25
+ ]);
26
+ // Check flows
27
+ const flows = this.select('//mule:flow', doc);
28
+ for (const flow of flows) {
29
+ const name = this.getNameAttribute(flow);
30
+ if (!name) {
31
+ continue;
32
+ }
33
+ // Skip excluded patterns
34
+ if (this.isExcluded(name, excludePatterns)) {
35
+ continue;
36
+ }
37
+ if (!name.endsWith(flowSuffix)) {
38
+ issues.push(this.createIssue(flow, `Flow "${name}" should end with "${flowSuffix}"`, { suggestion: `Rename to "${name}${flowSuffix}"` }));
39
+ }
40
+ }
41
+ // Check sub-flows
42
+ const subflows = this.select('//mule:sub-flow', doc);
43
+ for (const subflow of subflows) {
44
+ const name = this.getNameAttribute(subflow);
45
+ if (!name) {
46
+ continue;
47
+ }
48
+ // Skip excluded patterns
49
+ if (this.isExcluded(name, excludePatterns)) {
50
+ continue;
51
+ }
52
+ if (!name.endsWith(subflowSuffix)) {
53
+ issues.push(this.createIssue(subflow, `Sub-flow "${name}" should end with "${subflowSuffix}"`, { suggestion: `Rename to "${name}${subflowSuffix}"` }));
54
+ }
55
+ }
56
+ return issues;
57
+ }
58
+ }
59
+ exports.FlowNamingRule = FlowNamingRule;
60
+ //# sourceMappingURL=FlowNamingRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowNamingRule.js","sourceRoot":"","sources":["../../../../src/rules/naming/FlowNamingRule.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C;;;;;GAKG;AACH,MAAa,cAAe,SAAQ,mBAAQ;IACxC,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,wBAAwB,CAAC;IAChC,WAAW,GAAG,gFAAgF,CAAC;IAC/F,QAAQ,GAAG,SAAkB,CAAC;IAC9B,QAAQ,GAAG,QAAiB,CAAC;IAE7B,QAAQ,CAAC,GAAa,EAAE,OAA0B;QAC9C,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAW,OAAO,EAAE,iBAAiB,EAAE;YACzE,YAAY;YACZ,eAAe;SAClB,CAAC,CAAC;QAEH,cAAc;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,SAAS;YACb,CAAC;YAED,yBAAyB;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;gBACzC,SAAS;YACb,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,IAAI,EACJ,SAAS,IAAI,sBAAsB,UAAU,GAAG,EAChD,EAAE,UAAU,EAAE,cAAc,IAAI,GAAG,UAAU,GAAG,EAAE,CACrD,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,kBAAkB;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACrD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,SAAS;YACb,CAAC;YAED,yBAAyB;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;gBACzC,SAAS;YACb,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACxB,OAAO,EACP,aAAa,IAAI,sBAAsB,aAAa,GAAG,EACvD,EAAE,UAAU,EAAE,cAAc,IAAI,GAAG,aAAa,GAAG,EAAE,CACxD,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAhED,wCAgEC"}
@@ -0,0 +1,18 @@
1
+ import { ValidationContext, Issue } from '../../types';
2
+ import { BaseRule } from '../base/BaseRule';
3
+ /**
4
+ * MULE-102: Variable Naming Convention
5
+ *
6
+ * Variables should follow camelCase naming.
7
+ */
8
+ export declare class VariableNamingRule extends BaseRule {
9
+ id: string;
10
+ name: string;
11
+ description: string;
12
+ severity: "warning";
13
+ category: "naming";
14
+ private readonly CAMEL_CASE_PATTERN;
15
+ validate(doc: Document, _context: ValidationContext): Issue[];
16
+ private toCamelCase;
17
+ }
18
+ //# sourceMappingURL=VariableNamingRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariableNamingRule.d.ts","sourceRoot":"","sources":["../../../../src/rules/naming/VariableNamingRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC5C,EAAE,SAAc;IAChB,IAAI,SAAgC;IACpC,WAAW,SAA8C;IACzD,QAAQ,EAAG,SAAS,CAAU;IAC9B,QAAQ,EAAG,QAAQ,CAAU;IAE7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyB;IAE5D,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,KAAK,EAAE;IAuB7D,OAAO,CAAC,WAAW;CAKtB"}