{"_id":"@alinnert/reactive","_rev":"2-7b5eaad75bfc6bd49669e13a7975879a","name":"@alinnert/reactive","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@alinnert/reactive","version":"1.0.0","main":"./dist/main.cjs.js","module":"./dist/main.esm.js","exports":{".":{"require":"./dist/main.cjs.js","import":"./dist/main.esm.js","types":"./dist/main.d.ts"}},"types":"dist/main.d.ts","scripts":{"test":"jest","build":"tsc --emitDeclarationOnly && node scripts/build.js"},"devDependencies":{"@babel/core":"^7.22.5","@babel/preset-env":"^7.22.5","@babel/preset-typescript":"^7.22.5","@types/jest":"^29.5.2","babel-jest":"^29.5.0","esbuild":"^0.18.1","jest":"^29.5.0","typescript":"^5.1.3"},"gitHead":"2d29e6713f6809ba25bab277c9900d7c4501148f","description":"This is a very minimal project template for library code that can be deployed to npm. It's based on [esbuild](https://github.com/evanw/esbuild) and [TypeScript](https://github.com/microsoft/TypeScript).","_id":"@alinnert/reactive@1.0.0","_nodeVersion":"20.3.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-9VGW+C2bi8hgx4PDWwmFearNn7CWsMgzTwpAsm5TUfd07XzNsMZyOY6zWLNWHksw2Ls0xoIseHF1+RT02bneMQ==","shasum":"c4dc7a9be1a8cfb1780a647f436ae8f72a44745d","tarball":"https://registry.npmjs.org/@alinnert/reactive/-/reactive-1.0.0.tgz","fileCount":3,"unpackedSize":2191,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCp6H3o2zUeesk59FZBIhVXgD3YHSOehE7/Xg+S0xgllQIgDirniXyeD5hnshGHSXLtNsIxzqBLRRXNPzH/DJoh1Qg="}]},"_npmUser":{"name":"alinnert","email":"andy.linnert@gmail.com"},"directories":{},"maintainers":[{"name":"alinnert","email":"andy.linnert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reactive_1.0.0_1686676419423_0.723945527937689"},"_hasShrinkwrap":false},"1.0.1":{"name":"@alinnert/reactive","version":"1.0.1","main":"./dist/main.cjs.js","module":"./dist/main.esm.js","exports":{".":{"require":"./dist/main.cjs.js","import":"./dist/main.esm.js","types":"./dist/main.d.ts"}},"types":"dist/main.d.ts","scripts":{"test":"jest","build":"tsc --emitDeclarationOnly && node scripts/build.js"},"devDependencies":{"@babel/core":"^7.22.5","@babel/preset-env":"^7.22.5","@babel/preset-typescript":"^7.22.5","@types/jest":"^29.5.2","babel-jest":"^29.5.0","esbuild":"^0.18.1","jest":"^29.5.0","typescript":"^5.1.3"},"gitHead":"f1b492c56661da7818a1d62a014b571577b34c7a","description":"This is a library for reactive values.","_id":"@alinnert/reactive@1.0.1","_nodeVersion":"20.3.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-u0kIVho4SdI6RlH9m45YilbWaYyfcxapje+mv0+/2HaH11UpoU4U1fW1DfQr4VR71Olzmh3WcSPv9NkU59P7EQ==","shasum":"ba0e158544ffe53d8a428435a87f96874ac5245e","tarball":"https://registry.npmjs.org/@alinnert/reactive/-/reactive-1.0.1.tgz","fileCount":15,"unpackedSize":10960,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICk9xeiWBCcRr3NjcronG4uO4DeEcWTjlLluaW34S9XBAiBOCeV2PCrsp1fjnqTneS9dx20S9LYRx2V+BCTx2B4+dw=="}]},"_npmUser":{"name":"alinnert","email":"andy.linnert@gmail.com"},"directories":{},"maintainers":[{"name":"alinnert","email":"andy.linnert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reactive_1.0.1_1686679814672_0.8517018658706417"},"_hasShrinkwrap":false},"1.0.2":{"name":"@alinnert/reactive","version":"1.0.2","main":"./dist/main.cjs.js","module":"./dist/main.esm.js","exports":{".":{"require":"./dist/main.cjs.js","import":"./dist/main.esm.js","types":"./dist/main.d.ts"}},"types":"dist/main.d.ts","scripts":{"test":"jest","build":"tsc --emitDeclarationOnly && node scripts/build.js","preversion":"npm test","version":"npm run build","postversion":"git push && git push --tags"},"devDependencies":{"@babel/core":"^7.22.5","@babel/preset-env":"^7.22.5","@babel/preset-typescript":"^7.22.5","@types/jest":"^29.5.2","babel-jest":"^29.5.0","esbuild":"^0.18.1","jest":"^29.5.0","typescript":"^5.1.3"},"gitHead":"530f4acda8ccf92c019bf53512873f4beaf3187c","description":"This is a library for reactive values.","_id":"@alinnert/reactive@1.0.2","_nodeVersion":"20.3.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-EP9Lm4NTN4E4wXUExN2+qtGWBoS7Zf4O/O3JunksNVhX2nLVYCjEXYcVh2dRfxhtmz+HVGz/TYJCP1vyJ07xEQ==","shasum":"1cf97d952bbd088dab1cbafd87f2942ddb57097c","tarball":"https://registry.npmjs.org/@alinnert/reactive/-/reactive-1.0.2.tgz","fileCount":15,"unpackedSize":11072,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzsk9isYQPK1vNt7qzL7q60ROF1xZbb3ABJjpxUhaLTgIgG9rKlEtXYjWJFwgprFmbdYmVdMza4t/DZhyMPqZ/bNg="}]},"_npmUser":{"name":"alinnert","email":"andy.linnert@gmail.com"},"directories":{},"maintainers":[{"name":"alinnert","email":"andy.linnert@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/reactive_1.0.2_1686680752650_0.36524299757151635"},"_hasShrinkwrap":false}},"time":{"created":"2023-06-13T17:13:39.336Z","1.0.0":"2023-06-13T17:13:39.596Z","modified":"2023-06-13T18:25:52.943Z","1.0.1":"2023-06-13T18:10:14.834Z","1.0.2":"2023-06-13T18:25:52.834Z"},"maintainers":[{"name":"alinnert","email":"andy.linnert@gmail.com"}],"description":"This is a library for reactive values.","readme":"# @alinnert/reactive\n\nThis is a library for reactive values.\n\nThe implementation is based on `CustomEvent` and `EventTarget` which are available in the Browser and recent server runtimes like Node.js 19 and Deno.\n\nThe API is heavily inspired by [Recoil](https://github.com/facebookexperimental/Recoil) but this library is framework agnostic.\n\n## Examples\n\n### Mutable values\n\n``` ts\nconst numberValue = mutableValue(1)\n\nconsole.log(numberValue.value)\n\nnumberValue.onChange((numberVal) => {\n  console.log(numberVal)\n})\n```\n\n### Computed values\n\n``` ts\nconst numberValue = mutableValue(1)\nconst doubleValue = computedValue([numberValue], (num) => num * 2)\n\nconsole.log(doubleValue.value)\n\ndoubleValue.onChange((doubleVal) => {\n  console.log(doubleVal)\n})\n```\n\n### Automated values\n\n``` ts\nconst intervalValue = automatedValue((next) => {\n  let v = 0\n  \n  setInterval(() => {\n    next(i++)\n  }, 1000)\n})\n\nconsole.log(intervalValue.value)\n\nintervalValue.onChange((intervalVal) => {\n  console.log(intervalVal)\n})\n```\n","readmeFilename":"README.md"}