{"_id":"@bennyg_123/entangle","_rev":"25-31de1671b4f188a0b388117099d00848","time":{"0.0.1":"2020-12-07T14:38:11.467Z","0.0.2":"2020-12-07T14:38:11.467Z","0.0.3":"2020-12-07T14:38:11.467Z","0.0.4":"2020-12-07T14:38:11.467Z","0.0.5":"2020-12-07T14:38:11.467Z","0.0.6":"2020-12-07T14:38:11.467Z","created":"2020-12-09T00:23:22.495Z","0.1.0":"2020-12-09T00:23:22.818Z","modified":"2022-04-04T18:23:27.504Z","0.1.1":"2020-12-10T19:48:54.596Z","0.1.2":"2020-12-10T19:59:53.479Z","0.1.3":"2020-12-10T20:07:09.136Z","0.1.4":"2020-12-10T20:12:54.425Z","0.1.5":"2020-12-10T20:14:20.795Z","0.2.0":"2020-12-17T02:07:34.841Z","0.2.1":"2020-12-17T02:32:50.330Z","0.3.0":"2020-12-22T03:37:44.461Z","0.3.1":"2020-12-22T22:32:03.005Z","0.3.2":"2020-12-28T23:28:53.772Z","0.3.3":"2021-01-15T16:05:56.991Z","0.3.4":"2021-01-15T16:10:10.338Z","0.3.5":"2021-01-21T17:54:12.360Z","0.3.6":"2021-01-26T19:07:10.873Z","0.3.7":"2021-02-06T03:04:44.007Z","0.3.8":"2021-02-28T16:55:08.990Z"},"name":"@bennyg_123/entangle","dist-tags":{"latest":"0.3.8"},"versions":{"0.1.0":{"name":"@bennyg_123/entangle","version":"0.1.0","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.16","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"77e33c4997569cbd62984cdb065577b11976ea84","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.1.0","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oxRk0lvynrVH6mUbdixwiqQ233+U9zdD3tp1JakGUIVqTgcdo20syTCYrn9JywCCNik8Po4T9rcM4g3otAAAZg==","shasum":"832efb09d5df1f035599d7e04de83ff85b6340eb","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.1.0.tgz","fileCount":22,"unpackedSize":3091959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0Bj7CRA9TVsSAnZWagAAbrcP/2+28C3xoBIR2y5UkTqw\n9DTB1+riQ+Jnq9aqiu+ybGgOG+d/sbyGSgAY37DJT34iZSd1iC+1s2HXoWO2\no7WsU4P3ix8PJValr0CZoM5PsVxgTssOpWOa2Bw02D61PdRtvN9FSJd2pBFZ\n7WaHfLAiaCbpRmjUbcsGd35EytVjetVluVBbtsmWTh5yWM2rRYNKjwvWnkBL\neoUVGGoScVpOx4+wq3V7+mHBjQA2b8UixIQWytLe5tVOYuWFSAtLSTJIuD/G\nFoavc+xRbD2c8NGtC36u+Uagw/15wnQQ4zjmFJ0jt9SzXfbBWpypvO/Xyo60\nltc9+uetsTjPq9QYyg9t5Feq007PNtZ5YB1uLhTinBe2RrH8JIRsoIrj7BqZ\n/BsoWZG04e7Cnw+zCJYpMkT+kkbQWmFOGJ1Nh6oiBOX4Lgf3+0hu7YL4hhc7\nJ9lnsfKbk7gPT7fEZJCW5Hre/JEf1JpO5p+PrQCOaOhHtBtZLO2nPZbirU1C\nE19BdqWgVtGEdRhqyIirY1v9LMr2YuhLGbXIxSoUkeT9oywXTQXkjMjyOtkt\nAQIsr3bAuw6ftdUCzacYLA8+Gq5L/XJ07FWjizcpwi6bntbO03kCqzAWbjFS\ntw5dAKxozdlc83l8HSUCH4OndgwKNeyCvg8ZpXXlfQjrkMaRW31DaZlbrhvo\nVWAA\r\n=iJLd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCHzZN3a2jrJ028OI9RTQVHsdS386fjVvsS9ePr1tLhSMCIFFzYk/QkDtP5Sy5STdpFaYwh2f/fwHxtHQk3tjsorkS"}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.1.0_1607473402537_0.5076169602848781"},"_hasShrinkwrap":false},"0.1.1":{"name":"@bennyg_123/entangle","version":"0.1.1","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.18","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"36e51e0ae28e25e12cc0004684efbe957c04894f","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.1.1","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WAjObiGPrcR7JBAHCqY+xVwp7X/UjSrpSGqVZMLysPzlFIXbze8H8gSYIpZbuOgf6V6BCzANGKp9mbUXyMqn7A==","shasum":"d7f93dba86704a6b7927a8bfb1c5043b6bb85aa5","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.1.1.tgz","fileCount":22,"unpackedSize":3094102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0numCRA9TVsSAnZWagAA6MYP/iL/f3L11cmeD+TC9CM/\n2vH9n/T8Y9+madIu9hN8k2zWOj0Qv0mVT5RUlec2Lu7SvvVQpCbi27aQSCZg\nndjLg5HTwlULvBixvrBB3Kllw7wyHQl36RdBiANJUWxH0WBk0g0M6OwI3uzE\naxo5EqRGznoc0LaG534zy5QaLER7nNqRfA0z77ooFjlOMja76V8DZ10juSIT\n5x463AWXMiqI1i7e3mfwoJkkCeMRhanEUMCawCe/35pNhGedl6BlH9H1MvLt\nyXtURwLkJYSd3/HZ/arCSaEzOB7hLLdw06+/eahVnyaMZHmRirY5nC+ukA0l\n/UZD7F7vEp4CfhyZq9O59dqzXW30vlvM2EWYkHTLcxYdeC9HInfQAZvitk/j\nDroTTPCmj+RTd60t3RUNQp1dRucPpSpfcCwx8LL/eiqHgmjqZx9VyZY3TTVa\nhPc6gNKWnxiVeY3e3kIx2vXF4PJw+KG3cyUMOf/i29MHmHeURXvMQykfw0yg\ndRUtMgL7+gMuXKxpmJCAR/1LzseTcZRwgnpTv4sjQyB1DDhVyKiHQmGJ0pLG\nMP/g/HTFkoFIHpa8QDiFKGfng7yOMFI5+9Wy2fiW0a7rwNkgm+y980wg3abG\noB0VJt9XH1/nERD+RqP7z7udsDo/Q/Z+Uh5Sx/u8lwNxeySFpIsRIzbv2PY6\njRvB\r\n=K1fD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGz0Yj2jrQV0yq5PvGr3TW5aU4AnHg654h5LOf3+lseQIgQSFEAcNJs3T/nRiKw97zABrAKbSotwQyBNQ7tPNXkk4="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.1.1_1607629734380_0.10298727080120718"},"_hasShrinkwrap":false},"0.1.2":{"name":"@bennyg_123/entangle","version":"0.1.2","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.18","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"6d354e1f02e1569efd5a174ccef3208ebe899735","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.1.2","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-06xC2pLqruyG+13PIbqJSnJB2L26LS8jQMPwd+4Ji/H+3lW4W+9u43vbbrkAJkn/vkPrGDC+7IeGAuNd3kn/Ag==","shasum":"67cbc5cbb732ef0b7016ae4c7a5b3c891bcbdd9f","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.1.2.tgz","fileCount":22,"unpackedSize":3095246,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0n45CRA9TVsSAnZWagAAZQsQAIV8O8PgfgOoqtqVHn6x\nWOQa/7MtwYEn9OYA/eesPUoMv6FKi1oPpmZCCEGkax7CF19PQdMF/j9f+KVc\nlhSMkG8GNuHwRSSINqSEbwQP1Q426csONfp+npxpSR7ZvGCfGqkQmv8j3/Gg\n3mWIb46OgvBqZCkh6uHBxbSDo/rsuuskdIPOU5YG5NI7tLaVHEmI1os8zAPj\ntHCGQ+lEOyLRykGNDnPla+edPbqYJjQ+34WlMElGSuYZqK7X+I2A6Uxq/zbA\nEN43lXmQJnO0Q3DWeWVgi//EIamI1I08C5yGWllKCnpt92oVbBrB7uHVc27T\nNKTrxpgikHDQdRv1DG7svjsVYreTodBNNi22PSA7bFaOjSlmNd4WXoMLwlL4\nhFryJqxGQBoP2C8FQ8cfUclzQJFlYw84zkAae6zglm1t2mUB61wXOnd/Q6Iu\n3CpeAmhztlxLJ8mAP/b9Ti9MJgwM4xIbNrG1NP99ESYxiSoA4uyxbHt9qgux\n7ZsF+a+MXV54Si/7qmfvRaz2Y1CSfX64R8St19I1dYFwR0Okeex/t4puS3eC\ntcJTXQ0ijlDUkGBPnA6tXiQaczygoZGNjY9Yi9R+KYRSVPG31ErkThEi9ldx\nwGpUjuZnrkalc5vLiI9AygFwUQv5NqItNSeu6SNocJQSSQFhGUmXwyyszY7f\nwuE5\r\n=+lXr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGVPPgbE4nbbOvWiXpYB6QSde+1zid9xtTe8ys3V0ZCCAiAA5oF4w0hRSN1veAPHzoOG21X7SyxOZFff7lAQBcYbjw=="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.1.2_1607630393289_0.24133979466308642"},"_hasShrinkwrap":false},"0.1.3":{"name":"@bennyg_123/entangle","version":"0.1.3","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.18","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"cdc96829d29cb90b80227beff46873f86e94601a","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.1.3","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2wdiYql0NKQ020B0Z99qDjSTGX+eLQJCvNtv62UD4UHp0suW9iBdgHlu13N/NYx0udHeHoprVPjrqKZHw7N/TQ==","shasum":"9165898fa56be127245c872f28e57b03d3809257","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.1.3.tgz","fileCount":22,"unpackedSize":3096157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0n/tCRA9TVsSAnZWagAApvYP/3cYJFSVz9Jin1iuL94t\nGc+OnGC9ZJUoByYh7rO2EyTGCJy31c58oyTmK0IvlbVh3DKhnQ70J9gNjGIU\nO4PdZABuOJjmJBEoXkdTj7Da1IKRZpDbpHhNIsvxfBJGYWLi+ymvzYXMtZ4z\nPxJyydZgMEfEoVpH291oiVmhBKPTqxzN59IqDhusU6rzVOS+JJtNvVEmijX/\nEARi9y8X8dfwYHNdRlqfGNXHIJ4T+D13lgUmrjuxcHC7/WLvSc87388sVWsX\nlL9ACMaqLMlFlkN05j/HN3eGnLh45UFh/+c8wj8ZX+7Ce3iTU2/FJCbPzVgX\nqyButbYCJQhlOzQuD5DDwDrTHLYDIfZqNdnJ7n0Qj3Yyae+HQWhQVjOG5KYC\nHqtBe42DO+Un2vZWwaU0B6ABGjv97YkKSEGzczwe4TVrKLZpvMYitWprQ/RD\n9wNMytpxD00zNjC/jAj8cJpoZQB9fw9rv+7sYrdBZjAYgTigjVFqnO4NDBKc\nYrhmoz1V0y+7Dg86X97BDHkXM9kfCzRFKuKA/Em82ygTgD516ONRiIIqZse7\ndPuZNBJbRrXpv9SrZtms/6WARPZ5gl9iLHVO4JCokzNp5KQLxfYlh8bv8kNs\nxw2n5zzV0CGk6od+8KWXNirwBcQ+t52L4NBmVW7K7QXB93lfX7+xN4qIK/f0\n53j7\r\n=t72z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDib9JHQr6M8xeDpJ9whFHuJ/Prf1/ls5f4B4zbF+ITAQIgODJN/j8UKGU8/7jLY9sySsBJjJEoCgeT4FNepX4MZd0="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.1.3_1607630828538_0.4955884769484751"},"_hasShrinkwrap":false},"0.1.4":{"name":"@bennyg_123/entangle","version":"0.1.4","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","publish":"yarn run build && npm publish"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.18","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"cdc96829d29cb90b80227beff46873f86e94601a","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.1.4","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0vB8K+ZO8s1wvjBR9RpkciYg/BkSVJpGl8yHtHOj1UJJD25FfKfVVq92RLv7e7l5j8YV+TZksV3dyUB9G4DpGA==","shasum":"2572cd5af84dd08f5a1700b8b0a65bb98300a30b","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.1.4.tgz","fileCount":19,"unpackedSize":64148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0oFGCRA9TVsSAnZWagAAmi8P/i07oHapjrjwTPU0SAKl\n/e/23U+iYGwP1buP8S0tuCgYcPdee4ytgo4ICz8WA2LlFCTCSkGbDOUJj1cX\nG2O9RZeXsXU0vQ0g0ANXg4EIvlGgHlHOehAcRtpXhlSvP6n4Ku8IN6s4FZjb\nLvaDqEFy2uYh8At8KIUjylmM6BTHsbZy9XsMQcveXNeIZjtQ9fj7zS1mYlF1\nhWrIFFWhvRZxB74Y5qIti9hh4byeWlb2sKZ027arKwUif9KWXrh0RpjNb7Qs\npL3Ef0eIOXMFWi1os7WJDsqhcE2ekD1SRa72iFiA7q9gQI1spU1pvjeiXllT\nXlALHJmb0ewI9yTtfe7mO/gD3CXz4ljaHOGJHxfb/rHDkYGXGcu0tgIeqDaK\ngLQbl0YIyuyXOsY2/2F3EhEyvd/JcQarcf1aHNb2VfJw2D4dijuameH7mAEe\nIYHJVO5B/k+jlxbra44duaPc0MMbaorfDNVRQ/tQFkehzbPn8O51w4e/y5OA\npQ/5kGN3iA947uAqctS+kqcyeEnUuD0aVBoIrpYC+97mVdw65nDsR3+M52ma\nbn7sbuC4i10annmcpHOPQzVzcvL7DuWz7fggad16tmQkrvgoAjPmkCPakcP4\nOAHYrKPZIGSW2+RweP4FmYrJPvdaTlag3MAlkFrlzK/NCEtevjQStBjgeUfL\nZUWD\r\n=PBLf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuB9tUX1knySqPgaS37mC8R+GZlLWpb8RbwUaV5Gwh1gIgacix2Q4Kgb7f39hQATDSmIkZ7KFJeWo/0e0FehNPobs="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.1.4_1607631174277_0.9576380625941889"},"_hasShrinkwrap":false},"0.1.5":{"name":"@bennyg_123/entangle","version":"0.1.5","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.18","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"fb60b55d87cd9047e3fe656dcc5b19e2a036fd1f","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.1.5","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JwWJriJIdCNm4sTzitt35nHSunnFWWvgCaRgzNOfGHXM+sRZlSxfQ3u9n5JMQkEAXIaZQm1eqXzf0+1mavazew==","shasum":"667ea318202c0926372e2de2e35af2468402c4a6","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.1.5.tgz","fileCount":19,"unpackedSize":64095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0oGdCRA9TVsSAnZWagAAQtcP/2Ylo+Aeu1iUW6mrquWY\nIwdP/NdgRn4YlBst5EZEgEyuWtgmYnznv9dfnMK15NteXHp8q/42hJeom8Ic\ni4RJE0YS4sUaU1Q4oi47At2StcNIQqILS049FnLmRtC3qFv2oVNfNPcsLXK9\nSJ4M50pPyiLQlSD3+GLLxN8DMZ+1+vxJDmO5DOWdXMnqT5EUYp980k4K2KSp\nY1llQAphzzfLNS78WbYjMNnAAczVlrg6BCu9SKXW+TBtr+uHJ3GhXfD7wTdL\nuwpVRQbWIPB7zS1ECBscmY6NNmsoCIB7T6gKxntOibdx9REaby8mqB6D9Lxz\nFcCzO1x4vMEh7CDuaQFJHQuuLpvWhhKzfCpSTL9uV/OVtfYddFcFD2Nz/h3L\nQzTbuaH+G9OhGZZjHefMNV/roOukj2R36YhglbO1hJaQCYZEZQy+M5/OlHFd\nYmEXV6VwuAcgRtBWNcZjrTQ1kU9iLdGVbRynyB3+R8COldWz5fXoykWxTUrq\nvjdZPoMs4u04xbaAMCket9IYgR+PRUQ36j+Vem2WRb8zw+H+3vwuA1ki12rR\nB3N4E6fk1m9925l67eLPtZ7gEINPp0kcEE4jIbZBMGd10J/87DXqq5X8bcq3\n+3zgzwqz3JhA4T3pC+8JvpsZumEnHy5QHS7OWmOPQq2fBa6ifopcMe5VQPKO\nkAC4\r\n=VH5I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDP0ThslTGYUiZ8wREcToPc1R+XnOMw8slqCbOvMw3oMAiEAsoIpB5pwA8Gv34e3JSqEULpUKIQZlWkvtgGDdS70g0U="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.1.5_1607631260621_0.7100866218342559"},"_hasShrinkwrap":false},"0.2.0":{"name":"@bennyg_123/entangle","version":"0.2.0","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.18","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"5eb8a98900be422b9362126ebde4216d87d1f4db","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.2.0","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+07ezQsMBI3hLSRJzoExCR0edo+z7s+0lDiDmXLYpm2ywnhDo7do/+9A/uIrIhRESMjxu2fn/E596NqJDbfHEA==","shasum":"f6646e07014af93cca5c17f0350972e957bb292a","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.2.0.tgz","fileCount":18,"unpackedSize":72770,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2r1nCRA9TVsSAnZWagAAFHkQAIcUBu4AAF33zFmpuOb9\nzxwusH/h9kda4Fyif8ZI/locJPhKSrxunVLQ5GkGUTZVZGYvuRU450qLmc0r\njcsQ5GmmaX4ptIH4KbQNrnZe0EQNXBUCcDkuSyKztM+CPCc7XU3x8oClldb+\ndN/es8dZJN1lHXwd2J28rKKPDoFfBU/hzNcuB6JuMQCuMFwNKLCV/J6lBh4G\nFUUPuufme6pAz12ihpqpyJ+7G4Fx5utCRXKT6Zs+g+jmhSwpv3dHr1e1H+9H\nTXX+yC1bKSH9ExZ2Hur2pr8+wmRiTNd2p6rJsJThbJLMSl+Z6xqAhSdFAvhh\n/rgvj0Gfb7+YppVxYkbzA1Do18VBUEtRV0VGz3niwSvm9AyG3P8ZzvDUmjB7\n0ZtGlLmx/bYGrU/ml6oH4yuGhdz1Z/L1GOdtSIrlbucgQSG6oGE4ZhcU7Ulb\naco2ottvYxDeXUAzbwG4a7FacKTWzOcskJ0MWLEuo+VAF/LWz8H08MphnLIf\nbllYHbQZCnCL0e1mONDNmBJYWe60HlmqJYNZ00BWnbW8KndHsnso0LCNbt5G\n5jt6Qx7afcdbvdyJwI+EUJ2B7BsRGkSDe3JE6MG7J6PeYPbYjY+XERsFocv0\nhLsrZaywtOAsdH6tGa82WHAu2vZIsI7EaX+ZeMnClEt8iELR7fsdvgNhz62b\n8z4C\r\n=3Oj1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7CPRPWLNw5ssMWiPLCC2BWura1iyQI1ZhShVjtVZ2/AiEA3dXpXLfDDlscYk9AKVA+TQWE3OJnqRIzfyv7gx+eock="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.2.0_1608170854605_0.2902334575859622"},"_hasShrinkwrap":false},"0.2.1":{"name":"@bennyg_123/entangle","version":"0.2.1","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.18","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"5dd9d804173e0da65d710ecd199df49ec1f6af3d","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.2.1","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ILNJIji4VoJ3JqQ6Da+epdu6JMhQgw+UnMRhQu9tOZlWPEaw6FtCbAeCz5bJmZ4NVqSdj0YumPH5bf8dAiVsaw==","shasum":"e4a51a143510243d88a4b697599406f812425d36","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.2.1.tgz","fileCount":18,"unpackedSize":69189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2sNSCRA9TVsSAnZWagAAr74P/i9rFgPkS/OSBh2MBTl6\n87wBPkwya0CFfJ90dRefvBYPngs2xtqtz25oz+fHDdZ41VlrAurbipAIJerH\nq8cmkFck3bbFInIU/7klQs2FZrq8CQJXVXclOfiadBpfACkaoeiLOZGnmqhf\ntXMsrW/a2SgnKOJUwfWhojPpmGGhCrzSa7ILXLpSzbTr7Mrc8TxjxU1PvJ5h\nW79J3c7Y48vzvjx21QJNTyIVA/jMuSlZicIA3GSyqE2UAoqHTuYLaPMPTbCG\nFLE75SE3fDUtA80UUc1tBCxUmXOt0AYDllcHaj9Adhs2vneK2/hSQcAQhBlf\nWPk0+GHWZ4UiwyMECMfCaJ95M5w9TVOLK4XNcVTckhjI19l+vPxnQfeP75+A\ns34YntbmOenC1KV5cg36dQzetOaYVW59Qw2vv9mv27VWRm5FyO9Q6hzvoYei\nYZ7XH72MNSUwt4RNMx7QlhkWCa4jccQYOwDpo5Lk9m2ayTkD8qhVgRtuqfUC\nOgWcFonQsaWhC+E2pSna90CTLaC3e4mfAW2CXTLSlXn4Ft0ITw6mSQsNIgCv\nNipSI4y1O3SDTnv4svpjXEoWm3Xwgz83MPWNX3d3WClwnbVmGOxNvXg2+c5D\n09jFUxxweqTg0PQTCwHOUdHRrUGiDkzIQX9H4zAUy3fQWIY0wGhQjMhIth6a\nKMau\r\n=2v7t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBf/8PDsia9tfupnbqLkhoXE7NPLFnuTBGEdj96h//rUAiEAyOyzG/3fBxdE3WXnxucrh53r/fxEhicfR6cP1BecrZM="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.2.1_1608172370164_0.3653179095851975"},"_hasShrinkwrap":false},"0.3.0":{"name":"@bennyg_123/entangle","version":"0.3.0","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.19","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"7b5bab4bb2b9ce8f7e6d1c4aeaf82c2e45d5f6c9","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.0","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AMOy+hdFPZLbqQsJVhg+f44E67bcai9l45p0fAnmqJdJk1MOFwG/wcgrvnpwh3r5U6mkHdq731mmK5D3j5EAPw==","shasum":"ae446dbc7e324556f3a1990c44953cc12d6bc4ef","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.0.tgz","fileCount":39,"unpackedSize":86766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4WoICRA9TVsSAnZWagAA3yQP/jkW/UtWpPZAwgPvNBTF\nTUTgmIQdZltNrlOSmAQwK+W+kQknNmj6jCJ/tGcunYGpq/sDohpO1xeJjQpG\nuNHcJi1vs9KQnzlCKKJrPLgdekdsbbk4ifmIySec3WUsd3u/gX61IZPIuQSY\ncSvNvb9UbQQVDPpZ58uBLUcMZ/5z3uuepL4p7VquzPlLo82ZgfgkeIlMeVQr\n38TdZi5oXuKV/y5BupiKNXrCD/st+9IYuqBtqSwrTdei///zwOjpHND0Nh0t\npOvxGRdNobqok/I5ytY47czI7mXs9OuQFuyg6BIiuMNq7PGdySfl3Yn++0IQ\nAP+W1Gh2MS8KzxOrdXQLkEIkCs57XTBDVpLipZteud4ypZTqctCchd7onXKc\n9lWBX2oN3cbdDDyjyIgLQozcxSgCDQfdkuBgw+e/gzwXwT5cPuHwgqS0B/3a\n6TMUIMxFCIj5mJzQgRYKHKYeZo7lZTBaofByfuDcYLbkeMebcKcwC59fFl6y\n9rP9xLYW3WqRfNbPWjZoJUk/VtwsDoj2W3KJxCDPCOc3B+FzIc6/ER8FlbOy\nkTk7T/pOoig8jABvX//SABT70PKvipUmXguHSnT31+ulzEm6gRrlmaf1MBf6\n590jKtpC41RBafQfiVharNQx0Timsc0wadFRKBH3RzXur1J+k5iz8swOA4u+\nCwTY\r\n=eoKE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH4LHBeJ2QuwcHbTXokGVlsVuOEsl6E6aQ7DVmdPwACFAiEAgqsdjDnVbJZhGxTLvEHpk7t/MT6EplcynygnAmYrLPQ="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.0_1608608264345_0.5916640370500361"},"_hasShrinkwrap":false},"0.3.1":{"name":"@bennyg_123/entangle","version":"0.3.1","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","example:todo":"parcel ./examples/todoList/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.19","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-summary":"^1.2.3","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"366c469dc4343376f55bf421d1c04c2cd59004fe","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.1","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Lj4XoM0oxC2CZ245x4gFOpXsnIMvTEzvthnK8ET5Bb2u6nFJwKOkvGqTROLbCkjZ6AdJ15bi05wPyuLTTCVrdw==","shasum":"6024fe13d3db68989e4e3749ddd16bd80584b071","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.1.tgz","fileCount":48,"unpackedSize":91428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4nPjCRA9TVsSAnZWagAApOkP/14Z8RDcqNRX7fDknDOX\niagGH9wG7EYgKSrYGSPUZMXRRJdWMUwFCBbYRJyZxNy7j1aOm5yTXcyM/n+e\netrh4s+eaT/lb3uZYq4Q/P1rDF4PlxmXRGKcAgHoAb/aFk7A3r7FrbMfc4ll\n9wIwtHz4i51iw0K9NemKVAlH3j/tpO5Hr7ltRgjcjVye8kiG2g0kMv94pftl\nC4b/bgppbvGCCPUXhVyLCe5MqSyG73s2SNDDrbpIuahdU0DAlLvcfHDngETy\nM4CzZ6JWZyLLxWhN4HVYtKLI03OkvugCK+cOF/L3I0HQuUFQ4D64V5Th2pp8\nJs0VvTDjLocaAsj5EN2ZjIAOwqMhW13ZvLYoFkQDF+u/MHKklx+WA14cG+xx\nBs70CgbYHUL7Hd45UvwtmeWjSfkX9uwJ1vQUg+XwSfhrJST7X5fxbS5BiQ3G\nDmCVx4+spJICrB7WE3ErrU+OFRTvSmeoPbN4wxugQE6kCNQytOZzf1C8rHLT\nvPDwdVb/CnoOiqnEp8jZPYpMmtzTHQ8tNXv2ftPgkREW1NSXnYlOKTgEUljD\nQxze5575zOYFcyzJ05phR92G+duz4jp6cCfrGbAxKHvvKrQ/apZH9QRx8AZw\nQ6sCl5HohUiAUSThkdu0clG+jL8XwLBvs7eHvWOhnIY92boPFiNIdOK9Y0Q0\npOt3\r\n=8IP+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDClt0s4xMmjW9UWm0R+ZicghlQVJzJBi91xN9N2qmMvgIgGWx0JZowjMdABnfUXr1+g8AVpZUfwqobZvZm11bBUcA="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.1_1608676322850_0.6509764483381295"},"_hasShrinkwrap":false},"0.3.2":{"name":"@bennyg_123/entangle","version":"0.3.2","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","example:todo":"parcel ./examples/todoList/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.19","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-summary":"^1.2.3","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"00dce0ea5f5cdb2aad694ebbe4e7343977f8de06","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.2","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M4RS5i58k+rQe7rW3ecRfsXhJJDDuw7uce0ngQ5avW4/G2IcE1EBXyrBvePBvqAjUvFjL5LewnjHJrFcr/nrKg==","shasum":"3243ad138217c557e259e86931634ba52e05abf2","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.2.tgz","fileCount":48,"unpackedSize":101113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6mo2CRA9TVsSAnZWagAACZQQAJQhfjYEzwaH7zE1CarY\n32y5J4nIizuABuUwuWsZzbP/1kUbjTJcE+zd8MMe+kBBEp/c9ErubH0kIumW\nroMHJgR1S5VQmjldjjjIFWbKmmFOhPJPxRotawrOp8+zaFCA6x6Ry3ws6rZr\n4mnqz/vz2dnOY5Cz8ViJwZkIG0rjJ8+1kZ5tqc0fEiFVyazW3BexmqKbqjF+\niiEL1BvYignK/KQPX2CRshgdApQuv1oLxnrUF/yMeNnLUcp8VWfad7+TCvc7\nfDqh5LfBO1Ery9W1Jx724iDu9ReHUoBs2E4167ZQEL7kEMziiyQHckYJXgt5\n+SI06Eb8E76ADd6fh7zFrt7hmPKXyDYWHa8YSRee67uzJmT6SbsPE/QnrHOx\n2z80w8hZWUsbiA6N/JxIJI6rddZu/uWTsP6OG78O+0OZyiy3fYiS18yM40F7\n7YJAI4rvKOsRJPVUUIDOl6y/FDDQCrubnRp8j5VK+A2vGbxO4y8AuLHSwO0i\njcVeiqCe3WX3qNWclLMviB8vmiS99OLALvamUM79bLwDMAclj7k3MCcUxS7C\n06R9qLoK1y044S05HdAe/lOKgpfqOOCTpTaW6erX6n7gOKiv9whWYoaVBf9K\nZa/89M4NpToQsPkGjYFDXVOsqQS5UDo4zkMxpGCSBkuV1mS0QtN/gn+gDsup\n9jCW\r\n=90V+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN8SEDnEO+MamsThKtP8rU9oGYuK4zOlvQSzJVj/tQCwIgfb36ruHwM8GOnUDc918JwXdt4VbTXUwBpG55z/PJVtE="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.2_1609198133600_0.3585480609003746"},"_hasShrinkwrap":false},"0.3.3":{"name":"@bennyg_123/entangle","version":"0.3.3","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","example:todo":"parcel ./examples/todoList/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.19","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-summary":"^1.2.3","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"4ab2db08bc3ee7147219fda8b2808e68766989ee","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.3","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VR3FwZUoRmNIurvMYx2qPL+w/WNRnGrqckpZs/1BBQtIC/b6RuZaS38q59eU5ZivddW6QszLE+gBHj3Ba4ly4Q==","shasum":"857560b6614859de3bd0ae72e85d2c9adda09121","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.3.tgz","fileCount":48,"unpackedSize":101401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAb1lCRA9TVsSAnZWagAAFUYP/1pEVTFIG/T395wFxWpC\na0/zH4lpN39A1PVhdNrMkPcSs8P1bGmbYkWAmXpNMD9Vhb8Livt8Ey74xhuO\nGeKPKS4hNYD4et5iwqgTFLtPbbKaayzGj5mg7YFdPzAjd0+sUJrVoPTJ+C+R\nW493DsjldIITD/qa0kJSVK3BEKpQQf2h8NglnBUl4U+Iu+gBu+u901lhSyMU\nJg6p6uXo5dTdSlCJdIYikkg/G0shOD9TPMoXiQdBHSc6V3DdqpwBXx/o8dUZ\noNENg/8IW6fcfGrUz+78Mr6b/Hj5cP2j5JSDbDFy6deIAqZwDB7iUILtAvFb\nnxNuRpYqwnBxsnNo/GaZ4g33Ofqj5lOYnAovFNM+YGKk0erlsijsj9taBfyy\nA/Usr7F12ODB/nOdb2z9vIfpPKkcrMhpKky6ki4yIsxRTcvjczUR6KKxRZ5E\nYL5H3SdoccZsf8k/dm34NdAN/rH0iuceFq94sOVMI4OpliFngIPBF/OhvuEC\nKGcDWTiQAyuOrGoyKaUkhqoljl6n7d2wAEXChVWnSh7JvURmEEWYLd4BSZTn\nyNl+RWpgFsxoV7zVVvrsA0r0jJMlQrRc3fJlZKZyUduU51Xuj7rPBfPSKac1\nzHzZD+Kt2TT9PEx+jKu7+ri28Imh7ESMOyJtjU8Pb6h9EuG427rmQZdr45Cr\nr8QA\r\n=ItTd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEG8uPtWrZvS2vjTo5Rcmygvz8DjqgDVXE7p5c/QTT0XAiA9T99TYRmEPQpac0mzhll32JTPQoib+m027idkQQMEfg=="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.3_1610726756852_0.22241835793306963"},"_hasShrinkwrap":false},"0.3.4":{"name":"@bennyg_123/entangle","version":"0.3.4","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","example:todo":"parcel ./examples/todoList/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.19","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-summary":"^1.2.3","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"44c4d5878e6e848726484796fb80a45173a68b76","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.4","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a5RNWtRx20/IYGDqnxhopO16j+Z6U26uepwF15EBjYY6fVuTQ8u+1CaXPbSxwUAKhl2adnR53YDkXoNkINgELg==","shasum":"316e642e3493a8f3e582c8f87de476dfe0e6f4c3","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.4.tgz","fileCount":48,"unpackedSize":101661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAb5iCRA9TVsSAnZWagAADs0P/j+nLByrYh2w3wKnUEJi\nIsIjhBEOAQH8RRkSOzwfYjyQUSMzq/ByHPsIa56q1ZzFpDsspCRwH/OfGVzT\n8IPO4YQP25yglEPRK1HY8dHjczzjd/pJ+tXRBye/b/oqhOTp3yM6BrNMnpg8\nq4ApHpHtHArzo6U4gaFuaXKARh4M2ji4seZZPVnbgYCve3dldnGGdXX79g2f\n9IKrvXnwQQY+f7JFOqDNCHpfkF0u/l0t/s9acuoVef2CFMHOhQaXJvarUQAR\nYLRezOZPOD4V7RKAsB4HB9OR0lIFO2sF9LJTX1Ap9bpx4V9stiGQZne5Rn8y\nCE3LwdHMtMl+orLzdLPPkJRNBVO80t0NWPdwX2GTVnYbQhf1dWjiU4i+cAWF\nq8xV1orGrRWzE5JBlYnmLi84A/T09kpZNGpZuHq/U6AcJ8vyChukFx5fQTba\nOCRRJpFwFgbABoqu4dWHYzf7UGVrSQvc1porkZUXWZVFC+ql+M7ostFqm5PI\nU7r2A0eUfqjMaOVBGGF0zLvPdlMMP0y4vdmxInbXQYU5J//BKMyCGFGIPSyf\nZq8vOfMh0VJW63cich80VzcDOXHaWAv9JAfp1vEAtgkujuLNFEl1J00SIprM\nk/rDFd3W3VQs9+lEmxLTdJT517Cxp2EWSuAngutAlMZO+49xegL8DO/pP3K0\nSbzr\r\n=1MiX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID+E86QpxVMpK14OZ1OL6OWa9MOTwUHeOZHPo5Mtj9SgAiBwq79sFFv3eC3IZZNXYFpc4Pr34q6p239bLRLDkNLoyw=="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.4_1610727010190_0.8164047916728041"},"_hasShrinkwrap":false},"0.3.5":{"name":"@bennyg_123/entangle","version":"0.3.5","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","example:todo":"parcel ./examples/todoList/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.20","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-summary":"^1.2.3","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"3667241a9f1ba8e617869d512a87e31cd2d8b060","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.5","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-cRDHEJ8LQzewvAuHdvRDE3VNvw5qO0D0gqaWfwYF8PIzEp2o17xyOEyy5xr9OHzvoHETnsvJ+6OeBVk3mWCNfg==","shasum":"de636ff1a7e23a858ea2c00390231ed8fe73af4e","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.5.tgz","fileCount":48,"unpackedSize":101771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCb/ECRA9TVsSAnZWagAAbDYP/Ax47Er9ClXxpyGP6xj5\ndXsOLLpC35XZXhD1EmEAGKBxHsAPqMBAu6ZEf8UfgCO2qAs09QAoB+6vwTlh\njssNLF35rvOp+lZIAbxa7eBd4Xo376OW2R0UQGghF6/Nswuzbl1TPrKbfF+e\nI9tf0HDdK2Att5m2aKvQvn5yMPNNbaACIpJ2QHDXoGtyU8wJzex89RUzGLdD\nCNMfuEYs9hVDIE99tW/7IDGNHd6sOcgipNsqRzlYVtDx2NyzubPIC65oO9Rf\nIio+Li7InOXDmk1NFDEf8B0jSXGuMxcvYTkTitu1Js2zuPVKM4BUqxkUCVNz\nUNSlDhUej5NRo4jRzo+pTP2UYfg6A4wxw5Z08GUe1+6h0e4eOJQx29TLi6wt\nBpF8BeLBR4bjbdn1/Wk7RFA/y6m0BoJlOj/UZwvM5KGAv1jpqLG8xkpO7g4d\nREADpuS4Jj5wT3O9EWq30dJVKpcspMxUkulGjZFeP8TaPcm++cs9YV7+XBhD\nPs/nJdA4Y3HRYabIrQVSy7ZQagpbwQXBqzYy5BgZ5qB3uDYnxIz8q/HPNjYf\nDDj9uq3/MAt0MEX4EZ2Fwo/9SB02zX6T8uaGrK7VP2grRYZON1Cmg9MFlY5t\nZDoaF/X5IwAXa6A9AFTA8imTAdD7YummOduALHviSCvWPFkYKvNCjwrHfTTs\nyVSZ\r\n=k3f3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDT6XSjVryqXSxHbae0c1YPPyr528BQyvYz9PhLp89dhQIhAOaI7SilTWQFgCW8bBZiEJbhADJ2ScxDgPvSUe/+HeQx"}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.5_1611251652189_0.4341793187587013"},"_hasShrinkwrap":false},"0.3.6":{"name":"@bennyg_123/entangle","version":"0.3.6","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","example:todo":"parcel ./examples/todoList/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.20","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-summary":"^1.2.3","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"3667241a9f1ba8e617869d512a87e31cd2d8b060","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.6","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uMNAYUwV8eSY/ly8L9zpiFGcKAPPhbmToDP6oGigO5ckNqkAN9JqdiXmuZRR0JpQ6zeeoOw5BpNr1XOG4Qcg6A==","shasum":"db968ec1a28dd94844fd83c1768236c8e6699347","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.6.tgz","fileCount":48,"unpackedSize":101838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEGhfCRA9TVsSAnZWagAABAsQAIpTsGC23mNp0f59u4WT\nUXIg7xIx1EucDnPEQV1swYonvfb4ag13nazJrtI4imrNPTwJeE7f+/pIMqFo\n+8uX0ZizmWlf6CPM4n+iPplCKIxIRa3Ry+WrcTlcQZoFiMPar5AHwnDmtMIN\n+2PffIxtviSQijbNiQMqPjgGP8u6MQZcyBfI4pYWuZr2V9N5TorzpuAlSw3c\n4ZlNBsfdAWrr7iy1DkL9W9AB41ouBk3GT2RsyiJ3KsP65ezTxpbmWnc38Nck\nNarxnZKMUC76i87pwVqevg64BkkI5Vt11leQh1ZP6/loHxk3/zXBI6oN/EFi\n5oGZxfk60D3iI+A/+wZ16JXxc+O9nRFpb8nM8iE0lNJzOMWXd/LV+m6XJbhq\n3oHeF9NZfxb12UDYHA4Y0zHmsRWPnFZTfsFYpRCZaZYzOUA7/cbZfF68nj+J\n8C16CKFTHk3gx6oC848dM7qQNjIjBU+KQBCTIB3IeUFmsWStdc2PWr6T/CLM\noDHKtfYr48gQg2FJbLCoVkOUQh+/QFm/Bb5fd0rnchCMp129acXYM9Arr4Vx\nqsvRboiYrfJ3aRuSHXG2lSySXp99rl4zvL6bT4o10TckEk59O4QvTwTQxrf1\nD+cLUU9jG2YyKKLUNvAYQLuCkw28xEntRc0E/UtbQuKf23AhHPHbq3NhUJAd\npysr\r\n=LGb+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDYs/DY72Gah4UmoaROoGJPVfFeXALe0Q4Chlo6gdUnQIhAJUdCaeMeashxwNJDddBmcHhdNRp2854qS9HTsu3P4/v"}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.6_1611688030767_0.7314350450659632"},"_hasShrinkwrap":false},"0.3.7":{"name":"@bennyg_123/entangle","version":"0.3.7","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","example:todo":"parcel ./examples/todoList/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.20","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-summary":"^1.2.3","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"9e29fea00b678da9979f0b0d03f8705c1d328948","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.7","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tHqSGN8zesCBRCO3NhIv5P2Ye/D8BpXigQut06x/Zl4StB7cS7Vg+mhE0oBAr1FSQfYPdTnMPEdl7ig3+fF0FQ==","shasum":"49462674e4e507b670728b6ad03b3f1f62797117","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.7.tgz","fileCount":48,"unpackedSize":103302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHgdMCRA9TVsSAnZWagAAsXEP/1GDPf/Dy8hY1gAGaWeY\nRxNAxeqW7e6B2aQwTwjjt1KNy3ch15tx+/rVmw2P36EYYMxWGaQmbWz8hySv\nGz7uhEx8BsPNme0EyeeT+MfBiVEOPXV1egkQH0Cs5TzCzMfKpweARRQseolb\nDsps4iNvyrqK4cJCKHo2TzPNIeC4T1HtJj07ZYtwuwXSLbnOlEUANv57zrj2\nfnzC5G9ORoQWW+njT3Xr+ksURcewoauF3AyoB/Fut4nd7B3FoVItkfF/MM6a\nxzLdYzrkzakpHeTVpeVYRp97IpaIgketn41mLAkAbr5V325zK5+92J7nejJ5\npdKnGG5r+Hg6jocwxNPrGULLclGMRooai9ES1Wn2I6laTLVO35ND6KKJHL/H\nLJs5t+4Cg392o+qR6Bs/GUq6hFdd67XKa7ujWFgOMLRaPFwDE2dFtfTnQnwS\n/Y6z4m1SoIE4QzYOdVeBX1a93SREM2BxWnm0IFDbfLWtI2PiXlSzVeJ59+EB\n349NPaWdEkYFKUmw+gY75DiP0we7b8Y8ypQUhRtmgCcxksi2RthaCjMRGoFS\nkccCmhYRKNfT1DUKKQeFDEsp/M+ACxeL9SU0Cflfc1VdXvgO1LBoOJH8yRRr\nOWY4eq01hdv8p2slNCj5tg2617rNopFFOoW+BPLL60kQYGlSIGdTXge0vX4M\n+6ra\r\n=mys7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDW10xvGgJckWu/dGmRjay8dCVXFPB4G/XaOOSDmordmQIhAK0cI8QV4kgmztes25jFWp9qTj2sQOdzr+hOx2SUnJ/s"}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.7_1612580683887_0.08006763896853286"},"_hasShrinkwrap":false},"0.3.8":{"name":"@bennyg_123/entangle","version":"0.3.8","main":"dist/entangle.cjs.js","types":"dist/index.d.ts","module":"dist/entangle.es.js","unpkg":"dist/entangle.umd.js","description":"lightweight state management library based off recoil js using proxies","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"license":"MIT","sideEffects":false,"scripts":{"prebuild":"rimraf dist","lint":"eslint src --ext .ts --fix","test":"jest","build":"rollup -c","example":"parcel ./examples/renderProfile/index.html","example:todo":"parcel ./examples/todoList/index.html"},"peerDependencies":{"react":"^16.8.0"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.26.0","@testing-library/jest-dom":"^5.11.6","@testing-library/react":"^11.2.2","@testing-library/react-hooks":"^3.6.0","@types/jest":"^26.0.20","@types/react":"^17.0.0","@types/react-dom":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.9.1","@typescript-eslint/parser":"^4.9.1","eslint":"^7.15.0","eslint-config-prettier":"^7.0.0","eslint-plugin-prettier":"^3.2.0","eslint-plugin-react":"^7.21.5","husky":"^4.3.5","jest":"^26.6.3","jet":"^0.6.6-0","lint-staged":"^10.5.3","parcel-bundler":"^1.12.4","prettier":"^2.2.1","react":"^17.0.1","react-dom":"^17.0.1","react-test-renderer":"^16.9.0","rimraf":"^3.0.2","rollup":"^2.34.2","rollup-plugin-copy":"^3.3.0","rollup-plugin-summary":"^1.2.3","rollup-plugin-typescript2":"^0.29.0","ts-jest":"^26.4.4","typescript":"^4.1.2"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,tsx}":["yarn run lint --fix"]},"gitHead":"5ba78f4cfd39ce8cead5e337fc3a51ae6b680fa3","bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"homepage":"https://github.com/bennyg123/entangle#readme","_id":"@bennyg_123/entangle@0.3.8","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yjEMR7F0PB2znO0E8X14yV+R6iI7+/WjodZbNQLrIHa7VmB4mPVdvTJ+YByrcOGXHtvUxSJMvGV4NHth3UojgQ==","shasum":"ce28c3f2831b94fc66101218e48f45e14575b74d","tarball":"https://registry.npmjs.org/@bennyg_123/entangle/-/entangle-0.3.8.tgz","fileCount":48,"unpackedSize":112677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgO8rtCRA9TVsSAnZWagAAuh0QAJ503iVOjNIOURfZlzeD\nHr/NlgiUuOEsdvWcMyIIPbxmMJdl7rwIpQYmlWvU1EB0j6zWu2eU6nmUSmCd\nLrf7ZUPHiOGE7SDlO0RW7rybfB89OhKSOga08rbrWPZ2qqFRaI90MSDnqhue\nZfmF26Gkf2+4SNQCBKcah5rG5m+pdUZT5gtWRs9Z75suDfIRKeSsWZOIA9mX\nS6bYUtPOUhA47tKCx0rssf5JMUEIT2Bt8+FAoWa+BidnRo8Oj25wW57Ti/TT\n3molWOA2XuQ3VVNNL25GUII6GWJiaR/hzVgT6WYbmzbzJROiN3xbPQaaAwVk\nAAcSEG0qEaRk3L7yXsOOM2Tp4Ao/fRBmjwrps6vL3B/DIKmz45w6lBNyf5mz\nMtOhQVScLW8BGibICNxJGXq6kJdQAJLysoQa8iIUw7zspVHVbgUgD3YphtRs\nTyvTbAqKamSfZDtUPzRDSSRQ7acALrAr+Td1rZj2lafztDa/iHXpj/Auk7lG\nPMixmMhMjIkZ6m9kPurjde6ehftHlhpLgcTipUZ3EYJoiSMuFCa+4OydcTCC\nE26QLFSJ09dFx64nBR//eSDQZIOzilcRUTuc43f9wSNiM46kW6L2fl6LbO4X\nIpQ6sfFD+hAFDPTyD3rVDbtPnGAr0bNNYwNouhC8gfHhWnVhOZ00gqlAxTXf\nPvfI\r\n=FgyC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEBEf/Gh2D2u7KBTXVHTL6OtuIvLW02O7T/sbEtdpMfoAiAr7unIahuzDx+/1MrQKcyfcKHfumTd4LQ8QcGnSwrkKg=="}]},"_npmUser":{"name":"bennyg_123","email":"bennyguan123@gmail.com"},"directories":{},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/entangle_0.3.8_1614531308813_0.24976302368157532"},"_hasShrinkwrap":false}},"maintainers":[{"name":"bennyg_123","email":"bennyguan123@gmail.com"}],"description":"lightweight state management library based off recoil js using proxies","homepage":"https://github.com/bennyg123/entangle#readme","repository":{"type":"git","url":"git+ssh://git@github.com/bennyg123/entangle.git"},"author":{"name":"Benny Guan"},"bugs":{"url":"https://github.com/bennyg123/entangle/issues"},"license":"MIT","readme":"# Entangle\r\n\r\n<a href=\"https://app.circleci.com/pipelines/github/bennyg123/entangle\">\r\n    <img src=\"https://badgen.net/github/status/bennyg123/entangle/main/circleci?service=github\">\r\n</a>\r\n<a href=\"https://www.npmjs.com/package/@bennyg_123/entangle\">\r\n    <img src=\"https://badgen.net/npm/v/@bennyg_123/entangle?service=github \" />\r\n</a>\r\n<a href=\"https://bundlephobia.com/result?p=@bennyg_123/entangle@latest\">\r\n    <img src=\"https://badgen.net/bundlephobia/minzip/@bennyg_123/entangle@latest?service=github\" />\r\n</a>\r\n<a href=\"https://www.npmjs.com/package/@bennyg_123/entangle\">\r\n    <img src=\"https://badgen.net/npm/dt/@bennyg_123/entangle?service=github\" />\r\n</a>\r\n\r\nGlobal state management tool for react hooks inspired by [RecoilJS](https://github.com/facebookexperimental/Recoil) and [Jotai](https://github.com/pmndrs/jotai) using proxies.\r\n\r\n## Features\r\n\r\n- No need for context\r\n- Zero dependencies\r\n- Super lightweight: [~ 1kb gzipped](https://bundlephobia.com/result?p=@bennyg_123/entangle)\r\n\r\n## Table of Contents\r\n  - [Intro](#intro)\r\n  - [Getting Started](#getting-started)\r\n  - [API](#api)\r\n    - [`makeAtom`](#make-atom)\r\n    - [`makeMolecule`](#make-molecule)\r\n    - [`makeAsyncMolecule`](#make-async-molecule)\r\n    - [`makeAtomEffect`](#make-atom-effect)\r\n  - [Hooks](#hooks)\r\n    - [`useEntangle`](#use-entangle)\r\n    - [`useMultiEntangle`](#use-multi-entangle)\r\n    - [`useReadEntangle`](#use-read-entangle)\r\n    - [`useMultiReadEntangle`](#use-multi-read-entangle)\r\n    - [`useSetEntangle`](#use-set-entangle)\r\n    - [`useMultiSetEntangle`](#use-multi-set-entangle)\r\n  - [Advance API](#advance-api)\r\n    - [`makeAtomEffectSnapshot`](#make-atom-effect-snapshot)\r\n    - [`makeAtomFamily`](#make-atom-family)\r\n    - [`makeMoleculeFamily`](#make-molecule-family)\r\n    - [`makeAsyncMoleculeFamily`](#make-async-molecule-family)\r\n  - [Develop](#develop)\r\n  - [Footnotes](#footnotes)\r\n\r\n## Intro\r\n\r\nInspired by [RecoilJS](https://github.com/facebookexperimental/Recoil) with its 3D state management where the state does not live with the virtual dom tree, I wanted to create a simpler and much more lightweight version for modern browsers (IE is dead!!). The current state management solutions in the react ecosystem work really well (mobx, redux, etc), but I think a recoil like library that allows for granular updates without context and without having to rerender the whole DOM tree is the future. Thus Entangle was born. The name Entangle comes from quantum entanglement where two Atoms are linked event across great distances and can affect each other.\r\n\r\nThis library is written in TS and has typings shipped with it.\r\n\r\nThis library should work with all browsers that support [proxies](https://caniuse.com/?search=Proxy) (aka all modern browsers). However if you need to support other browsers there is a [polyfill](https://github.com/GoogleChrome/proxy-polyfill) available, though that wont be officially supported by this library.\r\n\r\nPlease try this library out and let me know if you encounter any bugs and suggestions on improvements. Its still very much in the experimental and testing phase so try at your own risk.\r\n\r\n<a href=\"https://buymeacoffee.com/bennyg123\">\r\n    <img alt=\"Buy Me A Coffee\" src=\"https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png\" style=\"height: auto !important; width: auto !important;\" />\r\n</a>\r\n\r\n## Getting Started\r\n\r\nSuper simple example with makeAtom\r\n\r\n```jsx\r\nimport { makeAtom, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\n\r\nconst Component1 = () => {\r\n    const [atomState, setAtomState] = useEntangle(atomValue);\r\n    \r\n    return (\r\n        <div>\r\n            <button onClick={() => setAtomState(\"Hello, 世界\")}>Update atomState</button>\r\n            <h1>{atomState}</h1>\r\n        </div>\r\n    );\r\n}\r\n\r\nconst Component2 = () => {\r\n    const [atomState, setAtomState] = useEntangle(atomValue);\r\n    \r\n    return (\r\n        <div>\r\n            <button onClick={() => setAtomState(\"Hello World\")}>Update atomState</button>\r\n            <h1>{atomState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\nIn the above example, a global `atomValue` is created with the initial value passed in. Then the components that need to access that value will pass in the `atomValue` to a `useEntangle` hook inside the component. \r\n\r\nThe `useEntangle` hook works the same way as a `useState` hook, the first value is the value, while the second is an updater function. If either of the buttons are clicked and they update the `atomState`, then both components (and only those components and their children) will rerender, staying in sync. Most importantly the parents will not rerender.\r\n\r\n```tsx\r\nimport { makeAtom, makeMolecule, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\nconst moleculeValue = makeMolecule((get) => get(atomValue) + \" world\");\r\n\r\nconst Component = () => {\r\n    const [atomState] = useEntangle(moleculeValue);\r\n    \r\n    return (\r\n        <div>\r\n            <h1>{atomState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\nEntangle also supports composition using atoms as well. You can pass a function to `makeMolecule` that takes a get method and composes the composed value using `get` to get the atom's current value and subscribe to those changes.\r\n\r\n```tsx\r\nimport { makeAtom, makeAsyncMolecule, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\nconst asyncMoleculeValue = makeAsyncMolecule(async (get) => {\r\n    const response = await fetch(`API/${get(atomValue)}`);\r\n    const value = await response.json(); // { value: \"Hello World\" }\r\n    return value;\r\n}, { \r\n    value: \"Default\"\r\n}});\r\n\r\nconst Component = () => {\r\n    const [atomState] = useEntangle(asyncMoleculeValue);\r\n    \r\n    return (\r\n        <div>\r\n            <h1>{atomState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\nEntangle also supports async molecules as well with the `makeAsyncMolecule` method. You can do API calls using atom values here, and they will automatically update and subscribe to those atom changes. The value of the second parameter must match the return value of the async generator function passed in.\r\n\r\nFor example the below example wont work since you passed in a string for a default value but the async function returns an object.\r\n```tsx\r\nimport { makeAtom, makeAsyncMolecule, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\nconst asyncMoleculeValue = makeAsyncMolecule(async (get) => {\r\n    const response = await fetch(`API/${get(atomValue)}`);\r\n    const {value} = await response.json(); // { value: \"Hello World\" }\r\n    return { response: value };\r\n}, \"HELLO WORLD\");\r\n\r\nconst Component = () => {\r\n    const [atomState] = useEntangle(asyncMoleculeValue);\r\n    \r\n    return (\r\n        <div>\r\n            <h1>{atomState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\nFor this reason it is better to add explicit types (if you are using TS) to the make methods:\r\n\r\n```tsx\r\nimport { makeAtom, makeMolecule, makeAsyncMolecule, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom<string>(\"1\");\r\nconst moleculeValue = makeMolecule<number>((get) => parseInt(get(atomValue)));\r\nconst atomValue = makeAsyncMolecule<{value: string}>(async (get) => ({value: get(atomValue)}));\r\n\r\n```\r\n\r\n<hr />\r\n## API\r\n<h3 id=\"make-atom\"><code>makeAtom</code></h3>\r\n\r\nmakeAtom creates an atom value to be used inside the useEntangle hook. All components using this value will be synced and updated when any of the components update the atom. It does not matter how deeply nested.\r\n\r\n```jsx\r\nimport { makeAtom, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\n\r\nconst Component = () => {\r\n    const [atomState, setAtomState] = useEntangle(atomValue);\r\n    \r\n    return (\r\n        <div>\r\n            <button onClick={() => setAtomState(\"Hello, 世界\")}>Update atomState</button>\r\n            <h1>{atomState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\n<h3 id=\"make-molecule\"><code>makeMolecule</code></h3>\r\n\r\nmakeMolecule allows for subscriptions to an atoms changes for composing values based off other atoms.\r\n\r\n```jsx\r\nimport { makeAtom, makeMolecule, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\nconst atomValue2 = makeAtom(\"world\");\r\n\r\n// In the below example, you can pass in am optional boolean as a second argument to the getter, this will un subscribe the molecule from that atoms changes\r\nconst moleculeValue = makeMolecule((get) => get(atomValue) + get(atomValue2, false));\r\n\r\nconst Component = () => {\r\n    const [atomState, setAtomState] = useEntangle(atomValue);\r\n    const [moleculeState] = useEntangle(moleculeValue);\r\n    \r\n    return (\r\n        <div>\r\n            <button onClick={() => setAtomState(\"Hello, 世界\")}>Update atomState</button>\r\n            <h1>{atomState}</h1>\r\n            <h1>{moleculeState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n***It is important to note that since molecules are dependent on atoms. They are read only, thus while they can be used with `useEntangle`, calling the set function will throw an error. As a result they should be used with `useReadEntangle`***\r\n\r\n```jsx\r\nimport { makeAtom, makeMolecule, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\nconst moleculeValue = makeMolecule((get) => get(atomValue) + \" world\");\r\n\r\nconst Component = () => {\r\n    const [atomState, setAtomState] = useEntangle(atomValue);\r\n    const [moleculeState, setMoleculeState] = useEntangle(moleculeValue); // not recommended\r\n    const readOnlyMoleculeState = useReadEntangle(moleculeValue); // not recommended\r\n    \r\n    return (\r\n        <div>\r\n            <button onClick={() => setAtomState(\"Hello, 世界\")}>Update atomState</button>\r\n            <button onClick={() => setMoleculeState(\"Hello, 世界\")}>Throws an error</button>\r\n            <h1>{atomState}</h1>\r\n            <h1>{moleculeState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\n<h3 id=\"make-async-molecule\"><code>makeAsyncMolecule</code></h3>\r\n\r\nSame usage as `makeMolecule` except you pass in an async function and a default value as the second argument.\r\n\r\n```jsx\r\nimport { makeAtom, makeMolecule, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\nconst moleculeValue = makeMolecule(async (get) => get(atomValue) + \" world\", \"defaultValue\");\r\n\r\nconst Component = () => {\r\n    const [atomState, setAtomState] = useEntangle(atomValue);\r\n    const [moleculeState] = useEntangle(moleculeValue);\r\n    \r\n    return (\r\n        <div>\r\n            <button onClick={() => setAtomState(\"Hello, 世界\")}>Update atomState</button>\r\n            <h1>{atomState}</h1>\r\n            <h1>{moleculeState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\n<h3 id=\"make-atom-effect\"><code>makeAtomEffect</code></h3>\r\n\r\nSometimes we want to do side effects that update other atoms outside of a component, thats where `makeAtomEffect` comes in handy. \r\n\r\nYou pass it a function that has a getter and setter passed to it and in it you can get and set atoms, be aware of infinite loops though as the\r\n`makeAtomEffect` subscribes to all the getters it uses/calls\r\n\r\n```ts\r\nimport { makeAtom, makeAtomEffect } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue1 = makeAtom(\"Hello\");\r\nconst atomValue2 = makeAtom(\" World\");\r\n\r\nconst combinedValue = makeAtom(\"\");\r\n\r\nmakeAtomEffect((get, set) => {\r\n    const value1 = get(atomValue);\r\n    // Similar to get molecule, for the getter function, if you pass in a false boolean as the second parameter, it will not subscribe to the atoms changes\r\n    const value2 = get(atomValue, false);\r\n    set(combinedValue, value1 + value2);\r\n})\r\n```\r\n\r\n### Hooks\r\n\r\n<h3 id=\"use-entangle\"><code>useEntangle</code></h3>\r\n\r\n`useEntangle` entangles the atoms together with the components and syncs them. The API is the same as `useState` and whenever an atom is updated, all other components that has `useEntangle` with that atom value or has `useEntangle` with a molecule that is composed with that atom value will get updated.\r\n\r\n***if a molecule is passed in, calling the set function will throw an error. Thus it is advised to use molecules with `useReadEntangle` instead. ***\r\n\r\n```jsx\r\nimport { makeAtom, useEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atomValue = makeAtom(\"Hello\");\r\n\r\nconst Component = () => {\r\n    const [atomState, setAtomState] = useEntangle(atomValue);\r\n    \r\n    return (\r\n        <div>\r\n            <button onClick={() => setAtomState(\"Hello, 世界\")}>Update atomState</button>\r\n            <h1>{atomState}</h1>\r\n        </div>\r\n    );\r\n}\r\n```\r\n\r\n<h3 id=\"use-multi-entangle\"><code>useMultiEntangle</code></h3>\r\n\r\nFor reading and setting multiple atoms, you can use `useMultiEntangle` with multiple atoms. You pass in a list of atoms as arguments and it'll return getters and setters in that order.\r\n\r\n***Unfortunately due to my own limited knowledge with advanced ts, I was unable to make typing work with the `useMulti` hooks. I am actively looking for a way for TS to infer the types of atoms passed in and evaluate typings, but any help would be greatly appreciated.***\r\n\r\n```tsx\r\n\r\nimport { makeAtom, useMultiEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atom1 = makeAtom(\"Hello\");\r\nconst atom2 = makeAtom(\"World\");\r\nconst atom3 = makeAtom1(\"!!!\");\r\n \r\nconst Component = () => {\r\n    const [\r\n        [atom1Value, atom2Value, atom3Value],\r\n        [setAtom1, setAtom2, setAtom3]\r\n    ] = useMultiEntangle(atom1, atom2, atom3);\r\n\r\n    ...\r\n}\r\n```\r\n\r\n<h3 id=\"use-read-entangle\"><code>useReadEntangle</code></h3>\r\n\r\n\r\nSometimes in our components we don't want to allow for updates to an atom and only want to consume the values, thats where useReadEntangle comes in handy.\r\nIt only returns a read only value and lets the component subscribe to the atom changes.\r\n\r\n```tsx\r\nimport { makeAtom, useReadEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atom1 = makeAtom(\"Hello\");\r\n \r\nconst Component = () => {\r\n    const value = useReadEntangle(atom1);\r\n\r\n    return (\r\n        <div>{value}</div>\r\n    )\r\n}\r\n```\r\n\r\n<h3 id=\"use-multi-read-entangle\"><code>useMultiReadEntangle</code></h3>\r\n\r\nWhen one needs to read from multiple atoms and stay subscribed use `useMultiReadEntangle`. Pass in multiple atoms and get the values back in an array.\r\n\r\n```tsx\r\n\r\nimport { makeAtom, useMultiReadEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atom1 = makeAtom(\"Hello\");\r\nconst atom2 = makeAtom(\"World\");\r\nconst atom3 = makeAtom1(\"!!!\");\r\n \r\nconst Component = () => {\r\n    const [atom1Value, atom2Value, atom3Value] = useMultiReadEntangle(atom1, atom2, atom3);\r\n\r\n    ...\r\n}\r\n```\r\n\r\n<h3 id=\"use-set-entangle\"><code>useSetEntangle</code></h3>\r\n\r\nSometimes a component only needs to set an atom's value and not subscribe to those changes, as a result useSetEntangle will only return a function that'll set an atoms value and update other components subscribed but not the current component. ***useSetEntangle will not take in a molecule***\r\n\r\n```tsx\r\nimport { makeAtom, useSetEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atom1 = makeAtom(\"Hello\");\r\n \r\nconst Component = () => {\r\n    const setValue = useSetEntangle(atom1);\r\n    // Is not subscribed to ATOM changes\r\n\r\n    return (\r\n        <button onClick={() => setValue(\"World\")}>Update Atom</button>\r\n    )\r\n}\r\n```\r\n\r\n<h3 id=\"use-multi-set-entangle\"><code>useMultiSetEntangle</code></h3>\r\n\r\nWhen one needs to set multiple atoms use `useMultiSetEntangle`. Pass in multiple atoms and get the setters back in an array.\r\n\r\n```tsx\r\n\r\nimport { makeAtom, useMultiSetEntangle } from \"@bennyg_123/entangle\";\r\n\r\nconst atom1 = makeAtom(\"Hello\");\r\nconst atom2 = makeAtom(\"World\");\r\nconst atom3 = makeAtom1(\"!!!\");\r\n \r\nconst Component = () => {\r\n    const [setAtom1, setAtom2, setAtom3] = useMultiSetEntangle(atom1, atom2, atom3);\r\n\r\n    ...\r\n}\r\n```\r\n\r\n## Advance API\r\n\r\n<h3 id=\"make-atom-effect-snapshot\"><code>makeAtomEffectSnapshot</code></h3>\r\n\r\nFor certain situations it might advantageous to manually call a side effect function without having it subscribe to atom changes. For this `makeAtomEffectSnapshot` can be used. \r\n\r\n`makeAtomEffectSnapshot` takes in a function or async function exactly like makeAtomEffect, with a getter and setter parameter and returns a function that can be called with arguments when the developer wants the side effect function to be run.\r\n\r\n```tsx\r\nimport { makeAtom, makeAtomEffectSnapshot } from \"@bennyg_123/entangle\";\r\n\r\nconst atom1 = makeAtom(\"Hello\");\r\nconst snapshotFN = makeAtomEffectSnapshot(async (get, arg1) => {\r\n    writeToDB(get(atom1) + arg1);\r\n});\r\n \r\nconst Component = () => {\r\n    useEffect(() => {\r\n        snapshotFN(\"ARG\")\r\n    }, [])\r\n    // Is not subscribed to ATOM changes\r\n\r\n    return (<></>)\r\n}\r\n```\r\n\r\n<h3 id=\"make-atom-family\"><code>makeAtomFamily</code></h3>\r\n\r\nWhen we need to have a array or set of atoms, makeAtomFamily can help. It is an atom generator that takes either an initial value or function that returns an initial value, and outputs a helper function to generate atoms on the fly. \r\n\r\nYou can pass in values as arguments for initialization, and then use it the exact same as a regular atom. The first argument must be a string as this acts as a key to differentiate an atom from each other, thus if one component updates an atom, then the other components using an atomFamily wont get updated. This also allows atoms in families to be shared if they use the same key.\r\n\r\n```tsx\r\nimport { makeAtomFamily } from \"@bennyg_123/entangle\";\r\n\r\nconst atomFamily = makeAtomFamily(\"Hello\");\r\n \r\nconst Component1 = () => {\r\n \tconst setValue = useEntangle(atomFamily(\"A\"));\r\n \r\n  \t// Component1 will not update Component2\r\n  \treturn (\r\n  \t\t<button onClick={() => setValue(\"World\")}>Update Atom</button>\r\n \t)\r\n}\r\n \r\nconst Component2 = () => {\r\n \tconst setValue = useEntangle(atomFamily(\"B\"));\r\n \r\n  \t// Component2 will not update Component1\r\n  \treturn (\r\n  \t\t<button onClick={() => setValue(\"World\")}>Update Atom</button>\r\n  \t)\r\n}\r\n\r\nconst Component3 = () => {\r\n \tconst setValue = useEntangle(atomFamily(\"A\"));\r\n \r\n  \t// Component1 will update Component3\r\n  \treturn (\r\n  \t\t<button onClick={() => setValue(\"World\")}>Update Atom</button>\r\n \t)\r\n}\r\n```\r\n\r\n```tsx\r\nimport { makeAtomFamily } from \"@bennyg_123/entangle\";\r\n\r\n// First argument is always a string that acts as a key to differentiate atoms\r\nconst atomFamily = makeAtomFamily((arg1: string, arg2) => parseInt(arg1) + arg2);\r\n\r\nconst Component = () => {\r\n    const setValue = useEntangle(atomFamily(\"1\", 2));\r\n \r\n  \treturn (\r\n  \t\t// All subsequent sets to the atom should be set like a regular atom and not via the function\r\n  \t\t<button onClick={() => setValue(32)}>Update Atom</button>\r\n  \t)\r\n}\r\n \r\nconst Component2 = () => {\r\n \tconst setValue = useEntangle(atomFamily(\"3\", 4));\r\n \r\n \treturn (\r\n  \t\t<button onClick={() => setValue(24)}>Update Atom</button>\r\n  \t)\r\n}\r\n```\r\n\r\n<h3 id=\"make-molecule-family\"><code>makeMoleculeFamily</code></h3>\r\n\r\nSame as makeAtomFamily but instead of instantiating atoms, it instantiates molecules. The initializer function has a getter function (same as makeMolecule), a key, and arguments passed in. The return function subsequently takes a unique string key and any additional arguments that need to be passed to the molecule function.\r\n\r\n```tsx\r\nimport { makeAtom, makeMoleculeFamily } from \"@bennyg_123/entangle\";\r\n\r\nconst atom = makeAtom(\"Hello\");\r\nconst moleculeFamily = makeMoleculeFamily((get, key, arg1) => `${get(atom)} ${key} ${arg1}`);\r\n \r\nconst Component1 = () => {\r\n \tconst value = useReadEntangle(moleculeFamily(\"A\", 123));\r\n \r\n    // will render `Hello A 123`\r\n    return (\r\n        <div>{value}</div> \r\n    )\r\n}\r\n```\r\n\r\n<h3 id=\"make-async-molecule-family\"><code>makeAsyncMoleculeFamily</code></h3>\r\n\r\nSame as makeMoleculeFamily except this takes in an async function and also takes either an initial value or a synchronous function to generate an initial value for the async molecules.\r\n\r\n```tsx\r\nimport { makeAtom, makeAsyncMoleculeFamily } from \"@bennyg_123/entangle\";\r\n\r\nconst atom = makeAtom(\"Hello\");\r\nconst asyncMoleculeFamily = makeAsyncMoleculeFamily(async (get, key, arg1) => {\r\n    value = await db.get(); // returns ABCD\r\n    `${get(atom)} ${key} ${arg1} ${value}`\r\n}, \"Loading\");\r\n \r\nconst Component1 = () => {\r\n    const value = useReadEntangle(asyncMoleculeFamily(\"A\", 123));\r\n \r\n    // will render `Loading` at first then `Hello A 123 ABCD` when the db call is done\r\n    return (\r\n        <div>{value}</div> \r\n    )\r\n}\r\n```\r\n\r\n```tsx\r\nimport { makeAtom, makeAsyncMoleculeFamily } from \"@bennyg_123/entangle\";\r\n\r\nconst atom = makeAtom(\"Hello\");\r\nconst asyncMoleculeFamily = makeAsyncMoleculeFamily(async (get, key, arg1) => {\r\n    value = await db.get(); // returns ABCD\r\n    `${get(atom)} ${key} ${arg1} ${value}`\r\n}, (get, key, arg1) => `Loading ${key} ${arg1}`);\r\n \r\nconst Component1 = () => {\r\n    const value = useReadEntangle(asyncMoleculeFamily(\"A\", 123));\r\n \r\n    // will render `Loading A 123` at first then `Hello A 123 ABCD` when the db call is done\r\n    return (\r\n        <div>{value}</div> \r\n    )\r\n}\r\n```\r\n\r\n<h3 id=\"make-async-molecule-family\"><code>Debounce</code></h3>\r\n\r\nSince the `makeAtomEffect`, `makeAsyncMolecule` and `makeMolecule` functions run automatically, sometimes when a large amount of changes are made at the same, this could result in running expensive functions multiple times. Thus there is the option to debounce these functions by waiting a set time before running them. This can be achieved by passing a time in ms as the last argument when initializing an Atom Effect or a Molecule.\r\n\r\n```tsx\r\n// This effect will debounce and be run 500 ms after receiving the last atom update. If an atom is updated before 500ms then the debounce timer is reset and the effect wont run.\r\nmakeAtomEffect((get, set) => { ... }, 500); \r\n\r\n// Equivalent debounce usage for molecules and async molecules\r\nmakeMolecule((get, set) => { ... }, 500);\r\nmakeAsyncMolecule((get, set) => { ... }, {},  500)\r\n```\r\n\r\n## Develop\r\n\r\nTo develop, you can fork this repo. \r\n\r\nTo build:\r\n```\r\nyarn && yarn run build\r\n```\r\n\r\nTo run test:\r\n```\r\nyarn && yarn run test\r\n```\r\n\r\nTo run lint:\r\n```\r\nyarn && yarn run lint\r\n```\r\n\r\nTo run example page:\r\n```\r\nyarn && yarn run example\r\n```\r\n## Footnotes\r\n\r\nThank you so much for trying this library out. Please leave feedback in the issues section. Have fun. \r\n","readmeFilename":"README.md"}