@sfdxy/mule-lint 1.16.3 → 1.18.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 +12 -6
- package/dist/bin/mule-lint.js +82 -1
- package/dist/bin/mule-lint.js.map +1 -1
- package/dist/package.json +8 -6
- package/dist/src/formatter/MuleXmlFormatter.d.ts +68 -0
- package/dist/src/formatter/MuleXmlFormatter.d.ts.map +1 -0
- package/dist/src/formatter/MuleXmlFormatter.js +146 -0
- package/dist/src/formatter/MuleXmlFormatter.js.map +1 -0
- package/dist/src/formatter/index.d.ts +3 -0
- package/dist/src/formatter/index.d.ts.map +1 -0
- package/dist/src/formatter/index.js +9 -0
- package/dist/src/formatter/index.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +105 -0
- package/dist/src/mcp/index.js.map +1 -1
- package/docs/best-practices/rules-catalog.md +513 -44
- package/package.json +8 -6
package/README.md
CHANGED
|
@@ -314,6 +314,7 @@ npx @sfdxy/mule-lint src/main/mule -f sarif -o results.sarif
|
|
|
314
314
|
| DW-001 | External DWL | Warning | DataWeave | Externalize complex transforms |
|
|
315
315
|
| DW-002 | DWL Naming | Info | DataWeave | kebab-case for .dwl files |
|
|
316
316
|
| DW-003 | DWL Modules | Info | DataWeave | Use common modules |
|
|
317
|
+
| DW-004 | Java 17 DW Errors | Error | DataWeave | Java 17 compatible error handling |
|
|
317
318
|
| API-001 | Experience Layer | Info | API-Led | Experience API patterns |
|
|
318
319
|
| API-002 | Process Layer | Info | API-Led | Process layer orchestration |
|
|
319
320
|
| API-003 | System Layer | Info | API-Led | System layer connections |
|
|
@@ -328,6 +329,8 @@ npx @sfdxy/mule-lint src/main/mule -f sarif -o results.sarif
|
|
|
328
329
|
| EXP-003 | MUnit Coverage | Info | Experimental | Check for MUnit tests |
|
|
329
330
|
| YAML-001 | Env Files | Warning | Standards | Environment YAML files |
|
|
330
331
|
| YAML-003 | Property Naming | Info | Standards | Property key format |
|
|
332
|
+
| YAML-004 | Plaintext Secrets | Error | Security | Encrypt sensitive YAML properties |
|
|
333
|
+
|
|
331
334
|
### 2025-2026 Best Practices Rules (NEW)
|
|
332
335
|
|
|
333
336
|
| ID | Name | Severity | Category | Description |
|
|
@@ -518,7 +521,8 @@ This tool exposes a **Model Context Protocol (MCP)** server, allowing AI agents
|
|
|
518
521
|
|
|
519
522
|
### Features
|
|
520
523
|
- **Tools**: `run_lint_analysis` (scan project), `get_rule_details` (explain rule), `validate_snippet` (check XML/DWL).
|
|
521
|
-
- **Resources**: `mule-lint://rules` (list all available rules).
|
|
524
|
+
- **Resources**: `mule-lint://rules` (list all available rules), `mule-lint://docs/{slug}` (best practices documentation).
|
|
525
|
+
- **Prompts**: `analyze-project`, `explain-rule`, `fix-issue`.
|
|
522
526
|
|
|
523
527
|
### Setup for Claude Desktop
|
|
524
528
|
|
|
@@ -529,21 +533,23 @@ Add the following to your `claude_desktop_config.json`:
|
|
|
529
533
|
"mcpServers": {
|
|
530
534
|
"mule-lint": {
|
|
531
535
|
"command": "npx",
|
|
532
|
-
"args": ["-y", "
|
|
536
|
+
"args": ["-y", "@sfdxy/mule-lint", "mcp"]
|
|
533
537
|
}
|
|
534
538
|
}
|
|
535
539
|
}
|
|
536
540
|
```
|
|
537
541
|
|
|
538
|
-
### Setup for VS Code
|
|
542
|
+
### Setup for VS Code / Gemini Code Assist
|
|
539
543
|
|
|
540
544
|
Create a `.vscode/mcp.json` file in your project root:
|
|
541
545
|
|
|
542
546
|
```json
|
|
543
547
|
{
|
|
544
|
-
"
|
|
545
|
-
"
|
|
546
|
-
|
|
548
|
+
"servers": {
|
|
549
|
+
"mule-lint": {
|
|
550
|
+
"command": "npx",
|
|
551
|
+
"args": ["-y", "@sfdxy/mule-lint", "mcp"]
|
|
552
|
+
}
|
|
547
553
|
}
|
|
548
554
|
}
|
|
549
555
|
```
|
package/dist/bin/mule-lint.js
CHANGED
|
@@ -47,7 +47,7 @@ program
|
|
|
47
47
|
.name('mule-lint')
|
|
48
48
|
.description('Static analysis tool for MuleSoft applications')
|
|
49
49
|
.version('1.0.0')
|
|
50
|
-
.argument('
|
|
50
|
+
.argument('[path]', 'Path to scan (directory or file)')
|
|
51
51
|
.option('-f, --format <type>', 'Output format: table, json, sarif, html, csv', 'table')
|
|
52
52
|
.option('-o, --output <file>', 'Write output to file instead of stdout')
|
|
53
53
|
.option('-c, --config <file>', 'Path to configuration file')
|
|
@@ -57,6 +57,10 @@ program
|
|
|
57
57
|
.option('-g, --quality-gate <name>', 'Apply quality gate: default, strict, or from config')
|
|
58
58
|
.option('-v, --verbose', 'Show verbose output')
|
|
59
59
|
.action(async (targetPath, options) => {
|
|
60
|
+
if (!targetPath) {
|
|
61
|
+
program.help();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
60
64
|
try {
|
|
61
65
|
await runLint(targetPath, options);
|
|
62
66
|
}
|
|
@@ -66,6 +70,34 @@ program
|
|
|
66
70
|
process.exit(2);
|
|
67
71
|
}
|
|
68
72
|
});
|
|
73
|
+
// MCP subcommand — starts the Model Context Protocol server over stdio
|
|
74
|
+
program
|
|
75
|
+
.command('mcp')
|
|
76
|
+
.description('Start the MCP (Model Context Protocol) server over stdio for AI agent integration')
|
|
77
|
+
.action(async () => {
|
|
78
|
+
const { MuleLintMcpServer } = await Promise.resolve().then(() => __importStar(require('../src/mcp')));
|
|
79
|
+
const server = new MuleLintMcpServer();
|
|
80
|
+
await server.start();
|
|
81
|
+
});
|
|
82
|
+
// Format subcommand — format Mule XML files using Prettier
|
|
83
|
+
program
|
|
84
|
+
.command('format')
|
|
85
|
+
.description('Format Mule XML files using Prettier with Anypoint Studio-compatible defaults')
|
|
86
|
+
.argument('<path>', 'Path to a Mule XML file or project directory')
|
|
87
|
+
.option('--check', 'Check if files are formatted without writing (exit 1 if unformatted)')
|
|
88
|
+
.option('--tab-width <n>', 'Spaces per indent level (default: 4)', parseInt)
|
|
89
|
+
.option('--print-width <n>', 'Max line width before wrapping (default: 140)', parseInt)
|
|
90
|
+
.option('--xml-quote-attributes <style>', 'Attribute quote style: preserve, single, double (default: preserve)')
|
|
91
|
+
.action(async (targetPath, opts) => {
|
|
92
|
+
try {
|
|
93
|
+
await runFormat(targetPath, opts);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
97
|
+
console.error(`Error: ${message}`);
|
|
98
|
+
process.exit(2);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
69
101
|
async function runLint(targetPath, options) {
|
|
70
102
|
const absolutePath = path.resolve(targetPath);
|
|
71
103
|
// Validate path exists
|
|
@@ -159,6 +191,55 @@ function resolveQualityGate(gateName, config) {
|
|
|
159
191
|
throw new Error(`Unknown quality gate: ${gateName}. Use 'default', 'strict', or 'config'`);
|
|
160
192
|
}
|
|
161
193
|
}
|
|
194
|
+
async function runFormat(targetPath, options) {
|
|
195
|
+
const absolutePath = path.resolve(targetPath);
|
|
196
|
+
if (!fs.existsSync(absolutePath)) {
|
|
197
|
+
throw new Error(`Path does not exist: ${absolutePath}`);
|
|
198
|
+
}
|
|
199
|
+
// Lazy import to keep startup fast for the lint path
|
|
200
|
+
const { formatFile, formatProject } = await Promise.resolve().then(() => __importStar(require('../src/formatter/MuleXmlFormatter')));
|
|
201
|
+
const formatOptions = {
|
|
202
|
+
check: options.check,
|
|
203
|
+
tabWidth: options.tabWidth,
|
|
204
|
+
printWidth: options.printWidth,
|
|
205
|
+
xmlQuoteAttributes: options.xmlQuoteAttributes,
|
|
206
|
+
};
|
|
207
|
+
const stat = fs.statSync(absolutePath);
|
|
208
|
+
let results;
|
|
209
|
+
if (stat.isDirectory()) {
|
|
210
|
+
results = await formatProject(absolutePath, formatOptions);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
results = [await formatFile(absolutePath, formatOptions)];
|
|
214
|
+
}
|
|
215
|
+
if (results.length === 0) {
|
|
216
|
+
console.log('No Mule XML files found.');
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// Print results
|
|
220
|
+
let changedCount = 0;
|
|
221
|
+
let errorCount = 0;
|
|
222
|
+
for (const result of results) {
|
|
223
|
+
const relativePath = path.relative(process.cwd(), result.filePath);
|
|
224
|
+
if (result.error) {
|
|
225
|
+
console.error(` ✗ ${relativePath}: ${result.error}`);
|
|
226
|
+
errorCount++;
|
|
227
|
+
}
|
|
228
|
+
else if (result.changed) {
|
|
229
|
+
console.log(options.check ? ` ✗ ${relativePath} (needs formatting)` : ` ✓ ${relativePath}`);
|
|
230
|
+
changedCount++;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const unchangedCount = results.length - changedCount - errorCount;
|
|
234
|
+
console.log(`\n${results.length} file(s) scanned: ${changedCount} ${options.check ? 'need formatting' : 'formatted'}, ${unchangedCount} unchanged, ${errorCount} error(s)`);
|
|
235
|
+
// In check mode, exit 1 if any files are unformatted
|
|
236
|
+
if (options.check && changedCount > 0) {
|
|
237
|
+
process.exit(1);
|
|
238
|
+
}
|
|
239
|
+
if (errorCount > 0) {
|
|
240
|
+
process.exit(2);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
162
243
|
// Run the CLI
|
|
163
244
|
program.parse();
|
|
164
245
|
//# sourceMappingURL=mule-lint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mule-lint.js","sourceRoot":"","sources":["../../bin/mule-lint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,yDAAsD;AACtD,wCAAyC;AACzC,kDAAwD;AAExD,2EAI0C;AAC1C,0DAAkG;AAElG,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACtD,MAAM,CAAC,qBAAqB,EAAE,8CAA8C,EAAE,OAAO,CAAC;KACtF,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;KAC3D,MAAM,CAAC,aAAa,EAAE,+CAA+C,CAAC;KACtE,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,CAAC;KACrE,MAAM,CAAC,oBAAoB,EAAE,oCAAoC,CAAC;KAClE,MAAM,CAAC,2BAA2B,EAAE,qDAAqD,CAAC;KAC1F,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"mule-lint.js","sourceRoot":"","sources":["../../bin/mule-lint.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sfdxy/mule-lint",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "Static analysis tool for MuleSoft applications - supports humans, AI agents, and CI/CD pipelines",
|
|
5
5
|
"author": "Avinava",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"build": "tsc",
|
|
30
30
|
"build:watch": "tsc --watch",
|
|
31
|
-
"test": "jest",
|
|
32
|
-
"test:watch": "jest --watch",
|
|
33
|
-
"test:coverage": "jest --coverage",
|
|
31
|
+
"test": "NODE_OPTIONS='--experimental-vm-modules' jest",
|
|
32
|
+
"test:watch": "NODE_OPTIONS='--experimental-vm-modules' jest --watch",
|
|
33
|
+
"test:coverage": "NODE_OPTIONS='--experimental-vm-modules' jest --coverage",
|
|
34
34
|
"lint": "eslint src/ --ext .ts",
|
|
35
35
|
"lint:fix": "eslint src/ --ext .ts --fix",
|
|
36
36
|
"format": "prettier --write \"src/**/*.{ts,js,json,md}\"",
|
|
@@ -40,12 +40,15 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
43
|
+
"@prettier/plugin-xml": "^3.4.2",
|
|
43
44
|
"@xmldom/xmldom": "^0.8.10",
|
|
44
45
|
"chalk": "^4.1.2",
|
|
45
46
|
"commander": "^11.1.0",
|
|
46
47
|
"fast-glob": "^3.3.2",
|
|
47
48
|
"js-yaml": "^4.1.1",
|
|
48
|
-
"
|
|
49
|
+
"prettier": "^3.8.1",
|
|
50
|
+
"xpath": "^0.0.34",
|
|
51
|
+
"zod": "^3.25.0"
|
|
49
52
|
},
|
|
50
53
|
"devDependencies": {
|
|
51
54
|
"@types/jest": "^29.5.11",
|
|
@@ -55,7 +58,6 @@
|
|
|
55
58
|
"@typescript-eslint/parser": "^6.15.0",
|
|
56
59
|
"eslint": "^8.56.0",
|
|
57
60
|
"jest": "^29.7.0",
|
|
58
|
-
"prettier": "^3.7.4",
|
|
59
61
|
"ts-jest": "^29.1.1",
|
|
60
62
|
"typescript": "^5.3.3"
|
|
61
63
|
},
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anypoint Studio-compatible formatting defaults for Mule XML.
|
|
3
|
+
*
|
|
4
|
+
* These values match the standard Eclipse/Anypoint Studio XML editor:
|
|
5
|
+
* - 4-space indentation
|
|
6
|
+
* - 140-char line width
|
|
7
|
+
* - Attribute quotes are preserved (never mutates ' → " or vice-versa)
|
|
8
|
+
*/
|
|
9
|
+
export declare const MULE_XML_DEFAULTS: {
|
|
10
|
+
readonly tabWidth: 4;
|
|
11
|
+
readonly printWidth: 140;
|
|
12
|
+
readonly xmlQuoteAttributes: "preserve";
|
|
13
|
+
readonly xmlSortAttributesByKey: false;
|
|
14
|
+
readonly xmlSelfClosingSpace: true;
|
|
15
|
+
readonly xmlWhitespaceSensitivity: "ignore";
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* User-overridable formatting options.
|
|
19
|
+
*/
|
|
20
|
+
export interface FormatOptions {
|
|
21
|
+
/** Spaces per indentation level (default: 4 — Anypoint Studio standard) */
|
|
22
|
+
tabWidth?: number;
|
|
23
|
+
/** Max line width before wrapping (default: 140) */
|
|
24
|
+
printWidth?: number;
|
|
25
|
+
/** Attribute quote handling: 'preserve' (default), 'single', or 'double' */
|
|
26
|
+
xmlQuoteAttributes?: 'preserve' | 'single' | 'double';
|
|
27
|
+
/** Sort attributes alphabetically (default: false) */
|
|
28
|
+
xmlSortAttributesByKey?: boolean;
|
|
29
|
+
/** Dry-run mode — report changes without writing files */
|
|
30
|
+
check?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of formatting a single file.
|
|
34
|
+
*/
|
|
35
|
+
export interface FormatResult {
|
|
36
|
+
filePath: string;
|
|
37
|
+
changed: boolean;
|
|
38
|
+
error?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Result of formatting raw XML content.
|
|
42
|
+
*/
|
|
43
|
+
export interface ContentFormatResult {
|
|
44
|
+
formatted: string;
|
|
45
|
+
changed: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Format raw XML content using Prettier with Mule-safe defaults.
|
|
49
|
+
*
|
|
50
|
+
* @param content Raw XML string
|
|
51
|
+
* @param options Override any formatting option
|
|
52
|
+
* @returns The formatted XML string
|
|
53
|
+
*/
|
|
54
|
+
export declare function formatXmlContent(content: string, options?: FormatOptions): Promise<ContentFormatResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Format a single XML file on disk.
|
|
57
|
+
*
|
|
58
|
+
* In `check` mode the file is not written — only `changed` is set.
|
|
59
|
+
*/
|
|
60
|
+
export declare function formatFile(filePath: string, options?: FormatOptions): Promise<FormatResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Format all Mule XML files in a project.
|
|
63
|
+
*
|
|
64
|
+
* Discovers files matching `src/main/mule/**\/*.xml` (the standard Mule layout).
|
|
65
|
+
* In `check` mode no files are written.
|
|
66
|
+
*/
|
|
67
|
+
export declare function formatProject(projectPath: string, options?: FormatOptions): Promise<FormatResult[]>;
|
|
68
|
+
//# sourceMappingURL=MuleXmlFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MuleXmlFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatter/MuleXmlFormatter.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,sDAAsD;IACtD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CACpB;AAID;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAO9B;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,YAAY,CAAC,CAsBvB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,YAAY,EAAE,CAAC,CAoBzB"}
|
|
@@ -0,0 +1,146 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.MULE_XML_DEFAULTS = void 0;
|
|
40
|
+
exports.formatXmlContent = formatXmlContent;
|
|
41
|
+
exports.formatFile = formatFile;
|
|
42
|
+
exports.formatProject = formatProject;
|
|
43
|
+
const prettier = __importStar(require("prettier"));
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
47
|
+
/**
|
|
48
|
+
* Anypoint Studio-compatible formatting defaults for Mule XML.
|
|
49
|
+
*
|
|
50
|
+
* These values match the standard Eclipse/Anypoint Studio XML editor:
|
|
51
|
+
* - 4-space indentation
|
|
52
|
+
* - 140-char line width
|
|
53
|
+
* - Attribute quotes are preserved (never mutates ' → " or vice-versa)
|
|
54
|
+
*/
|
|
55
|
+
exports.MULE_XML_DEFAULTS = {
|
|
56
|
+
tabWidth: 4,
|
|
57
|
+
printWidth: 140,
|
|
58
|
+
xmlQuoteAttributes: 'preserve',
|
|
59
|
+
xmlSortAttributesByKey: false,
|
|
60
|
+
xmlSelfClosingSpace: true,
|
|
61
|
+
xmlWhitespaceSensitivity: 'ignore',
|
|
62
|
+
};
|
|
63
|
+
// ─── Core API ───────────────────────────────────────────────────────────────
|
|
64
|
+
/**
|
|
65
|
+
* Format raw XML content using Prettier with Mule-safe defaults.
|
|
66
|
+
*
|
|
67
|
+
* @param content Raw XML string
|
|
68
|
+
* @param options Override any formatting option
|
|
69
|
+
* @returns The formatted XML string
|
|
70
|
+
*/
|
|
71
|
+
async function formatXmlContent(content, options) {
|
|
72
|
+
const prettierOptions = buildPrettierOptions(options);
|
|
73
|
+
const formatted = await prettier.format(content, prettierOptions);
|
|
74
|
+
return {
|
|
75
|
+
formatted,
|
|
76
|
+
changed: formatted !== content,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Format a single XML file on disk.
|
|
81
|
+
*
|
|
82
|
+
* In `check` mode the file is not written — only `changed` is set.
|
|
83
|
+
*/
|
|
84
|
+
async function formatFile(filePath, options) {
|
|
85
|
+
const absolutePath = path.resolve(filePath);
|
|
86
|
+
try {
|
|
87
|
+
if (!fs.existsSync(absolutePath)) {
|
|
88
|
+
return { filePath: absolutePath, changed: false, error: `File not found: ${absolutePath}` };
|
|
89
|
+
}
|
|
90
|
+
const original = fs.readFileSync(absolutePath, 'utf-8');
|
|
91
|
+
const prettierOptions = buildPrettierOptions(options);
|
|
92
|
+
const formatted = await prettier.format(original, prettierOptions);
|
|
93
|
+
const changed = formatted !== original;
|
|
94
|
+
if (changed && !options?.check) {
|
|
95
|
+
fs.writeFileSync(absolutePath, formatted, 'utf-8');
|
|
96
|
+
}
|
|
97
|
+
return { filePath: absolutePath, changed };
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
101
|
+
return { filePath: absolutePath, changed: false, error: message };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Format all Mule XML files in a project.
|
|
106
|
+
*
|
|
107
|
+
* Discovers files matching `src/main/mule/**\/*.xml` (the standard Mule layout).
|
|
108
|
+
* In `check` mode no files are written.
|
|
109
|
+
*/
|
|
110
|
+
async function formatProject(projectPath, options) {
|
|
111
|
+
const absoluteProject = path.resolve(projectPath);
|
|
112
|
+
if (!fs.existsSync(absoluteProject)) {
|
|
113
|
+
return [{ filePath: absoluteProject, changed: false, error: `Project path not found: ${absoluteProject}` }];
|
|
114
|
+
}
|
|
115
|
+
// Discover Mule XML files
|
|
116
|
+
const pattern = 'src/main/mule/**/*.xml';
|
|
117
|
+
const files = await (0, fast_glob_1.default)(pattern, { cwd: absoluteProject, absolute: true });
|
|
118
|
+
if (files.length === 0) {
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
const results = [];
|
|
122
|
+
for (const file of files) {
|
|
123
|
+
results.push(await formatFile(file, options));
|
|
124
|
+
}
|
|
125
|
+
return results;
|
|
126
|
+
}
|
|
127
|
+
// ─── Internal helpers ───────────────────────────────────────────────────────
|
|
128
|
+
/**
|
|
129
|
+
* Merge user options with Mule XML defaults into a full Prettier config.
|
|
130
|
+
*
|
|
131
|
+
* Passes `@prettier/plugin-xml` as a plugin name string so that Prettier's
|
|
132
|
+
* own ESM-aware resolver handles the import. This avoids CJS/ESM issues.
|
|
133
|
+
*/
|
|
134
|
+
function buildPrettierOptions(options) {
|
|
135
|
+
return {
|
|
136
|
+
parser: 'xml',
|
|
137
|
+
plugins: ['@prettier/plugin-xml'],
|
|
138
|
+
tabWidth: options?.tabWidth ?? exports.MULE_XML_DEFAULTS.tabWidth,
|
|
139
|
+
printWidth: options?.printWidth ?? exports.MULE_XML_DEFAULTS.printWidth,
|
|
140
|
+
xmlQuoteAttributes: options?.xmlQuoteAttributes ?? exports.MULE_XML_DEFAULTS.xmlQuoteAttributes,
|
|
141
|
+
xmlSortAttributesByKey: options?.xmlSortAttributesByKey ?? exports.MULE_XML_DEFAULTS.xmlSortAttributesByKey,
|
|
142
|
+
xmlSelfClosingSpace: exports.MULE_XML_DEFAULTS.xmlSelfClosingSpace,
|
|
143
|
+
xmlWhitespaceSensitivity: exports.MULE_XML_DEFAULTS.xmlWhitespaceSensitivity,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=MuleXmlFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MuleXmlFormatter.js","sourceRoot":"","sources":["../../../src/formatter/MuleXmlFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,iBAAiB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACR,aAAa,EACb,YAAY,EACZ,mBAAmB,GACtB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MULE_XML_DEFAULTS = exports.formatProject = exports.formatFile = exports.formatXmlContent = void 0;
|
|
4
|
+
var MuleXmlFormatter_1 = require("./MuleXmlFormatter");
|
|
5
|
+
Object.defineProperty(exports, "formatXmlContent", { enumerable: true, get: function () { return MuleXmlFormatter_1.formatXmlContent; } });
|
|
6
|
+
Object.defineProperty(exports, "formatFile", { enumerable: true, get: function () { return MuleXmlFormatter_1.formatFile; } });
|
|
7
|
+
Object.defineProperty(exports, "formatProject", { enumerable: true, get: function () { return MuleXmlFormatter_1.formatProject; } });
|
|
8
|
+
Object.defineProperty(exports, "MULE_XML_DEFAULTS", { enumerable: true, get: function () { return MuleXmlFormatter_1.MULE_XML_DEFAULTS; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatter/index.ts"],"names":[],"mappings":";;;AAAA,uDAK4B;AAJxB,oHAAA,gBAAgB,OAAA;AAChB,8GAAA,UAAU,OAAA;AACV,iHAAA,aAAa,OAAA;AACb,qHAAA,iBAAiB,OAAA"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,SAAS,CAAC;AAGxB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,SAAS,CAAC;AAGxB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -27,4 +27,6 @@ __exportStar(require("./rules"), exports);
|
|
|
27
27
|
__exportStar(require("./formatters"), exports);
|
|
28
28
|
// Quality scoring
|
|
29
29
|
__exportStar(require("./quality"), exports);
|
|
30
|
+
// XML Formatter
|
|
31
|
+
__exportStar(require("./formatter"), exports);
|
|
30
32
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;;;;;;;;;;;;;;AAErC,QAAQ;AACR,0CAAwB;AAExB,iBAAiB;AACjB,yCAAuB;AAEvB,SAAS;AACT,2CAAyB;AAEzB,QAAQ;AACR,0CAAwB;AAExB,aAAa;AACb,+CAA6B;AAE7B,kBAAkB;AAClB,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;;;;;;;;;;;;;;AAErC,QAAQ;AACR,0CAAwB;AAExB,iBAAiB;AACjB,yCAAuB;AAEvB,SAAS;AACT,2CAAyB;AAEzB,QAAQ;AACR,0CAAwB;AAExB,aAAa;AACb,+CAA6B;AAE7B,kBAAkB;AAClB,4CAA0B;AAE1B,gBAAgB;AAChB,8CAA4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAa;;IA6B3B,OAAO,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAa;;IA6B3B,OAAO,CAAC,UAAU;IAiUlB,OAAO,CAAC,cAAc;IAmKtB,OAAO,CAAC,YAAY;IAiFP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAKtC"}
|