{"_id":"@artyprog/mithril-signals","name":"@artyprog/mithril-signals","dist-tags":{"latest":"1.3.0"},"versions":{"1.3.0":{"name":"@artyprog/mithril-signals","version":"1.3.0","description":"Fine-grained reactivity for Mithril.js","type":"module","main":"src/signals.js","module":"src/signals.js","exports":{".":"./src/signals.js","./*":"./src/*.js"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"dependencies":{"mithril":"^2.2.2"},"devDependencies":{"vite":"^5.0.0"},"_id":"@artyprog/mithril-signals@1.3.0","gitHead":"eb9e9dd6ffa8f9d76e6cee1482f45903a1b5118c","_nodeVersion":"24.11.1","_npmVersion":"10.8.3","dist":{"integrity":"sha512-iTP/6hGchj7A3vnMvEjBSzlQRQLvkmtUPK3+d5DANpcZHGrths3pogiQBojpE2WuNWcLWATBzFWCZh6JWMFlMQ==","shasum":"5b28f8f9afc0bce49a6fe88cff6ca37d9637f49e","tarball":"https://registry.npmjs.org/@artyprog/mithril-signals/-/mithril-signals-1.3.0.tgz","fileCount":9,"unpackedSize":8180,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDeDmcqdEwnO+nRM5vpTgaz9XRGcgvfdZLqEHE3Ir5FhwIhAPhxlXDuE4tuB4NVroaLVLDatQtPw4tUbiPGkld8p3jk"}]},"_npmUser":{"name":"artyprog","email":"salvatore.didio@gmail.com"},"directories":{},"maintainers":[{"name":"artyprog","email":"salvatore.didio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mithril-signals_1.3.0_1767370166382_0.40158103776002596"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-02T16:09:26.261Z","1.3.0":"2026-01-02T16:09:26.535Z","modified":"2026-01-02T16:09:26.788Z"},"maintainers":[{"name":"artyprog","email":"salvatore.didio@gmail.com"}],"description":"Fine-grained reactivity for Mithril.js","readme":"# Mithril-Signals\r\n\r\nA tiny (~1KB) reactive signal system for Mithril.js. \r\n\r\nInspired by **usignal** by Andrea Giammarchi, this library provides fine-grained reactivity and automatic dependency tracking, while hooking directly into Mithril's `m.redraw()` cycle.\r\n\r\n## Features\r\n- **Automatic Redraws**: Signal updates trigger batched `requestAnimationFrame` redraws.\r\n- **Memory Safe**: Effects automatically unsubscribe from signals when re-run or disposed.\r\n- **Recursion Guard**: Built-in re-entrancy protection and `.peek()` method to prevent infinite loops.\r\n- **Glitch-free**: Computeds only re-evaluate when dependencies truly change.\r\n\r\n## API\r\n- `signal(value)`: Create reactive state.\r\n- `signal.peek()`: Read value without subscribing.\r\n- `computed(fn)`: Derive state with automatic caching.\r\n- `effect(fn)`: Create side effects.\r\n- `batch(fn)`: Group multiple updates into one redraw.\r\n\r\n## Installation\r\n```bash\r\nnpm install\r\nnpm run dev","readmeFilename":"README.md","_rev":"1-88f06e9623d902a351b6ae2e03713132"}