Releases: dwekat/tooner
v0.1.4
tooner
0.1.4
Patch Changes
- Update repository URLs to dwekat organization
0.1.3
Patch Changes
-
c030721: Chore: Update dependencies and migrate to ESLint v9 flat config.
- Updated @types/node, @typescript-eslint/*, @vitest/coverage-v8, commander, eslint, eslint-config-prettier, vitest to latest versions
- Migrated from .eslintrc.cjs to eslint.config.js (ESLint v9 flat config format)
-
42cc922: Security: Fix glob CLI command injection vulnerability (CVE-2025-64756).
- Added pnpm override to force glob@>=10.5.0
- Upgraded transitive dependency glob 10.4.5 → 13.0.0
-
6afc99e: Fix: Resolve 5 additional ReDoS vulnerabilities in decoder.
- Removed
[ \t]*before(.*)$in regex patterns to prevent catastrophic backtracking - Added
.trimStart()calls to handle whitespace in JavaScript instead
- Removed
-
320a772: Security & Bug Fixes - 100% Test Pass Rate Achieved
Security Fixes
- Fixed 5 ReDoS (Regular Expression Denial of Service) vulnerabilities in decoder
- Replaced vulnerable
\s*patterns with[ \t]*to prevent exponential backtracking on malicious input
Bug Fixes
- Array length validation: Fixed
parseArrayto correctly track consumed lines when delegating toparseListFormat - Path expansion conflicts: Non-dotted keys now properly check for conflicts during path expansion in strict mode
- Array overflow detection: Added validation to detect extra list items beyond declared array count
- Missing colon detection: Fixed nested context tracking to properly throw errors for missing colons in key-value pairs
Test Coverage
- All 363/363 official TOON specification tests now passing (100%)
- Up from 358/363 (98.6%)
Details
- Added
depthparameter throughout parsing functions to track nested contexts - Improved error messages with accurate line numbers
- Enhanced validation for strict mode compliance
v0.1.3
tooner
0.1.3
Patch Changes
-
c030721: Chore: Update dependencies and migrate to ESLint v9 flat config.
- Updated @types/node, @typescript-eslint/*, @vitest/coverage-v8, commander, eslint, eslint-config-prettier, vitest to latest versions
- Migrated from .eslintrc.cjs to eslint.config.js (ESLint v9 flat config format)
-
42cc922: Security: Fix glob CLI command injection vulnerability (CVE-2025-64756).
- Added pnpm override to force glob@>=10.5.0
- Upgraded transitive dependency glob 10.4.5 → 13.0.0
-
6afc99e: Fix: Resolve 5 additional ReDoS vulnerabilities in decoder.
- Removed
[ \t]*before(.*)$in regex patterns to prevent catastrophic backtracking - Added
.trimStart()calls to handle whitespace in JavaScript instead
- Removed
-
320a772: Security & Bug Fixes - 100% Test Pass Rate Achieved
Security Fixes
- Fixed 5 ReDoS (Regular Expression Denial of Service) vulnerabilities in decoder
- Replaced vulnerable
\s*patterns with[ \t]*to prevent exponential backtracking on malicious input
Bug Fixes
- Array length validation: Fixed
parseArrayto correctly track consumed lines when delegating toparseListFormat - Path expansion conflicts: Non-dotted keys now properly check for conflicts during path expansion in strict mode
- Array overflow detection: Added validation to detect extra list items beyond declared array count
- Missing colon detection: Fixed nested context tracking to properly throw errors for missing colons in key-value pairs
Test Coverage
- All 363/363 official TOON specification tests now passing (100%)
- Up from 358/363 (98.6%)
Details
- Added
depthparameter throughout parsing functions to track nested contexts - Improved error messages with accurate line numbers
- Enhanced validation for strict mode compliance
v0.1.2
Changes
- Dependencies: Updated all dependencies to latest versions
- Updated devDependencies (TypeScript, ESLint, Prettier, tsup, etc.)
- Updated runtime dependencies (yaml@2.8.1)
Package Info
- Size: 927 KB unpacked, 179.5 KB tarball
- Tests: 358/363 passing (98.6%)
v0.1.1 - Critical Bug Fix: Decoder Now Works!
🚨 Critical Bug Fix
The Issue
v0.1.0 had a critical bug where the decode() function was completely broken! It was importing from a placeholder in encoder.ts that threw errors. The actual working decoder in decoder.ts was never being used.
What's Fixed
✅ Decoder now works! All entry points properly import from decoder.ts
✅ Minified builds for better performance (~15 KB per bundle)
✅ Externalized dependencies (yaml, @iarna/toml, commander)
✅ Source maps included for production debugging
Package Size
- Unpacked: 927 KB (was 453 KB but broken)
- Code: 124 KB minified (was 107 KB unminified encoder-only)
- Source maps: 760 KB (for production debugging)
- Compressed: 179.5 KB
Test Coverage
358/363 tests passing (98.6%)
Breaking Changes
None - this is a bug fix that makes the decoder actually work as advertised.
Recommendation
All v0.1.0 users should upgrade immediately as the decoder was non-functional in that release.
npm install tooner@latestv0.1.0 - Complete Decoder Implementation
🎉 First Production Release
Highlights
- Complete TOON Encoder & Decoder with 358/363 tests passing (98.6% coverage)
- Full support for all TOON formats: inline arrays, list format, tabular arrays
- Path expansion with
expandPaths: 'safe'option - Strict mode with indentation validation
- Support for custom indent sizes and all delimiters (comma, tab, pipe)
- Comprehensive escape sequence handling
- Tree-shakable exports for minimal bundle size
Features
✅ Encode/Decode TOON format
✅ Convert from/to JSON, YAML, TOML
✅ CLI tool for command-line usage
✅ TypeScript with full type definitions
✅ ESM + CJS dual package support
Known Limitations
- 5 advanced edge cases (expansion conflicts, nested arrays validation) planned for v0.2.0
Installation
npm install toonerSee the README for full documentation and examples.
v0.1.0-alpha.1
Minor Update
- Move Buy Me a Coffee button to top of README for better visibility
- Updated README now shows on npm package page
No code changes from v0.1.0-alpha.0.
v0.1.0-alpha.0 - Initial Alpha Release
🚀 First Alpha Release
tooner - Token-efficient serialization for LLMs
This is an experimental alpha release with basic functionality. The encoder and decoder are still under active development.
⚠️ Alpha Warning
This release is NOT production-ready:
- ✅ Basic TOON encoder works for simple cases
- ❌ Encoder incomplete (217/363 tests failing)
- ❌ Decoder not implemented (throws error)
- ❌ Missing TOON spec features (list format, tabular arrays, delimiters, key folding)
📦 Installation
npm install tooner@alpha
# or
pnpm add tooner@alpha✨ What Works
Tree-Shakable Package Structure:
- ✅
tooner- Core encoder/decoder - ✅
tooner/json- JSON ↔ TOON converter - ✅
tooner/yaml- YAML ↔ TOON converter - ✅
tooner/toml- TOML ↔ TOON converter
CLI Tool:
npx tooner@alpha encode input.json -o output.toon
npx tooner@alpha encode input.yaml -f yaml -o output.toonBasic Encoding:
import { encode } from 'tooner';
const data = {
name: 'Alice',
age: 30,
tags: ['reading', 'gaming']
};
const toon = encode(data);
// Output:
// name: Alice
// age: 30
// tags[2]: reading,gaming🎯 Architecture Highlights
- Dual Package: ESM + CJS support
- Tree-Shakable: Only bundle what you import
- TypeScript: Fully typed with strict mode
- Zero Core Dependencies: Core has no runtime deps
- Format Dependencies: YAML/TOML only bundled when imported
📚 Resources
🔜 Coming Soon
To reach stable v1.0.0, we need to complete:
- Complete TOON encoder implementation (all spec features)
- Implement TOON decoder
- Pass all 363 official test fixtures
- Performance benchmarks
- API documentation
🤝 Contributing
Contributions welcome! The project follows the official TOON specification.
Note: This alpha release is for early testing and feedback. Use at your own risk in production environments.