{"id":47819204,"url":"https://github.com/ashutosh-vijay/dataweave-studio","last_synced_at":"2026-06-10T00:00:33.131Z","repository":{"id":348322519,"uuid":"1197477606","full_name":"Ashutosh-Vijay/DataWeave-Studio","owner":"Ashutosh-Vijay","description":"Local DataWeave Playground - no internet needed","archived":false,"fork":false,"pushed_at":"2026-06-09T20:07:56.000Z","size":8585,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-09T21:09:24.809Z","etag":null,"topics":["dataweave","desktop-app","developer-tools","mulesoft","rust","tauri","typescript"],"latest_commit_sha":null,"homepage":"https://ashutosh-vijay.dev/dataweave/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ashutosh-Vijay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"Audit/Audit.md","citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-31T16:00:54.000Z","updated_at":"2026-06-09T20:08:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"742992df-f578-4df6-a2f7-44de216f1663","html_url":"https://github.com/Ashutosh-Vijay/DataWeave-Studio","commit_stats":null,"previous_names":["ashutosh-vijay/dataweave-studio"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/Ashutosh-Vijay/DataWeave-Studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashutosh-Vijay%2FDataWeave-Studio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashutosh-Vijay%2FDataWeave-Studio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashutosh-Vijay%2FDataWeave-Studio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashutosh-Vijay%2FDataWeave-Studio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ashutosh-Vijay","download_url":"https://codeload.github.com/Ashutosh-Vijay/DataWeave-Studio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashutosh-Vijay%2FDataWeave-Studio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34130642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dataweave","desktop-app","developer-tools","mulesoft","rust","tauri","typescript"],"created_at":"2026-04-03T19:02:04.821Z","updated_at":"2026-06-10T00:00:33.122Z","avatar_url":"https://github.com/Ashutosh-Vijay.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DataWeave Studio\n\nA desktop IDE for DataWeave 2.0 — run, test, and debug transforms locally without Anypoint Studio.\n\n\u003e **Anypoint Studio is 2 GB. The online playground can't go offline. The VS Code extension needs Java + Maven. DataWeave Studio bundles everything in one ~90 MB installer.**\n\nBuilt with Tauri v2 (Rust) + React + TypeScript + Monaco Editor. Ships with a bundled JRE 17 and the DataWeave runtime — no Java install required.\n\n**[Download](https://ashutosh-vijay.dev/dataweave/)** | **[Landing Page](https://ashutosh-vijay.dev/dataweave/)** | **[Releases](https://github.com/Ashutosh-Vijay/DataWeave-Studio/releases)**\n\n---\n\n## Preview\n\n![Welcome screen — start transforming](docs/screenshots/idle_page_start_transforming_dark_mode.png)\n*Welcome screen — blank transform, open workspace, import cURL, snippets, message flow — all one click away*\n\n![Script editor with 309-function autocomplete](docs/screenshots/auto_suggestion_on_typing_monaco_dark_mode.png)\n*Monaco editor with DataWeave syntax highlighting, 309-function autocomplete with signature hints, and live output*\n\n![Message Flow Designer — visual drag-and-drop canvas](docs/screenshots/message_flow_dark_mode.png)\n*Message Flow Designer — chain Set Payload, Transform, HTTP, Salesforce, and Database connectors with step-through debugging*\n\n![Message Flow Designer — Paper light theme](docs/screenshots/message_flow_paper_theme.png)\n*Flow Designer in Paper (light) theme with Salesforce connector config*\n\n![Function Reference Browser](docs/screenshots/dataweave_function_reference_dark_mode.png)\n*Built-in function reference — searchable catalog of all 309 DataWeave functions with signatures and descriptions*\n\n![cURL importer](docs/screenshots/import_curl_dark_mode.png)\n*cURL importer — paste any cURL command, auto-fills payload and headers, generates a matching DW transform*\n\n![Snippets sidebar](docs/screenshots/snippets_dark_mode.png)\n*Snippets — reusable DW templates for common patterns like map, filter, group-by, reduce*\n\n![Secure Properties Tool](docs/screenshots/secure_tool_encryption_dark_mode.png)\n*Offline Secure Properties Tool — encrypt/decrypt values locally using AES-CBC, nothing sent to any server*\n\n![Focus mode — Paper theme](docs/screenshots/focus_mode_paper_theme.png)\n*Focus layout in Paper (light) theme — editor-first with right-side output drawer*\n\n![Settings — appearance customization](docs/screenshots/settings_dark_mode.png)\n*Settings — Dusk/Paper themes, 5 accent colors, Workbench and Focus layouts*\n\n---\n\n## Why This Exists\n\nDataWeave testing today is painful:\n\n- **Anypoint Studio** is 2 GB, Eclipse-based, and takes minutes to start. Testing a single DataWeave script requires deploying an entire Mule app locally.\n- **The online Playground** runs in the browser (WASM) — no offline mode, no binary format support (Excel, Avro, Protobuf), payload size limited by browser memory, no version switching, no dark/light theme toggle, and no direct URL sharing of scripts.\n- **The VS Code Extension** requires Java 8+ and Maven 3.6+ installed, a full Maven project structure (`pom.xml`, `src/main/dw/`, `src/test/dw/`), and manual scenario resource files for every input. Still in BETA after years.\n\nDataWeave Studio fixes all of it — one window, everything from a UI, no file management, no setup beyond running the installer.\n\n---\n\n## What Sets It Apart\n\n### Things no other DataWeave tool does:\n\n**1. Visual Message Flow Designer**\nDrag-and-drop flow canvas inspired by Anypoint Studio. Chain Set Payload, Transform, Set Variable, HTTP Request, Salesforce, Database, and Logger connectors into a pipeline. Run all at once or step through one node at a time — inspect payload, variables, and attributes at each stage.\n\n**2. cURL Importer**\nPaste any `curl` command from Postman, browser devtools, or manual copy. Method, headers, query params, and body auto-fill. Generates a matching DataWeave 2.0 script scaffold — JSON, XML, CSV, form-urlencoded, and multipart all handled. Live preview before import.\n\n**3. Secure Properties — Fully Offline**\nPaste your actual `secure-config.yaml` (with `![Base64Encrypted...]` values), provide your encryption key at runtime. Scripts run with real decrypted values. Key is never saved to disk. Also includes a standalone encrypt/decrypt tool (AES, Blowfish, DES, DESede, RC2) compatible with MuleSoft's `secure-properties-tool.jar`.\n\n**4. SOQL \u0026 SQL Query Modes**\nWrite a SOQL or SQL template with `:paramName` placeholders, run a DW script to produce a params object, see the final substituted query. JDBC-style auto-quoting for SQL. No other DataWeave tool has this.\n\n**5. Multi-Request Workspaces**\nPostman-style collections — group multiple transforms inside a single `.dwstudio` workspace. Each request has its own script, payload, context, named inputs, tests, and query template. Switch between them instantly.\n\n**6. DW 1.0 to 2.0 Migration**\nRewrites legacy scripts in-place. Converts directives, `flowVars`, `inboundProperties`, and type syntax automatically. Diff overlay shows old vs. new with one-click replacement.\n\n**7. Bundled Runtime — Zero Config**\nShips JRE 17 and the DataWeave runtime inside the app. No Java install, no `JAVA_HOME`, no Maven, no `PATH` changes. Download, install, run.\n\n---\n\n## vs. The Alternatives\n\n| Feature | DataWeave Studio | VS Code Extension | Online Playground | Anypoint Studio |\n|---|---|---|---|---|\n| **Setup** | Download + run | Java + Maven + project scaffold | Open browser | 2 GB download |\n| **Startup time** | ~1-2s (first), instant after | Depends on project indexing | Instant | Minutes |\n| **Offline** | Yes | Yes | No | Yes |\n| **Java required** | No (bundled JRE 17) | Yes (Java 8+ \u0026 Maven 3.6+) | No | Yes (bundled) |\n| **Visual flow designer** | Yes — drag-and-drop | No | No | Yes |\n| **cURL import** | Yes | No | No | No |\n| **Breakpoint debugging** | Flow-level step-through | Yes (full VS Code debugger) | No | Yes |\n| **Go to Definition / Rename** | No | Yes (LSP) | No | Yes |\n| **Type inference** | No | Yes (LSP) | No | Yes |\n| **Autocomplete** | 309 functions + signatures | LSP, type-aware | Basic suggestions | Full LSP |\n| **Context (vars, attrs, headers)** | UI — no files | Manual JSON scenario files | Partial | Full runtime |\n| **Config YAML (`${key}`)** | Yes | No | No | Yes (full runtime) |\n| **Secure config (`![encrypted]`)** | Yes — offline | No | No | Yes (full runtime) |\n| **SOQL/SQL query rendering** | Yes | No | No | Yes (full runtime) |\n| **Testing** | Snapshot tests + visual diff | Unit tests (`dw::test`) | No | MUnit |\n| **Multi-request workspaces** | Yes (Postman-style) | One mapping per file | No | Per-flow |\n| **Multipart form-data** | Visual builder | No | No | Yes (full runtime) |\n| **DW 1.0 → 2.0 migration** | Yes | No | No | Yes |\n| **Binary formats (xlsx, avro)** | Yes (file picker) | Yes (via Maven deps) | No | Yes |\n| **Publish to Exchange** | No | Yes | No | Yes |\n| **Dependency management** | Custom classpath | Maven (pom.xml) | No | Maven |\n| **Interactive tutorials** | Guided tour | No | Yes (step-by-step) | No |\n| **Themes** | Dusk + Paper + 5 accents | VS Code themes | Fixed dark | Dark only |\n| **Footprint** | ~90 MB | VS Code + Java + Maven | N/A (browser) | 2 GB+ |\n| **Live preview** | Auto-run (toggle) | AutoPreview (opt-in) | Always on | No |\n| **Execution time display** | Yes (ms) | No | No | No |\n| **Cancel running script** | Yes | No | No | No |\n| **Configurable timeout** | Yes | No | No | No |\n\n**In short:** Studio sits between the Playground and the VS Code extension. More powerful than the Playground (offline, testing, binary formats, real config). More convenient than the VS Code extension (no Java/Maven, no project scaffolding, everything in one window). Unique features like cURL import, Flow Designer, query modes, and secure properties that neither has.\n\n---\n\n## Features\n\n### Script Editor (Monaco)\n- DataWeave 2.0 syntax highlighting with custom Monarch tokenizer\n- **309-function autocomplete** with signature hints and module grouping\n- Context-aware suggestions from payload fields, variables, attributes, and config properties\n- Error highlighting with line markers and gutter glyphs — auto-scrolls to the failing line\n- Code formatting (Alt+Shift+F)\n- Bracket pair colorization\n- Auto-closing brackets/quotes, smart indentation\n- Configurable font family, font size, line height, tab size, word wrap\n- Minimap toggle\n\n### Payload \u0026 Input Management\n- **14+ MIME types** — JSON, XML, CSV, YAML, NDJSON, plain text, form-urlencoded, DataWeave, Java properties, Excel, Avro, Protocol Buffers, Flat File (COBOL copybooks), binary\n- Load file into payload via native file picker\n- **Named inputs** — add extra input streams as tabs (e.g., `lookup`, `config`, `schema`), each with its own editor and MIME type\n- **Multipart form-data builder** — add/remove parts visually with name, content-type, and text or file value; real MIME boundaries constructed in Rust\n- Binary payload support (`application/octet-stream`) with no size limit\n\n### HTTP Context Panel\n- HTTP method selector (GET, POST, PUT, DELETE, PATCH) — exposed as `attributes.method`\n- Query parameters editor with key/value pairs and enable/disable toggles\n- Headers editor with key/value pairs and enable/disable toggles\n- Variables panel with type picker (string or JSON) and per-row enable/disable\n\n### Configuration\n- **Config YAML** — paste `application.yaml` style config, resolve `${key}` placeholders in script and payload\n- **Secure Config YAML** — supports `![Base64Value]` encrypted notation, resolve `${secure::key}` placeholders\n- Nested dot-notation keys (e.g., `${salesforce.username}`)\n- Encryption settings per workspace: algorithm, mode, random IV toggle\n\n### Secure Properties Tool\n- Standalone encrypt/decrypt dialog (Cmd/Ctrl+Shift+E)\n- **5 algorithms**: AES, Blowfish, DES, DESede, RC2\n- **4 modes**: CBC, CFB, ECB, OFB\n- Random IV toggle for AES\n- One-click copy of result\n- Fully offline — compatible with MuleSoft's `secure-properties-tool.jar`\n\n### Message Flow Designer\n- Visual drag-and-drop canvas for pipelining connectors\n- **7 node types**: Set Payload, Transform, Set Variable, HTTP Request, Salesforce, Database, Logger\n- Run all nodes at once or **step through individually** — inspect payload, variables, and attributes at each stage\n- Variables carry through the pipeline (Set Variable stores into `vars`)\n- Per-node Monaco editors with syntax highlighting and autocomplete\n- Disable/enable nodes without deleting\n- Canvas zoom (Ctrl+scroll or +/- buttons)\n- Saved with workspace\n\n### Query Modes\n- **Salesforce Query (SOQL)** — write SOQL with `:paramName` template syntax, bind parameters from DW script output, see the final rendered query\n- **DB Query (SQL)** — SQL with `:paramName` parameters and JDBC-style auto-quoting (strings quoted, numbers bare, `null` → `NULL`)\n- Per-label script caching — switching between Transform / SOQL / SQL restores the previous script for that mode\n\n### Testing\n- **Per-request test collections** with status badges (pass / fail / untested)\n- Add tests with independent payloads per test\n- **Expected output capture** — run once, snapshot the output\n- **Two comparators**: exact (byte-for-byte) or semantic JSON (parse + deep compare)\n- **Visual diff on failure** — see exactly what changed\n- Execution time tracking per test\n- Filter by: all / failing / untested\n\n### cURL Importer\n- Paste any `curl` command (from Postman, browser devtools, or manual)\n- Auto-extracts method, headers, query params, body\n- Format detection: JSON, XML, CSV, form-urlencoded, multipart\n- Generates matching DataWeave 2.0 script scaffold\n- Multipart `-F` flag handling — parses part names, types, file paths\n- Live preview before import\n\n### Workspace Management\n- **`.dwstudio` format** (v2) — JSON files with full project state\n- **Multi-request collections** — multiple transforms per workspace (Postman-style)\n- Per-request state: script, payload, context, named inputs, query template, classpath, timeout, tests\n- Save / load / duplicate / delete workspaces\n- Pin frequently used workspaces in the sidebar\n- Resume last workspace on launch\n- **Draft auto-save** to localStorage on every keystroke (debounced 500ms)\n\n### Snippets Library\n12 built-in templates: hello world, map array, filter array, sort, group by, reduce/sum, pluck (object → entries), conditional output, read named input, format date, JSON → XML, variable + function. Click to insert at cursor.\n\n### Function Reference Browser\nSearchable catalog of all 309 DataWeave functions with signatures, descriptions, and module grouping. Click to insert function name at cursor. Lazy-loaded for performance.\n\n### DW 1.0 → 2.0 Migration\nRewrites legacy scripts in-place. Converts `%dw 1.0` directives, `flowVars`, `inboundProperties`, and type syntax. Diff overlay shows changes side-by-side with one-click replacement.\n\n### Execution Engine\n- **Long-lived Java server** — not CLI subprocess per run. ~10-50ms per execution after warm-up.\n- 64-entry LRU compile cache — repeated scripts skip recompilation\n- Background JVM warm-up on startup (hidden behind splash screen)\n- Configurable per-run timeout (default 30s, 0 = unlimited)\n- Cancel running scripts (kill by PID)\n- Execution time display in milliseconds\n- Custom classpath — add JARs and directories for `import java!` resolution\n\n### Output\n- Monaco editor with syntax highlighting\n- Format toggle: JSON (pretty-printed) / XML / Raw text\n- Error display with DW error codes, headline, details, and collapsible stack trace\n- Mapped error line numbers (de-offset from auto-generated header lines)\n- Copy to clipboard\n- Export to file (native save dialog)\n\n### Appearance \u0026 Layout\n- **Dusk** (dark) and **Paper** (light) themes with custom DataWeave syntax highlighting\n- **5 accent colors**: Emerald, Sky, Violet, Amber, Rose\n- **Workbench layout** — 3-column: icon rail + sidebar + main editor area with resizable panes\n- **Focus layout** — editor-first with toggleable right drawer for context\n- Responsive compact mode at ≤720px viewport width\n- Custom title bar with window controls\n- Configurable editor font, size, line height, tab size, word wrap, bracket guides\n\n### Command Palette \u0026 Shortcuts\nQuick access to all actions via **Cmd/Ctrl+K**. Grouped commands: Run, Workspace, Editor, View, Output, Node Label, Tools.\n\n---\n\n## Keyboard Shortcuts\n\n| Shortcut | Action |\n|---|---|\n| `Ctrl+Enter` / `Cmd+Enter` | Run script |\n| `Ctrl+S` / `Cmd+S` | Save workspace |\n| `Ctrl+K` / `Cmd+K` | Command palette |\n| `Ctrl+N` / `Cmd+N` | New workspace |\n| `Ctrl+O` / `Cmd+O` | Open workspace |\n| `Ctrl+D` / `Cmd+D` | Duplicate workspace |\n| `Ctrl+B` / `Cmd+B` | Toggle sidebar |\n| `Ctrl+L` / `Cmd+L` | Snippets |\n| `Ctrl+Shift+I` / `Cmd+Shift+I` | Import cURL |\n| `Ctrl+Shift+E` / `Cmd+Shift+E` | Secure Properties Tool |\n| `Ctrl+Shift+R` / `Cmd+Shift+R` | Toggle auto-run |\n| `Ctrl+Shift+T` / `Cmd+Shift+T` | Toggle theme |\n| `Ctrl+Shift+1` / `Cmd+Shift+1` | Workbench layout |\n| `Ctrl+Shift+2` / `Cmd+Shift+2` | Focus layout |\n| `Alt+Shift+F` | Format script |\n| `Ctrl+.` / `Cmd+.` | Toggle context drawer (Focus) |\n| `Ctrl+/` / `Cmd+/` | Show shortcuts |\n| `Escape` | Close dialogs |\n\n---\n\n## Installation\n\nDownload the latest installer from the **[landing page](https://ashutosh-vijay.dev/dataweave/)** or the [Releases page](https://github.com/Ashutosh-Vijay/DataWeave-Studio/releases):\n\n- **Windows** — `.exe` (NSIS installer), `.msi`, `_x64_portable.zip` (no install — unzip and run), or `_x64-setup.zip` (the installer, zipped, for proxy-blocked `.exe` downloads)\n- **macOS** — `.dmg` for Apple Silicon and Intel\n- **Linux** — `.AppImage`, `.deb`, or `.rpm`\n\n\u003e **The app isn't code-signed yet** (a free side-project — Apple notarization is ~$99/yr, a Windows EV cert ~$300+/yr). Your OS warns on first launch because the publisher isn't *verified* — not because the app is unsafe. See **[SECURITY.md](SECURITY.md)** for exactly what the app does and doesn't do on your network.\n\u003e\n\u003e Pick the path that matches what you're seeing:\n\u003e\n\u003e **Windows — \"Windows protected your PC\" (SmartScreen):** click **More info → Run anyway**.\n\u003e\n\u003e **Windows — \"Smart App Control has blocked this app\":** SmartScreen-style click-through won't appear here. Either use the **`_x64_portable.zip`** (unzip anywhere and run `DataWeave Studio.exe` — no installer), or, if Smart App Control is on, it can't be bypassed per-app without turning it off (which usually requires a Windows reset). On a personal machine without Smart App Control, the portable zip just runs.\n\u003e\n\u003e **Windows — \"Your system administrator has prevented this install\" (managed/work laptop):** that's a device-management policy on the *installer*. Try the **`_x64_portable.zip`** (no install step). If your IT also blocks running unapproved `.exe`s (common at banks), you'll need IT to whitelist it — no unsigned app gets around that.\n\u003e\n\u003e **macOS — \"is damaged and can't be opened\":** that's just the unsigned-app quarantine, not real damage.\n\u003e 1. Drag **DataWeave Studio** into **Applications**.\n\u003e 2. **System Settings → Privacy \u0026 Security**, scroll down, **Open Anyway**, then confirm on next launch.\n\u003e 3. If it still won't open, clear the quarantine flag and launch:\n\u003e    ```bash\n\u003e    xattr -cr \"/Applications/DataWeave Studio.app\"\n\u003e    ```\n\u003e *(On macOS Sequoia and later the old right-click → Open trick no longer works for unsigned apps — use the steps above.)*\n\nJRE 17 and the DataWeave runtime are bundled — no separate Java installation needed.\n\n**Auto-update:** On by default — the app checks for a newer version on startup and shows a toast when one is available (nothing downloads without your click). Turn it off in **Settings → Advanced → Privacy** to make the app fully offline. Details in [SECURITY.md](SECURITY.md).\n\n---\n\n## Privacy \u0026 Security\n\n- **Local execution** — no code or data ever leaves your machine\n- **Zero telemetry** — no tracking, no analytics, no accounts\n- **Memory-only keys** — encryption keys held in memory only, never written to disk\n- **One optional network call** — a startup update check (to the release server), which you can disable in **Settings → Advanced → Privacy** for a 100% no-network app\n\nSee **[SECURITY.md](SECURITY.md)** for the full breakdown of data handling and network activity — written for compliance/security reviewers.\n\n---\n\n## Development Setup\n\n```bash\n# 1. Install dependencies\nnpm install\n\n# 2. Build the DW server JAR (requires Maven + JDK 17)\ncd dw-server \u0026\u0026 mvn package \u0026\u0026 cd ..\n# This produces src-tauri/resources/dw-server/dwstudio-server.jar\n\n# 3. Set up a JRE in resources (for dev, just symlink your system JDK)\n#    Production builds use jlink to create a minimal JRE\n\n# 4. Run in development mode\nnpx tauri dev\n\n# 5. Build for production\nnpx tauri build\n```\n\n---\n\n## Architecture\n\nDataWeave Studio does **not** shell out to the MuleSoft CLI for each run. Instead:\n\n1. On first launch, the Rust backend spawns a **long-lived Java server** (`dwstudio-server.jar`) using the bundled JRE 17\n2. The server loads the DataWeave 2.x runtime libraries (runtime, core-modules, java-module, yaml-module, etc.) once\n3. Each script execution is a **JSON request/response over stdin/stdout** — no subprocess spawning per run\n4. A 64-entry LRU compile cache skips recompilation for repeated scripts\n5. Result: ~10-50ms per run after warm-up (vs ~700ms with the native CLI)\n\n---\n\n## Project Structure\n\n```\nsrc/                        # React frontend\n  components/               # UI components\n    FlowDesigner.tsx        # Visual message flow designer canvas\n    MiniEditor.tsx          # Lightweight Monaco wrapper for flow config panels\n    Sidebar.tsx             # Icon rail with snippets, tools, settings\n  hooks/                    # useDWRunner, useWorkspace, useEditorFont\n  dataweaveGrammar.ts       # Monarch tokenizer for DW syntax highlighting\n  dataweaveCompletions.ts   # 309-function autocomplete with signature parsing\n  dataweaveDocs.ts          # Function reference data (signatures, descriptions)\n  dataweaveHover.ts         # Hover provider for DW functions\n  dataweaveTheme.ts         # Dusk + Paper Monaco themes\n  ThemeContext.tsx           # Dark/light theme + accent color state\nsrc-tauri/                  # Rust backend\n  src/dw_runner.rs          # Script execution via long-lived Java server\n  src/dw_server.rs          # Spawns and manages dwstudio-server.jar process\n  src/workspace.rs          # Workspace save/load\n  resources/dw-server/      # Bundled dwstudio-server.jar\n  resources/jre/            # Bundled minimal JRE 17 (via jlink)\ndw-server/                  # Scala/Java server (Maven project)\n  src/main/scala/.../DwServer.scala  # Long-lived DW runtime with compile cache\nlicenses/                   # Third-party licenses\n```\n\n---\n\n## Known Limitations\n\n- First launch boots the DataWeave runtime — about 1-2 seconds, hidden behind the splash. Subsequent runs are ~10-50ms.\n- Undo/redo is per-session and does not persist across workspace reloads.\n- Config property autocomplete triggers on `$` — type `${` to see suggestions.\n- Trackpad pinch-to-zoom in the flow designer is limited by WebView2 — use Ctrl+scroll or the +/- buttons instead.\n- No Language Server Protocol (LSP) — no Go to Definition, Find References, Rename Symbol, or type inference. The VS Code extension has these via MuleSoft's LSP.\n- No breakpoint-level debugging of DataWeave expressions (the Flow Designer offers node-level step-through instead).\n- No Anypoint Exchange publishing or Maven dependency management.\n\n**What actually works that you might expect not to:**\n\n- `import java!java::lang::Math`, `import java!java::util::UUID`, etc. — any standard JDK class works via the `java!` module. The runtime is a real JVM with full reflection.\n- Secure config (`![encrypted]`) — implemented in-app, works fully offline without the Mule runtime.\n- Hot-add classpath — drop JARs into the classpath panel and `import java!` resolves them immediately without restart.\n\n**Genuinely Mule runtime-only features (not available)** — these need a deployed Mule application's message context, not just a JVM:\n\n| Feature | Workaround in DataWeave Studio |\n|---|---|\n| `p(\"key\")` / `Mule::p(\"key\")` property lookup | Use the **Config YAML** panel — `${key}` is substituted before each run |\n| `Mule::lookup(\"flowName\", payload)` | No equivalent — extract the logic into a named input or separate script |\n| Connector-specific types (Salesforce `SObject`, DB `ResultSet`, etc.) | Pass a JSON mock of the data structure as payload |\n\n\u003e `output application/java` is supported — we render the Java object as JSON\n\u003e for display, so you can still see the value structure even though the actual\n\u003e JVM-object form only matters in a Mule flow.\n\n---\n\n## Third-Party Licenses\n\nThis application embeds the [DataWeave runtime](https://github.com/mulesoft/data-weave) and core modules by MuleSoft/Salesforce, licensed under the BSD 3-Clause License. See [licenses/DATAWEAVE-CLI-LICENSE.txt](licenses/DATAWEAVE-CLI-LICENSE.txt).\n\nDataWeave Studio is not affiliated with, endorsed by, or sponsored by MuleSoft or Salesforce.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashutosh-vijay%2Fdataweave-studio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fashutosh-vijay%2Fdataweave-studio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashutosh-vijay%2Fdataweave-studio/lists"}