Skip to content

v1.0.8 - Philosophy & Documentation Update

Choose a tag to compare

@deftio deftio released this 25 Aug 00:33

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.log function 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.