{"_id":"react-understate","_rev":"102-3206bbfa48b94b75ccd364de05d0aca9","name":"react-understate","dist-tags":{"latest":"1.14.0"},"versions":{"1.0.11":{"name":"react-understate","version":"1.0.11","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.0.11","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"40d43ca3fdac8c881508b27a11198f6af3fb42ac","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.0.11.tgz","fileCount":14,"integrity":"sha512-NDLaFCGeFiwjmWHyZA3zzK1GcPCU4xas1uoPdjQSQe0y5HDrUcTmRJ+6wha2e+Ix3ryiIgf2WjbP8nhSUEp+pA==","signatures":[{"sig":"MEQCIEMESc2CNELdhftUKCtSFvcruip5XhsL0V5v678CezBEAiAthI/IGcnszBSrWuErDokAB7AFh6969iyJps5iTi5VJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114903},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"cde8b19da82b656ec8d0a9e1ea9e25a9e1efafcd","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.0.11_1756807786246_0.11468712581065876","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"react-understate","version":"1.1.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.1.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"eccf051de4d3a9c2b482527eab2a3be9154ed5b2","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.1.0.tgz","fileCount":14,"integrity":"sha512-k6IezRGbr+UW/qEYYXjhtmsdVtdquQfEptb5WSwZQ9CbUs6FeC+cvMF7sqsz0l+X+8j9/5dPkgPaW6PCKzLSvQ==","signatures":[{"sig":"MEYCIQDzqsb66fS4iQwcU3ZyJk53r3U98bfGq4Rx8ERfo4MiEgIhALLXDkI533QxbtRVBwJyS3FUgVuiOfYoMsLmaWVLiDuF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114861},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"c0fa5dd95c5c32e71c4d6a7a8120546caa82e813","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.1.0_1756811504923_0.41579406360573423","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"react-understate","version":"1.2.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.2.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"3abcff6663f2e7cafe4f5f5dc846476b0319c373","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.2.0.tgz","fileCount":14,"integrity":"sha512-3E67usCWk/wAX8dO83Wcrlh60W8Kj9Rck6+RO+8BOxTmTTKUlwKBvaG0m6YXNPM5kJwaI6kPmeQ2+Kz7pZWtww==","signatures":[{"sig":"MEUCIE/NCsLZv+zYaiWlKN3A+gluTenlUhXikkLdx0zQ6B4jAiEAyLhHCn8EYNIaQvluLmzQVBYzHYdnmZH0s6J3dTf2SEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112174},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"e8ae5ec964f4b1382daddf6d050cc0e8bfa72655","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.2.0_1756812321458_0.7482694929697751","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"react-understate","version":"1.3.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.3.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"6085e4773b1eea60d8d855cd351ee597943649b5","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.3.0.tgz","fileCount":14,"integrity":"sha512-Jp88MN4I1qq7KOGdP1YdOnw2R2MDfyiRVtRoHh1ERDgP4L7vRoKQw6+hRUMl7Se4NqvBTpPGN3af5Dutx/+ibA==","signatures":[{"sig":"MEYCIQCu20KqVCvJ5Z3Xpilc3Qgc+Wgtvwt5cEcOP+un3PpL8wIhAMOPkJ7BhpDuWrWc/AJgZ+tugVtTJrWD1Y4Zo1qe2vse","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115102},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"99b622eed141494ab52c21e01f114b55f014d4ac","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.3.0_1756894949318_0.299691874668504","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"react-understate","version":"1.4.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.4.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"377e13a0cb5ffc5d05b8807d703479afb768fa91","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.4.0.tgz","fileCount":14,"integrity":"sha512-jsF90yQTjRL0vmoUmZddg97YgI+yKNkhyTIHl6pQ/fp/8LqK7vtKNnc5CKWSlLdUpqmJk1vUaNe68NL1J2jOgQ==","signatures":[{"sig":"MEQCIGH4X9cY6rH4ZMnx3LXWFQoDugGicp3jbo04AgI3gZy4AiBZWouFNLGDNWSh995fMYkEYq0OxvI9wKqyWlqWQagMAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117444},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"de8c74514561e9cbbe00965d453e3039d1ec5fca","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.4.0_1756896307687_0.4362675783203056","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"react-understate","version":"1.4.1","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.4.1","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"9d26659db6bf5c41a6e820a784746f6c2b4bb0ff","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.4.1.tgz","fileCount":14,"integrity":"sha512-oOCrwuaNzZ6x5hSzy/wBMCtcy7o+xB/ExqiTG+hD6CNnvM7S2HYyfHfb0V2O90eQRmH+ifbzGwpxC7hZA9C4wA==","signatures":[{"sig":"MEQCIFkqjF52gAWh/Ogc2DCTrsuY+Of7ULgIJ9Byrq+mux7HAiAEXixrrrpVy8Rh/gl/2+4Km3ocPFBpkolJ88pnDz/zPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118097},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"31860143359a4af545a935202fd3789889fcbc98","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.4.1_1756896719619_0.5211384040797222","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"react-understate","version":"1.5.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.5.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"6b2f426d1c86be5eb207666720f4ace7901ba227","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.5.0.tgz","fileCount":14,"integrity":"sha512-FFb/IjfgXbsCv5esPfOXRfAaP70PHLuxcVmY9I2/xRhe5oCnkLWbDR8sKOk1pZMFE3bDmCKZB4zaBYJF862rvw==","signatures":[{"sig":"MEYCIQDGKWjRPcOHu4OTY0EJUHQq45KQtZgYRmhK5d3ancmrGgIhAKtRtKbSGkJVeIgCcF2oc5NnD2B6Lq3W67IsZa8fUg6n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116807},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"0126dbc52dad87c5b9690638f17368f74c987e13","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.5.0_1756972364115_0.015444084602517227","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"react-understate","version":"1.5.1","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.5.1","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"f3fc90708b3b6f84480075b33867788c3dc44c18","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.5.1.tgz","fileCount":14,"integrity":"sha512-CU5l5cSCP9kv0DZMP2zD9CoN0rCDcblN7UOqVbwcdwHCWPdfGGlkdTRaQR2I2SBZ2OVowlD9B9m4tV67Tfm3Vg==","signatures":[{"sig":"MEQCIC5uB3pNtDCDrZe2bqOZ9M2zXE7L7zaChq9kjneMKeb7AiBRDXiKqqaROaNGfVnT5BrWG7+FAVe90+MjoA8KC+Elbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120175},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"ffb16de998537e05821a45d19e951140227f72fd","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.5.1_1756973778008_0.6555037338234941","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"react-understate","version":"1.5.2","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.5.2","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"e133e1fb991ec16452ed6451c2108ce316c8ad62","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.5.2.tgz","fileCount":14,"integrity":"sha512-fwDlROd5IcV0Hp3tN/t4mr9zNgW1/RFox3/3pHMW+4T6y4E/XMHqj6emTn5WuZREEUWYNR/aV6CvBoRqcPZYng==","signatures":[{"sig":"MEUCIQCrwhVNDoKvuzv8hSKtRfW96sR3dc9vIlEhMK6hTnzihgIgAO23CMWms9v8J3//Br/EUSNM+n4xGfVvKFMN5AOYHno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123250},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"d5df91a2d74a6d5bde8c7dbbca09b3ef5320e5b0","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.5.2_1756975093526_0.6061609762262226","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"react-understate","version":"1.5.3","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.5.3","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"ece5148e3ef949d3b166c7c26e2a292858c970d9","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.5.3.tgz","fileCount":14,"integrity":"sha512-MJC4ehiRuOFGUbufIPE1d0Mz465fDjHUtzbydYk11h5x4Ww7iZwuyvUkerCU3hODHOo+UIlBKCdG88ZERWHo9A==","signatures":[{"sig":"MEUCIFEwKfrndV6Wm2NBeIaoqI8PQIZz49JPyLZhsE8n06hEAiEAm/AUJL7CdlxSy+fRND5TTCCxWJtc+gzBQ6mwATuOqMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122843},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"7fc2dd088872c751231bbfa98c53e2a74c96b9da","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^8.0.0","rollup":"^4.46.2","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^6.21.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.5.3_1756975301931_0.28372229070029786","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"react-understate","version":"1.6.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.6.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"7f8fda23219e76d2da9938dd3db2fb65c229a699","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.6.0.tgz","fileCount":14,"integrity":"sha512-oOiPV5ztU2yDP4v5p/Ofc94nsSMVHAfjtw5LrGK53wF5Zmy/gPTz5239KmUlhUk8N21aNHg+39AYhW3xuMA+Gg==","signatures":[{"sig":"MEQCIBXplL4fa+a+Dfiqa416a9lS9A4dmwKmcJ4dNCObfu02AiB1kzqJapvTm7f0l+HnTXXPQQzydWwLfEo5Wr2cLtKGTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167192},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"2b8655f13a76c55b96cccfb6fb325e26b6b8c978","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.6.0_1757160256595_0.4479015198692373","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"react-understate","version":"1.6.1","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.6.1","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"f6a60f468c78df391c0fc2cf8cd5108bd3bfee80","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.6.1.tgz","fileCount":14,"integrity":"sha512-vZMEww9KKL+elKu33Z1lw9PSIjBj/s8Uc/+8qa5jVeJvmyBWVbqvuulTrS8PJAwxdTTRXSikBqgUDQ97INfJeg==","signatures":[{"sig":"MEUCIBh5gfRzr4CRLk2MB0ABj71/DvP/YISodQltVzVk+GGfAiEAmmCtmabZwU9ACUYdyosRka5hEag85YVMuYHF4IcglK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167213},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"51cf015dd6170c51038ac4f14d6770733046c4df","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.6.1_1757232866726_0.462410076637233","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"react-understate","version":"1.7.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.7.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"8807a460ba7c9e088b25803c17644d3852b277d4","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.7.0.tgz","fileCount":14,"integrity":"sha512-+nv9aigNkatr26xnTaNO9ULg+8MzQEhenXxS/aouBdJGIHM8eszZbTeYHdLKQzGypo5Buh3yY0tkzpImDcUOaA==","signatures":[{"sig":"MEUCIQD8Ea+NVYxEEykpZoP/XAiu4L7tv/BQ48iSbLiXax9bfgIgWZp58zfuWfFsiNiur44nzHl103xUJy2J68SXpHVSqtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175905},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"cdd36be7f7f70d97e7a3e1eca496abb94e674cc8","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.7.0_1757236062942_0.04381395033013513","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"react-understate","version":"1.7.1","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.7.1","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"68ca7093b86afc28a889dc8a40a463ca72608845","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.7.1.tgz","fileCount":14,"integrity":"sha512-ZzivlEFKEqjFjV4tPDiXR1tveExBYuSU9z4W7NOO/wVaPfIxpk2CzuRSFtKl1eIdQtU3keyToEOOo70ThOfqiA==","signatures":[{"sig":"MEUCIHto49PnMm31wOoYCWIm4i1WTJIk49nczWTcAOvu729ZAiEAr42W9CVEvPiyeIBsUYuBflxFcuZ5goC52sb7oUAOzMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184382},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"c02a6162dbb109cd037a671a8275254c739b1c1d","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.7.1_1757256014436_0.6770705798100374","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"react-understate","version":"1.7.2","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.7.2","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"da5be109ac0af0e25d356be1aeca1a4d8f8305a9","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.7.2.tgz","fileCount":14,"integrity":"sha512-bdy6y8JQkYb/Cd75jhqqu0o0b1PMCQJVTI3ubm9O5EaaQBwE1QqiqpqBGU1M4zqhPu/YT1E1/SaIaIrcpEsFZA==","signatures":[{"sig":"MEYCIQDrqCOR86FTmRdn/u16uLMenBv8rheaFOKY+oOVWIIDswIhALOGZYdVC5pN4MOgYBNHtjt+ic8hx8F4V2XlELELarBB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184381},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"0b81fe844ae05fe86d1b52b04d7a138b042bdaa7","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.7.2_1757328652471_0.8519469436364788","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"react-understate","version":"1.7.3","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.7.3","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"0dfe08781c50ab5396a47a0650663e0afefa6f9f","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.7.3.tgz","fileCount":14,"integrity":"sha512-3I1E4zl+3iaUphI0wzSdWFE8y3lTKHiq58HePwksJ7IBM1KonKMenXj/WGetH9pMvtJaSxtxvnDocS5olpN8hw==","signatures":[{"sig":"MEQCIGwqYBBB5IAopsUtk2SEMzbXSQcM/uwo3d0BBPILBkK9AiAIubpw1ZtaabMteOdTmMGmx76sbkoFpJLcGtsAehAD8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186406},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"4626af2c008a24e0df21e1cbf28a3770acd516a8","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.7.3_1757330480383_0.2763804022890666","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"react-understate","version":"1.8.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.8.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"3a517c4568c71550221dc3b8d38eb177c4b8d761","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.8.0.tgz","fileCount":14,"integrity":"sha512-++D5xK3N3KKaOg80UoLTue+SsRiExE06+AGwKE9WjpzGNlf/18RDO5njX4jp8c4MvKg4TNQRA3qjaDZ8k0/9Ag==","signatures":[{"sig":"MEQCIG9cUw0cCv0bfJ2odqrquNM3wukZ7E4q+Y/B8oNuX//gAiAjFHxVQSdmKgWcX87AjYwHaLdjNIDTo5UBVR5Vym4kJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200675},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"af95c2a8b7e32649d5d77274e8d5e88c0e36438f","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.8.0_1757411090215_0.020709773046294178","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"react-understate","version":"1.9.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.9.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"37d27dd59e869512db40ba706918a5c24420f396","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.9.0.tgz","fileCount":14,"integrity":"sha512-kYXc7If18J4IIhxpOnQvPANeR8xW3/8hMB+Vs2CmrJkUIwWfNuNYxAXBQiodHYM1RcIFkG3APYn1NBPC9W1qTA==","signatures":[{"sig":"MEUCIGYtmgsulhofYma07ahS8cL4vGXwKw09Jxn23UKC/EAaAiEAmfkpLVMgo6ZVz4DvDpUlp9uUXs8UE5/SdCH6XHf9neI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209979},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"b66e7a23f606612e18f36e84539e852669aff25f","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.9.0_1757512029873_0.5805664622566198","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"react-understate","version":"1.10.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.10.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"9ce935e2e6298b83d87bf307eed13d5a8fe19eee","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.10.0.tgz","fileCount":14,"integrity":"sha512-dZmOR8BkhcryHaLJz/iVX7DqKbKAuH2mb8X/Rzu/lt+kUBKd8ddQP/l6gyi9vNjQUHloe2UNJUeinfdBxW4IMg==","signatures":[{"sig":"MEUCIAtwQobsUTRaUN/Ij9DUGPNZ9WZGpCs8kTRUbf2DrNqlAiEAz1fJrRANPIoY6CkD49cOvJuczqIzSBS+w4jyNsNb1Yo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214354},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"f3b8d5c374284ee133909e855b543be238cf07c2","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.10.0_1757602288308_0.35834256166809486","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"react-understate","version":"1.10.1","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.10.1","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"379e4de7346f605c6cfbc267303690fb4862707c","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.10.1.tgz","fileCount":14,"integrity":"sha512-K+q2mgA9iYzf/BKnpx9XbTOgApCzx0VaEOUjqwRD2r79azAVb1gRDrFLxWkpvuv3HSAdVt2Rv3E/3Z6gQG522A==","signatures":[{"sig":"MEYCIQCJ40XYeTwBTCCyBvyua6jK7WQ13ImGvesjDCnQHOFOhwIhAP4wI9GpDme0sowCY8AenO2C5vj5RfVZjqytbhGgDCzk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215402},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"61bbe1c25a5641c2a85b082936df9eb6e0bfbf94","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.10.1_1757602385767_0.23675468034236613","host":"s3://npm-registry-packages-npm-production"}},"1.10.3":{"name":"react-understate","version":"1.10.3","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.10.3","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"6238e78aa5e758a3b2cf25758391b7c11ae6d881","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.10.3.tgz","fileCount":14,"integrity":"sha512-sHsl7HTxauoWXKV0Z8p5A14uhWcg054rC5C5d3e9q4CbVp9PHQMvQRkP4Qq9tadp9MrAmQoBiuIUFTZ5YfcTOQ==","signatures":[{"sig":"MEUCIHDoD1lZ2Cp7VU7kDbmyH9MPNn1S/KKcIcthcm+Mh2cmAiEA6X5YEAHDGNR+bmsxEsynxnOfNOkC5sgBbtfy9xyfFMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218791},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"38a3f7976e8c5d583bf2a25e123841d987b7cd8b","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.10.3_1757662039455_0.5658037469770427","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"react-understate","version":"1.12.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.12.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://github.com/mjbeswick/react-understate#readme","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"83dffe02d73b7ca9aed054ff5bc0dd3d91a9811e","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.12.0.tgz","fileCount":14,"integrity":"sha512-Ml3GZvgDzsfdPVCMCYG9rTdh3gzZKnOq99TJvn0BHJ+4a3CYvqPAvqMMdUT39O267Qho8scMYn+/mLrfs/hlOg==","signatures":[{"sig":"MEUCIDbaIKXvyWRyCM0IzRor1PKfm2Smqc99G9+4HsHvTpQ0AiEAlFSAybBehsLfBhsRqGNVoL30fPdZrMYKa8ZFJztyYe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230534},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"}},"gitHead":"d687b8929bfc492e33e87f8dc0cb75617a259299","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.12.0_1757665032148_0.40320139625046925","host":"s3://npm-registry-packages-npm-production"}},"1.12.2":{"name":"react-understate","version":"1.12.2","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.12.2","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://mjbeswick.github.io/react-understate","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"e7bf4eefac7716d5a568dd283fe8a8766296a6f4","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.12.2.tgz","fileCount":14,"integrity":"sha512-fQc5kzKANpMgW542TMjJbWxOZVghrt9Tvfcq9ugVf4Qp22Stub188KzcF3QQ62KQefs4F9eDAxhIo5FL7/9CCw==","signatures":[{"sig":"MEUCIEimVn0eIX6xxsr4W2k6gzsIYdGhpVlvELX+iGRe+NkHAiEAs942ZJm/X+h2Iyh49xFK8sA9SSXbb5Vq4sRT7ZB3C2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247325},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"},"./browser-debug":"./src/browser-debug.d.ts"},"gitHead":"fcd6b3ac5b252c171f52ff73e89538d568d1e464","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.12.2_1758116943634_0.5711447949378532","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"react-understate","version":"1.13.0","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.13.0","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://mjbeswick.github.io/react-understate","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"0495b0f7920c3b98cd6fc73c78c0e1c8db36fa1c","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.13.0.tgz","fileCount":14,"integrity":"sha512-kOxt8MMQGwG+zEOk5lb2akA0a8zSfsnW+OTzoqgt4FxCoyEWT7Hqx82AyBHVAeJxM/92CVast/+eYqPP/OwdYw==","signatures":[{"sig":"MEYCIQCWZds0Z1EYpQ5l4qAFwUh5NUNiXvFQcTDkWbqSE23orAIhAMiWL0xZ5rvuzozM0FqSr6RLvSLfHsFPV3YAsIrZ4YnC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283078},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"},"./browser-debug":"./src/browser-debug.d.ts"},"gitHead":"d2270646ef0b95f4f924a1cad229f96de822f778","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","@types/react":"^19.1.13","@types/react-dom":"^19.1.9","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.13.0_1758962063059_0.4621693627449812","host":"s3://npm-registry-packages-npm-production"}},"1.13.1":{"name":"react-understate","version":"1.13.1","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.13.1","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://mjbeswick.github.io/react-understate","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"a4e595e1d17fc411ff1a4c974e82fe53abedb5f0","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.13.1.tgz","fileCount":14,"integrity":"sha512-Ngy/8+X0Z7+DJWYK69PKBUPiXhl2KwE2MWTiTmHuJppMUehtW8v10TZG0vLx8kRNGPhiCFxNT0pabU2RQTMIIA==","signatures":[{"sig":"MEQCIFWUaMG7r7i9RtQGhb8nkRXbkXzlQxeXeDubDIBBrXlsAiAlj9JLCfRzyJHDxrbceg5bCXbVRZ+eUyM0Fq5GIqzssA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283488},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"},"./browser-debug":"./src/browser-debug.d.ts"},"gitHead":"e66044e091613a1ea60c8a19be36a1e8f5d68014","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","@types/react":"^19.1.13","@types/react-dom":"^19.1.9","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.13.1_1758973921907_0.1611268763805882","host":"s3://npm-registry-packages-npm-production"}},"1.13.2":{"name":"react-understate","version":"1.13.2","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.13.2","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://mjbeswick.github.io/react-understate","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"ba25b9d143bc5876468b56d7b253096c0cc73499","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.13.2.tgz","fileCount":14,"integrity":"sha512-KnjJqFGw0b7/WmGIzv1L+ItwL4p4bka3RuxrQYfYGxOV0rQS9HNBjKaFYNbIXK+z6EGMNn/QKxtENwOH5yTX/A==","signatures":[{"sig":"MEUCIA/tWntHQ/zze/cAGbElCc1lcvOHD3hP/uLpP30eGgJQAiEA4/jCc+pmYsvzwlUE84NtcpqLRA+cDM8fSvFz/8KpNZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283488},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"},"./browser-debug":"./src/browser-debug.d.ts"},"gitHead":"c211a65456d128e82ffcd882349ef9f3429ee62a","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"deprecated":"This version has been deprecated. Please use react-understate@1.13.4 or later.","repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","@types/react":"^19.1.13","@types/react-dom":"^19.1.9","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.13.2_1758974331933_0.6851486213210458","host":"s3://npm-registry-packages-npm-production"}},"1.13.4":{"name":"react-understate","version":"1.13.4","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","_id":"react-understate@1.13.4","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"homepage":"https://mjbeswick.github.io/react-understate","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"dist":{"shasum":"62f5d692afb006c80e0712a6031536054a0d0320","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.13.4.tgz","fileCount":14,"integrity":"sha512-G8O63Tp2/YBsNxx58u9lTtvXoUnGivRf+Uw/saNdvpJrZvR83FSvTFRi01Vr7PjP/PJ9ICiMcPyomHOPoPzgrQ==","signatures":[{"sig":"MEYCIQCnHZ3LR3RQvLpNRp8opCXzks2eWF8wIfFOh7fQTqnKxAIhALTkG+8Oy9Ddndjf9nnTtkzMTb2slQ/RhZi3Ej3Bor/G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265985},"main":"dist/react-understate.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/react-understate.esm.js","engines":{"node":">=23.6.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"},"./browser-debug":"./src/browser-debug.d.ts"},"gitHead":"d0eefa9a0c11b4ead1ef6b5c90893b095688bafb","scripts":{"lint":"eslint src/ --ext .ts","test":"jest","build":"rollup -c && node scripts/build-size.ts","clean":"rm -rf dist","format":"prettier --write .","prepare":"husky","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","lint:fix":"eslint src/ --ext .ts --fix","pre-commit":"npm run format && npm run type-check && npm test","type-check":"tsc --noEmit","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","test:coverage":"jest --coverage","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"repository":{"url":"git+https://github.com/mjbeswick/react-understate.git","type":"git"},"_npmVersion":"11.0.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","directories":{},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"*.{json,md,yml,yaml}":["prettier --write"],"eslint-plugin/**/*.{js,ts}":["prettier --write"]},"_nodeVersion":"24.3.0","dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.3","husky":"^9.1.7","jsdom":"^26.1.0","tslib":"^2.8.1","eslint":"^9.34.0","rollup":"^4.46.2","globals":"^16.3.0","ts-jest":"^29.4.1","prettier":"^3.6.2","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^24.3.1","lint-staged":"^16.1.4","@types/jsdom":"^21.1.7","@types/react":"^19.1.13","@types/react-dom":"^19.1.9","rollup-plugin-dts":"^6.2.3","@rollup/plugin-terser":"^0.4.4","eslint-config-prettier":"^10.1.8","jest-environment-jsdom":"^30.0.5","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-visualizer":"^6.0.3","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.42.0","@rollup/plugin-node-resolve":"^16.0.1","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0"},"_npmOperationalInternal":{"tmp":"tmp/react-understate_1.13.4_1759135164106_0.10310481237304092","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"react-understate","version":"1.14.0","description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","type":"module","main":"dist/react-understate.esm.js","module":"dist/react-understate.esm.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/react-understate.esm.js","require":"./dist/react-understate.cjs.js"},"./core":{"types":"./dist/core.d.ts","import":"./dist/react-understate.signals.js","require":"./dist/react-understate.signals.cjs.js"},"./browser-debug":"./src/browser-debug.d.ts"},"scripts":{"build":"rollup -c && node scripts/build-size.ts","build:watch":"rollup -c --watch","build:analyze":"rollup -c && open bundle-analysis.html","test":"jest","test:coverage":"jest --coverage","lint":"eslint src/ --ext .ts","lint:fix":"eslint src/ --ext .ts --fix","format":"prettier --write .","type-check":"tsc --noEmit","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build","prepare":"husky","pre-commit":"npm run format && npm run type-check && npm test","release":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:patch":"npm version patch && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:minor":"npm version minor && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")","release:major":"npm version major && npm publish && git push origin main && git push origin v$(node -p \"require('./package.json').version\")"},"lint-staged":{"src/**/*.{ts}":["prettier --write","eslint --fix"],"eslint-plugin/**/*.{js,ts}":["prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},"keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"author":{"name":"mjbeswick"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/mjbeswick/react-understate.git"},"homepage":"https://mjbeswick.github.io/react-understate","bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"engines":{"node":">=23.6.0"},"devDependencies":{"@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-node-resolve":"^16.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^12.1.4","@types/jest":"^30.0.0","@types/jsdom":"^21.1.7","@types/node":"^24.3.1","@types/react":"^19.1.13","@types/react-dom":"^19.1.9","@types/use-sync-external-store":"^1.5.0","@typescript-eslint/eslint-plugin":"^8.42.0","@typescript-eslint/parser":"^8.42.0","eslint":"^9.34.0","eslint-config-prettier":"^10.1.8","globals":"^16.3.0","husky":"^9.1.7","jest":"^30.1.3","jest-environment-jsdom":"^30.0.5","jsdom":"^26.1.0","lint-staged":"^16.1.4","prettier":"^3.6.2","rollup":"^4.46.2","rollup-plugin-dts":"^6.2.3","rollup-plugin-visualizer":"^6.0.3","ts-jest":"^29.4.1","tslib":"^2.8.1","typescript":"^5.0.0"},"dependencies":{"react":"^19.1.1","react-dom":"^19.1.1","use-sync-external-store":"^1.5.0"},"_id":"react-understate@1.14.0","gitHead":"fa582f7747d107c1e25950559b0d20c42bd3cc40","_nodeVersion":"24.3.0","_npmVersion":"11.0.0","dist":{"integrity":"sha512-gDhnW9WTAiwft1+6PZ7pnvDdsrzhUP+e0F8nSe2L09SNovwe21LjWLjGCel6q27EXGKJFdVgHpSyAUW6sveI4w==","shasum":"203132dc81f9f81ee65c99645611647b2465031b","tarball":"https://registry.npmjs.org/react-understate/-/react-understate-1.14.0.tgz","fileCount":14,"unpackedSize":303007,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBgweoYBdue4LvQIKCUSymkg8S3qm/c24RA4cCcVCimrAiEAmDmk/kcFHrJdrx+HWyXxlJUSIQyJxSEsCjaiAxiriF8="}]},"_npmUser":{"name":"mjbeswick","email":"mjbeswick@gmail.com"},"directories":{},"maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-understate_1.14.0_1759418427801_0.048337835788976324"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-01T11:01:22.635Z","modified":"2025-10-02T15:20:28.173Z","0.1.0":"2025-09-01T11:01:22.822Z","0.1.1":"2025-09-01T11:09:16.631Z","1.0.0":"2025-09-01T14:37:31.470Z","1.0.1":"2025-09-01T14:45:21.448Z","1.0.2":"2025-09-01T14:47:18.008Z","1.0.3":"2025-09-01T15:01:43.931Z","1.0.5":"2025-09-01T15:04:26.988Z","1.0.6":"2025-09-01T15:49:40.670Z","1.0.7":"2025-09-01T16:11:29.670Z","1.0.8":"2025-09-02T07:38:30.812Z","1.0.9":"2025-09-02T08:41:06.186Z","1.0.10":"2025-09-02T08:45:32.071Z","1.0.11":"2025-09-02T10:09:46.436Z","1.1.0":"2025-09-02T11:11:45.116Z","1.2.0":"2025-09-02T11:25:21.633Z","1.3.0":"2025-09-03T10:22:29.502Z","1.4.0":"2025-09-03T10:45:07.879Z","1.4.1":"2025-09-03T10:51:59.807Z","1.5.0":"2025-09-04T07:52:44.297Z","1.5.1":"2025-09-04T08:16:18.181Z","1.5.2":"2025-09-04T08:38:13.730Z","1.5.3":"2025-09-04T08:41:42.096Z","1.6.0":"2025-09-06T12:04:16.812Z","1.6.1":"2025-09-07T08:14:26.911Z","1.7.0":"2025-09-07T09:07:43.187Z","1.7.1":"2025-09-07T14:40:14.613Z","1.7.2":"2025-09-08T10:50:52.664Z","1.7.3":"2025-09-08T11:21:20.566Z","1.8.0":"2025-09-09T09:44:50.408Z","1.9.0":"2025-09-10T13:47:10.080Z","1.10.0":"2025-09-11T14:51:28.510Z","1.10.1":"2025-09-11T14:53:05.953Z","1.10.3":"2025-09-12T07:27:19.627Z","1.12.0":"2025-09-12T08:17:12.348Z","1.12.2":"2025-09-17T13:49:03.862Z","1.13.0":"2025-09-27T08:34:23.257Z","1.13.1":"2025-09-27T11:52:02.114Z","1.13.2":"2025-09-27T11:58:52.124Z","1.13.4":"2025-09-29T08:39:24.299Z","1.14.0":"2025-10-02T15:20:27.998Z"},"bugs":{"url":"https://github.com/mjbeswick/react-understate/issues"},"author":{"name":"mjbeswick"},"license":"MIT","homepage":"https://mjbeswick.github.io/react-understate","keywords":["react","reactive","signals","computed","state","components","typescript","framework","ui","frontend","web","javascript","library","state-management","reactive-programming","functional-programming","declarative","modern","lightweight","fast","performant"],"repository":{"type":"git","url":"git+https://github.com/mjbeswick/react-understate.git"},"description":"A lightweight, reactive signals library for React 18+ with automatic dependency tracking and optimized performance","maintainers":[{"name":"mjbeswick","email":"mjbeswick@gmail.com"}],"readme":"# React Understate\n\nThe state management library that's so lightweight, it makes Redux feel like you're carrying a backpack full of bricks. While Redux's predictable state management and time-travel debugging are legendary, React Understate cuts through the boilerplate to deliver pure, unadulterated reactivity with zero dependencies.\n\n[![npm version](https://img.shields.io/npm/v/react-understate.svg)](https://www.npmjs.com/package/react-understate)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)\n\n## Table of Contents\n\n- [📚 Documentation](#-documentation)\n- [Features](#features)\n- [Installation](#installation)\n  - [ESLint Integration (Optional)](#eslint-integration-optional)\n- [Quick Start](#quick-start)\n- [Core Concepts](#core-concepts)\n  - [States](#states)\n  - [Array State](#array-state)\n  - [Derived Values](#derived-values)\n  - [Effects](#effects)\n  - [Groups/Namespaces](#groupsnamespaces)\n  - [Effect Options Deep Dive](#effect-options-deep-dive)\n  - [Async Updates](#async-updates)\n  - [Actions](#actions)\n  - [Async Concurrency Modes](#async-concurrency-modes)\n  - [Abort Signals](#abort-signals)\n  - [Batching Updates](#batching-updates)\n- [React Integration](#react-integration)\n  - [useUnderstate Hook](#useunderstate-hook)\n  - [Store Object Pattern](#store-object-pattern)\n- [State Persistence](#state-persistence)\n  - [Basic Persistence](#basic-persistence)\n  - [Persisting Multiple States](#persisting-multiple-states)\n- [Architecture & Best Practices](#architecture--best-practices)\n  - [Separation of Concerns](#separation-of-concerns)\n  - [Testing Business Logic](#testing-business-logic)\n  - [Key Principles](#key-principles)\n  - [No Nested Understate Functions](#no-nested-understate-functions)\n  - [TypeScript Support](#typescript-support)\n- [Recommended Pattern: Functional Store Architecture](#recommended-pattern-functional-store-architecture)\n  - [Pattern Overview](#pattern-overview)\n- [Breaking Changes](#breaking-changes)\n- [Coming Soon](#coming-soon)\n- [License](#license)\n\n## 📚 Documentation\n\n**📖 [Complete Documentation Site](https://mjbeswick.github.io/react-understate/)** - Comprehensive guides, API reference, and examples\n\n**🚀 [Quick Start Guide](https://mjbeswick.github.io/react-understate/getting-started/introduction)** - Get up and running in minutes\n\n**📋 [API Reference](https://mjbeswick.github.io/react-understate/api/state)** - Complete API documentation with examples\n\n**💡 [Examples](https://mjbeswick.github.io/react-understate/examples/todo)** - Real-world applications and patterns\n\n## Features\n\n- 🎯 **Simple API** - Just use `.value` to read/write state values\n- ⚡ **Automatic dependency tracking** - Effects and derived values update automatically\n- 🔄 **React 18+ integration** - Built with `useSyncExternalStore` for optimal performance\n- 🚀 **Async support** - Built-in async update methods and async setters with loading states\n- 💾 **State persistence** - Built-in localStorage/sessionStorage persistence with cross-tab sync\n- 📦 **Lightweight** - Minimal bundle size with zero dependencies\n- 🎨 **TypeScript first** - Full type safety out of the box\n- ⚙️ **Batching support** - Optimize performance with batched updates\n- 🧊 **TypeScript immutability** - Deep readonly types prevent mutations at compile time\n- 🎭 **Named reactive elements** - Give names to states, derived values, and effects for better debugging\n- ⚡ **Action functions** - Automatic batching and debug logging for state updates\n- 🔧 **ESLint integration** - Built-in ESLint rules for best practices and state name validation\n\n## Installation\n\n```bash\nnpm install react-understate\n```\n\n### ESLint Integration (Optional)\n\nFor additional code quality and best practices, install the ESLint plugin:\n\n```bash\nnpm install --save-dev eslint-plugin-react-understate\n```\n\nThen add it to your ESLint configuration:\n\n```js\n// eslint.config.js\nimport reactUnderstate from 'eslint-plugin-react-understate';\n\nexport default [\n  // ... other configs\n  {\n    plugins: {\n      'react-understate': reactUnderstate,\n    },\n    rules: {\n      ...reactUnderstate.configs.recommended.rules,\n    },\n  },\n];\n```\n\n**Available Rules:**\n\n- `require-valid-state-name` - Ensures state names are valid JavaScript identifiers\n- `no-nested-understate-functions` - Prevents any understate function calls inside other understate functions\n- `no-batch-in-effects` - Prevents redundant batch() calls inside effects (effects auto-batch)\n- `prefer-derived-for-computed` - Suggests using derived values for computed state\n- `prefer-effect-for-side-effects` - Suggests using effects for side effects\n- And many more best practice rules...\n\n## Quick Start\n\n**Basic usage with store pattern:**\n\n```tsx\nimport { state, useUnderstate, action } from 'react-understate';\n\n// Create a store object\nconst store = {\n  count: state(0),\n  increment: action(() => {\n    store.count.value++;\n  }, 'increment'),\n};\n\nfunction Counter() {\n  const { count, increment } = useUnderstate(store);\n  return (\n    <div>\n      <p>Count: {count}</p>\n      <button onClick={increment}>Increment</button>\n    </div>\n  );\n}\n```\n\n## Core Concepts\n\n### States\n\nStates are reactive containers that hold values and notify subscribers when they change. Always use the `.value` property to read state values. For updates, prefer using actions, but direct assignment is acceptable for simple cases.\n\n```tsx\nimport { state, action } from 'react-understate';\n\nconst count = state(0);\nconsole.log(count.value); // 0\n\n// Use actions for state updates\nconst setCount = action((value: number) => {\n  count.value = value;\n}, 'setCount');\n\nconst increment = action((amount: number) => {\n  count.value = prev => prev + amount;\n}, 'increment');\n\nconst asyncIncrement = action(async (amount: number) => {\n  await new Promise(resolve => setTimeout(resolve, 100));\n  count.value = prev => prev + amount;\n}, 'asyncIncrement');\n\n// Call actions instead of direct assignment\nsetCount(5);\nconsole.log(count.value); // 5\n```\n\n**Required Value Property:**\n\nFor states that may be null or undefined, use the `.requiredValue` property for runtime-safe non-null assertions:\n\n```tsx\nconst user = state<User | null>(null);\n\n// After ensuring user is loaded\nif (user.value) {\n  // TypeScript knows user.value is User | null\n  console.log(user.value.name); // Type error: name might not exist\n\n  // Use non-null assertion when you know it's safe\n  console.log(user.value!.name); // Works, but no runtime safety\n\n  // Or use the requiredValue property for runtime safety\n  console.log(user.requiredValue.name); // Works with runtime check\n}\n\n// The requiredValue getter throws if the value is null/undefined\ntry {\n  const name = user.requiredValue.name; // Throws: \"Required value is null\"\n} catch (error) {\n  console.log('User not loaded yet');\n}\n\n// The requiredValue setter prevents setting null/undefined\nuser.requiredValue = { id: 1, name: 'John' }; // Works\nuser.requiredValue = null; // Throws: \"Cannot set required value to null\"\n\n// Named states include the name in error messages for better debugging\nconst userState = state<User | null>(null, 'userState');\nuserState.requiredValue; // Throws: \"Required value 'userState' is null\"\nuserState.requiredValue = null; // Throws: \"Cannot set required value 'userState' to null\"\n```\n\n### Array State\n\n`arrayState<T>()` provides a reactive array with familiar array methods. Mutating methods trigger subscriptions automatically; non-mutating ones do not.\n\n```tsx\nimport { arrayState } from 'react-understate';\n\ntype Item = { id: number; name: string };\nconst items = arrayState<Item>([], 'items');\n\nitems.push({ id: 1, name: 'A' }); // notifies subscribers\nitems.splice(0, 1); // notifies subscribers\n\n// Read-only helpers\nconst exists = items.includes(items.at(0)!);\nconst first = items.slice(0, 1);\n```\n\nKey API (mutating = notifies subscribers):\n\n- push, pop, shift, unshift, splice, sort, reverse, fill\n- concat, slice, join, at, indexOf, lastIndexOf, includes, find, findIndex, filter, map, reduce, reduceRight, forEach, some, every, flat, flatMap\n- value getter/setter, length, iterator, clear, set, batch\n\n### Derived Values\n\nDerived values automatically update when their dependencies change:\n\n```tsx\nimport { state, derived, action } from 'react-understate';\n\nconst firstName = state('John');\nconst lastName = state('Doe');\n\n// Create a derived state\nconst fullName = derived(() => `${firstName.value} ${lastName.value}`);\n\nconsole.log(fullName.value); // \"John Doe\"\n\n// Update dependencies - derived automatically updates\nconst setFirstName = action((name: string) => {\n  firstName.value = name;\n}, 'setFirstName');\n\nsetFirstName('Jane');\nconsole.log(fullName.value); // \"Jane Doe\"\n```\n\n### Effects\n\nEffects run side effects when dependencies change. You can control effect behavior with options:\n\n```tsx\nimport { state, effect, action } from 'react-understate';\n\nconst count = state(0);\nconst name = state('John');\n\n// Simple effect that logs changes\neffect(() => {\n  console.log(`Count: ${count.value}, Name: ${name.value}`);\n});\n\n// Effect with options\neffect(\n  () => {\n    console.log('This runs only once');\n  },\n  'oneTimeEffect',\n  { once: true },\n);\n\n// Effect that prevents overlapping executions\neffect(\n  async () => {\n    await fetch('/api/data');\n    console.log('API call completed');\n  },\n  'apiEffect',\n  { preventOverlap: true },\n);\n\n// Effect that prevents infinite loops (default behavior)\neffect(\n  () => {\n    count.value = count.value + 1; // Won't cause infinite loop\n  },\n  'safeEffect',\n  { preventLoops: true },\n);\n\nconst setCount = action((value: number) => {\n  count.value = value;\n}, 'setCount');\n\nconst setName = action((value: string) => {\n  name.value = value;\n}, 'setName');\n\nsetCount(5); // Logs: \"Count: 5, Name: John\"\nsetName('Jane'); // Logs: \"Count: 5, Name: Jane\"\n```\n\n**Effect Options:**\n\n### Groups/Namespaces\n\nUse `group(namespace)` to organize related `state`, `derived`, `action`, and `effect` under a logical namespace for cleaner logs, devtools organization, and large-app structure.\n\n```tsx\nimport { group } from 'react-understate';\n\nconst user = group('user');\n\n// States\nconst profile = user.state({ name: 'John' }, 'profile');\nconst isLoggedIn = user.state(false, 'isLoggedIn');\n\n// Derived\nconst displayName = user.derived(() => profile.value.name ?? '');\n\n// Actions\nconst logIn = user.action((name: string) => {\n  isLoggedIn.value = true;\n  profile.value = { ...profile.value, name };\n}, 'logIn');\n\n// Effects\nconst syncProfile = user.effect(() => {\n  // sync side-effects related to user group\n}, 'syncProfile');\n```\n\nAPI summary:\n\n- `group(namespace).state(initial, nameOrOptions?)`\n- `group(namespace).derived(computation, name?)`\n- `group(namespace).action(fn, name?)`\n- `group(namespace).effect(fn, name?)`\n\n- `once: boolean` - Run effect only once, ignore subsequent dependency changes\n- `preventOverlap: boolean` - Prevent overlapping executions of async effects\n- `preventLoops: boolean` - Automatically prevent infinite loops (default: true)\n\n### Effect Options Deep Dive\n\nEffect options provide fine-grained control over how effects behave. Here's a comprehensive guide:\n\n#### `once: true` - One-Time Effects\n\nPerfect for initialization, setup, or cleanup that should only happen once:\n\n```tsx\nimport { state, effect } from 'react-understate';\n\nconst user = state(null);\n\n// Initialize user data only once\neffect(\n  () => {\n    console.log('Initializing user session...');\n    // This will only run once, even if user changes\n    initializeUserSession();\n  },\n  'initUser',\n  { once: true },\n);\n\n// Setup global event listeners\neffect(\n  () => {\n    const handleResize = () => console.log('Window resized');\n    window.addEventListener('resize', handleResize);\n\n    // Return cleanup function\n    return () => window.removeEventListener('resize', handleResize);\n  },\n  'setupListeners',\n  { once: true },\n);\n```\n\n#### `preventOverlap: true` - Prevent Concurrent Executions\n\nEssential for async effects that shouldn't run concurrently:\n\n```tsx\nimport { state, effect } from 'react-understate';\n\nconst searchQuery = state('');\nconst searchResults = state([]);\nconst isLoading = state(false);\n\n// Search effect that prevents overlapping API calls\neffect(\n  async () => {\n    if (!searchQuery.value) {\n      searchResults.value = [];\n      return;\n    }\n\n    isLoading.value = true;\n    try {\n      const results = await fetchSearchResults(searchQuery.value);\n      searchResults.value = results;\n    } catch (error) {\n      console.error('Search failed:', error);\n    } finally {\n      isLoading.value = false;\n    }\n  },\n  'searchEffect',\n  { preventOverlap: true }, // Prevents multiple concurrent searches\n);\n\n// Multiple rapid changes won't cause overlapping API calls\nsearchQuery.value = 'react';\nsearchQuery.value = 'vue';\nsearchQuery.value = 'angular';\n// Only the last search will execute\n```\n\n#### `preventLoops: true` - Infinite Loop Prevention (Default)\n\nAutomatically prevents infinite loops by ignoring re-execution when effects modify their dependencies:\n\n```tsx\nimport { state, effect } from 'react-understate';\n\nconst count = state(0);\nconst doubled = state(0);\n\n// This effect reads count and modifies doubled\n// Without preventLoops, this would cause an infinite loop\neffect(\n  () => {\n    doubled.value = count.value * 2; // Modifies doubled\n    console.log(`Count: ${count.value}, Doubled: ${doubled.value}`);\n  },\n  'updateDoubled',\n  { preventLoops: true }, // This is the default\n);\n\ncount.value = 5; // Logs: \"Count: 5, Doubled: 10\"\n// The effect won't re-run when doubled changes\n```\n\n#### `preventLoops: false` - Allow All Re-executions\n\nUse with caution - allows effects to re-run on any dependency change:\n\n```tsx\nimport { state, effect } from 'react-understate';\n\nconst data = state({ items: [] });\nconst processedData = state([]);\n\n// This effect processes data and updates processedData\n// We want it to re-run when either changes\neffect(\n  () => {\n    const items = data.value.items;\n    const processed = items.map(item => ({ ...item, processed: true }));\n    processedData.value = processed;\n  },\n  'processData',\n  { preventLoops: false }, // Will re-run when processedData changes too\n);\n```\n\n#### Combining Options\n\nYou can combine multiple options for complex scenarios:\n\n```tsx\nimport { state, effect } from 'react-understate';\n\nconst config = state(null);\nconst isInitialized = state(false);\n\n// One-time initialization that prevents overlapping\neffect(\n  async () => {\n    if (isInitialized.value) return;\n\n    console.log('Initializing application...');\n    const appConfig = await loadConfiguration();\n    config.value = appConfig;\n    isInitialized.value = true;\n  },\n  'appInit',\n  {\n    once: true, // Only run once\n    preventOverlap: true, // Prevent overlapping if called multiple times\n  },\n);\n\n// Data synchronization that allows all re-executions\neffect(\n  async () => {\n    if (!config.value) return;\n\n    await syncDataWithServer(config.value);\n  },\n  'dataSync',\n  {\n    preventOverlap: true, // Prevent overlapping syncs\n    preventLoops: false, // Allow re-runs when config changes\n  },\n);\n```\n\n#### Effect Options Best Practices\n\n**When to use `once: true`:**\n\n- Application initialization\n- Setting up global event listeners\n- One-time data loading\n- Cleanup operations\n\n**When to use `preventOverlap: true`:**\n\n- API calls that shouldn't overlap\n- File operations\n- Database queries\n- Any async operation that could conflict\n\n**When to use `preventLoops: false`:**\n\n- Data transformation pipelines\n- Bidirectional synchronization\n- Complex state derivations\n- When you need full reactivity\n\n**Default behavior:**\n\n- `once: false` - Effect runs on every dependency change\n- `preventOverlap: false` - Allow overlapping executions\n- `preventLoops: true` - Prevent infinite loops (recommended)\n\n**Automatic Batching:**\n\nEffects automatically batch state updates to prevent infinite loops and improve performance. Multiple state updates within an effect are collected and processed together:\n\n```tsx\neffect(() => {\n  // These updates are automatically batched\n  count.value = count.value + 1;\n  name.value = name.value + '!';\n  count.value = count.value + 1;\n  // Only triggers effects once at the end\n});\n```\n\n**Infinite Loop Detection:**\n\nReact Understate automatically detects and prevents infinite loops in effects. If an effect runs more than 10 times per second, it will be automatically disabled with a helpful error message:\n\n```tsx\neffect(() => {\n  // This will cause an infinite loop\n  count.value = count.value + 1; // Effect modifies state it depends on\n}, 'problematicEffect');\n\n// Console output:\n// 🚨 INFINITE LOOP DETECTED in effect 'problematicEffect'!\n// Effect has run 11 times in the last second.\n// This usually happens when an effect modifies a state it depends on.\n// Consider using preventLoops: false or restructuring your effect.\n```\n\n**Loop Prevention Options:**\n\n- `preventLoops: true` (default) - Automatically prevents infinite loops\n- `preventLoops: false` - Allows infinite loops (useful for testing or specific use cases)\n\n### Async Updates\n\nUse the `update` method for async operations with built-in loading states:\n\n```tsx\nimport { state } from 'react-understate';\n\nconst userData = state(null);\n\n// Async update with loading state\nconst loadUser = async id => {\n  await userData.update(async () => {\n    const response = await fetch(`/api/users/${id}`);\n    return response.json();\n  });\n};\n\n// Handle loading state in your component\nif (userData.value === null) {\n  return <div>Loading...</div>;\n}\n```\n\n### Actions\n\nActions are functions that automatically batch multiple state updates and provide better debugging:\n\n```tsx\nimport { action, state } from 'react-understate';\n\nconst todos = state<Todo[]>([], 'todos');\nconst filter = state<'all' | 'active' | 'completed'>('all', 'filter');\n\nconst addTodo = action((text: string) => {\n  todos.value = [...todos.value, { id: Date.now(), text, completed: false }];\n  filter.value = 'all'; // Reset filter when adding new todo\n}, 'addTodo');\n\nconst toggleTodo = action((id: number) => {\n  todos.value = todos.value.map(todo =>\n    todo.id === id ? { ...todo, completed: !todo.completed } : todo,\n  );\n}, 'toggleTodo');\n\n// Usage - all updates are automatically batched\naddTodo('Learn React');\ntoggleTodo(1);\n```\n\n### Async Concurrency Modes\n\nNamed actions support configurable concurrency to control how overlapping async calls are handled:\n\n```tsx\nimport { action, state } from 'react-understate';\n\nconst data = state(null, 'data');\n\n// Named async action - default: calls are queued\nconst fetchData = action(async (id: string) => {\n  console.log(`Fetching data for ID: ${id}`);\n  const response = await fetch(`/api/data/${id}`);\n  const result = await response.json();\n  data.value = result;\n  return result;\n}, 'fetchData');\n\n// Multiple rapid calls are queued and executed in order\nfetchData('1'); // Executes immediately\nfetchData('2'); // Queued until first call completes\nfetchData('3'); // Queued until second call completes\n\n// Actions without names are not queued\nconst unqueuedAction = action(async (id: string) => {\n  console.log('This may overlap with other calls');\n});\n\n// Concurrency: 'drop' — switch-latest (abort previous, run latest)\nconst save = action(\n  async (payload: any) => {\n    await fetch('/api/save', { method: 'POST', body: JSON.stringify(payload) });\n  },\n  'save',\n  { concurrency: 'drop' },\n);\n\nconst first = save({ a: 1 }); // starts\nconst second = save({ a: 2 }); // aborts previous, continues with this one\n\n// The previous call rejects immediately with ConcurrentActionError\nfirst.catch(err => {\n  if (err && (err as Error).name === 'ConcurrentActionError') {\n    // handle fast-fail (e.g., ignore, show toast, etc.)\n  }\n});\n\n// The latest call proceeds normally\nawait second;\n```\n\n**Concurrency Modes:**\n\n- **'queue' (default)**: Subsequent calls wait until the current one finishes (ordered execution)\n- **'drop' (switch-latest)**: Starting a new call aborts the previous in-flight call. The previous call's Promise rejects immediately with `ConcurrentActionError`, and the latest call runs.\n\n**Notes:**\n\n- Concurrency applies to named actions only.\n- All modes still batch internal state updates.\n- Cancellation is cooperative: your action can optionally accept a final `{ signal }` param and pass it to abortable APIs (like `fetch`). The library also aborts the previous call's `AbortSignal` and clears common timer-based waits started during the call, so typical `await new Promise(r => setTimeout(...))` sleeps are cancelled when dropped.\n\n### Abort Signals\n\nAsync actions and effects automatically receive AbortController signals for request cancellation:\n\n```tsx\nimport { action, effect, state } from 'react-understate';\n\nconst data1 = state(null, 'data1');\nconst data2 = state(null, 'data2');\n\n// Actions receive abort signal as second parameter (injected; callers do not pass it)\nconst fetchData = action(\n  async (id: number, { signal }: { signal: AbortSignal }) => {\n    const response = await fetch(`https://api.example.com/data/${id}`, {\n      signal,\n    });\n    data1.value = await response.json();\n  },\n  'fetchData',\n);\n\n// Effects receive abort signal as first parameter\nconst processData = effect(async ({ signal }: { signal: AbortSignal }) => {\n  const { id } = data1.requiredValue;\n  const response = await fetch(`https://api.example.com/process/${id}`, {\n    signal,\n  });\n  data2.value = await response.json();\n}, 'processData');\n\n// Multiple rapid calls automatically abort previous requests\nfetchData(1); // Starts request\nfetchData(2); // Aborts previous request, starts new one\nfetchData(3); // Aborts previous request, starts new one\n```\n\n**Key Features:**\n\n- **Automatic Cancellation**: Previous requests are automatically aborted when new ones start\n- **Standard Web API**: Uses native AbortController and AbortSignal\n- **Fetch Integration**: Works seamlessly with fetch API and other abortable operations\n- **Error Handling**: AbortError is automatically handled for cancelled requests\n\n### Batching Updates\n\nGroup multiple updates for better performance:\n\n```tsx\nimport { state, batch } from 'react-understate';\n\nconst firstName = state('John');\nconst lastName = state('Doe');\nconst age = state(30);\n\n// Batch related updates\nbatch(() => {\n  firstName.value = 'Jane';\n  lastName.value = 'Smith';\n  age.value = 25;\n});\n```\n\n## React Integration\n\n### useUnderstate Hook\n\nThe `useUnderstate` hook subscribes to state changes and re-renders components when values change:\n\n```tsx\nimport { state, useUnderstate, action } from 'react-understate';\n\nconst store = {\n  count: state(0),\n  increment: action(() => {\n    store.count.value++;\n  }, 'increment'),\n};\n\nfunction Counter() {\n  const { count, increment } = useUnderstate(store);\n  return <button onClick={increment}>{count}</button>;\n}\n```\n\n### Store Object Pattern\n\nOrganize related state and actions together:\n\n```tsx\nimport { state, derived, action } from 'react-understate';\n\nconst todoStore = {\n  // State\n  todos: state<Todo[]>([]),\n  filter: state<'all' | 'active' | 'completed'>('all'),\n  newTodo: state(''),\n\n  // Computed values\n  filteredTodos: derived(() => {\n    switch (todoStore.filter.value) {\n      case 'active':\n        return todoStore.todos.value.filter(todo => !todo.completed);\n      case 'completed':\n        return todoStore.todos.value.filter(todo => todo.completed);\n      default:\n        return todoStore.todos.value;\n    }\n  }),\n\n  // Actions\n  addTodo: action(() => {\n    if (todoStore.newTodo.value.trim()) {\n      todoStore.todos.value = [\n        ...todoStore.todos.value,\n        {\n          id: Date.now(),\n          text: todoStore.newTodo.value.trim(),\n          completed: false,\n        },\n      ];\n      todoStore.newTodo.value = '';\n    }\n  }, 'addTodo'),\n\n  toggleTodo: action((id: number) => {\n    todoStore.todos.value = todoStore.todos.value.map(todo =>\n      todo.id === id ? { ...todo, completed: !todo.completed } : todo,\n    );\n  }, 'toggleTodo'),\n\n  setFilter: action((filter: typeof todoStore.filter.value) => {\n    todoStore.filter.value = filter;\n  }, 'setFilter'),\n};\n```\n\n## State Persistence\n\nReact Understate includes built-in persistence utilities that automatically save and restore state to browser storage.\n\n### Basic Persistence\n\n```tsx\nimport {\n  state,\n  persistLocalStorage,\n  persistSessionStorage,\n} from 'react-understate';\n\n// Persist to localStorage (survives browser restart)\nconst user = state({ name: 'John', email: 'john@example.com' });\npersistLocalStorage(user, 'user-data');\n\n// Persist to sessionStorage (only for current session)\nconst theme = state('light');\npersistSessionStorage(theme, 'app-theme');\n```\n\n### Persisting Multiple States\n\n```tsx\nimport { state, persistStates } from 'react-understate';\n\nconst todos = state([]);\nconst filter = state('all');\nconst user = state(null);\n\n// Persist all states at once\nconst dispose = persistStates(\n  { todos, filter, user },\n  'todo-app', // Key prefix: 'todo-app.todos', 'todo-app.filter', etc.\n  localStorage,\n);\n\n// Later, clean up all persistence\ndispose();\n```\n\n## Architecture & Best Practices\n\n### Separation of Concerns\n\nReact Understate is designed to make it easy to completely separate business logic from the presentation layer:\n\n```tsx\nimport { state, action } from 'react-understate';\n\n// ✅ GOOD - Business logic in store\nconst store = {\n  // State\n  user: state(null),\n  loading: state(false),\n\n  // Actions (business logic)\n  login: action(async (email: string, password: string) => {\n    store.loading.value = true;\n    try {\n      const response = await fetch('/api/login', {\n        method: 'POST',\n        body: JSON.stringify({ email, password }),\n      });\n      store.user.value = await response.json();\n    } finally {\n      store.loading.value = false;\n    }\n  }, 'login'),\n\n  logout: action(() => {\n    store.user.value = null;\n  }, 'logout'),\n};\n\n// UI only calls actions\nfunction LoginForm() {\n  const { user, loading, login } = useUnderstate(store);\n\n  const handleSubmit = (e: FormEvent) => {\n    e.preventDefault();\n    const formData = new FormData(e.target);\n    login(formData.get('email'), formData.get('password'));\n  };\n\n  return <form onSubmit={handleSubmit}>{/* Form fields */}</form>;\n}\n```\n\n**Benefits:**\n\n- **🧪 Easier Testing** - Business logic can be tested independently of React components\n- **🔄 Better Reusability** - State logic can be shared across different UI frameworks\n- **📦 Cleaner Components** - UI components focus purely on presentation\n- **🛠️ Better Maintainability** - Business logic changes don't require touching UI code\n\n### Testing Business Logic\n\nSince business logic is separated from UI, you can test it independently:\n\n```tsx\n// test/store.test.ts\nimport { store } from './store';\n\ndescribe('Todo Store', () => {\n  beforeEach(() => {\n    store.todos.value = [];\n    store.filter.value = 'all';\n  });\n\n  it('should add todos', () => {\n    store.newTodo.value = 'Learn React Understate';\n    store.addTodo();\n    expect(store.todos.value).toHaveLength(1);\n    expect(store.todos.value[0].text).toBe('Learn React Understate');\n  });\n\n  it('should toggle todo completion', () => {\n    store.newTodo.value = 'Test todo';\n    store.addTodo();\n    const todoId = store.todos.value[0].id;\n\n    store.toggleTodo(todoId);\n    expect(store.todos.value[0].completed).toBe(true);\n  });\n});\n```\n\n### Key Principles\n\n1. **Create states at module level** - Never inside components\n2. **Use store object pattern** - Group related state and actions together\n3. **Always use actions for state updates** - Never update state directly, always use actions\n4. **Separate business logic from UI** - Keep state and actions together, UI only calls actions\n5. **No nested understate functions** - Never call any understate function inside another understate function\n6. **Batch related updates** - Use `batch()` for multiple simultaneous updates\n7. **Prefer derived over effects** - Use derived for computed state, effects for side effects\n8. **Use object spread for updates** - Maintain immutability with object/array updates\n9. **Handle errors in async updates** - Always wrap async operations in try-catch\n10. **Use TypeScript** - Take advantage of full type safety and immutability\n\n### No Nested Understate Functions\n\nReact Understate enforces a strict rule: **no understate function should be called inside any other understate function**. This keeps your code predictable and prevents complex dependency chains.\n\n```tsx\n// ✅ GOOD - All understate functions at top level\nconst count = state(0, 'count');\nconst doubled = derived(() => count.value * 2, 'doubled');\nconst increment = action(() => {\n  count.value = count.value + 1;\n}, 'increment');\n\neffect(() => {\n  console.log(`Count: ${count.value}, Doubled: ${doubled.value}`);\n}, 'logCount');\n\n// ❌ BAD - Nested understate functions\neffect(() => {\n  const nestedState = state(0); // ❌ No state inside effect\n  const nestedDerived = derived(() => nestedState.value * 2); // ❌ No derived inside effect\n  const nestedAction = action(() => {\n    nestedState.value = nestedState.value + 1;\n  }); // ❌ No action inside effect\n}, 'badEffect');\n\n// ❌ BAD - Nested in derived\nconst badDerived = derived(() => {\n  const nestedState = state(0); // ❌ No state inside derived\n  return nestedState.value;\n}, 'badDerived');\n\n// ❌ BAD - Nested in action\nconst badAction = action(() => {\n  const nestedState = state(0); // ❌ No state inside action\n  const nestedEffect = effect(() => {\n    console.log('nested');\n  }); // ❌ No effect inside action\n}, 'badAction');\n```\n\n**Why this rule exists:**\n\n- **Predictability** - All reactive elements are created at module level\n- **Performance** - Prevents memory leaks from repeated creation\n- **Debugging** - Clear separation between reactive elements and business logic\n- **Maintainability** - Easier to understand and modify code\n\n### TypeScript Support\n\n```tsx\n// TypeScript provides compile-time immutability\nconst user = state({ name: 'John', age: 30 });\n// user.value.name = 'Jane'; // TypeScript error: Cannot assign to 'name'\n\n// Proper typing for complex state\ntype Todo = { id: number; text: string; completed: boolean };\nconst todos = state<Todo[]>([]);\n```\n\n## Recommended Pattern: Functional Store Architecture\n\nThe todo example demonstrates the recommended pattern for organizing React Understate applications. This approach provides excellent separation of concerns, testability, and maintainability.\n\n### Pattern Overview\n\n```tsx\nimport { state, derived, action, persistLocalStorage } from 'react-understate';\n\n// 1. Define types\nexport type Todo = {\n  id: number;\n  text: string;\n  completed: boolean;\n};\n\n// 2. Create state variables\nconst todos = state<Todo[]>([]);\nconst filter = state<'all' | 'active' | 'completed'>('all');\nconst newTodo = state('');\n\n// 3. Add persistence\npersistLocalStorage(todos, 'todos');\npersistLocalStorage(filter, 'todos-filter');\n\n// 4. Create computed values\nexport const filteredTodos = derived(() => {\n  switch (filter.value) {\n    case 'active':\n      return todos.value.filter(todo => !todo.completed);\n    case 'completed':\n      return todos.value.filter(todo => todo.completed);\n    default:\n      return todos.value;\n  }\n});\n\n// 5. Define action functions\nconst addTodo = action(() => {\n  if (newTodo.value.trim()) {\n    todos.value = [\n      ...todos.value,\n      {\n        id: Date.now(),\n        text: newTodo.value.trim(),\n        completed: false,\n      },\n    ];\n    newTodo.value = '';\n  }\n}, 'addTodo');\n\nconst toggleTodo = action((id: number) => {\n  todos.value = todos.value.map(todo =>\n    todo.id === id ? { ...todo, completed: !todo.completed } : todo,\n  );\n}, 'toggleTodo');\n\n// 6. Export everything\nexport {\n  todos,\n  filter,\n  newTodo,\n  addTodo,\n  toggleTodo,\n  // ... other exports\n};\n```\n\n### Component Example\n\n```tsx\nfunction TodoApp() {\n  const { todos, newTodo, addTodo, toggleTodo } = useUnderstate({\n    todos,\n    newTodo,\n    addTodo,\n    toggleTodo,\n  });\n}\n\nreturn <div>{/* Clean, simple component logic */}</div>;\n```\n\n### Why This Pattern Works\n\n**🎯 Clear Separation of Concerns**\n\n- **State**: Raw reactive values\n- **Computed**: Derived values that automatically update\n- **Actions**: Pure functions that modify state\n- **Persistence**: Declarative storage configuration\n\n**🧪 Excellent Testability**\n\n```tsx\n// Test actions independently\ndescribe('Todo Actions', () => {\n  beforeEach(() => {\n    todos.value = [];\n    newTodo.value = '';\n  });\n\n  it('should add a todo', () => {\n    newTodo.value = 'Test todo';\n    addTodo();\n    expect(todos.value).toHaveLength(1);\n    expect(todos.value[0].text).toBe('Test todo');\n  });\n});\n```\n\n**🔄 Easy Component Integration**\n\n```tsx\nfunction TodoApp() {\n  const { todos, newTodo, addTodo, toggleTodo } = useUnderstate({\n    todos,\n    newTodo,\n    addTodo,\n    toggleTodo,\n  });\n\n  return <div>{/* Clean, simple component logic */}</div>;\n}\n```\n\n**📦 Perfect Tree-Shaking**\n\n- Import only what you need\n- Unused actions are eliminated from the bundle\n- Computed values are only created when used\n\n**🛠️ Maintainable Architecture**\n\n- Easy to add new features\n- Clear data flow\n- Predictable state updates\n- Type-safe throughout\n\n### Pattern Benefits\n\n| Aspect          | Benefit                                     |\n| --------------- | ------------------------------------------- |\n| **Testing**     | Actions can be tested without React         |\n| **Reusability** | Logic works in any framework                |\n| **Performance** | Only used code is bundled                   |\n| **Type Safety** | Full TypeScript support                     |\n| **Debugging**   | Clear separation makes issues easy to trace |\n| **Scaling**     | Pattern scales from simple to complex apps  |\n\nThis pattern is used in both the [Calculator](examples/calculator/) and [Todo App](examples/todo-app/) examples, demonstrating its versatility across different application types.\n\n## Examples\n\n**🌐 [Live Examples on Documentation Site](https://mjbeswick.github.io/react-understate/examples/todo)** - Interactive examples you can try in your browser\n\n**📁 [Source Code Examples](examples/)** - Complete working examples in the repository:\n\n- **Calculator** - Basic state management with derived values\n- **Todo App** - Full-featured todo app with persistence\n\n## API Reference\n\n> **📚 For complete API documentation with detailed examples, visit the [Documentation Site](https://mjbeswick.github.io/react-understate/api/state)**\n\n### Core Functions\n\n- `state<T>(initialValue: T, name?: string): State<T>` - Create a reactive state\n- `derived<T>(fn: () => T, name?: string): Derived<T>` - Create a derived value\n- `effect(fn: () => void | (() => void) | Promise<void>, name?: string, options?: EffectOptions): () => void` - Create an effect\n- `batch(fn: () => void): void` - Batch multiple updates\n- `action<T extends any[]>(fn: (...args: T) => void, name?: string): (...args: T) => void` - Create an action function\n- `group(namespace: string): { state, derived, action, effect }` - Create a namespaced API for grouping related items\n\n### React Integration\n\n- `useUnderstate<T>(state: State<T>): [T]` - Subscribe to a single state\n- `useUnderstate<T>(store: Store): T` - Subscribe to a store object\n\n### Persistence\n\n- `persistLocalStorage<T>(state: State<T>, key: string, options?: PersistOptions): () => void`\n- `persistSessionStorage<T>(state: State<T>, key: string, options?: PersistOptions): () => void`\n- `persistStates<T>(states: T, keyPrefix: string, storage?: Storage): () => void`\n\n### Types\n\n```tsx\ntype EffectOptions = {\n  once?: boolean; // Run effect only once, ignore subsequent dependency changes\n  preventOverlap?: boolean; // Prevent overlapping executions of async effects\n  preventLoops?: boolean; // Automatically prevent infinite loops (default: true)\n};\n\ntype PersistOptions = {\n  loadInitial?: boolean; // Load initial value from storage (default: true)\n  syncAcrossTabs?: boolean; // Sync changes across tabs (default: true)\n  serialize?: (value: T) => string; // Custom serializer (default: JSON.stringify)\n  deserialize?: (value: string) => T; // Custom deserializer (default: JSON.parse)\n  onError?: (error: Error) => void; // Error handler\n};\n```\n\n## Breaking Changes\n\n### Version 1.8.0\n\n- **State Setters Now Accept Async Functions**: State setters can now accept async functions directly:\n\n  ```tsx\n  // ✅ New in 1.8.0 - async setters\n  count.value = async prev => {\n    await new Promise(resolve => setTimeout(resolve, 100));\n    return prev + 1;\n  };\n  ```\n\n- **Effect Options**: Effects now accept an options parameter for better control:\n  ```tsx\n  // ✅ New in 1.8.0 - effect options\n  effect(\n    () => {\n      // effect logic\n    },\n    'effectName',\n    { once: true, preventOverlap: true },\n  );\n  ```\n\n## Coming Soon\n\n- Enhanced Chrome DevTools integration for comprehensive debugging and state inspection.\n\n## License\n\nMIT © [mjbeswick](https://github.com/mjbeswick)\n\n---\n\n**Note**: This library is actively maintained and follows semantic versioning. For the latest updates and breaking changes, please check the [CHANGELOG.md](CHANGELOG.md).\n","readmeFilename":"README.md"}