Repository navigation
v1.0.8 - Philosophy & Documentation Update
What's Changed
Philosophy & Documentation
- Comprehensive philosophy documentation - Deep dive into jado's design decisions and the "path not taken" in JavaScript
- Functor pattern explanation - How jado brings Haskell-like uniform operations to JavaScript without the jargon
- Known quirks documented - Clear documentation of design decisions and edge cases
- Enhanced examples - Shows how
jado.map()works on ALL types with sensible, predictable behavior
Improvements
- Fixed
jado.logfunction that was commented out but still being called - Added comprehensive path operation tests (22 tests covering edge cases)
- Documented path operation limitations
- Build process now auto-updates version from package.json
- Added minified UMD version and SRI hashes for CDN security
Testing
- New comprehensive test suite for path operations
- Quick smoke test for CI validation
- All tests passing on Node 18+
Modern Updates
- Copyright year updated to 2025
- GitHub Actions CI (replacing deprecated Travis CI)
- ESM module support alongside UMD
- Clean project structure (src/, dist/)
The Core Insight
Jado shows that many problems we solve with types could also be solved by making operations more uniform. It's not that one approach is better - they solve different problems:
- Type safety catches errors at compile time
- Uniform operations eliminate entire categories of runtime errors by making them impossible
// One operation, any type, sensible behavior
jado.map(23, x => x * 2) // 46 (singleton stays singular)
jado.map([1,2,3], x => x * 2) // [2, 4, 6] (arrays work as expected)
jado.map({a:1, b:2}, x => x * 2) // {a: 2, b: 4} (objects preserve keys)
jado.map('hello', x => x.toUpperCase()) // 'HELLO' (strings are atomic)While JavaScript chose explicit type safety and TypeScript doubled down on it, jado remains an interesting exploration of the alternative path.