17 blog posts
Build a zero-dependency deep clone helper that preserves literal types while copying arrays, Maps, Sets, and Dates without mutating the source.
Drop sensitive object fields safely by pairing a tiny omit helper with literal key inference and runtime filtering.
Preserve exact key inference when slicing object shapes so you never lose type coverage while building derived views.
Preserve key-value correlations from Object.entries so your loops stay perfectly typed without manual assertions.
Keep Object.keys aligned with your literal key types so mapped iterations stay safe without casts.
Guard against stray prototype keys with a typed helper that narrows arbitrary property lookups the way TypeScript expects.
A typed wrapper for setTimeout that exposes cancel and refresh helpers so you can create predictable timers without leaks.
A generic EventEmitter that keeps listeners and payloads strongly typed all the way from emitters to subscribers.
Minimal utilities to merge multiple AbortSignals into one and add a timeout, preserving the original abort reason and avoiding leaks.
A tiny, typed wrapper over sessionStorage with JSON-safe encoding, optional TTL, namespacing, SSR guards, and simple subscriptions for per‑tab state.
Generate short, URL‑safe IDs in TypeScript using Web Crypto with a safe fallback and zero bias.
A tiny, typed wrapper over localStorage with JSON-safe encoding, optional TTL, namespacing, and SSR guards for painless state persistence.
A tiny, typed wrapper around the Clipboard API with safe fallbacks, permission probes, and SSR guards.
A minimal `sleep(ms)` Promise utility for readable async pauses without blocking the event loop.
A tiny, typed throttle utility with leading/trailing options plus cancel/flush helpers.
A tiny utility to attach DOM listeners with precise event types and a tidy unsubscribe—no `as any` casts required.
A tiny, typed debounce utility that delays execution until input settles and includes cancel/flush helpers.