# data-transform
> Data transformation utilities for JSON, CSV, XML, YAML, and Markdown. Parse, convert, query, and transform data between formats with JQ-like filtering support.
- Author: Sahiix@1
- Repository: sahiixx/moltworker
- Version: 20260201214731
- Stars: 0
- Forks: 0
- Last Updated: 2026-02-06
- Source: https://github.com/sahiixx/moltworker
- Web: https://mule.run/skillshub/@@sahiixx/moltworker~data-transform:20260201214731
---
---
name: data-transform
description: Data transformation utilities for JSON, CSV, XML, YAML, and Markdown. Parse, convert, query, and transform data between formats with JQ-like filtering support.
---
# Data Transform
Convert and transform data between formats with powerful querying capabilities.
## Quick Start
### JSON to CSV
```bash
node /path/to/skills/data-transform/scripts/convert.js data.json --to csv
```
### Query JSON with JSONPath
```bash
node /path/to/skills/data-transform/scripts/query.js data.json "$.users[*].name"
```
### Parse CSV
```bash
node /path/to/skills/data-transform/scripts/parse.js data.csv --format csv
```
## Scripts
### convert.js
Convert between data formats.
**Usage:**
```bash
node convert.js --to [OPTIONS]
```
**Formats:**
- `json` - JSON
- `csv` - Comma-separated values
- `tsv` - Tab-separated values
- `yaml` - YAML
- `xml` - XML
- `markdown` - Markdown table
- `html` - HTML table
**Options:**
- `--to ` - Target format (required)
- `--from ` - Source format (auto-detected if not specified)
- `--output ` - Save to file
- `--pretty` - Pretty print output
### query.js
Query and filter data using JSONPath or JQ-like syntax.
**Usage:**
```bash
node query.js [OPTIONS]
```
**Query Syntax:**
- `$.field` - Access field
- `$.array[0]` - Array index
- `$.array[*]` - All array elements
- `$.array[?(@.age > 18)]` - Filter
- `$..name` - Recursive descent
**Options:**
- `--format ` - Input format (default: auto)
- `--output ` - Output format: json, csv, lines (default: json)
### parse.js
Parse data files with format detection.
**Usage:**
```bash
node parse.js [OPTIONS]
```
**Options:**
- `--format ` - Force input format
- `--validate` - Validate and report errors
- `--schema ` - Validate against JSON schema
### transform.js
Apply transformations to data.
**Usage:**
```bash
node transform.js --map
node transform.js --filter
node transform.js --sort
```
**Options:**
- `--map ` - Transform each item (JS expression)
- `--filter ` - Filter items (JS expression)
- `--sort ` - Sort by field
- `--reverse` - Reverse order
- `--unique ` - Remove duplicates
- `--group ` - Group by field
- `--limit ` - Limit results
### diff.js
Compare two data files.
**Usage:**
```bash
node diff.js [OPTIONS]
```
**Options:**
- `--format ` - Output format: unified, json, side-by-side
- `--ignore-order` - Ignore array order
- `--ignore-case` - Case-insensitive comparison
## Examples
### Convert JSON Array to CSV
```bash
echo '[{"name":"John","age":30},{"name":"Jane","age":25}]' | node convert.js - --to csv
```
Output:
```
name,age
John,30
Jane,25
```
### Query Nested Data
```bash
node query.js api-response.json "$.data.users[?(@.active==true)].email"
```
### Transform Data
```bash
node transform.js users.json --filter "x.age >= 18" --sort age --map "{name: x.name, adult: true}"
```
### CSV to Markdown Table
```bash
node convert.js report.csv --to markdown
```
Output:
```markdown
| Name | Score |
|------|-------|
| Alice | 95 |
| Bob | 87 |
```
### Compare JSON Files
```bash
node diff.js old-config.json new-config.json --format unified
```
### Validate JSON Against Schema
```bash
node parse.js data.json --validate --schema schema.json
```
## Supported Formats
| Format | Read | Write | Notes |
|--------|------|-------|-------|
| JSON | ✅ | ✅ | Full support |
| CSV | ✅ | ✅ | Auto-detects headers |
| TSV | ✅ | ✅ | Tab-delimited |
| YAML | ✅ | ✅ | Single document |
| XML | ✅ | ✅ | Basic support |
| Markdown | ✅ | ✅ | Tables only |
| HTML | ❌ | ✅ | Tables only |
## Output Formats
### query.js (JSON mode)
```json
{
"query": "$.users[*].name",
"results": ["John", "Jane", "Bob"],
"count": 3
}
```
### diff.js (JSON mode)
```json
{
"added": [{"path": "$.newField", "value": "new"}],
"removed": [{"path": "$.oldField", "value": "old"}],
"changed": [{"path": "$.field", "old": 1, "new": 2}],
"unchanged": 10
}
```