A minimal, human-readable, machine-parsable configuration format with built-in schema validation.
VZparse is a modern configuration format that combines the simplicity of YAML with the power of JSON, plus advanced features like schema validation, template strings, and imports.
- Minimal syntax - Simple and intuitive
- Schema validation - Built-in type checking with constraints
- Template strings - Dynamic values with ${variable} syntax
- Import system - Modular configuration with imports
- Multiline strings - Rich text with metadata support
- Comments - Full documentation support
- Type-safe - Built-in support for all data types
- Error handling - Detailed error messages with context
# Application configuration
app: {
name: "MyApp"
version: "1.0.0"
debug: true
}
# Schema validation
schema: {
id: "int(min:1,max:1000)!"
name: "string(minLength:3,maxLength:50)!"
email: "string(format:email)!"
}
# Template strings
user: {
name: "Alice"
role: "admin"
}
greeting: "Hello, ${user.name}! You are a ${user.role}."
# Multiline strings with metadata
readme: |markdown
# MyApp Configuration
This is a comprehensive configuration file.
## Features
- Authentication
- API endpoints
- Database connection
This monorepo contains:
- apps/vzparse-js-sdk - VZparse parser library for TS/JS
- apps/vz-vscode - VS Code extension for VZparse
- apps/website - Documentation website
# Install dependencies
bun install
# Build all packages
bun run build
# Run tests
bun run test
# Start development
bun run dev
# Install the parser
cd apps/parser
bun install
# Run examples
bun run examples
# Run tests
bun test
import { VZ } from 'vzparse';
const config = VZ.parse(`
app: {
name: "MyApp"
version: "1.0.0"
}
user: {
name: "Alice"
role: "admin"
}
greeting: "Hello, ${user.name}! You are a ${user.role}."
`, {
resolveTemplates: true,
context: { user: { name: 'Alice', role: 'admin' } }
});
console.log(config.greeting); // "Hello, Alice! You are an admin."
# Package the extension
cd apps/vz-vscode
bun run package
# Install the extension
code --install-extension vz-vscode-0.2.0.vsix
# Start the development server
cd apps/website
bun run dev
# Build for production
bun run build
- bun run build - Build all packages
- bun run dev - Start development servers
- bun run test - Run all tests
- bun run lint - Lint all packages
- bun run format - Format all code
- bun run clean - Clean all build artifacts
- bun run examples - Run parser examples
- bun run package:vscode - Package VS Code extension
- bun run publish:vscode - Publish VS Code extension
# Clone the repository
git clone https://github.com/skorotkiewicz/vzparse.git
cd vzparse
# Install dependencies
bun install
# Build all packages
bun run build
- Fork the repository
- Create a feature branch: git checkout -b feature/amazing-feature
- Make your changes
- Run tests: bun run test
- Commit your changes: git commit -m 'Add amazing feature'
- Push to the branch: git push origin feature/amazing-feature
- Open a Pull Request
We use Biome for code formatting and linting:
# Format code
bun run format
# Lint code
bun run lint
- Specification v1.0 - Complete language specification
- ABNF Grammar - Formal grammar definition
- Examples - Real-world usage examples
- API Reference - Complete API documentation
MIT License - see LICENSE for details.
- Inspired by YAML, JSON, and modern configuration languages
- Built with TypeScript and Bun
- Documentation powered by VitePress