{"_id":"react-freeze","_rev":"17-118ca10f5279616b778670b447cce375","name":"react-freeze","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"react-freeze","version":"1.0.0","description":"React Freeze","license":"MIT","repository":{"type":"git","url":"https://github.com/software-mansion-labs/react-freeze.git"},"main":"dist/index.js","module":"dist/index.modern.js","source":"src/index.tsx","react-native":"src/index.tsx","engines":{"node":">=10"},"scripts":{"build":"microbundle-crl --no-compress --format modern,cjs","start":"microbundle-crl watch --no-compress --format modern,cjs","prepare":"run-s build","test":"run-s test:unit test:lint test:build","test:build":"run-s build","test:lint":"eslint src","test:unit":"cross-env CI=1 react-scripts test --env=jsdom","test:watch":"react-scripts test --env=jsdom","predeploy":"cd example && yarn install && yarn run build","deploy":"gh-pages -d example/build"},"keywords":["react","freeze"],"peerDependencies":{"react":"^17.0.0"},"devDependencies":{"@types/jest":"^25.1.4","@types/node":"^12.12.38","@types/react":"^16.9.27","@types/react-dom":"^16.9.7","@typescript-eslint/eslint-plugin":"^2.26.0","@typescript-eslint/parser":"^2.26.0","babel-eslint":"^10.0.3","cross-env":"^7.0.2","eslint":"^6.8.0","eslint-config-prettier":"^6.7.0","eslint-config-standard":"^14.1.0","eslint-config-standard-react":"^9.2.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.17.0","eslint-plugin-standard":"^4.0.1","gh-pages":"^2.2.0","microbundle-crl":"^0.13.10","npm-run-all":"^4.1.5","prettier":"^2.0.4","react":"17","react-scripts":"^3.4.1","react-test-renderer":"^17.0.2","typescript":"^3.7.5"},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Software Mansion\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"react-freeze@1.0.0","dist":{"shasum":"b21c65fe1783743007c8c9a2952b1c8879a77354","integrity":"sha512-yQaiOqDmoKqks56LN9MTgY06O0qQHgV4FUrikH357DydArSZHQhl0BJFqGKIZoTqi8JizF9Dxhuk1FIZD6qCaw==","tarball":"https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.0.tgz","fileCount":15,"unpackedSize":24566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh24U8CRA9TVsSAnZWagAAniUQAJuQRyq6bBn3Te1/BW8w\nYHijlCZ7C18hdR6lFGA09G6T1/xhFaIM9QkIIlWw7m4DfmJnIBm3mdancTLB\nkgvEKvUPzUmk/x6uXjZLOKkcgtTC9+CU4+dj6g+VmEYKGHs+666wsUdGVIdL\nGJ2xq34saElbToHPt0EXGsRDvOiCB+K6oSZfdaFdKB7UiSN/ejgLduEUfGfj\nBJMT0HnwpduNH1y0XZvpS0MM6r9ZCAkdZT2lSq0lHmD7LIaLvgvMpOQltqxs\nOnlBwXCqbkHF7sHk2OSSt3W3J7a/I/yrxkRhL+i5DQydP7TY7ao8OmbOgLAs\n1vjJ3gCb+wmwgdOR4AaFVPhAdS0l6dpTeAbaPU8ZUms+XDMg9r1vsukzlVG+\nnp95r+lzb6oW8Wg16YuFcrH/91TQUwZPAvf+kKE3ZoqtrASyk1nPfKn8DoMW\n8AOK/2WHKZO3TO8EMzxjQHgp67y31Ldw5Zpf90Vfa0qL3ttaFKM5av0t+Tid\nkvAuD10T40OU0wxm1sdZ7wd7cXQtL/lVinNFXAyhvM/RYGJI5WhW+mgXAhWf\nc5aBf+ey5cLKeD6bbr68PSEmwcFfHc/KHppe8f9oosyo/Dp2MnwdNN12HObU\nXdfuTdbNWWED3yf+Y6uZvM0COTHdpdbNbFTrDJJ+bvacC7PJ5qhjDcpiXdRv\nk3XP\r\n=WyMz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9foeOkvOhAS9FqDwn+15yLrQa/0AvqLeFH0h4OhhHggIhAMVlO8hIpkSt8iy8tYco+ibeLnXs+iI+3Csu4v6yFoZx"}]},"_npmUser":{"name":"kmag","email":"krzys.magiera@gmail.com"},"directories":{},"maintainers":[{"name":"kmag","email":"krzys.magiera@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-freeze_1.0.0_1635514929228_0.20479701881817403"},"_hasShrinkwrap":false},"1.0.1":{"name":"react-freeze","version":"1.0.1","description":"React Freeze","license":"MIT","repository":{"type":"git","url":"https://github.com/software-mansion/react-freeze.git"},"main":"dist/index.js","module":"dist/index.modern.js","source":"src/index.tsx","react-native":"src/index.tsx","engines":{"node":">=10"},"scripts":{"build":"microbundle-crl --no-compress --format modern,cjs","start":"microbundle-crl watch --no-compress --format modern,cjs","prepare":"run-s build","test":"run-s test:unit test:lint test:types test:build","test:build":"run-s build","test:lint":"eslint --ext '.js,.ts,.tsx' --fix src","test:unit":"cross-env CI=1 react-scripts test --env=jsdom","test:types":"tsc --noEmit","test:watch":"react-scripts test --env=jsdom","predeploy":"run-s build","deploy":"np"},"keywords":["react","freeze"],"peerDependencies":{"react":">=17.0.0"},"devDependencies":{"@types/jest":"^25.1.4","@types/node":"^12.12.38","@types/react":"^18.0.15","@types/react-test-renderer":"^18.0.0","@typescript-eslint/eslint-plugin":"^5.3.0","@typescript-eslint/parser":"^5.3.0","babel-eslint":"^10.0.3","cross-env":"^7.0.2","eslint":"^6.8.0","eslint-config-prettier":"^6.7.0","eslint-config-standard":"^14.1.0","eslint-config-standard-react":"^9.2.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.17.0","eslint-plugin-standard":"^4.0.1","microbundle-crl":"^0.13.10","np":"^7.6.2","npm-run-all":"^4.1.5","prettier":"^2.0.4","react":"^18.2.0","react-scripts":"^3.4.1","react-test-renderer":"^18.2.0","typescript":"^3.7.5"},"np":{"branch":"main"},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Software Mansion\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"react-freeze@1.0.1","dist":{"shasum":"598aefa9adedff7148e34f70cef24e3bd0ef5a63","integrity":"sha512-ktv/yf9jyH7w2dW2V01WTTiCfWxRc4RR68HpttzUtjFkzk7JZzFAJFTTFMf146JKDkNMR2elXif+tMCqLSvLAw==","tarball":"https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.1.tgz","fileCount":30,"unpackedSize":988901,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApOp/FzGf4evnMX0am1k7tGWMCCRr8CfIp6659tr33YAiAhhASSarDKny0UuJMRYzVVG15tDPfmPCVUvF0VbXNSbQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5+dCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrzxQ/8CK/rRW2vTCfJWv9ArKZUmMRI01EtEoHRrfumPE772Ue3lBgt\r\nO08UV5RLu03JxK+/J98h4P4pW+IY2ZX+9zhy/xaFQFaYdN6criYbG9wmwM4C\r\nNVf2uX3t54v4u/AbbdRDm4W4K8zsHTHjqjZHDHzL8pNA4d0bDJ5WqKMXhWaP\r\nw8pL7csT5duLVcnGnksbOoaTVXgFtWr+vbtWHd9TpIA/p4qunCX0BDz27WHX\r\nGfEk1yYQVjrVDWgF1KtBIG086wt/le/IudJ9s00lW6p3ngoQ1zoWLPC5DU6/\r\nhVpXSUjs5TjjATtF0Dl6LXroJB8ZmVatSG3IeOQrp1hJs+1W4q64VPHqun4q\r\nUbdhy4I0tA+jFD6oGUeeQY77THnrat8NSJ3fJ3/5Y8qLyqfxYuSUDb3LKLW8\r\nAtfpvKgRR8OSLVy1fh05ZphDiiJmVRtVLto8lo/ZinPzmg8qwmt01AykUh4g\r\nU2l49KWV1BUU2qIhIZjmtpIcJIxMWTWs0bT4/XRy+efqjDNfKQ54fuVyZfAn\r\n11ZLkp5FnHmynQ0sYE1RuSS5l/brrovPmCptNpQ2BLjF7dBjpvRSODS24GGI\r\nJwEqPmmgwwBUZ6MvpdXM4B0vVdgEhSMA9unfxEKbKJFr1GcBCP/DLMq3gctB\r\nhJLYvryeSY3o2nPgNqQuJFBS2cbHVwAfD+Y=\r\n=/SCj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kacperkapusciak","email":"kapusciak.k@gmail.com"},"directories":{},"maintainers":[{"name":"kmag","email":"krzys.magiera@gmail.com"},{"name":"kacperkapusciak","email":"kapusciak.k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-freeze_1.0.1_1659365185389_0.8829513676701719"},"_hasShrinkwrap":false},"1.0.2":{"name":"react-freeze","version":"1.0.2","description":"React Freeze","license":"MIT","repository":{"type":"git","url":"https://github.com/software-mansion/react-freeze.git"},"main":"dist/index.js","module":"dist/index.modern.js","source":"src/index.tsx","react-native":"src/index.tsx","engines":{"node":">=10"},"scripts":{"build":"microbundle-crl --no-compress --format modern,cjs","start":"microbundle-crl watch --no-compress --format modern,cjs","prepare":"run-s build","test":"run-s test:unit test:lint test:types test:build","test:build":"run-s build","test:lint":"eslint --ext '.js,.ts,.tsx' --fix src","test:unit":"cross-env CI=1 react-scripts test --env=jsdom","test:types":"tsc --noEmit","test:watch":"react-scripts test --env=jsdom"},"keywords":["react","freeze"],"peerDependencies":{"react":">=17.0.0"},"devDependencies":{"@types/jest":"^25.1.4","@types/node":"^12.12.38","@types/react":"^18.0.15","@types/react-test-renderer":"^18.0.0","@typescript-eslint/eslint-plugin":"^5.3.0","@typescript-eslint/parser":"^5.3.0","babel-eslint":"^10.0.3","cross-env":"^7.0.2","eslint":"^6.8.0","eslint-config-prettier":"^6.7.0","eslint-config-standard":"^14.1.0","eslint-config-standard-react":"^9.2.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.17.0","eslint-plugin-standard":"^4.0.1","microbundle-crl":"^0.13.10","npm-run-all":"^4.1.5","prettier":"^2.0.4","react":"^18.2.0","react-scripts":"^3.4.1","react-test-renderer":"^18.2.0","typescript":"^3.7.5"},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2021 Software Mansion\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"react-freeze@1.0.2","dist":{"shasum":"3f8e0b544e874539e0c589488c83fb7ff0bec0ca","integrity":"sha512-ZDEHIspTYIhkkjXgAt6wc3E8qywikG89GJJsDPdI5TlRYRPIOl3YN1KgOMM3au+E0l4T3RwP67BYBtK5auyIEw==","tarball":"https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.2.tgz","fileCount":30,"unpackedSize":927543,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6tSjLnTzQacfo8EjdjKh/owM9o3t4NGrIhJWjaPP22QIhAP7VZWaZHxHnA+byUryogmTrtFXsqatvJPCrbqsvhoSz"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5+14ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrn+RAAo3q11dT7efRFOTCrh/LqkG2X1TaUaGRYSlUoutfGZP9tWpiM\r\nFifqOBTO3/5HfncK3aaAZluMqC/wA6TRNhKWmNRDr//z3UHyGjbylFysjYTz\r\nnb9Za1NXSRk02G3+D1XqTe8FYlVRbj2OaXs/xUoxk2fTHT0Oddut5QHNMLPV\r\n+xYjZxqsZTVh8s4nM1dHaxuQhfzWVgRhom+rCXnY9TZySIUJzoKqo6IxOzl1\r\nV9hoovr0E4eZMFbBJHRm95l7c1n1y/VrOACDn+zTD1NKP128daE8rWn1Jdtu\r\nmPgcekSyt7c1qHz6vUwUgzpQOarTtTV3HaRMuArkyhX2QQ5QcdAJgl2FbG47\r\njVLVgmIzJVVFwq5wm/8P7T3+JaepKKwLFHxthr9pVSFpg07zu6jALlDxHVD2\r\nqHDFJ70mKsMWhZEFpJt2nocur/4JNfDcVoMjOzpHK0If/T9P3dGWuhuhBnuE\r\nLPkNXUx/0gVAdSzqqYshVOqZvmZTSL+DrcXMj4aZzrgWJzhJarcepyeZvU4/\r\nmIqnx6gz+JExQFGhdF+rID66iCVAL6BbUsIM16geDfvyB/cA8Q1KbCo8YCSY\r\n6b6ICTJHeF5b69YwbD/9lMHDeKyTt9nh6EPYzxy1fS18RiSSQTn/ZhIU83Y1\r\nE/g6XUJVlwdhyQeaH0OLsShwWM5XT8/MGB0=\r\n=ogtu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kacperkapusciak","email":"kapusciak.k@gmail.com"},"directories":{},"maintainers":[{"name":"kmag","email":"krzys.magiera@gmail.com"},{"name":"kacperkapusciak","email":"kapusciak.k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-freeze_1.0.2_1659366776437_0.5315203599387783"},"_hasShrinkwrap":false},"1.0.3":{"name":"react-freeze","version":"1.0.3","description":"React Freeze","license":"MIT","repository":{"type":"git","url":"git+https://github.com/software-mansion/react-freeze.git"},"main":"dist/index.js","module":"dist/index.modern.js","source":"src/index.tsx","react-native":"src/index.tsx","engines":{"node":">=10"},"scripts":{"build":"microbundle-crl --no-compress --format modern,cjs","start":"microbundle-crl watch --no-compress --format modern,cjs","prepare":"run-s build","test":"run-s test:unit test:lint test:types test:build","test:build":"run-s build","test:lint":"eslint --ext '.js,.ts,.tsx' --fix src","test:unit":"cross-env CI=1 react-scripts test --env=jsdom","test:types":"tsc --noEmit","test:watch":"react-scripts test --env=jsdom"},"keywords":["react","freeze"],"peerDependencies":{"react":">=17.0.0"},"devDependencies":{"@types/jest":"^25.1.4","@types/node":"^12.12.38","@types/react":"^18.0.15","@types/react-test-renderer":"^18.0.0","@typescript-eslint/eslint-plugin":"^5.3.0","@typescript-eslint/parser":"^5.3.0","babel-eslint":"^10.0.3","cross-env":"^7.0.2","eslint":"^6.8.0","eslint-config-prettier":"^6.7.0","eslint-config-standard":"^14.1.0","eslint-config-standard-react":"^9.2.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.17.0","eslint-plugin-standard":"^4.0.1","microbundle-crl":"^0.13.10","npm-run-all":"^4.1.5","prettier":"^2.0.4","react":"^18.2.0","react-scripts":"^3.4.1","react-test-renderer":"^18.2.0","typescript":"^3.7.5"},"types":"./dist/index.d.ts","gitHead":"807a870d9130368d72fa0de97e077640644c5ecc","bugs":{"url":"https://github.com/software-mansion/react-freeze/issues"},"homepage":"https://github.com/software-mansion/react-freeze#readme","_id":"react-freeze@1.0.3","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==","shasum":"5e3ca90e682fed1d73a7cb50c2c7402b3e85618d","tarball":"https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz","fileCount":9,"unpackedSize":19518,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaFEB7yAzN3ANYqavf2188CKnmKqOOIXAU6G0lMI0QLwIgURisjudh9nDn0u1g0Vh5orRCcxiXLGKeg4+0YpX49cQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5/TTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTahAAllbU7BnoH/NzDB8XkVr996AdrWd32BpLDHYk8zBySosNYLlQ\r\nfad1p05lHPdY8zHB9MneeWecSaOGXNp2Bx1nEQajzDjob7TUKAGH9TtVApIQ\r\nh7RWE/8isXm/7Zth15caAFTNN+JdgCi7KXLUaCpZwiyJ3kAGUnsrZvO1OqKi\r\n9wQdj5/Vlghtl7YQhuOGNFQCR/pKTHDZPLxqkINIJSkYoQzZSOQ0puky+ocW\r\nLgqmZrh1QsRstZ0vW7FpAdnhGNMEpFhE4kGznP8/VPtOe9zOWKQU00GB4fJE\r\nZZNfRmYxvRdLkXbgDvxFQwzznk0VIpMwjFRnDx5WdtW3cyRafzIUs1gStTBj\r\nrC2jyEpRsop6uMmePeiZ+bwjLWVzmOpaRf3RpnSPYUTjY1Sx6QfNGaCvJQ7U\r\n+Ir6ig807nju7q1hqos9tb4kKH4R67UJgHx3kshpvj0yQowdSyQVvETwCEuY\r\nH/ahpRYugyQ9tXRAI/27gNeawF4R5ghiUVW7BpjoYCWx00Wezkfp6pvppKgO\r\n/7JkKUOyiQDCeOpOX9jagf/dh/iWcfaT9qh9t4aM5Jhcn+OEP8HxCVjcwDQv\r\n3QpnJIJbNlqfJRE0FUm8vwuenuDvXPreviVTBte2BCI8JcPwEyyUcAVKUhiv\r\nBSavJaacLV/kHcvEu+gJCFYgK1yT5DpJbvs=\r\n=xSQE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"kacperkapusciak","email":"kapusciak.k@gmail.com"},"directories":{},"maintainers":[{"name":"kmag","email":"krzys.magiera@gmail.com"},{"name":"kacperkapusciak","email":"kapusciak.k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-freeze_1.0.3_1659368659509_0.8400358217189097"},"_hasShrinkwrap":false},"1.0.4":{"name":"react-freeze","version":"1.0.4","description":"React Freeze","license":"MIT","repository":{"type":"git","url":"git+https://github.com/software-mansion/react-freeze.git"},"main":"dist/index.js","module":"dist/index.modern.js","source":"src/index.tsx","react-native":"src/index.tsx","engines":{"node":">=10"},"scripts":{"build":"microbundle-crl --no-compress --format modern,cjs","start":"microbundle-crl watch --no-compress --format modern,cjs","prepare":"run-s build","test":"run-s test:unit test:lint test:types test:build","test:build":"run-s build","test:lint":"eslint --ext '.js,.ts,.tsx' --fix src","test:unit":"cross-env CI=1 react-scripts test --env=jsdom","test:types":"tsc --noEmit","test:watch":"react-scripts test --env=jsdom"},"keywords":["react","freeze"],"peerDependencies":{"react":">=17.0.0"},"devDependencies":{"@types/jest":"^25.1.4","@types/node":"^12.12.38","@types/react":"^18.0.15","@types/react-test-renderer":"^18.0.0","@typescript-eslint/eslint-plugin":"^5.3.0","@typescript-eslint/parser":"^5.3.0","babel-eslint":"^10.0.3","cross-env":"^7.0.2","eslint":"^6.8.0","eslint-config-prettier":"^6.7.0","eslint-config-standard":"^14.1.0","eslint-config-standard-react":"^9.2.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^11.0.0","eslint-plugin-prettier":"^3.1.1","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.17.0","eslint-plugin-standard":"^4.0.1","microbundle-crl":"^0.13.10","npm-run-all":"^4.1.5","prettier":"^2.0.4","react":"^18.2.0","react-scripts":"^3.4.1","react-test-renderer":"^18.2.0","typescript":"^3.7.5"},"types":"./dist/index.d.ts","gitHead":"434bd9f2fb3c95c02c5db8ada376858b5ca3f873","bugs":{"url":"https://github.com/software-mansion/react-freeze/issues"},"homepage":"https://github.com/software-mansion/react-freeze#readme","_id":"react-freeze@1.0.4","_nodeVersion":"18.17.1","_npmVersion":"9.6.7","dist":{"integrity":"sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==","shasum":"cbbea2762b0368b05cbe407ddc9d518c57c6f3ad","tarball":"https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz","fileCount":9,"unpackedSize":17179,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUzntr18JVi21xoWKoqnoe3OCuA49qGWFMBZTO/gi56QIgLUxN4+vLebFWrC2MWDxYJqZTZ4+FM6qMq0gJBEZ/Q5A="}]},"_npmUser":{"name":"kmag","email":"krzys.magiera@gmail.com"},"directories":{},"maintainers":[{"name":"kmag","email":"krzys.magiera@gmail.com"},{"name":"kacperkapusciak","email":"kapusciak.k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-freeze_1.0.4_1709160282344_0.9026962791996245"},"_hasShrinkwrap":false}},"time":{"created":"2021-10-27T13:40:43.925Z","0.0.1":"2021-10-27T13:40:44.101Z","modified":"2024-02-28T22:44:42.933Z","0.0.2":"2021-10-27T13:44:36.411Z","0.0.3":"2021-10-27T13:45:29.613Z","0.0.4":"2021-10-27T13:46:44.542Z","0.0.5":"2021-10-28T11:00:56.398Z","1.0.0":"2021-10-29T13:42:09.379Z","1.0.1":"2022-08-01T14:46:26.006Z","1.0.2":"2022-08-01T15:12:56.641Z","1.0.3":"2022-08-01T15:44:19.735Z","1.0.4":"2024-02-28T22:44:42.518Z"},"maintainers":[{"name":"kmag","email":"krzys.magiera@gmail.com"},{"name":"kacperkapusciak","email":"kapusciak.k@gmail.com"}],"description":"React Freeze","repository":{"type":"git","url":"git+https://github.com/software-mansion/react-freeze.git"},"license":"MIT","readme":"<h1 align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/software-mansion-labs/react-freeze/main/.github/images/react-freeze.png\" width=\"170px\"/><br/>\n  React Freeze\n</h1>\n<p align=\"center\" style=\"font-size: 130%\">\nPrevent React component subtrees from rendering.\n</p>\n\n# What is this? 🤔\n\nThis library lets you freeze the renders of parts of the React component tree using `Suspense` mechanism introduced in React 17.\nThe main use case of this library is to avoid unnecessary re-renders of parts of the app that are not visible to the user at a given moment.\nThe frozen components **are not unmounted** when they are replaced with a placeholder view, so their React state and corresponding native view instances are retained during the freeze (DOM elements for `react-dom` or platform-native views for React Native apps) keeping things like scroll position, input state, or loaded images (for `<img>` components) unchanged.\n\nThe most prominent use case is the navigation in React Native apps, which typically is based on a stack.\nWhen opening a new screen, we push the screen onto the stack but also keep the previous screens on the stack in case the user goes back to them later.\nSince we want to keep the state of those previous screens, the components rendering it are retained on the stack, which results in them receiving updates (e.g. redux store changes) and getting re-rendered, even though they are completely covered by other screens.\nWith `react-freeze`, we are able to suspend renders for the hidden screens and, as a result, save React from doing unnecessary computation (such as reconciliation, sending view change updates, etc.).\n\n# Quick start with react-navigation (React Native) 🧭\n\n> You have to be using React Native 0.64 or higher and react-navigation 5.x or 6.x.\n\nThanks to the fact [react-navigation](https://reactnavigation.org/) relies on [react-native-screens](https://github.com/software-mansion/react-native-screens) we published an updated version of the screens library that takes advantage of the information about which screens should be active.\nIn order to try react-freeze in your React Native app that uses React Navigation you need to upgrade react-native-screens to version 3.9.0:\n\n```bash\nyarn upgrade react-native-screens@3.9.0\n```\n\nIf you're building for ios you also need to run\n\n```bash\npod install --project-directory=ios\n```\n\nThen enable experimental freeze support using new method we added to screens library.\nIn order to do that, add the following snippet (along with the import) to the main file of your application:\n\n```js\nimport { enableFreeze } from \"react-native-screens\";\n\nenableFreeze(true);\n```\n\nThe new react-native-screens library is compatible with React Navigation v5 and v6, however, when using React Navigation v5 you also need to enable \"screens\" support. This can be done by adding call to `enableScreens(true)` in your main application file and passing `detachInactiveScreens` option to your navigators (stack / tabs / etc.).\n\n**IMPORTANT:** The current version of screens/freeze integration, freezes updates only on views that are more than one level deep the stack hierarchy (the top and second to top screens are not freezing). This is necessary for slide-to-go-back functionality to work as by sliding back we may reveal the content that is displayed below. This is something we plan on improving in the future such that only the top screen is not frozen.\n\n# Quick start - using Freeze directly (React and React Native) ⚡\n\n> In order to use this package you'll have to be using React 17 or higher, or React Native 0.64 or higher.\n\nInstall `react-freeze` package from npm:\n\n```bash\nyarn add react-freeze\n```\n\nImport `Freeze` component in your app:\n\n```js\nimport { Freeze } from \"react-freeze\";\n```\n\nWrap some components you want to freeze and pass `freeze` option to control whether renders in that components should be suspended:\n\n```js\nfunction SomeComponent({ shouldSuspendRendering }) {\n  return (\n    <Freeze freeze={shouldSuspendRendering}>\n      <MyOtherComponent />\n    </Freeze>\n  );\n}\n```\n\n# Component docs 📚\n\nThe `react-freeze` library exports a single component called `<Freeze>`.\nIt can be used as a boundary for components for which we want to suspend rendering.\nThis takes the following options:\n\n### `freeze: boolean`\n\nThis options can be used to control whether components rendered under `Freeze` should or should not re-render.\nIf set to `true`, all renders for components from `Freeze` subtree will be suspended until the prop changes to `false`.\nAdditionally, during the time components are \"frozen\", `Freeze` component instead of rendering children will render component provided as `placeholder` parameter removing frozen components from screen while retaining their native view instances and state.\n\n### `placeholder?: React.ReactNode`\n\nThis parameter can be used to customize what `Freeze` component should render when it is in the frozen state (`freeze={true}`).\nThis is an optional parameter and by default it renders `null`.\nNote, that it is best to \"freeze\" only components that are not visible to the user at given moment, so in general customizing this should not be necessary.\nHowever, if replacing frozen views with just `null` can break layout of you app, you can use this parameter to show a placeholder that will keep all non-frozen parts of your application in the same place.\n\n# Known issues 😭\n\n## React Native Debugger does not allow profiling\n\nWhen profiling React-Native apps with [React Native Debugger](https://github.com/jhen0409/react-native-debugger) starting React profiler for the app with frozen components throws an error (\"Error: Could not find ID for Fiber ...\").\n\n> Have other problems with react-freeze? Start a [New issue](//github.com/software-mansion-labs/react-freeze/issues).\n\n# FAQ ❓\n\n## When component subtree is frozen what happens to state changes that are executed on that subtree\n\nAll state changes are executed as usual, they just won't trigger a render of the updated component until the component comes back from the frozen state.\n\n## What happens to the non-react state of the component after defrost? Like for example scroll position?\n\nSince all the \"native views\" (DOM elements or platform-specific views in react native) are kept when the component is frozen their state (such as scroll position, text typed into text input fields, etc.) is restored when they come back from the frozen state.\nIn fact, they are just the same component (same DOM nodes for react-dom / same views for react-native).\n\n## What happens when there is an update in a redux store that frozen component is subscribed to?\n\nRedux and other state-management solutions rely on manually triggering re-renders for components that they want to update when the store state changes.\nWhen component is frozen it won't render even when redux requests it, however methods such as `mapStateToProps` or selectors provided to `useSelector` will still run on store updates.\nAfter the component comes back from frozen state, it will render and pick up the most up-to-date data from the store.\n\n## Can freezing some of my app components break my app? And how?\n\nThere are few ways that we are aware of when `<Freeze>` can alter the app behavior:\n\n1. When attempting to freeze parts of the app that is visible to the user at a given moment -- in this case the frozen part is going to be replaced by the placeholder (or just by nothing if no placeholder is provided). So unless you really want this behavior make sure to only set `freeze` to `true` when the given subtree should not be visible and you expect user to not interact with it. A good example are screens on the navigation stack that are down the stack hierarchy when you push more content.\n2. When you rely on the frozen parts layout to properly position the unfrozen parts. Note that when component is in frozen state it gets replaced by a placeholder (or by nothing if you don't provide one). This may impact the layout of the rest of your application. This can be workaround by making placeholder take the same amount of space as the view it replaces, or by only freezing parts that are positioned absolutely (e.g. the component that takes up the whole screen).\n3. When component render method has side-effects that relay on running for all prop/state updates. Typically, performing side-effects in render is undesirable when writing react code but can happen in your codebase nonetheless. Note that when subtree is frozen your component may not be rendered for all the state updates and render method won't execute for some of the changes that happen during that phase. However, when the component gets back from the frozen state it will render with the most up-to-date version of the state, and if that suffice for the side-effect logic to be correct you should be ok.\n\n<br/>\n<hr/>\n\nMade by [Software Mansion](https://github.com/software-mansion) and licenced under [The MIT License](LICENSE).\n","readmeFilename":"README.md","keywords":["react","freeze"],"homepage":"https://github.com/software-mansion/react-freeze#readme","bugs":{"url":"https://github.com/software-mansion/react-freeze/issues"}}