Posts

๐Ÿ›ก️ Safe and Declarative Input Handling with ObjNavigator

๐Ÿ›ก️ Safe and Declarative Input Handling with   ObjNavigator When building   distributed systems ,   WebSocket pipelines , or   HTTP APIs , you constantly handle data from outside your trust boundary. Query parameters, JSON payloads, and message frames often arrive as   strings , may be   malformed , and should never be consumed directly by business logic. Before using input, it should be: Coerced   into runtime types (numbers, booleans, dates, etc.) Validated   against business rules Handled safely   when invalid — often   without throwing In asynchronous or message-driven systems, throwing exceptions is often impractical. Errors must be   reported, emitted, or logged , while the system continues running. Traditional imperative handling leads to boilerplate like this: try { const value = Number (req. query . value ); if ( isNaN (value) || value < 0 ) throw new Error ( "Invalid value" ); // business logic here } catch...

๐Ÿฆ v0.0.0-dev.5 — Major Advancement

๐Ÿฆ v0.0.0-dev.5 — Major Advancement We’re excited to release   v0.0.0-dev.5   of   @fizzwiz/vanilla , introducing significant semantic enhancements. This version brings   contextual navigation   via expressions,   validation   via   coerce()   and   validate() , and   fine-grained error handling   via   opts : Expressions:   Most   ObjNavigator   methods now accept not only static paths to the next context but also functions returning the next context. The next context can be a nested sub-object or an independent object. This enables context-specific navigation, such as using CSS query selectors when navigating DOM documents. Validation:   Two new methods,   coerce()   and   validate() , allow precise validation and coercion of input objects. Opts:   These methods accept an optional   opts   parameter for fine-grained error handling. You can define whether an error triggers...

๐Ÿฆ v0.0.0-dev.2 — Sweet Refinements

๐Ÿฆ v0.0.0-dev.2 — Sweet Refinements We’re excited to release   v0.0.0-dev.2   of   @fizzwiz/vanilla , continuing to polish the foundation laid by the   First Brick   (v0.0.0-dev.1). This update focuses on   cleaning up inconsistencies and making the API smoother : Documentation & typos:   Fixed minor inconsistencies between the code and the docs, ensuring clarity and correctness. New alias:   The method   within()   now also responds to the shorter, more intuitive alias   with() , making scoped navigation even cleaner. ๐Ÿงช As with previous prereleases, this version is meant for exploration and feedback. Your suggestions help shape the library’s future features and usability. Next steps:   Experiment with the library, and let us know how it feels! ๐Ÿ‘‰   ๐Ÿฆ —   @fizzwiz   ✨

๐Ÿงฑ v0.0.0-dev.1 — First Brick

๐Ÿงฑ v0.0.0-dev.1 — First Brick We’re thrilled to announce the   first prerelease   of   @fizzwiz/vanilla :   v0.0.0-dev.1   — the   First Brick   laying the foundation for a library dedicated to   providing lightweight semantics for working with plain JSON objects . This release unveils the core abstractions:   OptionStore   and   ObjNavigator . OptionStore:   Store and retrieve options by type, with automatic lookup along an instance’s prototype chain. ObjNavigator:   Navigate and manipulate nested objects safely and intuitively, supporting scoped navigation with   within()   and returning to the parent with   without() . ๐Ÿงช This is a   prerelease , intended for exploration and feedback. Your early experiences and suggestions will help shape the API and future features. "Let’s build clear, maintainable JSON semantics — together." —   @fizzwiz ✨

๐ŸŒ Plain JavaScript Objects — the True Language of Distributed Systems

๐ŸŒ Plain JavaScript Objects — the True Language of Distributed Systems When designing distributed or asynchronous systems — systems that exchange data between independent nodes, peers, or services — we discover one powerful truth: The most universal data structure in JavaScript is the plain object. Whether you call it a   map ,   record , or   JSON structure , the plain object ( {} ) is the simplest, most portable form of state. It is naturally serializable, easy to merge, and readable across all programming environments. And yet, many developers instinctively reach for   classes and types   when defining system state — especially configuration or metadata. But in asynchronous workflows, this introduces unnecessary coupling and complexity. Let’s unpack why   plain, vanilla objects   are more valuable than class-based structures in distributed environments — and how a lightweight library like   @fizzwiz/vanilla   makes this philosophy practica...