Weaver Playground
Interactive DataWeave transformation playground for VS Code
Transform data effortlessly with DataWeave in VS Code. Weaver Playground offers a fast 3‑panel DataWeave editor, automatic CLI setup, real‑time previews, and support for JSON, XML, CSV, YAML, and more—perfect for MuleSoft and DataWeave developers.

✨ Features
🚀 Zero Configuration Setup
- Auto-Download CLI - Automatically downloads DataWeave CLI on first use
- No Admin Rights - Installs to user directory, no elevated permissions needed
- Cross-Platform - Works on macOS, Windows, and Linux
🎯 Interactive 3-Panel Editor
- Input Panel - Paste or load your data
- Script Panel - Write DataWeave transformations
- Output Panel - See results instantly
- JSON, XML, CSV, YAML
- Properties, NDJSON
- Auto-detection from file extensions
- Syntax validation for all formats
- Session-Based Temp Files - Reuses files for identical content
- Worker Threads - Handles large files (>1MB) efficiently
- Automatic Cleanup - No orphaned temp files
🎨 Developer Experience
- Syntax highlighting for DataWeave
- Real-time validation
- Example templates included
- Auto-execute on file load
📦 Installation
From VS Code Marketplace
- Open VS Code
- Go to Extensions (Cmd+Shift+X / Ctrl+Shift+X)
- Search for "Weaver Playground"
- Click Install
From VSIX File
code --install-extension weaver-playground-1.2.0.vsix
🎯 Quick Start
Open Playground
- Press
Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux)
- Type "Weaver Playground: Open Panel"
- Or click the Weaver icon in the Activity Bar
Try an Example
- Click "Examples" button
- Select "Filter Example"
- Click "Run" to see the transformation
Load Your Data
- Click "Load File" to import data
- Or paste directly into the Input panel
- Select the correct input format
Write Transformation
%dw 2.0
output application/json
---
payload filter (item) -> item.age >= 18
Execute
- Click "Run" or enable auto-execute
- View results in Output panel
🔧 Configuration
Access settings via Cmd+, (Mac) or Ctrl+, (Windows/Linux), then search for "wp":
| Setting |
Default |
Description |
wp.cliPath |
(auto) |
Custom CLI path (leave empty for auto-download) |
wp.autoDownload |
true |
Automatically download CLI if not found |
wp.timeout |
30000 |
Execution timeout in milliseconds |
wp.defaultInputFormat |
application/json |
Default input MIME type |
wp.defaultOutputFormat |
application/json |
Default output MIME type |
wp.autoValidate |
true |
Validate scripts on save |
📚 Examples
Filter Array
%dw 2.0
output application/json
---
payload filter (item) -> item.age >= 18
Input:
[{"name":"Alice","age":25},{"name":"Bob","age":17}]
Output:
[{"name":"Alice","age":25}]
%dw 2.0
output application/json
---
{
users: payload map {
fullName: $.name,
isAdult: $.age >= 18
}
}
Aggregate Data
%dw 2.0
output application/json
---
{
total: sizeOf(payload),
avgAge: avg(payload.age)
}
| Format |
Input |
Output |
Validation |
| JSON |
✅ |
✅ |
✅ |
| XML |
✅ |
✅ |
✅ |
| CSV |
✅ |
✅ |
✅ |
| YAML |
✅ |
✅ |
✅ |
| Properties |
✅ |
✅ |
✅ |
| NDJSON |
✅ |
✅ |
✅ |
🚀 Commands
| Command |
Shortcut |
Description |
wp.openPanel |
- |
Open interactive playground |
wp.run |
- |
Execute current script |
wp.validate |
- |
Validate script syntax |
wp.installCLI |
- |
Manually download CLI |
wp.openDocs |
- |
Open DataWeave documentation |
wp.openSettings |
- |
Open extension settings |
wp.loadExample |
- |
Load example transformation |
🏗️ Architecture
Session Management
- Creates unique session directory per VS Code instance
- Reuses temp files based on content hash (MD5)
- Automatic cleanup on extension deactivate
- No duplicate files for identical content
Worker Threads
- Large files (>1MB) processed in separate thread
- Prevents UI blocking
- Efficient memory usage
CLI Integration
- Auto-downloads from GitHub releases
- Extracts to user storage directory
- No PATH modification required
- Automatic version detection
🐛 Troubleshooting
CLI Not Found
- Check status bar shows "✓ WP"
- If shows "⚠ WP (No CLI)", run command: "Weaver Playground: Install CLI"
- Verify
wp.autoDownload is enabled in settings
Execution Timeout
- Increase
wp.timeout in settings
- Default is 30 seconds (30000ms)
- Large transformations may need more time
Validation Errors
- Ensure script starts with
%dw 2.0
- Check input format matches selected type
- Verify DataWeave syntax is correct
📖 Resources
📄 License
MIT License - See LICENSE file for details
🙏 Acknowledgments
📊 What's New
Version 1.2.0
- ✅ Session-based temp file management
- ✅ Intelligent file reuse (no duplicates)
- ✅ Fixed input validation for multiple file formats
- ✅ Automatic session cleanup
- ✅ Performance optimizations
Version 1.1.0
- ✅ Auto-download CLI feature
- ✅ No admin permissions required
- ✅ Worker threads for large files
- ✅ Improved error handling
Made with ❤️ for the DataWeave community
Report Issue | Request Feature
Legal
This extension integrates with the DataWeave CLI (“dw”) from
https://github.com/mulesoft/data-weave-cli.
DataWeave CLI is licensed under the BSD‑3‑Clause License.
Full license text is included in THIRD_PARTY_NOTICES.
Weaver Playground itself is licensed under the MIT License (see LICENSE).
This project is not affiliated with MuleSoft or Salesforce.
"MuleSoft","DataWeave" and "Salesforce" may be trademarks of their respective owners.