@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.
- package/README.md +413 -0
- package/dist/bin/mule-lint.d.ts +3 -0
- package/dist/bin/mule-lint.d.ts.map +1 -0
- package/dist/bin/mule-lint.js +123 -0
- package/dist/bin/mule-lint.js.map +1 -0
- package/dist/src/core/ComplexityCalculator.d.ts +42 -0
- package/dist/src/core/ComplexityCalculator.d.ts.map +1 -0
- package/dist/src/core/ComplexityCalculator.js +123 -0
- package/dist/src/core/ComplexityCalculator.js.map +1 -0
- package/dist/src/core/FileScanner.d.ts +58 -0
- package/dist/src/core/FileScanner.d.ts.map +1 -0
- package/dist/src/core/FileScanner.js +161 -0
- package/dist/src/core/FileScanner.js.map +1 -0
- package/dist/src/core/XPathHelper.d.ts +81 -0
- package/dist/src/core/XPathHelper.d.ts.map +1 -0
- package/dist/src/core/XPathHelper.js +229 -0
- package/dist/src/core/XPathHelper.js.map +1 -0
- package/dist/src/core/XmlParser.d.ts +38 -0
- package/dist/src/core/XmlParser.d.ts.map +1 -0
- package/dist/src/core/XmlParser.js +131 -0
- package/dist/src/core/XmlParser.js.map +1 -0
- package/dist/src/core/YamlParser.d.ts +30 -0
- package/dist/src/core/YamlParser.d.ts.map +1 -0
- package/dist/src/core/YamlParser.js +120 -0
- package/dist/src/core/YamlParser.js.map +1 -0
- package/dist/src/core/index.d.ts +4 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +21 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/engine/LintEngine.d.ts +60 -0
- package/dist/src/engine/LintEngine.d.ts.map +1 -0
- package/dist/src/engine/LintEngine.js +271 -0
- package/dist/src/engine/LintEngine.js.map +1 -0
- package/dist/src/engine/index.d.ts +2 -0
- package/dist/src/engine/index.d.ts.map +1 -0
- package/dist/src/engine/index.js +18 -0
- package/dist/src/engine/index.js.map +1 -0
- package/dist/src/formatters/JsonFormatter.d.ts +18 -0
- package/dist/src/formatters/JsonFormatter.d.ts.map +1 -0
- package/dist/src/formatters/JsonFormatter.js +45 -0
- package/dist/src/formatters/JsonFormatter.js.map +1 -0
- package/dist/src/formatters/SarifFormatter.d.ts +8 -0
- package/dist/src/formatters/SarifFormatter.d.ts.map +1 -0
- package/dist/src/formatters/SarifFormatter.js +115 -0
- package/dist/src/formatters/SarifFormatter.js.map +1 -0
- package/dist/src/formatters/TableFormatter.d.ts +10 -0
- package/dist/src/formatters/TableFormatter.d.ts.map +1 -0
- package/dist/src/formatters/TableFormatter.js +100 -0
- package/dist/src/formatters/TableFormatter.js.map +1 -0
- package/dist/src/formatters/index.d.ts +10 -0
- package/dist/src/formatters/index.d.ts.map +1 -0
- package/dist/src/formatters/index.js +42 -0
- package/dist/src/formatters/index.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +28 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/rules/api-led/ApiLedRules.d.ts +42 -0
- package/dist/src/rules/api-led/ApiLedRules.d.ts.map +1 -0
- package/dist/src/rules/api-led/ApiLedRules.js +95 -0
- package/dist/src/rules/api-led/ApiLedRules.js.map +1 -0
- package/dist/src/rules/base/BaseRule.d.ts +89 -0
- package/dist/src/rules/base/BaseRule.d.ts.map +1 -0
- package/dist/src/rules/base/BaseRule.js +137 -0
- package/dist/src/rules/base/BaseRule.js.map +1 -0
- package/dist/src/rules/complexity/FlowComplexityRule.d.ts +18 -0
- package/dist/src/rules/complexity/FlowComplexityRule.d.ts.map +1 -0
- package/dist/src/rules/complexity/FlowComplexityRule.js +58 -0
- package/dist/src/rules/complexity/FlowComplexityRule.js.map +1 -0
- package/dist/src/rules/dataweave/DataWeaveRules.d.ts +45 -0
- package/dist/src/rules/dataweave/DataWeaveRules.d.ts.map +1 -0
- package/dist/src/rules/dataweave/DataWeaveRules.js +168 -0
- package/dist/src/rules/dataweave/DataWeaveRules.js.map +1 -0
- package/dist/src/rules/documentation/FlowDescriptionRule.d.ts +16 -0
- package/dist/src/rules/documentation/FlowDescriptionRule.d.ts.map +1 -0
- package/dist/src/rules/documentation/FlowDescriptionRule.js +33 -0
- package/dist/src/rules/documentation/FlowDescriptionRule.js.map +1 -0
- package/dist/src/rules/documentation/MissingDocNameRule.d.ts +17 -0
- package/dist/src/rules/documentation/MissingDocNameRule.d.ts.map +1 -0
- package/dist/src/rules/documentation/MissingDocNameRule.js +44 -0
- package/dist/src/rules/documentation/MissingDocNameRule.js.map +1 -0
- package/dist/src/rules/error-handling/CorrelationIdRule.d.ts +26 -0
- package/dist/src/rules/error-handling/CorrelationIdRule.d.ts.map +1 -0
- package/dist/src/rules/error-handling/CorrelationIdRule.js +86 -0
- package/dist/src/rules/error-handling/CorrelationIdRule.js.map +1 -0
- package/dist/src/rules/error-handling/GenericErrorRule.d.ts +22 -0
- package/dist/src/rules/error-handling/GenericErrorRule.d.ts.map +1 -0
- package/dist/src/rules/error-handling/GenericErrorRule.js +51 -0
- package/dist/src/rules/error-handling/GenericErrorRule.js.map +1 -0
- package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts +17 -0
- package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts.map +1 -0
- package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js +77 -0
- package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js.map +1 -0
- package/dist/src/rules/error-handling/HttpStatusRule.d.ts +21 -0
- package/dist/src/rules/error-handling/HttpStatusRule.d.ts.map +1 -0
- package/dist/src/rules/error-handling/HttpStatusRule.js +57 -0
- package/dist/src/rules/error-handling/HttpStatusRule.js.map +1 -0
- package/dist/src/rules/error-handling/MissingErrorHandlerRule.d.ts +17 -0
- package/dist/src/rules/error-handling/MissingErrorHandlerRule.d.ts.map +1 -0
- package/dist/src/rules/error-handling/MissingErrorHandlerRule.js +51 -0
- package/dist/src/rules/error-handling/MissingErrorHandlerRule.js.map +1 -0
- package/dist/src/rules/experimental/ExperimentalRules.d.ts +43 -0
- package/dist/src/rules/experimental/ExperimentalRules.d.ts.map +1 -0
- package/dist/src/rules/experimental/ExperimentalRules.js +92 -0
- package/dist/src/rules/experimental/ExperimentalRules.js.map +1 -0
- package/dist/src/rules/http/HttpContentTypeRule.d.ts +17 -0
- package/dist/src/rules/http/HttpContentTypeRule.d.ts.map +1 -0
- package/dist/src/rules/http/HttpContentTypeRule.js +50 -0
- package/dist/src/rules/http/HttpContentTypeRule.js.map +1 -0
- package/dist/src/rules/http/HttpTimeoutRule.d.ts +16 -0
- package/dist/src/rules/http/HttpTimeoutRule.d.ts.map +1 -0
- package/dist/src/rules/http/HttpTimeoutRule.js +33 -0
- package/dist/src/rules/http/HttpTimeoutRule.js.map +1 -0
- package/dist/src/rules/http/HttpUserAgentRule.d.ts +17 -0
- package/dist/src/rules/http/HttpUserAgentRule.d.ts.map +1 -0
- package/dist/src/rules/http/HttpUserAgentRule.js +48 -0
- package/dist/src/rules/http/HttpUserAgentRule.js.map +1 -0
- package/dist/src/rules/index.d.ts +45 -0
- package/dist/src/rules/index.d.ts.map +1 -0
- package/dist/src/rules/index.js +205 -0
- package/dist/src/rules/index.js.map +1 -0
- package/dist/src/rules/logging/LoggerCategoryRule.d.ts +21 -0
- package/dist/src/rules/logging/LoggerCategoryRule.d.ts.map +1 -0
- package/dist/src/rules/logging/LoggerCategoryRule.js +61 -0
- package/dist/src/rules/logging/LoggerCategoryRule.js.map +1 -0
- package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.d.ts +16 -0
- package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.d.ts.map +1 -0
- package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.js +29 -0
- package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.js.map +1 -0
- package/dist/src/rules/logging/LoggerPayloadRule.d.ts +17 -0
- package/dist/src/rules/logging/LoggerPayloadRule.d.ts.map +1 -0
- package/dist/src/rules/logging/LoggerPayloadRule.js +39 -0
- package/dist/src/rules/logging/LoggerPayloadRule.js.map +1 -0
- package/dist/src/rules/naming/FlowCasingRule.d.ts +18 -0
- package/dist/src/rules/naming/FlowCasingRule.d.ts.map +1 -0
- package/dist/src/rules/naming/FlowCasingRule.js +40 -0
- package/dist/src/rules/naming/FlowCasingRule.js.map +1 -0
- package/dist/src/rules/naming/FlowNamingRule.d.ts +17 -0
- package/dist/src/rules/naming/FlowNamingRule.d.ts.map +1 -0
- package/dist/src/rules/naming/FlowNamingRule.js +60 -0
- package/dist/src/rules/naming/FlowNamingRule.js.map +1 -0
- package/dist/src/rules/naming/VariableNamingRule.d.ts +18 -0
- package/dist/src/rules/naming/VariableNamingRule.d.ts.map +1 -0
- package/dist/src/rules/naming/VariableNamingRule.js +39 -0
- package/dist/src/rules/naming/VariableNamingRule.js.map +1 -0
- package/dist/src/rules/performance/AsyncErrorHandlerRule.d.ts +16 -0
- package/dist/src/rules/performance/AsyncErrorHandlerRule.d.ts.map +1 -0
- package/dist/src/rules/performance/AsyncErrorHandlerRule.js +34 -0
- package/dist/src/rules/performance/AsyncErrorHandlerRule.js.map +1 -0
- package/dist/src/rules/performance/LargeChoiceBlockRule.d.ts +16 -0
- package/dist/src/rules/performance/LargeChoiceBlockRule.d.ts.map +1 -0
- package/dist/src/rules/performance/LargeChoiceBlockRule.js +32 -0
- package/dist/src/rules/performance/LargeChoiceBlockRule.js.map +1 -0
- package/dist/src/rules/performance/ScatterGatherRoutesRule.d.ts +16 -0
- package/dist/src/rules/performance/ScatterGatherRoutesRule.d.ts.map +1 -0
- package/dist/src/rules/performance/ScatterGatherRoutesRule.js +32 -0
- package/dist/src/rules/performance/ScatterGatherRoutesRule.js.map +1 -0
- package/dist/src/rules/security/HardcodedCredentialsRule.d.ts +19 -0
- package/dist/src/rules/security/HardcodedCredentialsRule.d.ts.map +1 -0
- package/dist/src/rules/security/HardcodedCredentialsRule.js +66 -0
- package/dist/src/rules/security/HardcodedCredentialsRule.js.map +1 -0
- package/dist/src/rules/security/HardcodedHttpRule.d.ts +33 -0
- package/dist/src/rules/security/HardcodedHttpRule.d.ts.map +1 -0
- package/dist/src/rules/security/HardcodedHttpRule.js +108 -0
- package/dist/src/rules/security/HardcodedHttpRule.js.map +1 -0
- package/dist/src/rules/security/InsecureTlsRule.d.ts +16 -0
- package/dist/src/rules/security/InsecureTlsRule.d.ts.map +1 -0
- package/dist/src/rules/security/InsecureTlsRule.js +36 -0
- package/dist/src/rules/security/InsecureTlsRule.js.map +1 -0
- package/dist/src/rules/standards/ChoiceAntiPatternRule.d.ts +17 -0
- package/dist/src/rules/standards/ChoiceAntiPatternRule.d.ts.map +1 -0
- package/dist/src/rules/standards/ChoiceAntiPatternRule.js +43 -0
- package/dist/src/rules/standards/ChoiceAntiPatternRule.js.map +1 -0
- package/dist/src/rules/standards/DeprecatedComponentRule.d.ts +17 -0
- package/dist/src/rules/standards/DeprecatedComponentRule.d.ts.map +1 -0
- package/dist/src/rules/standards/DeprecatedComponentRule.js +37 -0
- package/dist/src/rules/standards/DeprecatedComponentRule.js.map +1 -0
- package/dist/src/rules/standards/DwlStandardsRule.d.ts +22 -0
- package/dist/src/rules/standards/DwlStandardsRule.d.ts.map +1 -0
- package/dist/src/rules/standards/DwlStandardsRule.js +90 -0
- package/dist/src/rules/standards/DwlStandardsRule.js.map +1 -0
- package/dist/src/rules/structure/StructureRules.d.ts +45 -0
- package/dist/src/rules/structure/StructureRules.d.ts.map +1 -0
- package/dist/src/rules/structure/StructureRules.js +163 -0
- package/dist/src/rules/structure/StructureRules.js.map +1 -0
- package/dist/src/rules/yaml/YamlRules.d.ts +46 -0
- package/dist/src/rules/yaml/YamlRules.d.ts.map +1 -0
- package/dist/src/rules/yaml/YamlRules.js +226 -0
- package/dist/src/rules/yaml/YamlRules.js.map +1 -0
- package/dist/src/types/Config.d.ts +50 -0
- package/dist/src/types/Config.d.ts.map +1 -0
- package/dist/src/types/Config.js +18 -0
- package/dist/src/types/Config.js.map +1 -0
- package/dist/src/types/Report.d.ts +47 -0
- package/dist/src/types/Report.d.ts.map +1 -0
- package/dist/src/types/Report.js +3 -0
- package/dist/src/types/Report.js.map +1 -0
- package/dist/src/types/Rule.d.ts +76 -0
- package/dist/src/types/Rule.d.ts.map +1 -0
- package/dist/src/types/Rule.js +3 -0
- package/dist/src/types/Rule.js.map +1 -0
- package/dist/src/types/index.d.ts +4 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +21 -0
- package/dist/src/types/index.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|