From 2c9db8c825e433d607daae7cb69a58ec5d474246 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sat, 6 Sep 2025 23:14:50 -0400 Subject: [PATCH 1/7] Add Vitest dep --- package.json | 3 +- yarn.lock | 617 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 617 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 87d0ff61..4abc6ea9 100644 --- a/package.json +++ b/package.json @@ -90,6 +90,7 @@ "semantic-release": "^17.0.2", "ts-jest": "^29.0.0", "tsup": "^6.7.0", - "typescript": "^5.0.2" + "typescript": "^5.0.2", + "vitest": "^3.2.4" } } diff --git a/yarn.lock b/yarn.lock index 652b5ff2..8eed171f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -498,116 +498,246 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +"@esbuild/aix-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz#bef96351f16520055c947aba28802eede3c9e9a9" + integrity sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA== + "@esbuild/android-arm64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz#893ad71f3920ccb919e1757c387756a9bca2ef42" integrity sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA== +"@esbuild/android-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz#d2e70be7d51a529425422091e0dcb90374c1546c" + integrity sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg== + "@esbuild/android-arm@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.15.tgz#143e0d4e4c08c786ea410b9a7739779a9a1315d8" integrity sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg== +"@esbuild/android-arm@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.9.tgz#d2a753fe2a4c73b79437d0ba1480e2d760097419" + integrity sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ== + "@esbuild/android-x64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.15.tgz#d2d12a7676b2589864281b2274355200916540bc" integrity sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ== +"@esbuild/android-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.9.tgz#5278836e3c7ae75761626962f902a0d55352e683" + integrity sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw== + "@esbuild/darwin-arm64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz#2e88e79f1d327a2a7d9d06397e5232eb0a473d61" integrity sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA== +"@esbuild/darwin-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz#f1513eaf9ec8fa15dcaf4c341b0f005d3e8b47ae" + integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg== + "@esbuild/darwin-x64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz#9384e64c0be91388c57be6d3a5eaf1c32a99c91d" integrity sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg== +"@esbuild/darwin-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz#e27dbc3b507b3a1cea3b9280a04b8b6b725f82be" + integrity sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ== + "@esbuild/freebsd-arm64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz#2ad5a35bc52ebd9ca6b845dbc59ba39647a93c1a" integrity sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg== +"@esbuild/freebsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz#364e3e5b7a1fd45d92be08c6cc5d890ca75908ca" + integrity sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q== + "@esbuild/freebsd-x64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz#b513a48446f96c75fda5bef470e64d342d4379cd" integrity sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ== +"@esbuild/freebsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz#7c869b45faeb3df668e19ace07335a0711ec56ab" + integrity sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg== + "@esbuild/linux-arm64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz#9697b168175bfd41fa9cc4a72dd0d48f24715f31" integrity sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA== +"@esbuild/linux-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz#48d42861758c940b61abea43ba9a29b186d6cb8b" + integrity sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw== + "@esbuild/linux-arm@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz#5b22062c54f48cd92fab9ffd993732a52db70cd3" integrity sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw== +"@esbuild/linux-arm@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz#6ce4b9cabf148274101701d112b89dc67cc52f37" + integrity sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw== + "@esbuild/linux-ia32@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz#eb28a13f9b60b5189fcc9e98e1024f6b657ba54c" integrity sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q== +"@esbuild/linux-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz#207e54899b79cac9c26c323fc1caa32e3143f1c4" + integrity sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A== + "@esbuild/linux-loong64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz#32454bdfe144cf74b77895a8ad21a15cb81cfbe5" integrity sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ== +"@esbuild/linux-loong64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz#0ba48a127159a8f6abb5827f21198b999ffd1fc0" + integrity sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ== + "@esbuild/linux-mips64el@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz#af12bde0d775a318fad90eb13a0455229a63987c" integrity sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ== +"@esbuild/linux-mips64el@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz#a4d4cc693d185f66a6afde94f772b38ce5d64eb5" + integrity sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA== + "@esbuild/linux-ppc64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz#34c5ed145b2dfc493d3e652abac8bd3baa3865a5" integrity sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg== +"@esbuild/linux-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz#0f5805c1c6d6435a1dafdc043cb07a19050357db" + integrity sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w== + "@esbuild/linux-riscv64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz#87bd515e837f2eb004b45f9e6a94dc5b93f22b92" integrity sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA== +"@esbuild/linux-riscv64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz#6776edece0f8fca79f3386398b5183ff2a827547" + integrity sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg== + "@esbuild/linux-s390x@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz#20bf7947197f199ddac2ec412029a414ceae3aa3" integrity sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg== +"@esbuild/linux-s390x@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz#3f6f29ef036938447c2218d309dc875225861830" + integrity sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA== + "@esbuild/linux-x64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz#31b93f9c94c195e852c20cd3d1914a68aa619124" integrity sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg== +"@esbuild/linux-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz#831fe0b0e1a80a8b8391224ea2377d5520e1527f" + integrity sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg== + +"@esbuild/netbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz#06f99d7eebe035fbbe43de01c9d7e98d2a0aa548" + integrity sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q== + "@esbuild/netbsd-x64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz#8da299b3ac6875836ca8cdc1925826498069ac65" integrity sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA== +"@esbuild/netbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz#db99858e6bed6e73911f92a88e4edd3a8c429a52" + integrity sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g== + +"@esbuild/openbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz#afb886c867e36f9d86bb21e878e1185f5d5a0935" + integrity sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ== + "@esbuild/openbsd-x64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz#04a1ec3d4e919714dba68dcf09eeb1228ad0d20c" integrity sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w== +"@esbuild/openbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz#30855c9f8381fac6a0ef5b5f31ac6e7108a66ecf" + integrity sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA== + +"@esbuild/openharmony-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz#2f2144af31e67adc2a8e3705c20c2bd97bd88314" + integrity sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg== + "@esbuild/sunos-x64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz#6694ebe4e16e5cd7dab6505ff7c28f9c1c695ce5" integrity sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ== +"@esbuild/sunos-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz#69b99a9b5bd226c9eb9c6a73f990fddd497d732e" + integrity sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw== + "@esbuild/win32-arm64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz#1f95b2564193c8d1fee8f8129a0609728171d500" integrity sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q== +"@esbuild/win32-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz#d789330a712af916c88325f4ffe465f885719c6b" + integrity sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ== + "@esbuild/win32-ia32@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz#c362b88b3df21916ed7bcf75c6d09c6bf3ae354a" integrity sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w== +"@esbuild/win32-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz#52fc735406bd49688253e74e4e837ac2ba0789e3" + integrity sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww== + "@esbuild/win32-x64@0.17.15": version "0.17.15" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz#c2e737f3a201ebff8e2ac2b8e9f246b397ad19b8" integrity sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA== +"@esbuild/win32-x64@0.25.9": + version "0.25.9" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz#585624dc829cfb6e7c0aa6c3ca7d7e6daa87e34f" + integrity sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ== + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -867,6 +997,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" @@ -1149,6 +1284,111 @@ dependencies: "@octokit/openapi-types" "^12.11.0" +"@rollup/rollup-android-arm-eabi@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.0.tgz#939c1be9625d428d8513e4ab60d406fe8db23718" + integrity sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ== + +"@rollup/rollup-android-arm64@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.0.tgz#b74005775903f7a8f4e363d2840c1dcef3776ff3" + integrity sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw== + +"@rollup/rollup-darwin-arm64@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.0.tgz#8c04603cdcf1ec0cd6b27152b3827e49295f2962" + integrity sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg== + +"@rollup/rollup-darwin-x64@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.0.tgz#19ec976f1cc663def2692cd7ffb32981f2b0b733" + integrity sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw== + +"@rollup/rollup-freebsd-arm64@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.0.tgz#a96b4ad8346229f6fcbd9d57f1c53040b037c2da" + integrity sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ== + +"@rollup/rollup-freebsd-x64@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.0.tgz#fa565a282bc57967ee6668607b181678bdd74e4a" + integrity sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA== + +"@rollup/rollup-linux-arm-gnueabihf@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.0.tgz#dfc88f7295e1f98d77f25296be787e8a5d6ced75" + integrity sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w== + +"@rollup/rollup-linux-arm-musleabihf@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.0.tgz#32cd70c87455ca031f0361090cf17da5a2ef66d5" + integrity sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg== + +"@rollup/rollup-linux-arm64-gnu@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.0.tgz#0e7e1fe7241e3384f6c6b4ccdbcfa8ad8c78b869" + integrity sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g== + +"@rollup/rollup-linux-arm64-musl@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.0.tgz#5d421f2f3e4a84786c4dfd9ce97e595c9b59e7f4" + integrity sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ== + +"@rollup/rollup-linux-loongarch64-gnu@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.0.tgz#a0fb5c7d0e88319e18acfd9436f19ee39354b027" + integrity sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ== + +"@rollup/rollup-linux-ppc64-gnu@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.0.tgz#a65b598af12f25210c3295da551a6e3616ea488d" + integrity sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg== + +"@rollup/rollup-linux-riscv64-gnu@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.0.tgz#10ba776214ae2857c5bf4389690dabb2fbaf7d98" + integrity sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA== + +"@rollup/rollup-linux-riscv64-musl@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.0.tgz#c2a46cbaa329d5f21e5808f5a66bb9c78cf68aac" + integrity sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ== + +"@rollup/rollup-linux-s390x-gnu@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.0.tgz#a07447be069d64462e30c66611be20c4513963ed" + integrity sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ== + +"@rollup/rollup-linux-x64-gnu@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.0.tgz#8887c58bd51242754ae9c56947d6e883332dcc74" + integrity sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA== + +"@rollup/rollup-linux-x64-musl@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.0.tgz#6403fda72a2b3b9fbbeeff93d14f1c45ef9775f3" + integrity sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw== + +"@rollup/rollup-openharmony-arm64@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.0.tgz#52809afccaff47e731b965a0c16e5686be819d5f" + integrity sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q== + +"@rollup/rollup-win32-arm64-msvc@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.0.tgz#23fe00ddbb40b27a3889bc1e99e6310d97353ad5" + integrity sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg== + +"@rollup/rollup-win32-ia32-msvc@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.0.tgz#520b588076b593413d919912d69dfd5728a1f305" + integrity sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw== + +"@rollup/rollup-win32-x64-msvc@4.50.0": + version "4.50.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.0.tgz#d81efe6a12060c7feddf9805e2a94c3ab0679f48" + integrity sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg== + "@semantic-release/commit-analyzer@^8.0.0": version "8.0.1" resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-8.0.1.tgz#5d2a37cd5a3312da0e3ac05b1ca348bf60b90bca" @@ -1281,6 +1521,23 @@ dependencies: "@babel/types" "^7.3.0" +"@types/chai@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.2.tgz#6f14cea18180ffc4416bc0fd12be05fdd73bdd6b" + integrity sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg== + dependencies: + "@types/deep-eql" "*" + +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== + +"@types/estree@1.0.8", "@types/estree@^1.0.0": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + "@types/graceful-fs@^4.1.3": version "4.1.6" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" @@ -1382,6 +1639,67 @@ dependencies: "@types/yargs-parser" "*" +"@vitest/expect@3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.2.4.tgz#8362124cd811a5ee11c5768207b9df53d34f2433" + integrity sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig== + dependencies: + "@types/chai" "^5.2.2" + "@vitest/spy" "3.2.4" + "@vitest/utils" "3.2.4" + chai "^5.2.0" + tinyrainbow "^2.0.0" + +"@vitest/mocker@3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-3.2.4.tgz#4471c4efbd62db0d4fa203e65cc6b058a85cabd3" + integrity sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ== + dependencies: + "@vitest/spy" "3.2.4" + estree-walker "^3.0.3" + magic-string "^0.30.17" + +"@vitest/pretty-format@3.2.4", "@vitest/pretty-format@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.2.4.tgz#3c102f79e82b204a26c7a5921bf47d534919d3b4" + integrity sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA== + dependencies: + tinyrainbow "^2.0.0" + +"@vitest/runner@3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-3.2.4.tgz#5ce0274f24a971f6500f6fc166d53d8382430766" + integrity sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ== + dependencies: + "@vitest/utils" "3.2.4" + pathe "^2.0.3" + strip-literal "^3.0.0" + +"@vitest/snapshot@3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-3.2.4.tgz#40a8bc0346ac0aee923c0eefc2dc005d90bc987c" + integrity sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ== + dependencies: + "@vitest/pretty-format" "3.2.4" + magic-string "^0.30.17" + pathe "^2.0.3" + +"@vitest/spy@3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.2.4.tgz#cc18f26f40f3f028da6620046881f4e4518c2599" + integrity sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw== + dependencies: + tinyspy "^4.0.3" + +"@vitest/utils@3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.2.4.tgz#c0813bc42d99527fb8c5b138c7a88516bca46fea" + integrity sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA== + dependencies: + "@vitest/pretty-format" "3.2.4" + loupe "^3.1.4" + tinyrainbow "^2.0.0" + "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" @@ -1826,6 +2144,11 @@ assert@^1.1.1: object-assign "^4.1.1" util "0.10.3" +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -2531,7 +2854,7 @@ bundle-require@^4.0.0: dependencies: load-tsconfig "^0.2.3" -cac@^6.7.12: +cac@^6.7.12, cac@^6.7.14: version "6.7.14" resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== @@ -2672,6 +2995,17 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +chai@^5.2.0: + version "5.3.3" + resolved "https://registry.yarnpkg.com/chai/-/chai-5.3.3.tgz#dd3da955e270916a4bd3f625f4b919996ada7e06" + integrity sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw== + dependencies: + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" + chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -2713,6 +3047,11 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +check-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== + chokidar@^2.0.2: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -3386,6 +3725,13 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" +debug@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -3414,6 +3760,11 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-eql@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -3712,6 +4063,11 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-module-lexer@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + esbuild@^0.17.6: version "0.17.15" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.15.tgz#209ebc87cb671ffb79574db93494b10ffaf43cbc" @@ -3740,6 +4096,38 @@ esbuild@^0.17.6: "@esbuild/win32-ia32" "0.17.15" "@esbuild/win32-x64" "0.17.15" +esbuild@^0.25.0: + version "0.25.9" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.9.tgz#15ab8e39ae6cdc64c24ff8a2c0aef5b3fd9fa976" + integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.9" + "@esbuild/android-arm" "0.25.9" + "@esbuild/android-arm64" "0.25.9" + "@esbuild/android-x64" "0.25.9" + "@esbuild/darwin-arm64" "0.25.9" + "@esbuild/darwin-x64" "0.25.9" + "@esbuild/freebsd-arm64" "0.25.9" + "@esbuild/freebsd-x64" "0.25.9" + "@esbuild/linux-arm" "0.25.9" + "@esbuild/linux-arm64" "0.25.9" + "@esbuild/linux-ia32" "0.25.9" + "@esbuild/linux-loong64" "0.25.9" + "@esbuild/linux-mips64el" "0.25.9" + "@esbuild/linux-ppc64" "0.25.9" + "@esbuild/linux-riscv64" "0.25.9" + "@esbuild/linux-s390x" "0.25.9" + "@esbuild/linux-x64" "0.25.9" + "@esbuild/netbsd-arm64" "0.25.9" + "@esbuild/netbsd-x64" "0.25.9" + "@esbuild/openbsd-arm64" "0.25.9" + "@esbuild/openbsd-x64" "0.25.9" + "@esbuild/openharmony-arm64" "0.25.9" + "@esbuild/sunos-x64" "0.25.9" + "@esbuild/win32-arm64" "0.25.9" + "@esbuild/win32-ia32" "0.25.9" + "@esbuild/win32-x64" "0.25.9" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -3785,6 +4173,13 @@ estraverse@^4.1.0, estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3862,6 +4257,11 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect-type@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.2.2.tgz#c030a329fb61184126c8447585bc75a7ec6fbff3" + integrity sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA== + expect@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" @@ -3962,6 +4362,11 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -4154,6 +4559,11 @@ fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5477,6 +5887,11 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= +js-tokens@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-9.0.1.tgz#2ec43964658435296f6761b34e10671c2d9527f4" + integrity sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ== + js-yaml@^3.13.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" @@ -5890,6 +6305,11 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +loupe@^3.1.0, loupe@^3.1.4: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.2.1.tgz#0095cf56dc5b7a9a7c08ff5b1a8796ec8ad17e76" + integrity sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -5912,6 +6332,13 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +magic-string@^0.30.17: + version "0.30.18" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.18.tgz#905bfbbc6aa5692703a93db26a9edcaa0007d2bb" + integrity sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -6311,7 +6738,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.2: +ms@^2.0.0, ms@^2.1.2, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -6345,6 +6772,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -7032,6 +7464,16 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" + integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== + +pathval@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.1.tgz#8855c5a2899af072d6ac05d11e46045ad0dc605d" + integrity sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ== + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -7064,6 +7506,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" @@ -7074,6 +7521,11 @@ picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2, picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -7424,6 +7876,15 @@ postcss@^6.0.1: source-map "^0.6.1" supports-color "^5.4.0" +postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + prepend-http@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -8024,6 +8485,36 @@ rollup@^3.2.5: optionalDependencies: fsevents "~2.3.2" +rollup@^4.43.0: + version "4.50.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.50.0.tgz#6f237f598b7163ede33ce827af8534c929aaa186" + integrity sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.50.0" + "@rollup/rollup-android-arm64" "4.50.0" + "@rollup/rollup-darwin-arm64" "4.50.0" + "@rollup/rollup-darwin-x64" "4.50.0" + "@rollup/rollup-freebsd-arm64" "4.50.0" + "@rollup/rollup-freebsd-x64" "4.50.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.50.0" + "@rollup/rollup-linux-arm-musleabihf" "4.50.0" + "@rollup/rollup-linux-arm64-gnu" "4.50.0" + "@rollup/rollup-linux-arm64-musl" "4.50.0" + "@rollup/rollup-linux-loongarch64-gnu" "4.50.0" + "@rollup/rollup-linux-ppc64-gnu" "4.50.0" + "@rollup/rollup-linux-riscv64-gnu" "4.50.0" + "@rollup/rollup-linux-riscv64-musl" "4.50.0" + "@rollup/rollup-linux-s390x-gnu" "4.50.0" + "@rollup/rollup-linux-x64-gnu" "4.50.0" + "@rollup/rollup-linux-x64-musl" "4.50.0" + "@rollup/rollup-openharmony-arm64" "4.50.0" + "@rollup/rollup-win32-arm64-msvc" "4.50.0" + "@rollup/rollup-win32-ia32-msvc" "4.50.0" + "@rollup/rollup-win32-x64-msvc" "4.50.0" + fsevents "~2.3.2" + run-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" @@ -8214,6 +8705,11 @@ shell-quote@^1.7.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -8312,6 +8808,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -8468,6 +8969,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -8476,6 +8982,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +std-env@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" + integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -8632,6 +9143,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +strip-literal@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-3.0.0.tgz#ce9c452a91a0af2876ed1ae4e583539a353df3fc" + integrity sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA== + dependencies: + js-tokens "^9.0.1" + subarg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" @@ -8845,6 +9363,39 @@ tiny-relative-date@^1.3.0: resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== +tinybench@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" + integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== + +tinyexec@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2" + integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== + +tinyglobby@^0.2.14: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +tinypool@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.1.1.tgz#059f2d042bd37567fbc017d3d426bdd2a2612591" + integrity sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg== + +tinyrainbow@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-2.0.0.tgz#9509b2162436315e80e3eee0fcce4474d2444294" + integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== + +tinyspy@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-4.0.3.tgz#d1d0f0602f4c15f1aae083a34d6d0df3363b1b52" + integrity sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A== + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -9234,6 +9785,60 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vite-node@3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.2.4.tgz#f3676d94c4af1e76898c162c92728bca65f7bb07" + integrity sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg== + dependencies: + cac "^6.7.14" + debug "^4.4.1" + es-module-lexer "^1.7.0" + pathe "^2.0.3" + vite "^5.0.0 || ^6.0.0 || ^7.0.0-0" + +"vite@^5.0.0 || ^6.0.0 || ^7.0.0-0": + version "7.1.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-7.1.4.tgz#354944affb55e1aff0157406b74e0d0a3232df9a" + integrity sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw== + dependencies: + esbuild "^0.25.0" + fdir "^6.5.0" + picomatch "^4.0.3" + postcss "^8.5.6" + rollup "^4.43.0" + tinyglobby "^0.2.14" + optionalDependencies: + fsevents "~2.3.3" + +vitest@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-3.2.4.tgz#0637b903ad79d1539a25bc34c0ed54b5c67702ea" + integrity sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A== + dependencies: + "@types/chai" "^5.2.2" + "@vitest/expect" "3.2.4" + "@vitest/mocker" "3.2.4" + "@vitest/pretty-format" "^3.2.4" + "@vitest/runner" "3.2.4" + "@vitest/snapshot" "3.2.4" + "@vitest/spy" "3.2.4" + "@vitest/utils" "3.2.4" + chai "^5.2.0" + debug "^4.4.1" + expect-type "^1.2.1" + magic-string "^0.30.17" + pathe "^2.0.3" + picomatch "^4.0.2" + std-env "^3.9.0" + tinybench "^2.9.0" + tinyexec "^0.3.2" + tinyglobby "^0.2.14" + tinypool "^1.1.1" + tinyrainbow "^2.0.0" + vite "^5.0.0 || ^6.0.0 || ^7.0.0-0" + vite-node "3.2.4" + why-is-node-running "^2.3.0" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -9350,6 +9955,14 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +why-is-node-running@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + wide-align@^1.1.0, wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" From cbd5799df3f34db61f29bd8524736095d5d0a9bf Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sat, 6 Sep 2025 23:15:04 -0400 Subject: [PATCH 2/7] Add Vitest config --- vitest.config.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 vitest.config.ts diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000..184c1670 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,10 @@ +import {defineConfig} from "vitest/config" + +export default defineConfig({ + test: { + environment: "node", + include: ["**/__tests__/**/*.[jt]s?(x)"], + globals: true, + setupFiles: [] + } +}) From 49cb4a158f0bf0a3c653640c98f79c508fd2a938 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sat, 6 Sep 2025 23:16:37 -0400 Subject: [PATCH 3/7] Update tests for Vitest --- __tests__/__snapshots__/base.js.snap | 338 ++--- __tests__/__snapshots__/curry.js.snap | 10 +- __tests__/__snapshots__/frozen.js.snap | 14 +- __tests__/__snapshots__/manual.js.snap | 18 +- __tests__/__snapshots__/patch.js.snap | 8 +- __tests__/__snapshots__/plugins.js.snap | 10 +- __tests__/__snapshots__/readme.js.snap | 4 +- __tests__/base.js | 19 +- __tests__/manual.js | 3 +- __tests__/map-set.js | 5 +- __tests__/patch.js | 1568 ++++++++++++----------- 11 files changed, 1028 insertions(+), 969 deletions(-) diff --git a/__tests__/__snapshots__/base.js.snap b/__tests__/__snapshots__/base.js.snap index c545cde6..fa137d3c 100644 --- a/__tests__/__snapshots__/base.js.snap +++ b/__tests__/__snapshots__/base.js.snap @@ -1,310 +1,310 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false array drafts throws when a non-numeric property is added 1`] = `"[Immer] Immer only supports setting array indices and the 'length' property"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > array drafts > throws when a non-numeric property is added 1`] = `[Error: [Immer] Immer only supports setting array indices and the 'length' property]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false array drafts throws when a non-numeric property is deleted 1`] = `"[Immer] Immer only supports deleting array indices"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > array drafts > throws when a non-numeric property is deleted 1`] = `[Error: [Immer] Immer only supports deleting array indices]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false map drafts revokes map proxies 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > map drafts > revokes map proxies 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false map drafts revokes map proxies 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > map drafts > revokes map proxies 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false recipe functions cannot return a modified child draft 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false recipe functions cannot return an object that references itself 1`] = `"[Immer] Immer forbids circular references"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > recipe functions > cannot return an object that references itself 1`] = `[Error: [Immer] Immer forbids circular references]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false revokes the draft once produce returns 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > revokes the draft once produce returns 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false revokes the draft once produce returns 2`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > revokes the draft once produce returns 2`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false revokes the draft once produce returns 3`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > revokes the draft once produce returns 3`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false revokes the draft once produce returns 4`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > revokes the draft once produce returns 4`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false revokes the draft once produce returns 5`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > revokes the draft once produce returns 5`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false revokes the draft once produce returns 6`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > revokes the draft once produce returns 6`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false revokes the draft once produce returns 7`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > revokes the draft once produce returns 7`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false revokes the draft once produce returns 8`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > revokes the draft once produce returns 8`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false set drafts revokes sets 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > set drafts > revokes sets 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false set drafts revokes sets 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > set drafts > revokes sets 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] Object.defineProperty() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] Object.defineProperty() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] Object.setPrototypeOf() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] Object.setPrototypeOf() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false throws when the draft is modified and another object is returned 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true array drafts throws when a non-numeric property is added 1`] = `"[Immer] Immer only supports setting array indices and the 'length' property"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > array drafts > throws when a non-numeric property is added 1`] = `[Error: [Immer] Immer only supports setting array indices and the 'length' property]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true array drafts throws when a non-numeric property is deleted 1`] = `"[Immer] Immer only supports deleting array indices"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > array drafts > throws when a non-numeric property is deleted 1`] = `[Error: [Immer] Immer only supports deleting array indices]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true map drafts revokes map proxies 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > map drafts > revokes map proxies 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true map drafts revokes map proxies 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > map drafts > revokes map proxies 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true recipe functions cannot return a modified child draft 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true recipe functions cannot return an object that references itself 1`] = `"[Immer] Immer forbids circular references"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > recipe functions > cannot return an object that references itself 1`] = `[Error: [Immer] Immer forbids circular references]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true revokes the draft once produce returns 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > revokes the draft once produce returns 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true revokes the draft once produce returns 2`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > revokes the draft once produce returns 2`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true revokes the draft once produce returns 3`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > revokes the draft once produce returns 3`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true revokes the draft once produce returns 4`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > revokes the draft once produce returns 4`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true revokes the draft once produce returns 5`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > revokes the draft once produce returns 5`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true revokes the draft once produce returns 6`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > revokes the draft once produce returns 6`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true revokes the draft once produce returns 7`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > revokes the draft once produce returns 7`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true revokes the draft once produce returns 8`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > revokes the draft once produce returns 8`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true set drafts revokes sets 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > set drafts > revokes sets 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true set drafts revokes sets 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > set drafts > revokes sets 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] Object.defineProperty() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] Object.defineProperty() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] Object.setPrototypeOf() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] Object.setPrototypeOf() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true throws when the draft is modified and another object is returned 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false array drafts throws when a non-numeric property is added 1`] = `"[Immer] Immer only supports setting array indices and the 'length' property"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > array drafts > throws when a non-numeric property is added 1`] = `[Error: [Immer] Immer only supports setting array indices and the 'length' property]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false array drafts throws when a non-numeric property is deleted 1`] = `"[Immer] Immer only supports deleting array indices"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > array drafts > throws when a non-numeric property is deleted 1`] = `[Error: [Immer] Immer only supports deleting array indices]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false map drafts revokes map proxies 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > map drafts > revokes map proxies 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false map drafts revokes map proxies 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > map drafts > revokes map proxies 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false recipe functions cannot return a modified child draft 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false recipe functions cannot return an object that references itself 1`] = `"[Immer] Immer forbids circular references"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > recipe functions > cannot return an object that references itself 1`] = `[Error: [Immer] Immer forbids circular references]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false revokes the draft once produce returns 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > revokes the draft once produce returns 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false revokes the draft once produce returns 2`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > revokes the draft once produce returns 2`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false revokes the draft once produce returns 3`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > revokes the draft once produce returns 3`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false revokes the draft once produce returns 4`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > revokes the draft once produce returns 4`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false revokes the draft once produce returns 5`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > revokes the draft once produce returns 5`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false revokes the draft once produce returns 6`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > revokes the draft once produce returns 6`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false revokes the draft once produce returns 7`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > revokes the draft once produce returns 7`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false revokes the draft once produce returns 8`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > revokes the draft once produce returns 8`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false set drafts revokes sets 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > set drafts > revokes sets 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false set drafts revokes sets 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > set drafts > revokes sets 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] Object.defineProperty() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] Object.defineProperty() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] Object.setPrototypeOf() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] Object.setPrototypeOf() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false throws when the draft is modified and another object is returned 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true array drafts throws when a non-numeric property is added 1`] = `"[Immer] Immer only supports setting array indices and the 'length' property"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > array drafts > throws when a non-numeric property is added 1`] = `[Error: [Immer] Immer only supports setting array indices and the 'length' property]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true array drafts throws when a non-numeric property is deleted 1`] = `"[Immer] Immer only supports deleting array indices"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > array drafts > throws when a non-numeric property is deleted 1`] = `[Error: [Immer] Immer only supports deleting array indices]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true map drafts revokes map proxies 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > map drafts > revokes map proxies 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true map drafts revokes map proxies 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > map drafts > revokes map proxies 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true recipe functions cannot return a modified child draft 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true recipe functions cannot return an object that references itself 1`] = `"[Immer] Immer forbids circular references"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > recipe functions > cannot return an object that references itself 1`] = `[Error: [Immer] Immer forbids circular references]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true revokes the draft once produce returns 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > revokes the draft once produce returns 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true revokes the draft once produce returns 2`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > revokes the draft once produce returns 2`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true revokes the draft once produce returns 3`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > revokes the draft once produce returns 3`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true revokes the draft once produce returns 4`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > revokes the draft once produce returns 4`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true revokes the draft once produce returns 5`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > revokes the draft once produce returns 5`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true revokes the draft once produce returns 6`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > revokes the draft once produce returns 6`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true revokes the draft once produce returns 7`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > revokes the draft once produce returns 7`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true revokes the draft once produce returns 8`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > revokes the draft once produce returns 8`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true set drafts revokes sets 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > set drafts > revokes sets 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true set drafts revokes sets 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > set drafts > revokes sets 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] Object.defineProperty() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] Object.defineProperty() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] Object.setPrototypeOf() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] Object.setPrototypeOf() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true throws when the draft is modified and another object is returned 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false array drafts throws when a non-numeric property is added 1`] = `"[Immer] Immer only supports setting array indices and the 'length' property"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > array drafts > throws when a non-numeric property is added 1`] = `[Error: [Immer] Immer only supports setting array indices and the 'length' property]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false array drafts throws when a non-numeric property is deleted 1`] = `"[Immer] Immer only supports deleting array indices"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > array drafts > throws when a non-numeric property is deleted 1`] = `[Error: [Immer] Immer only supports deleting array indices]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false map drafts revokes map proxies 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > map drafts > revokes map proxies 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false map drafts revokes map proxies 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > map drafts > revokes map proxies 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false recipe functions cannot return a modified child draft 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false recipe functions cannot return an object that references itself 1`] = `"[Immer] Immer forbids circular references"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > recipe functions > cannot return an object that references itself 1`] = `[Error: [Immer] Immer forbids circular references]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false revokes the draft once produce returns 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > revokes the draft once produce returns 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false revokes the draft once produce returns 2`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > revokes the draft once produce returns 2`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false revokes the draft once produce returns 3`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > revokes the draft once produce returns 3`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false revokes the draft once produce returns 4`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > revokes the draft once produce returns 4`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false revokes the draft once produce returns 5`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > revokes the draft once produce returns 5`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false revokes the draft once produce returns 6`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > revokes the draft once produce returns 6`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false revokes the draft once produce returns 7`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > revokes the draft once produce returns 7`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false revokes the draft once produce returns 8`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > revokes the draft once produce returns 8`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false set drafts revokes sets 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > set drafts > revokes sets 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false set drafts revokes sets 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > set drafts > revokes sets 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] Object.defineProperty() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] Object.defineProperty() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] Object.setPrototypeOf() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] Object.setPrototypeOf() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false throws when the draft is modified and another object is returned 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true array drafts throws when a non-numeric property is added 1`] = `"[Immer] Immer only supports setting array indices and the 'length' property"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > array drafts > throws when a non-numeric property is added 1`] = `[Error: [Immer] Immer only supports setting array indices and the 'length' property]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true array drafts throws when a non-numeric property is deleted 1`] = `"[Immer] Immer only supports deleting array indices"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > array drafts > throws when a non-numeric property is deleted 1`] = `[Error: [Immer] Immer only supports deleting array indices]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true map drafts revokes map proxies 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > map drafts > revokes map proxies 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true map drafts revokes map proxies 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > map drafts > revokes map proxies 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true recipe functions cannot return a modified child draft 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true recipe functions cannot return an object that references itself 1`] = `"[Immer] Immer forbids circular references"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > recipe functions > cannot return an object that references itself 1`] = `[Error: [Immer] Immer forbids circular references]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true revokes the draft once produce returns 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > revokes the draft once produce returns 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true revokes the draft once produce returns 2`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > revokes the draft once produce returns 2`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true revokes the draft once produce returns 3`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > revokes the draft once produce returns 3`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true revokes the draft once produce returns 4`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > revokes the draft once produce returns 4`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true revokes the draft once produce returns 5`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > revokes the draft once produce returns 5`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true revokes the draft once produce returns 6`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > revokes the draft once produce returns 6`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true revokes the draft once produce returns 7`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > revokes the draft once produce returns 7`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true revokes the draft once produce returns 8`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > revokes the draft once produce returns 8`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true set drafts revokes sets 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > set drafts > revokes sets 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true set drafts revokes sets 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > set drafts > revokes sets 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] Object.defineProperty() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] Object.defineProperty() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] Object.setPrototypeOf() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] Object.setPrototypeOf() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true throws when the draft is modified and another object is returned 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false array drafts throws when a non-numeric property is added 1`] = `"[Immer] Immer only supports setting array indices and the 'length' property"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > array drafts > throws when a non-numeric property is added 1`] = `[Error: [Immer] Immer only supports setting array indices and the 'length' property]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false array drafts throws when a non-numeric property is deleted 1`] = `"[Immer] Immer only supports deleting array indices"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > array drafts > throws when a non-numeric property is deleted 1`] = `[Error: [Immer] Immer only supports deleting array indices]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false map drafts revokes map proxies 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > map drafts > revokes map proxies 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false map drafts revokes map proxies 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > map drafts > revokes map proxies 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false recipe functions cannot return a modified child draft 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false recipe functions cannot return an object that references itself 1`] = `"[Immer] Immer forbids circular references"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > recipe functions > cannot return an object that references itself 1`] = `[Error: [Immer] Immer forbids circular references]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false revokes the draft once produce returns 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > revokes the draft once produce returns 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false revokes the draft once produce returns 2`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > revokes the draft once produce returns 2`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false revokes the draft once produce returns 3`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > revokes the draft once produce returns 3`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false revokes the draft once produce returns 4`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > revokes the draft once produce returns 4`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false revokes the draft once produce returns 5`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > revokes the draft once produce returns 5`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false revokes the draft once produce returns 6`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > revokes the draft once produce returns 6`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false revokes the draft once produce returns 7`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > revokes the draft once produce returns 7`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false revokes the draft once produce returns 8`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > revokes the draft once produce returns 8`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false set drafts revokes sets 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > set drafts > revokes sets 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false set drafts revokes sets 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > set drafts > revokes sets 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] Object.defineProperty() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] Object.defineProperty() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] Object.setPrototypeOf() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] Object.setPrototypeOf() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false throws when the draft is modified and another object is returned 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true array drafts throws when a non-numeric property is added 1`] = `"[Immer] Immer only supports setting array indices and the 'length' property"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > array drafts > throws when a non-numeric property is added 1`] = `[Error: [Immer] Immer only supports setting array indices and the 'length' property]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true array drafts throws when a non-numeric property is deleted 1`] = `"[Immer] Immer only supports deleting array indices"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > array drafts > throws when a non-numeric property is deleted 1`] = `[Error: [Immer] Immer only supports deleting array indices]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true map drafts revokes map proxies 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > map drafts > revokes map proxies 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true map drafts revokes map proxies 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > map drafts > revokes map proxies 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true recipe functions cannot return a modified child draft 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true recipe functions cannot return an object that references itself 1`] = `"[Immer] Immer forbids circular references"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > recipe functions > cannot return an object that references itself 1`] = `[Error: [Immer] Immer forbids circular references]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true revokes the draft once produce returns 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > revokes the draft once produce returns 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true revokes the draft once produce returns 2`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > revokes the draft once produce returns 2`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true revokes the draft once produce returns 3`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > revokes the draft once produce returns 3`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true revokes the draft once produce returns 4`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > revokes the draft once produce returns 4`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true revokes the draft once produce returns 5`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > revokes the draft once produce returns 5`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true revokes the draft once produce returns 6`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > revokes the draft once produce returns 6`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true revokes the draft once produce returns 7`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > revokes the draft once produce returns 7`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true revokes the draft once produce returns 8`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > revokes the draft once produce returns 8`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true set drafts revokes sets 1`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > set drafts > revokes sets 1`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true set drafts revokes sets 2`] = `"[Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > set drafts > revokes sets 2`] = `[Error: [Immer] Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? {}]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] Object.defineProperty() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] Object.defineProperty() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] Object.setPrototypeOf() cannot be used on an Immer draft"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] Object.setPrototypeOf() cannot be used on an Immer draft]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true throws when the draft is modified and another object is returned 1`] = `"[Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft."`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.]`; -exports[`complex nesting map / set / object modify deep object 1`] = ` +exports[`complex nesting map / set / object > modify deep object 1`] = ` { "map": Map { "set1" => Set { @@ -324,7 +324,7 @@ exports[`complex nesting map / set / object modify deep object 1`] = ` } `; -exports[`complex nesting map / set / object modify deep object 2`] = ` +exports[`complex nesting map / set / object > modify deep object 2`] = ` [ { "op": "remove", @@ -351,7 +351,7 @@ exports[`complex nesting map / set / object modify deep object 2`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 3`] = ` +exports[`complex nesting map / set / object > modify deep object 3`] = ` { "map": Map { "set1" => Set { @@ -371,7 +371,7 @@ exports[`complex nesting map / set / object modify deep object 3`] = ` } `; -exports[`complex nesting map / set / object modify deep object 4`] = ` +exports[`complex nesting map / set / object > modify deep object 4`] = ` [ { "op": "remove", @@ -398,7 +398,7 @@ exports[`complex nesting map / set / object modify deep object 4`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 5`] = ` +exports[`complex nesting map / set / object > modify deep object 5`] = ` { "map": Map { "set1" => Set { @@ -418,7 +418,7 @@ exports[`complex nesting map / set / object modify deep object 5`] = ` } `; -exports[`complex nesting map / set / object modify deep object 6`] = ` +exports[`complex nesting map / set / object > modify deep object 6`] = ` [ { "op": "remove", @@ -445,7 +445,7 @@ exports[`complex nesting map / set / object modify deep object 6`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 7`] = ` +exports[`complex nesting map / set / object > modify deep object 7`] = ` { "map": Map { "set1" => Set { @@ -465,7 +465,7 @@ exports[`complex nesting map / set / object modify deep object 7`] = ` } `; -exports[`complex nesting map / set / object modify deep object 8`] = ` +exports[`complex nesting map / set / object > modify deep object 8`] = ` [ { "op": "remove", @@ -492,7 +492,7 @@ exports[`complex nesting map / set / object modify deep object 8`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 9`] = ` +exports[`complex nesting map / set / object > modify deep object 9`] = ` { "map": Map { "set1" => Set { @@ -512,7 +512,7 @@ exports[`complex nesting map / set / object modify deep object 9`] = ` } `; -exports[`complex nesting map / set / object modify deep object 10`] = ` +exports[`complex nesting map / set / object > modify deep object 10`] = ` [ { "op": "remove", @@ -539,7 +539,7 @@ exports[`complex nesting map / set / object modify deep object 10`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 11`] = ` +exports[`complex nesting map / set / object > modify deep object 11`] = ` { "map": Map { "set1" => Set { @@ -559,7 +559,7 @@ exports[`complex nesting map / set / object modify deep object 11`] = ` } `; -exports[`complex nesting map / set / object modify deep object 12`] = ` +exports[`complex nesting map / set / object > modify deep object 12`] = ` [ { "op": "remove", @@ -586,7 +586,7 @@ exports[`complex nesting map / set / object modify deep object 12`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 13`] = ` +exports[`complex nesting map / set / object > modify deep object 13`] = ` { "map": Map { "set1" => Set { @@ -606,7 +606,7 @@ exports[`complex nesting map / set / object modify deep object 13`] = ` } `; -exports[`complex nesting map / set / object modify deep object 14`] = ` +exports[`complex nesting map / set / object > modify deep object 14`] = ` [ { "op": "remove", @@ -633,7 +633,7 @@ exports[`complex nesting map / set / object modify deep object 14`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 15`] = ` +exports[`complex nesting map / set / object > modify deep object 15`] = ` { "map": Map { "set1" => Set { @@ -653,7 +653,7 @@ exports[`complex nesting map / set / object modify deep object 15`] = ` } `; -exports[`complex nesting map / set / object modify deep object 16`] = ` +exports[`complex nesting map / set / object > modify deep object 16`] = ` [ { "op": "remove", diff --git a/__tests__/__snapshots__/curry.js.snap b/__tests__/__snapshots__/curry.js.snap index a106acaa..c966e445 100644 --- a/__tests__/__snapshots__/curry.js.snap +++ b/__tests__/__snapshots__/curry.js.snap @@ -1,9 +1,9 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`curry - proxy should check arguments 1`] = `"[Immer] The first or second argument to \`produce\` must be a function"`; +exports[`curry - proxy > should check arguments 1`] = `[Error: [Immer] The first or second argument to \`produce\` must be a function]`; -exports[`curry - proxy should check arguments 2`] = `"[Immer] The first or second argument to \`produce\` must be a function"`; +exports[`curry - proxy > should check arguments 2`] = `[Error: [Immer] The first or second argument to \`produce\` must be a function]`; -exports[`curry - proxy should check arguments 3`] = `"[Immer] The first or second argument to \`produce\` must be a function"`; +exports[`curry - proxy > should check arguments 3`] = `[Error: [Immer] The first or second argument to \`produce\` must be a function]`; -exports[`curry - proxy should check arguments 4`] = `"[Immer] The third argument to \`produce\` must be a function or undefined"`; +exports[`curry - proxy > should check arguments 4`] = `[Error: [Immer] The third argument to \`produce\` must be a function or undefined]`; diff --git a/__tests__/__snapshots__/frozen.js.snap b/__tests__/__snapshots__/frozen.js.snap index ad3e27eb..882faaae 100644 --- a/__tests__/__snapshots__/frozen.js.snap +++ b/__tests__/__snapshots__/frozen.js.snap @@ -1,13 +1,13 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`auto freeze - proxy will freeze maps 1`] = `"[Immer] This object has been frozen and should not be mutated"`; +exports[`auto freeze - proxy > will freeze maps 1`] = `[Error: [Immer] This object has been frozen and should not be mutated]`; -exports[`auto freeze - proxy will freeze maps 2`] = `"[Immer] This object has been frozen and should not be mutated"`; +exports[`auto freeze - proxy > will freeze maps 2`] = `[Error: [Immer] This object has been frozen and should not be mutated]`; -exports[`auto freeze - proxy will freeze maps 3`] = `"[Immer] This object has been frozen and should not be mutated"`; +exports[`auto freeze - proxy > will freeze maps 3`] = `[Error: [Immer] This object has been frozen and should not be mutated]`; -exports[`auto freeze - proxy will freeze sets 1`] = `"[Immer] This object has been frozen and should not be mutated"`; +exports[`auto freeze - proxy > will freeze sets 1`] = `[Error: [Immer] This object has been frozen and should not be mutated]`; -exports[`auto freeze - proxy will freeze sets 2`] = `"[Immer] This object has been frozen and should not be mutated"`; +exports[`auto freeze - proxy > will freeze sets 2`] = `[Error: [Immer] This object has been frozen and should not be mutated]`; -exports[`auto freeze - proxy will freeze sets 3`] = `"[Immer] This object has been frozen and should not be mutated"`; +exports[`auto freeze - proxy > will freeze sets 3`] = `[Error: [Immer] This object has been frozen and should not be mutated]`; diff --git a/__tests__/__snapshots__/manual.js.snap b/__tests__/__snapshots__/manual.js.snap index 5a8df1d9..b93f2aed 100644 --- a/__tests__/__snapshots__/manual.js.snap +++ b/__tests__/__snapshots__/manual.js.snap @@ -1,20 +1,20 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`manual - proxy cannot finishDraft twice 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`manual - proxy > cannot finishDraft twice 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`manual - proxy cannot modify after finish 1`] = `"Cannot perform 'set' on a proxy that has been revoked"`; +exports[`manual - proxy > cannot modify after finish 1`] = `[TypeError: Cannot perform 'set' on a proxy that has been revoked]`; -exports[`manual - proxy should check arguments 1`] = `"[Immer] First argument to \`createDraft\` must be a plain object, an array, or an immerable object"`; +exports[`manual - proxy > should check arguments 1`] = `[Error: [Immer] First argument to \`createDraft\` must be a plain object, an array, or an immerable object]`; -exports[`manual - proxy should check arguments 2`] = `"[Immer] First argument to \`createDraft\` must be a plain object, an array, or an immerable object"`; +exports[`manual - proxy > should check arguments 2`] = `[Error: [Immer] First argument to \`createDraft\` must be a plain object, an array, or an immerable object]`; -exports[`manual - proxy should check arguments 3`] = `"[Immer] First argument to \`finishDraft\` must be a draft returned by \`createDraft\`"`; +exports[`manual - proxy > should check arguments 3`] = `[Error: [Immer] First argument to \`finishDraft\` must be a draft returned by \`createDraft\`]`; -exports[`manual - proxy should not finish drafts from produce 1`] = `"[Immer] First argument to \`finishDraft\` must be a draft returned by \`createDraft\`"`; +exports[`manual - proxy > should not finish drafts from produce 1`] = `[Error: [Immer] First argument to \`finishDraft\` must be a draft returned by \`createDraft\`]`; -exports[`manual - proxy should not finish twice 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`manual - proxy > should not finish twice 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`manual - proxy should support patches drafts 1`] = ` +exports[`manual - proxy > should support patches drafts 1`] = ` [ [ [ diff --git a/__tests__/__snapshots__/patch.js.snap b/__tests__/__snapshots__/patch.js.snap index 01297ac1..ceab9e2e 100644 --- a/__tests__/__snapshots__/patch.js.snap +++ b/__tests__/__snapshots__/patch.js.snap @@ -1,7 +1,7 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`applyPatches throws when \`op\` is not "add", "replace", nor "remove" 1`] = `"[Immer] Unsupported patch operation: copy"`; +exports[`applyPatches > throws when \`op\` is not "add", "replace", nor "remove" 1`] = `[Error: [Immer] Unsupported patch operation: copy]`; -exports[`applyPatches throws when \`path\` cannot be resolved 1`] = `"[Immer] Cannot apply patch, path doesn't resolve: a/b"`; +exports[`applyPatches > throws when \`path\` cannot be resolved 1`] = `[Error: [Immer] Cannot apply patch, path doesn't resolve: a/b]`; -exports[`applyPatches throws when \`path\` cannot be resolved 2`] = `"[Immer] Cannot apply patch, path doesn't resolve: a/b/c"`; +exports[`applyPatches > throws when \`path\` cannot be resolved 2`] = `[Error: [Immer] Cannot apply patch, path doesn't resolve: a/b/c]`; diff --git a/__tests__/__snapshots__/plugins.js.snap b/__tests__/__snapshots__/plugins.js.snap index a2557ca3..b4dfcc76 100644 --- a/__tests__/__snapshots__/plugins.js.snap +++ b/__tests__/__snapshots__/plugins.js.snap @@ -1,9 +1,9 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`error when using Maps 1`] = `"[Immer] The plugin for 'MapSet' has not been loaded into Immer. To enable the plugin, import and call \`enableMapSet()\` when initializing your application."`; +exports[`error when using Maps 1`] = `[Error: [Immer] The plugin for 'MapSet' has not been loaded into Immer. To enable the plugin, import and call \`enableMapSet()\` when initializing your application.]`; -exports[`error when using patches - 1 1`] = `"[Immer] The plugin for 'Patches' has not been loaded into Immer. To enable the plugin, import and call \`enablePatches()\` when initializing your application."`; +exports[`error when using patches - 1 1`] = `[Error: [Immer] The plugin for 'Patches' has not been loaded into Immer. To enable the plugin, import and call \`enablePatches()\` when initializing your application.]`; -exports[`error when using patches - 2 1`] = `"[Immer] The plugin for 'Patches' has not been loaded into Immer. To enable the plugin, import and call \`enablePatches()\` when initializing your application."`; +exports[`error when using patches - 2 1`] = `[Error: [Immer] The plugin for 'Patches' has not been loaded into Immer. To enable the plugin, import and call \`enablePatches()\` when initializing your application.]`; -exports[`error when using patches - 3 1`] = `"[Immer] The plugin for 'Patches' has not been loaded into Immer. To enable the plugin, import and call \`enablePatches()\` when initializing your application."`; +exports[`error when using patches - 3 1`] = `[Error: [Immer] The plugin for 'Patches' has not been loaded into Immer. To enable the plugin, import and call \`enablePatches()\` when initializing your application.]`; diff --git a/__tests__/__snapshots__/readme.js.snap b/__tests__/__snapshots__/readme.js.snap index 571f2cf8..d4a29d33 100644 --- a/__tests__/__snapshots__/readme.js.snap +++ b/__tests__/__snapshots__/readme.js.snap @@ -1,3 +1,3 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Producers can update Maps 4`] = `"[Immer] This object has been frozen and should not be mutated"`; +exports[`Producers can update Maps 4`] = `[Error: [Immer] This object has been frozen and should not be mutated]`; diff --git a/__tests__/base.js b/__tests__/base.js index cca8220d..e21bb970 100644 --- a/__tests__/base.js +++ b/__tests__/base.js @@ -1,4 +1,5 @@ "use strict" +import {vi} from "vitest" import { Immer, nothing, @@ -15,7 +16,9 @@ import * as lodash from "lodash" enablePatches() enableMapSet() -jest.setTimeout(1000) +vi.setConfig({ + testTimeout: 1000 +}) const isProd = process.env.NODE_ENV === "production" @@ -2093,7 +2096,7 @@ function runBaseTest(name, autoFreeze, useStrictShallowCopy, useListener) { }) if (!autoFreeze) { - describe("#613", () => { + test("#613", () => { const x1 = {} const y1 = produce(x1, draft => { draft.foo = produce({bar: "baz"}, draft1 => { @@ -2239,7 +2242,7 @@ function testObjectTypes(produce) { }) }) - describe("setter only", () => { + test("setter only", () => { let setterCalled = 0 class State { [immerable] = true @@ -2261,7 +2264,7 @@ function testObjectTypes(produce) { expect(state.x).toBe(0) }) - describe("getter only", () => { + test("getter only", () => { let getterCalled = 0 class State { [immerable] = true @@ -2286,7 +2289,7 @@ function testObjectTypes(produce) { expect(state.x).toBe(0) }) - describe("own setter only", () => { + test("own setter only", () => { let setterCalled = 0 const state = { x: 0, @@ -2309,7 +2312,7 @@ function testObjectTypes(produce) { expect(state.x).toBe(0) }) - describe("own getter only", () => { + test("own getter only", () => { let getterCalled = 0 const state = { x: 0, @@ -2332,7 +2335,7 @@ function testObjectTypes(produce) { expect(state.x).toBe(0) }) - describe("#620", () => { + test("#620", () => { const customSymbol = Symbol("customSymbol") class TestClass { @@ -2365,7 +2368,7 @@ function testObjectTypes(produce) { }) }) - describe("#1096 / #1087 / proxies", () => { + test("#1096 / #1087 / proxies", () => { const sym = Symbol() let state = { diff --git a/__tests__/manual.js b/__tests__/manual.js index 6b17aaa3..6fa919c8 100644 --- a/__tests__/manual.js +++ b/__tests__/manual.js @@ -1,4 +1,5 @@ "use strict" +import {vi} from "vitest" import { setUseProxies, createDraft, @@ -68,7 +69,7 @@ function runTests(name) { draft.a = 2 draft.b = 3 - const listener = jest.fn() + const listener = vi.fn() const result = finishDraft(draft, listener) expect(result).not.toBe(state) diff --git a/__tests__/map-set.js b/__tests__/map-set.js index e4e8b7d3..390fceca 100644 --- a/__tests__/map-set.js +++ b/__tests__/map-set.js @@ -1,4 +1,5 @@ "use strict" +import {vi} from "vitest" import { Immer, nothing, @@ -13,7 +14,9 @@ import {each, shallowCopy, isEnumerable, DRAFT_STATE} from "../src/utils/common" enableMapSet() enablePatches() -jest.setTimeout(1000) +vi.setConfig({ + testTimeout: 1000 +}) runBaseTest("proxy (no freeze)", true, false) runBaseTest("proxy (autofreeze)", true, true) diff --git a/__tests__/patch.js b/__tests__/patch.js index 40467850..ea73ccd7 100644 --- a/__tests__/patch.js +++ b/__tests__/patch.js @@ -1,4 +1,5 @@ "use strict" +import {vi} from "vitest" import { produce, applyPatches, @@ -13,47 +14,128 @@ import { enablePatches() enableMapSet() -jest.setTimeout(1000) +vi.setConfig({ + testTimeout: 1000 +}) const isProd = process.env.NODE_ENV === "production" -function runPatchTest(base, producer, patches, inversePathes, expectedResult) { - let resultProxies, resultEs5 +function createPatchTestData( + base, + producer, + expectedPatches, + expectedInversePatches, + expectedResult +) { + let recordedPatches, recordedInversePatches + const res = produce(base, producer, (p, i) => { + recordedPatches = p + recordedInversePatches = i + }) - function runPatchTestHelper() { - let recordedPatches - let recordedInversePatches - const res = produce(base, producer, (p, i) => { - recordedPatches = p - recordedInversePatches = i - }) + return { + result: res, + patches: recordedPatches, + inversePatches: recordedInversePatches, + expectedPatches, + expectedInversePatches, + expectedResult, + base + } +} - if (expectedResult !== undefined) +function runPatchTests( + testName, + base, + producer, + expectedPatches, + expectedInversePatches, + expectedResult, + options = {} +) { + const {only = false, skip = false} = options + + // Choose the appropriate describe function + let describeFn = describe + if (testName === "") describeFn = (name, fn) => fn() + if (only) describeFn = describe.only + if (skip) describeFn = describe.skip + + let testData = createPatchTestData( + base, + producer, + expectedPatches, + expectedInversePatches, + expectedResult + ) + + describeFn(testName, () => { + if (expectedResult !== undefined) { test("produced the correct result", () => { - expect(res).toEqual(expectedResult) + expect(testData.result).toEqual(expectedResult) }) + } test("produces the correct patches", () => { - expect(recordedPatches).toEqual(patches) - if (inversePathes) expect(recordedInversePatches).toEqual(inversePathes) + expect(testData.patches).toEqual(expectedPatches) + if (expectedInversePatches) { + expect(testData.inversePatches).toEqual(expectedInversePatches) + } }) test("patches are replayable", () => { - expect(applyPatches(base, recordedPatches)).toEqual(res) + expect(applyPatches(base, testData.patches)).toEqual(testData.result) }) test("patches can be reversed", () => { - expect(applyPatches(res, recordedInversePatches)).toEqual(base) + if (expectedInversePatches) { + expect(applyPatches(testData.result, testData.inversePatches)).toEqual( + base + ) + } }) + }) - return res - } + return testData +} - describe(`proxy`, () => { - resultProxies = runPatchTestHelper() - }) +// Convenience functions for common use cases +runPatchTests.only = function( + testName, + base, + producer, + expectedPatches, + expectedInversePatches, + expectedResult +) { + return runPatchTests( + testName, + base, + producer, + expectedPatches, + expectedInversePatches, + expectedResult, + {only: true} + ) +} - return resultProxies +runPatchTests.skip = function( + testName, + base, + producer, + expectedPatches, + expectedInversePatches, + expectedResult +) { + return runPatchTests( + testName, + base, + producer, + expectedPatches, + expectedInversePatches, + expectedResult, + {skip: true} + ) } describe("applyPatches", () => { @@ -116,81 +198,91 @@ describe("applyPatches", () => { }) }) -describe("simple assignment - 1", () => { - runPatchTest( - {x: 3}, - d => { - d.x++ - }, - [{op: "replace", path: ["x"], value: 4}] - ) -}) - -describe("simple assignment - 2", () => { - runPatchTest( - {x: {y: 4}}, - d => { - d.x.y++ - }, - [{op: "replace", path: ["x", "y"], value: 5}] - ) -}) - -describe("simple assignment - 3", () => { - runPatchTest( - {x: [{y: 4}]}, - d => { - d.x[0].y++ - }, - [{op: "replace", path: ["x", 0, "y"], value: 5}] - ) -}) - -describe("simple assignment - 4", () => { - runPatchTest( - new Map([["x", {y: 4}]]), - d => { - d.get("x").y++ - }, - [{op: "replace", path: ["x", "y"], value: 5}], - [{op: "replace", path: ["x", "y"], value: 4}] - ) -}) - -describe("simple assignment - 5", () => { - runPatchTest( - {x: new Map([["y", 4]])}, - d => { - d.x.set("y", 5) - }, - [{op: "replace", path: ["x", "y"], value: 5}], - [{op: "replace", path: ["x", "y"], value: 4}] - ) -}) - -describe("simple assignment - 6", () => { - runPatchTest( - new Map([["x", 1]]), - d => { - // Map.prototype.set should return the Map itself - const res = d.set("x", 2) - res.set("y", 3) - }, - [ - {op: "replace", path: ["x"], value: 2}, - {op: "add", path: ["y"], value: 3} - ], - [ - {op: "replace", path: ["x"], value: 1}, - {op: "remove", path: ["y"]} - ] - ) -}) - +// New macro-style test +runPatchTests( + "simple assignment - 1", + {x: 3}, + d => { + d.x++ + }, + [{op: "replace", path: ["x"], value: 4}] +) + +// Original test (commented out for comparison) +// describe("simple assignment - 1", () => { +// runPatchTest( +// {x: 3}, +// d => { +// d.x++ +// }, +// [{op: "replace", path: ["x"], value: 4}] +// ) +// }) + +// New macro-style tests +runPatchTests( + "simple assignment - 2", + {x: {y: 4}}, + d => { + d.x.y++ + }, + [{op: "replace", path: ["x", "y"], value: 5}] +) + +runPatchTests( + "simple assignment - 3", + {x: [{y: 4}]}, + d => { + d.x[0].y++ + }, + [{op: "replace", path: ["x", 0, "y"], value: 5}] +) + +runPatchTests( + "simple assignment - 4", + new Map([["x", {y: 4}]]), + d => { + d.get("x").y++ + }, + [{op: "replace", path: ["x", "y"], value: 5}], + [{op: "replace", path: ["x", "y"], value: 4}] +) + +runPatchTests( + "simple assignment - 5", + {x: new Map([["y", 4]])}, + d => { + d.x.set("y", 5) + }, + [{op: "replace", path: ["x", "y"], value: 5}], + [{op: "replace", path: ["x", "y"], value: 4}] +) + +runPatchTests( + "simple assignment - 6", + new Map([["x", 1]]), + d => { + // Map.prototype.set should return the Map itself + const res = d.set("x", 2) + res.set("y", 3) + }, + [ + {op: "replace", path: ["x"], value: 2}, + {op: "add", path: ["y"], value: 3} + ], + [ + {op: "replace", path: ["x"], value: 1}, + {op: "remove", path: ["y"]} + ] +) + +// Complex test with external variables - keep as individual describe describe("simple assignment - 7", () => { const key1 = {prop: "val1"} const key2 = {prop: "val2"} - runPatchTest( + + runPatchTests( + "", {x: new Map([[key1, 4]])}, d => { d.x.set(key1, 5) @@ -207,60 +299,58 @@ describe("simple assignment - 7", () => { ) }) -describe("simple assignment - 8", () => { - runPatchTest( - new Map([[0, new Map([[1, 4]])]]), - d => { - d.get(0).set(1, 5) - d.get(0).set(2, 6) - }, - [ - {op: "replace", path: [0, 1], value: 5}, - {op: "add", path: [0, 2], value: 6} - ], - [ - {op: "replace", path: [0, 1], value: 4}, - {op: "remove", path: [0, 2]} - ] - ) -}) - -describe("delete 1", () => { - runPatchTest( - {x: {y: 4}}, - d => { - delete d.x - }, - [{op: "remove", path: ["x"]}] - ) -}) - -describe("delete 2", () => { - runPatchTest( - new Map([["x", 1]]), - d => { - d.delete("x") - }, - [{op: "remove", path: ["x"]}], - [{op: "add", path: ["x"], value: 1}] - ) -}) - -describe("delete 3", () => { - runPatchTest( - {x: new Map([["y", 1]])}, - d => { - d.x.delete("y") - }, - [{op: "remove", path: ["x", "y"]}], - [{op: "add", path: ["x", "y"], value: 1}] - ) -}) +runPatchTests( + "simple assignment - 8", + new Map([[0, new Map([[1, 4]])]]), + d => { + d.get(0).set(1, 5) + d.get(0).set(2, 6) + }, + [ + {op: "replace", path: [0, 1], value: 5}, + {op: "add", path: [0, 2], value: 6} + ], + [ + {op: "replace", path: [0, 1], value: 4}, + {op: "remove", path: [0, 2]} + ] +) + +runPatchTests( + "delete 1", + {x: {y: 4}}, + d => { + delete d.x + }, + [{op: "remove", path: ["x"]}] +) + +runPatchTests( + "delete 2", + new Map([["x", 1]]), + d => { + d.delete("x") + }, + [{op: "remove", path: ["x"]}], + [{op: "add", path: ["x"], value: 1}] +) + +runPatchTests( + "delete 3", + {x: new Map([["y", 1]])}, + d => { + d.x.delete("y") + }, + [{op: "remove", path: ["x", "y"]}], + [{op: "add", path: ["x", "y"], value: 1}] +) describe("delete 5", () => { const key1 = {prop: "val1"} const key2 = {prop: "val2"} - runPatchTest( + + runPatchTests( + "", { x: new Map([ [key1, 1], @@ -282,471 +372,443 @@ describe("delete 5", () => { ) }) -describe("delete 6", () => { - runPatchTest( - new Set(["x", 1]), - d => { - d.delete("x") - }, - [{op: "remove", path: [0], value: "x"}], - [{op: "add", path: [0], value: "x"}] - ) -}) - -describe("delete 7", () => { - runPatchTest( - {x: new Set(["y", 1])}, - d => { - d.x.delete("y") - }, - [{op: "remove", path: ["x", 0], value: "y"}], - [{op: "add", path: ["x", 0], value: "y"}] - ) -}) +runPatchTests( + "delete 6", + new Set(["x", 1]), + d => { + d.delete("x") + }, + [{op: "remove", path: [0], value: "x"}], + [{op: "add", path: [0], value: "x"}] +) + +runPatchTests( + "delete 7", + {x: new Set(["y", 1])}, + d => { + d.x.delete("y") + }, + [{op: "remove", path: ["x", 0], value: "y"}], + [{op: "add", path: ["x", 0], value: "y"}] +) describe("renaming properties", () => { - describe("nested object (no changes)", () => { - runPatchTest( - {a: {b: 1}}, - d => { - d.x = d.a - delete d.a - }, - [ - {op: "add", path: ["x"], value: {b: 1}}, - {op: "remove", path: ["a"]} - ] - ) - }) - - describe("nested change in object", () => { - runPatchTest( - { - a: {b: 1} - }, - d => { - d.a.b++ - }, - [{op: "replace", path: ["a", "b"], value: 2}], - [{op: "replace", path: ["a", "b"], value: 1}] - ) - }) - - describe("nested change in map", () => { - runPatchTest( - new Map([["a", new Map([["b", 1]])]]), - d => { - d.get("a").set("b", 2) - }, - [{op: "replace", path: ["a", "b"], value: 2}], - [{op: "replace", path: ["a", "b"], value: 1}] - ) - }) - - describe("nested change in array", () => { - runPatchTest( - [[{b: 1}]], - d => { - d[0][0].b++ - }, - [{op: "replace", path: [0, 0, "b"], value: 2}], - [{op: "replace", path: [0, 0, "b"], value: 1}] - ) - }) - - describe("nested map (no changes)", () => { - runPatchTest( - new Map([["a", new Map([["b", 1]])]]), - d => { - d.set("x", d.get("a")) - d.delete("a") - }, - [ - {op: "add", path: ["x"], value: new Map([["b", 1]])}, - {op: "remove", path: ["a"]} - ], - [ - {op: "remove", path: ["x"]}, - {op: "add", path: ["a"], value: new Map([["b", 1]])} - ] - ) - }) - - describe("nested object (with changes)", () => { - runPatchTest( - {a: {b: 1, c: 1}}, - d => { - let a = d.a - a.b = 2 // change - delete a.c // delete - a.y = 2 // add - - // rename - d.x = a - delete d.a - }, - [ - {op: "add", path: ["x"], value: {b: 2, y: 2}}, - {op: "remove", path: ["a"]} - ] - ) - }) - - describe("nested map (with changes)", () => { - runPatchTest( - new Map([ - [ - "a", - new Map([ - ["b", 1], - ["c", 1] - ]) - ] - ]), - d => { - let a = d.get("a") - a.set("b", 2) // change - a.delete("c") // delete - a.set("y", 2) // add - - // rename - d.set("x", a) - d.delete("a") - }, - [ - { - op: "add", - path: ["x"], - value: new Map([ - ["b", 2], - ["y", 2] - ]) - }, - {op: "remove", path: ["a"]} - ], - [ - {op: "remove", path: ["x"]}, - { - op: "add", - path: ["a"], - value: new Map([ - ["b", 1], - ["c", 1] - ]) - } - ] - ) - }) - - describe("deeply nested object (with changes)", () => { - runPatchTest( - {a: {b: {c: 1, d: 1}}}, - d => { - let b = d.a.b - b.c = 2 // change - delete b.d // delete - b.y = 2 // add - - // rename - d.a.x = b - delete d.a.b - }, - [ - {op: "add", path: ["a", "x"], value: {c: 2, y: 2}}, - {op: "remove", path: ["a", "b"]} - ] - ) - }) - - describe("deeply nested map (with changes)", () => { - runPatchTest( - new Map([ - [ - "a", - new Map([ - [ - "b", - new Map([ - ["c", 1], - ["d", 1] - ]) - ] - ]) - ] - ]), - d => { - let b = d.get("a").get("b") - b.set("c", 2) // change - b.delete("d") // delete - b.set("y", 2) // add - - // rename - d.get("a").set("x", b) - d.get("a").delete("b") - }, - [ - { - op: "add", - path: ["a", "x"], - value: new Map([ - ["c", 2], - ["y", 2] - ]) - }, - {op: "remove", path: ["a", "b"]} - ], - [ - {op: "remove", path: ["a", "x"]}, - { - op: "add", - path: ["a", "b"], - value: new Map([ - ["c", 1], - ["d", 1] - ]) - } - ] - ) - }) -}) - -describe("minimum amount of changes", () => { - runPatchTest( - {x: 3, y: {a: 4}, z: 3}, + runPatchTests( + "nested object (no changes)", + {a: {b: 1}}, d => { - d.y.a = 4 - d.y.b = 5 - Object.assign(d, {x: 4, y: {a: 2}}) + d.x = d.a + delete d.a }, [ - {op: "replace", path: ["x"], value: 4}, - {op: "replace", path: ["y"], value: {a: 2}} + {op: "add", path: ["x"], value: {b: 1}}, + {op: "remove", path: ["a"]} ] ) -}) -describe("arrays - prepend", () => { - runPatchTest( - {x: [1, 2, 3]}, - d => { - d.x.unshift(4) + runPatchTests( + "nested change in object", + { + a: {b: 1} }, - [ - {op: "replace", path: ["x", 0], value: 4}, - {op: "replace", path: ["x", 1], value: 1}, - {op: "replace", path: ["x", 2], value: 2}, - {op: "add", path: ["x", 3], value: 3} - ] - ) -}) - -describe("arrays - multiple prepend", () => { - runPatchTest( - {x: [1, 2, 3]}, d => { - d.x.unshift(4) - d.x.unshift(5) - // 4,5,1,2,3 + d.a.b++ }, - [ - {op: "replace", path: ["x", 0], value: 5}, - {op: "replace", path: ["x", 1], value: 4}, - {op: "replace", path: ["x", 2], value: 1}, - {op: "add", path: ["x", 3], value: 2}, - {op: "add", path: ["x", 4], value: 3} - ] + [{op: "replace", path: ["a", "b"], value: 2}], + [{op: "replace", path: ["a", "b"], value: 1}] ) -}) -describe("arrays - splice middle", () => { - runPatchTest( - {x: [1, 2, 3]}, + runPatchTests( + "nested change in map", + new Map([["a", new Map([["b", 1]])]]), d => { - d.x.splice(1, 1) + d.get("a").set("b", 2) }, - [ - {op: "replace", path: ["x", 1], value: 3}, - {op: "remove", path: ["x", 2]} - ] + [{op: "replace", path: ["a", "b"], value: 2}], + [{op: "replace", path: ["a", "b"], value: 1}] ) -}) -describe("arrays - multiple splice", () => { - runPatchTest( - [0, 1, 2, 3, 4, 5, 0], + runPatchTests( + "nested change in array", + [[{b: 1}]], d => { - d.splice(4, 2, 3) - // [0,1,2,3,3,0] - d.splice(1, 2, 3) - // [0,3,3,3,0] - expect(d.slice()).toEqual([0, 3, 3, 3, 0]) + d[0][0].b++ }, - [ - {op: "replace", path: [1], value: 3}, - {op: "replace", path: [2], value: 3}, - {op: "replace", path: [4], value: 0}, - {op: "remove", path: [6]}, - {op: "remove", path: [5]} - ] + [{op: "replace", path: [0, 0, "b"], value: 2}], + [{op: "replace", path: [0, 0, "b"], value: 1}] ) -}) -describe("arrays - modify and shrink", () => { - runPatchTest( - {x: [1, 2, 3]}, + runPatchTests( + "nested map (no changes)", + new Map([["a", new Map([["b", 1]])]]), d => { - d.x[0] = 4 - d.x.length = 2 - // [0, 2] + d.set("x", d.get("a")) + d.delete("a") }, [ - {op: "replace", path: ["x", 0], value: 4}, - {op: "remove", path: ["x", 2]} + {op: "add", path: ["x"], value: new Map([["b", 1]])}, + {op: "remove", path: ["a"]} ], [ - {op: "replace", path: ["x", 0], value: 1}, - {op: "add", path: ["x", 2], value: 3} + {op: "remove", path: ["x"]}, + {op: "add", path: ["a"], value: new Map([["b", 1]])} ] ) -}) -describe("arrays - prepend then splice middle", () => { - runPatchTest( - {x: [1, 2, 3]}, + runPatchTests( + "nested object (with changes)", + {a: {b: 1, c: 1}}, d => { - d.x.unshift(4) - d.x.splice(2, 1) - // 4, 1, 3 - }, - [ - {op: "replace", path: ["x", 0], value: 4}, - {op: "replace", path: ["x", 1], value: 1} - ] - ) -}) + let a = d.a + a.b = 2 // change + delete a.c // delete + a.y = 2 // add -describe("arrays - splice middle then prepend", () => { - runPatchTest( - {x: [1, 2, 3]}, - d => { - d.x.splice(1, 1) - d.x.unshift(4) - // [4, 1, 3] + // rename + d.x = a + delete d.a }, [ - {op: "replace", path: ["x", 0], value: 4}, - {op: "replace", path: ["x", 1], value: 1} + {op: "add", path: ["x"], value: {b: 2, y: 2}}, + {op: "remove", path: ["a"]} ] ) -}) -describe("arrays - truncate", () => { - runPatchTest( - {x: [1, 2, 3]}, + runPatchTests( + "nested map (with changes)", + new Map([ + [ + "a", + new Map([ + ["b", 1], + ["c", 1] + ]) + ] + ]), d => { - d.x.length -= 2 + let a = d.get("a") + a.set("b", 2) // change + a.delete("c") // delete + a.set("y", 2) // add + + // rename + d.set("x", a) + d.delete("a") }, [ - {op: "remove", path: ["x", 2]}, - {op: "remove", path: ["x", 1]} + { + op: "add", + path: ["x"], + value: new Map([ + ["b", 2], + ["y", 2] + ]) + }, + {op: "remove", path: ["a"]} ], [ - {op: "add", path: ["x", 1], value: 2}, - {op: "add", path: ["x", 2], value: 3} + {op: "remove", path: ["x"]}, + { + op: "add", + path: ["a"], + value: new Map([ + ["b", 1], + ["c", 1] + ]) + } ] ) -}) -describe("arrays - pop twice", () => { - runPatchTest( - {x: [1, 2, 3]}, + runPatchTests( + "deeply nested object (with changes)", + {a: {b: {c: 1, d: 1}}}, d => { - d.x.pop() - d.x.pop() + let b = d.a.b + b.c = 2 // change + delete b.d // delete + b.y = 2 // add + + // rename + d.a.x = b + delete d.a.b }, [ - {op: "remove", path: ["x", 2]}, - {op: "remove", path: ["x", 1]} + {op: "add", path: ["a", "x"], value: {c: 2, y: 2}}, + {op: "remove", path: ["a", "b"]} ] ) -}) -describe("arrays - push multiple", () => { - // These patches were more optimal pre immer 7, but not always correct - runPatchTest( - {x: [1, 2, 3]}, + runPatchTests( + "deeply nested map (with changes)", + new Map([ + [ + "a", + new Map([ + [ + "b", + new Map([ + ["c", 1], + ["d", 1] + ]) + ] + ]) + ] + ]), d => { - d.x.push(4, 5) + let b = d.get("a").get("b") + b.set("c", 2) // change + b.delete("d") // delete + b.set("y", 2) // add + + // rename + d.get("a").set("x", b) + d.get("a").delete("b") }, [ - {op: "add", path: ["x", 3], value: 4}, - {op: "add", path: ["x", 4], value: 5} + { + op: "add", + path: ["a", "x"], + value: new Map([ + ["c", 2], + ["y", 2] + ]) + }, + {op: "remove", path: ["a", "b"]} ], [ - {op: "remove", path: ["x", 4]}, - {op: "remove", path: ["x", 3]} + {op: "remove", path: ["a", "x"]}, + { + op: "add", + path: ["a", "b"], + value: new Map([ + ["c", 1], + ["d", 1] + ]) + } ] ) }) -describe("arrays - splice (expand)", () => { - // These patches were more optimal pre immer 7, but not always correct - runPatchTest( - {x: [1, 2, 3]}, - d => { - d.x.splice(1, 1, 4, 5, 6) // [1,4,5,6,3] - }, - [ - {op: "replace", path: ["x", 1], value: 4}, - {op: "replace", path: ["x", 2], value: 5}, - {op: "add", path: ["x", 3], value: 6}, - {op: "add", path: ["x", 4], value: 3} - ], - [ - {op: "replace", path: ["x", 1], value: 2}, - {op: "replace", path: ["x", 2], value: 3}, - {op: "remove", path: ["x", 4]}, - {op: "remove", path: ["x", 3]} +runPatchTests( + "minimum amount of changes", + {x: 3, y: {a: 4}, z: 3}, + d => { + d.y.a = 4 + d.y.b = 5 + Object.assign(d, {x: 4, y: {a: 2}}) + }, + [ + {op: "replace", path: ["x"], value: 4}, + {op: "replace", path: ["y"], value: {a: 2}} + ] +) + +runPatchTests( + "arrays - prepend", + {x: [1, 2, 3]}, + d => { + d.x.unshift(4) + }, + [ + {op: "replace", path: ["x", 0], value: 4}, + {op: "replace", path: ["x", 1], value: 1}, + {op: "replace", path: ["x", 2], value: 2}, + {op: "add", path: ["x", 3], value: 3} + ] +) + +runPatchTests( + "arrays - multiple prepend", + {x: [1, 2, 3]}, + d => { + d.x.unshift(4) + d.x.unshift(5) + // 4,5,1,2,3 + }, + [ + {op: "replace", path: ["x", 0], value: 5}, + {op: "replace", path: ["x", 1], value: 4}, + {op: "replace", path: ["x", 2], value: 1}, + {op: "add", path: ["x", 3], value: 2}, + {op: "add", path: ["x", 4], value: 3} + ] +) + +runPatchTests( + "arrays - splice middle", + {x: [1, 2, 3]}, + d => { + d.x.splice(1, 1) + }, + [ + {op: "replace", path: ["x", 1], value: 3}, + {op: "remove", path: ["x", 2]} + ] +) + +runPatchTests( + "arrays - multiple splice", + [0, 1, 2, 3, 4, 5, 0], + d => { + d.splice(4, 2, 3) + // [0,1,2,3,3,0] + d.splice(1, 2, 3) + // [0,3,3,3,0] + expect(d.slice()).toEqual([0, 3, 3, 3, 0]) + }, + [ + {op: "replace", path: [1], value: 3}, + {op: "replace", path: [2], value: 3}, + {op: "replace", path: [4], value: 0}, + {op: "remove", path: [6]}, + {op: "remove", path: [5]} + ] +) + +runPatchTests( + "arrays - modify and shrink", + {x: [1, 2, 3]}, + d => { + d.x[0] = 4 + d.x.length = 2 + // [0, 2] + }, + [ + {op: "replace", path: ["x", 0], value: 4}, + {op: "remove", path: ["x", 2]} + ], + [ + {op: "replace", path: ["x", 0], value: 1}, + {op: "add", path: ["x", 2], value: 3} + ] +) + +runPatchTests( + "arrays - prepend then splice middle", + {x: [1, 2, 3]}, + d => { + d.x.unshift(4) + d.x.splice(2, 1) + // 4, 1, 3 + }, + [ + {op: "replace", path: ["x", 0], value: 4}, + {op: "replace", path: ["x", 1], value: 1} + ] +) + +runPatchTests( + "arrays - splice middle then prepend", + {x: [1, 2, 3]}, + d => { + d.x.splice(1, 1) + d.x.unshift(4) + // [4, 1, 3] + }, + [ + {op: "replace", path: ["x", 0], value: 4}, + {op: "replace", path: ["x", 1], value: 1} + ] +) + +runPatchTests( + "arrays - truncate", + {x: [1, 2, 3]}, + d => { + d.x.length -= 2 + }, + [ + {op: "remove", path: ["x", 2]}, + {op: "remove", path: ["x", 1]} + ], + [ + {op: "add", path: ["x", 1], value: 2}, + {op: "add", path: ["x", 2], value: 3} + ] +) + +runPatchTests( + "arrays - pop twice", + {x: [1, 2, 3]}, + d => { + d.x.pop() + d.x.pop() + }, + [ + {op: "remove", path: ["x", 2]}, + {op: "remove", path: ["x", 1]} + ] +) + +runPatchTests( + "arrays - push multiple", + {x: [1, 2, 3]}, + d => { + d.x.push(4, 5) + }, + [ + {op: "add", path: ["x", 3], value: 4}, + {op: "add", path: ["x", 4], value: 5} + ], + [ + {op: "remove", path: ["x", 4]}, + {op: "remove", path: ["x", 3]} + ] +) + +runPatchTests( + "arrays - splice (expand)", + {x: [1, 2, 3]}, + d => { + d.x.splice(1, 1, 4, 5, 6) // [1,4,5,6,3] + }, + [ + {op: "replace", path: ["x", 1], value: 4}, + {op: "replace", path: ["x", 2], value: 5}, + {op: "add", path: ["x", 3], value: 6}, + {op: "add", path: ["x", 4], value: 3} + ], + [ + {op: "replace", path: ["x", 1], value: 2}, + {op: "replace", path: ["x", 2], value: 3}, + {op: "remove", path: ["x", 4]}, + {op: "remove", path: ["x", 3]} + ] +) + +runPatchTests( + "arrays - splice (shrink)", + {x: [1, 2, 3, 4, 5]}, + d => { + d.x.splice(1, 3, 6) // [1, 6, 5] + }, + [ + {op: "replace", path: ["x", 1], value: 6}, + {op: "replace", path: ["x", 2], value: 5}, + {op: "remove", path: ["x", 4]}, + {op: "remove", path: ["x", 3]} + ], + [ + {op: "replace", path: ["x", 1], value: 2}, + {op: "replace", path: ["x", 2], value: 3}, + {op: "add", path: ["x", 3], value: 4}, + {op: "add", path: ["x", 4], value: 5} + ] +) + +runPatchTests( + "arrays - delete", + { + x: [ + {a: 1, b: 2}, + {c: 3, d: 4} ] - ) -}) - -describe("arrays - splice (shrink)", () => { - // These patches were more optimal pre immer 7, but not always correct - runPatchTest( - {x: [1, 2, 3, 4, 5]}, - d => { - d.x.splice(1, 3, 6) // [1, 6, 5] - }, - [ - {op: "replace", path: ["x", 1], value: 6}, - {op: "replace", path: ["x", 2], value: 5}, - {op: "remove", path: ["x", 4]}, - {op: "remove", path: ["x", 3]} - ], - [ - {op: "replace", path: ["x", 1], value: 2}, - {op: "replace", path: ["x", 2], value: 3}, - {op: "add", path: ["x", 3], value: 4}, - {op: "add", path: ["x", 4], value: 5} - ] - ) -}) - -describe("arrays - delete", () => { - runPatchTest( - { - x: [ - {a: 1, b: 2}, - {c: 3, d: 4} - ] - }, - d => { - delete d.x[1].c - }, - [{op: "remove", path: ["x", 1, "c"]}] - ) -}) + }, + d => { + delete d.x[1].c + }, + [{op: "remove", path: ["x", 1, "c"]}] +) describe("arrays - append", () => { test("appends to array when last part of path is '-'", () => { @@ -764,42 +826,39 @@ describe("arrays - append", () => { }) }) -describe("sets - add - 1", () => { - runPatchTest( - new Set([1]), - d => { - d.add(2) - }, - [{op: "add", path: [1], value: 2}], - [{op: "remove", path: [1], value: 2}] - ) -}) - -describe("sets - add, delete, add - 1", () => { - runPatchTest( - new Set([1]), - d => { - d.add(2) - d.delete(2) - d.add(2) - }, - [{op: "add", path: [1], value: 2}], - [{op: "remove", path: [1], value: 2}] - ) -}) - -describe("sets - add, delete, add - 2", () => { - runPatchTest( - new Set([2, 1]), - d => { - d.add(2) - d.delete(2) - d.add(2) - }, - [], - [] - ) -}) +runPatchTests( + "sets - add - 1", + new Set([1]), + d => { + d.add(2) + }, + [{op: "add", path: [1], value: 2}], + [{op: "remove", path: [1], value: 2}] +) + +runPatchTests( + "sets - add, delete, add - 1", + new Set([1]), + d => { + d.add(2) + d.delete(2) + d.add(2) + }, + [{op: "add", path: [1], value: 2}], + [{op: "remove", path: [1], value: 2}] +) + +runPatchTests( + "sets - add, delete, add - 2", + new Set([2, 1]), + d => { + d.add(2) + d.delete(2) + d.add(2) + }, + [], + [] +) describe("sets - mutate - 1", () => { const findById = (set, id) => { @@ -807,7 +866,8 @@ describe("sets - mutate - 1", () => { if (item.id === id) return item } } - runPatchTest( + runPatchTests( + "", new Set([ {id: 1, val: "We"}, {id: 2, val: "will"} @@ -833,147 +893,144 @@ describe("sets - mutate - 1", () => { ) }) -describe("arrays - splice should should result in remove op.", () => { - // These patches were more optimal pre immer 7, but not always correct - runPatchTest( - [1, 2], - d => { - d.splice(1, 1) - }, - [{op: "remove", path: [1]}], - [{op: "add", path: [1], value: 2}] - ) -}) - -describe("arrays - NESTED splice should should result in remove op.", () => { - // These patches were more optimal pre immer 7, but not always correct - runPatchTest( - {a: {b: {c: [1, 2]}}}, - d => { - d.a.b.c.splice(1, 1) - }, - [{op: "remove", path: ["a", "b", "c", 1]}], - [{op: "add", path: ["a", "b", "c", 1], value: 2}] - ) -}) - -describe("simple replacement", () => { - runPatchTest({x: 3}, _d => 4, [{op: "replace", path: [], value: 4}]) -}) - -describe("same value replacement - 1", () => { - runPatchTest( - {x: {y: 3}}, - d => { - const a = d.x - d.x = a - }, - [] - ) -}) - -describe("same value replacement - 2", () => { - runPatchTest( - {x: {y: 3}}, - d => { - const a = d.x - d.x = 4 - d.x = a - }, - [] - ) -}) - -describe("same value replacement - 3", () => { - runPatchTest( - {x: 3}, - d => { - d.x = 3 - }, - [] - ) -}) - -describe("same value replacement - 4", () => { - runPatchTest( - {x: 3}, - d => { - d.x = 4 - d.x = 3 - }, - [] - ) -}) - -describe("same value replacement - 5", () => { - runPatchTest( - new Map([["x", 3]]), - d => { - d.set("x", 4) - d.set("x", 3) - }, - [], - [] - ) -}) - -describe("same value replacement - 6", () => { - runPatchTest( - new Set(["x", 3]), - d => { - d.delete("x") - d.add("x") - }, - [], - [] - ) -}) +// These patches were more optimal pre immer 7, but not always correct +runPatchTests( + "arrays - splice should should result in remove op.", + [1, 2], + d => { + d.splice(1, 1) + }, + [{op: "remove", path: [1]}], + [{op: "add", path: [1], value: 2}] +) + +// These patches were more optimal pre immer 7, but not always correct +runPatchTests( + "arrays - NESTED splice should should result in remove op.", + {a: {b: {c: [1, 2]}}}, + d => { + d.a.b.c.splice(1, 1) + }, + [{op: "remove", path: ["a", "b", "c", 1]}], + [{op: "add", path: ["a", "b", "c", 1], value: 2}] +) + +runPatchTests("simple replacement", {x: 3}, _d => 4, [ + {op: "replace", path: [], value: 4} +]) + +runPatchTests( + "same value replacement - 1", + {x: {y: 3}}, + d => { + const a = d.x + d.x = a + }, + [] +) + +runPatchTests( + "same value replacement - 2", + {x: {y: 3}}, + d => { + const a = d.x + d.x = 4 + d.x = a + }, + [] +) + +runPatchTests( + "same value replacement - 3", + {x: 3}, + d => { + d.x = 3 + }, + [] +) + +runPatchTests( + "same value replacement - 4", + {x: 3}, + d => { + d.x = 4 + d.x = 3 + }, + [] +) + +runPatchTests( + "same value replacement - 5", + new Map([["x", 3]]), + d => { + d.set("x", 4) + d.set("x", 3) + }, + [], + [] +) + +runPatchTests( + "same value replacement - 6", + new Set(["x", 3]), + d => { + d.delete("x") + d.add("x") + }, + [], + [] +) + +runPatchTests( + "simple delete", + {x: 2}, + d => { + delete d.x + }, + [ + { + op: "remove", + path: ["x"] + } + ] +) -describe("simple delete", () => { - runPatchTest( - {x: 2}, - d => { - delete d.x - }, - [ - { - op: "remove", - path: ["x"] +describe("patch compressions yields correct results", () => { + let p1 = [ + { + op: "add", + path: ["x"], + value: { + test: true } - ] - ) -}) + } + ] + let p2 = [ + { + op: "remove", + path: ["x"] + } + ] -describe("patch compressions yields correct results", () => { - let p1, p2 - runPatchTest( + runPatchTests( + "add only", {}, d => { d.x = {test: true} }, - (p1 = [ - { - op: "add", - path: ["x"], - value: { - test: true - } - } - ]) + p1 ) - runPatchTest( + + runPatchTests( + "delete only", {x: {test: true}}, d => { delete d.x }, - (p2 = [ - { - op: "remove", - path: ["x"] - } - ]) + p2 ) - const res = runPatchTest( + const testData = runPatchTests( + "add and delete together cancel", {}, d => { applyPatches(d, [...p1, ...p2]) @@ -981,29 +1038,25 @@ describe("patch compressions yields correct results", () => { [] ) - expect(res).toEqual({}) + expect(testData.result).toEqual({}) }) -describe("change then delete property", () => { - const res = runPatchTest( +runPatchTests( + "change then delete property", + { + x: 1 + }, + d => { + d.x = 2 + delete d.x + }, + [ { - x: 1 - }, - d => { - d.x = 2 - delete d.x - }, - [ - { - op: "remove", - path: ["x"] - } - ] - ) - test("valid result", () => { - expect(res).toEqual({}) - }) -}) + op: "remove", + path: ["x"] + } + ] +) test("replaying patches with interweaved replacements should work correctly", () => { const patches = [] @@ -1147,7 +1200,8 @@ describe("#588", () => { let base = new Base() - runPatchTest( + runPatchTests( + "", base, vdraft => { reference.value = vdraft @@ -1409,29 +1463,27 @@ test("#888 patch to a primitive produces the primitive", () => { } }) -describe("#879 delete item from array", () => { - runPatchTest( - [1, 2, 3], - draft => { - delete draft[1] - }, - [{op: "replace", path: [1], value: undefined}], - [{op: "replace", path: [1], value: 2}], - [1, undefined, 3] - ) -}) - -describe("#879 delete item from array - 2", () => { - runPatchTest( - [1, 2, 3], - draft => { - delete draft[2] - }, - [{op: "replace", path: [2], value: undefined}], - [{op: "replace", path: [2], value: 3}], - [1, 2, undefined] - ) -}) +runPatchTests( + "#879 delete item from array", + [1, 2, 3], + draft => { + delete draft[1] + }, + [{op: "replace", path: [1], value: undefined}], + [{op: "replace", path: [1], value: 2}], + [1, undefined, 3] +) + +runPatchTests( + "#879 delete item from array - 2", + [1, 2, 3], + draft => { + delete draft[2] + }, + [{op: "replace", path: [2], value: undefined}], + [{op: "replace", path: [2], value: 3}], + [1, 2, undefined] +) test("#897 appendPatch", () => { const state0 = {a: []} From e877e9f83150384a10a79e5e068d40ef8dc1acb5 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sat, 6 Sep 2025 23:22:35 -0400 Subject: [PATCH 4/7] Update prod snapshots --- __tests__/__prod_snapshots__/base.js.snap | 178 +++++++++---------- __tests__/__prod_snapshots__/curry.js.snap | 10 +- __tests__/__prod_snapshots__/frozen.js.snap | 14 +- __tests__/__prod_snapshots__/manual.js.snap | 14 +- __tests__/__prod_snapshots__/patch.js.snap | 8 +- __tests__/__prod_snapshots__/plugins.js.snap | 10 +- __tests__/__prod_snapshots__/readme.js.snap | 4 +- 7 files changed, 119 insertions(+), 119 deletions(-) diff --git a/__tests__/__prod_snapshots__/base.js.snap b/__tests__/__prod_snapshots__/base.js.snap index 84c5e6b2..57234af2 100644 --- a/__tests__/__prod_snapshots__/base.js.snap +++ b/__tests__/__prod_snapshots__/base.js.snap @@ -1,150 +1,150 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false map drafts revokes map proxies 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > map drafts > revokes map proxies 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false map drafts revokes map proxies 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > map drafts > revokes map proxies 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false recipe functions cannot return a modified child draft 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false recipe functions cannot return an object that references itself 1`] = `"Maximum call stack size exceeded"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > recipe functions > cannot return an object that references itself 1`] = `[RangeError: Maximum call stack size exceeded]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false set drafts revokes sets 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > set drafts > revokes sets 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false set drafts revokes sets 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > set drafts > revokes sets 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false throws when the draft is modified and another object is returned 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=false > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true map drafts revokes map proxies 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > map drafts > revokes map proxies 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true map drafts revokes map proxies 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > map drafts > revokes map proxies 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true recipe functions cannot return a modified child draft 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true recipe functions cannot return an object that references itself 1`] = `"Maximum call stack size exceeded"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > recipe functions > cannot return an object that references itself 1`] = `[RangeError: Maximum call stack size exceeded]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true set drafts revokes sets 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > set drafts > revokes sets 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true set drafts revokes sets 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > set drafts > revokes sets 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true throws when the draft is modified and another object is returned 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=false:use-listener=true > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false map drafts revokes map proxies 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > map drafts > revokes map proxies 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false map drafts revokes map proxies 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > map drafts > revokes map proxies 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false recipe functions cannot return a modified child draft 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false recipe functions cannot return an object that references itself 1`] = `"Maximum call stack size exceeded"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > recipe functions > cannot return an object that references itself 1`] = `[RangeError: Maximum call stack size exceeded]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false set drafts revokes sets 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > set drafts > revokes sets 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false set drafts revokes sets 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > set drafts > revokes sets 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false throws when the draft is modified and another object is returned 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=false > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true map drafts revokes map proxies 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > map drafts > revokes map proxies 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true map drafts revokes map proxies 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > map drafts > revokes map proxies 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true recipe functions cannot return a modified child draft 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true recipe functions cannot return an object that references itself 1`] = `"Maximum call stack size exceeded"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > recipe functions > cannot return an object that references itself 1`] = `[RangeError: Maximum call stack size exceeded]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true set drafts revokes sets 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > set drafts > revokes sets 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true set drafts revokes sets 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > set drafts > revokes sets 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true throws when the draft is modified and another object is returned 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=false:shallow-copy=true:use-listener=true > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false map drafts revokes map proxies 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > map drafts > revokes map proxies 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false map drafts revokes map proxies 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > map drafts > revokes map proxies 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false recipe functions cannot return a modified child draft 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false recipe functions cannot return an object that references itself 1`] = `"Maximum call stack size exceeded"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > recipe functions > cannot return an object that references itself 1`] = `[RangeError: Maximum call stack size exceeded]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false set drafts revokes sets 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > set drafts > revokes sets 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false set drafts revokes sets 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > set drafts > revokes sets 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false throws when the draft is modified and another object is returned 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=false > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true map drafts revokes map proxies 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > map drafts > revokes map proxies 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true map drafts revokes map proxies 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > map drafts > revokes map proxies 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true recipe functions cannot return a modified child draft 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true recipe functions cannot return an object that references itself 1`] = `"Maximum call stack size exceeded"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > recipe functions > cannot return an object that references itself 1`] = `[RangeError: Maximum call stack size exceeded]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true set drafts revokes sets 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > set drafts > revokes sets 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true set drafts revokes sets 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > set drafts > revokes sets 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true throws when the draft is modified and another object is returned 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=false:use-listener=true > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false map drafts revokes map proxies 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > map drafts > revokes map proxies 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false map drafts revokes map proxies 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > map drafts > revokes map proxies 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false recipe functions cannot return a modified child draft 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false recipe functions cannot return an object that references itself 1`] = `"Maximum call stack size exceeded"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > recipe functions > cannot return an object that references itself 1`] = `[RangeError: Maximum call stack size exceeded]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false set drafts revokes sets 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > set drafts > revokes sets 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false set drafts revokes sets 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > set drafts > revokes sets 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false throws when the draft is modified and another object is returned 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=false > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true map drafts revokes map proxies 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > map drafts > revokes map proxies 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true map drafts revokes map proxies 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > map drafts > revokes map proxies 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true recipe functions cannot return a modified child draft 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > recipe functions > cannot return a modified child draft 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true recipe functions cannot return an object that references itself 1`] = `"Maximum call stack size exceeded"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > recipe functions > cannot return an object that references itself 1`] = `[RangeError: Maximum call stack size exceeded]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true set drafts revokes sets 1`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > set drafts > revokes sets 1`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true set drafts revokes sets 2`] = `"[Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > set drafts > revokes sets 2`] = `[Error: [Immer] minified error nr: 3. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true throws when Object.defineProperty() is used on drafts 1`] = `"[Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > throws when Object.defineProperty() is used on drafts 1`] = `[Error: [Immer] minified error nr: 11. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true throws when Object.setPrototypeOf() is used on a draft 1`] = `"[Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > throws when Object.setPrototypeOf() is used on a draft 1`] = `[Error: [Immer] minified error nr: 12. Full error at: https://bit.ly/3cXEKWf]`; -exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true throws when the draft is modified and another object is returned 1`] = `"[Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf"`; +exports[`base functionality - auto-freeze=true:shallow-copy=true:use-listener=true > throws when the draft is modified and another object is returned 1`] = `[Error: [Immer] minified error nr: 4. Full error at: https://bit.ly/3cXEKWf]`; -exports[`complex nesting map / set / object modify deep object 1`] = ` +exports[`complex nesting map / set / object > modify deep object 1`] = ` { "map": Map { "set1" => Set { @@ -164,7 +164,7 @@ exports[`complex nesting map / set / object modify deep object 1`] = ` } `; -exports[`complex nesting map / set / object modify deep object 2`] = ` +exports[`complex nesting map / set / object > modify deep object 2`] = ` [ { "op": "remove", @@ -191,7 +191,7 @@ exports[`complex nesting map / set / object modify deep object 2`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 3`] = ` +exports[`complex nesting map / set / object > modify deep object 3`] = ` { "map": Map { "set1" => Set { @@ -211,7 +211,7 @@ exports[`complex nesting map / set / object modify deep object 3`] = ` } `; -exports[`complex nesting map / set / object modify deep object 4`] = ` +exports[`complex nesting map / set / object > modify deep object 4`] = ` [ { "op": "remove", @@ -238,7 +238,7 @@ exports[`complex nesting map / set / object modify deep object 4`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 5`] = ` +exports[`complex nesting map / set / object > modify deep object 5`] = ` { "map": Map { "set1" => Set { @@ -258,7 +258,7 @@ exports[`complex nesting map / set / object modify deep object 5`] = ` } `; -exports[`complex nesting map / set / object modify deep object 6`] = ` +exports[`complex nesting map / set / object > modify deep object 6`] = ` [ { "op": "remove", @@ -285,7 +285,7 @@ exports[`complex nesting map / set / object modify deep object 6`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 7`] = ` +exports[`complex nesting map / set / object > modify deep object 7`] = ` { "map": Map { "set1" => Set { @@ -305,7 +305,7 @@ exports[`complex nesting map / set / object modify deep object 7`] = ` } `; -exports[`complex nesting map / set / object modify deep object 8`] = ` +exports[`complex nesting map / set / object > modify deep object 8`] = ` [ { "op": "remove", @@ -332,7 +332,7 @@ exports[`complex nesting map / set / object modify deep object 8`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 9`] = ` +exports[`complex nesting map / set / object > modify deep object 9`] = ` { "map": Map { "set1" => Set { @@ -352,7 +352,7 @@ exports[`complex nesting map / set / object modify deep object 9`] = ` } `; -exports[`complex nesting map / set / object modify deep object 10`] = ` +exports[`complex nesting map / set / object > modify deep object 10`] = ` [ { "op": "remove", @@ -379,7 +379,7 @@ exports[`complex nesting map / set / object modify deep object 10`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 11`] = ` +exports[`complex nesting map / set / object > modify deep object 11`] = ` { "map": Map { "set1" => Set { @@ -399,7 +399,7 @@ exports[`complex nesting map / set / object modify deep object 11`] = ` } `; -exports[`complex nesting map / set / object modify deep object 12`] = ` +exports[`complex nesting map / set / object > modify deep object 12`] = ` [ { "op": "remove", @@ -426,7 +426,7 @@ exports[`complex nesting map / set / object modify deep object 12`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 13`] = ` +exports[`complex nesting map / set / object > modify deep object 13`] = ` { "map": Map { "set1" => Set { @@ -446,7 +446,7 @@ exports[`complex nesting map / set / object modify deep object 13`] = ` } `; -exports[`complex nesting map / set / object modify deep object 14`] = ` +exports[`complex nesting map / set / object > modify deep object 14`] = ` [ { "op": "remove", @@ -473,7 +473,7 @@ exports[`complex nesting map / set / object modify deep object 14`] = ` ] `; -exports[`complex nesting map / set / object modify deep object 15`] = ` +exports[`complex nesting map / set / object > modify deep object 15`] = ` { "map": Map { "set1" => Set { @@ -493,7 +493,7 @@ exports[`complex nesting map / set / object modify deep object 15`] = ` } `; -exports[`complex nesting map / set / object modify deep object 16`] = ` +exports[`complex nesting map / set / object > modify deep object 16`] = ` [ { "op": "remove", diff --git a/__tests__/__prod_snapshots__/curry.js.snap b/__tests__/__prod_snapshots__/curry.js.snap index a57fe216..868c9d99 100644 --- a/__tests__/__prod_snapshots__/curry.js.snap +++ b/__tests__/__prod_snapshots__/curry.js.snap @@ -1,9 +1,9 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`curry - proxy should check arguments 1`] = `"[Immer] minified error nr: 6. Full error at: https://bit.ly/3cXEKWf"`; +exports[`curry - proxy > should check arguments 1`] = `[Error: [Immer] minified error nr: 6. Full error at: https://bit.ly/3cXEKWf]`; -exports[`curry - proxy should check arguments 2`] = `"[Immer] minified error nr: 6. Full error at: https://bit.ly/3cXEKWf"`; +exports[`curry - proxy > should check arguments 2`] = `[Error: [Immer] minified error nr: 6. Full error at: https://bit.ly/3cXEKWf]`; -exports[`curry - proxy should check arguments 3`] = `"[Immer] minified error nr: 6. Full error at: https://bit.ly/3cXEKWf"`; +exports[`curry - proxy > should check arguments 3`] = `[Error: [Immer] minified error nr: 6. Full error at: https://bit.ly/3cXEKWf]`; -exports[`curry - proxy should check arguments 4`] = `"[Immer] minified error nr: 7. Full error at: https://bit.ly/3cXEKWf"`; +exports[`curry - proxy > should check arguments 4`] = `[Error: [Immer] minified error nr: 7. Full error at: https://bit.ly/3cXEKWf]`; diff --git a/__tests__/__prod_snapshots__/frozen.js.snap b/__tests__/__prod_snapshots__/frozen.js.snap index 4afa17a2..e5b57f25 100644 --- a/__tests__/__prod_snapshots__/frozen.js.snap +++ b/__tests__/__prod_snapshots__/frozen.js.snap @@ -1,13 +1,13 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`auto freeze - proxy will freeze maps 1`] = `"[Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf"`; +exports[`auto freeze - proxy > will freeze maps 1`] = `[Error: [Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf]`; -exports[`auto freeze - proxy will freeze maps 2`] = `"[Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf"`; +exports[`auto freeze - proxy > will freeze maps 2`] = `[Error: [Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf]`; -exports[`auto freeze - proxy will freeze maps 3`] = `"[Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf"`; +exports[`auto freeze - proxy > will freeze maps 3`] = `[Error: [Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf]`; -exports[`auto freeze - proxy will freeze sets 1`] = `"[Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf"`; +exports[`auto freeze - proxy > will freeze sets 1`] = `[Error: [Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf]`; -exports[`auto freeze - proxy will freeze sets 2`] = `"[Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf"`; +exports[`auto freeze - proxy > will freeze sets 2`] = `[Error: [Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf]`; -exports[`auto freeze - proxy will freeze sets 3`] = `"[Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf"`; +exports[`auto freeze - proxy > will freeze sets 3`] = `[Error: [Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf]`; diff --git a/__tests__/__prod_snapshots__/manual.js.snap b/__tests__/__prod_snapshots__/manual.js.snap index 40315388..39663318 100644 --- a/__tests__/__prod_snapshots__/manual.js.snap +++ b/__tests__/__prod_snapshots__/manual.js.snap @@ -1,16 +1,16 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`manual - proxy cannot finishDraft twice 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`manual - proxy > cannot finishDraft twice 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`manual - proxy should check arguments 1`] = `"[Immer] minified error nr: 8. Full error at: https://bit.ly/3cXEKWf"`; +exports[`manual - proxy > should check arguments 1`] = `[Error: [Immer] minified error nr: 8. Full error at: https://bit.ly/3cXEKWf]`; -exports[`manual - proxy should check arguments 2`] = `"[Immer] minified error nr: 8. Full error at: https://bit.ly/3cXEKWf"`; +exports[`manual - proxy > should check arguments 2`] = `[Error: [Immer] minified error nr: 8. Full error at: https://bit.ly/3cXEKWf]`; -exports[`manual - proxy should check arguments 3`] = `"[Immer] minified error nr: 9. Full error at: https://bit.ly/3cXEKWf"`; +exports[`manual - proxy > should check arguments 3`] = `[Error: [Immer] minified error nr: 9. Full error at: https://bit.ly/3cXEKWf]`; -exports[`manual - proxy should not finish twice 1`] = `"Cannot perform 'get' on a proxy that has been revoked"`; +exports[`manual - proxy > should not finish twice 1`] = `[TypeError: Cannot perform 'get' on a proxy that has been revoked]`; -exports[`manual - proxy should support patches drafts 1`] = ` +exports[`manual - proxy > should support patches drafts 1`] = ` [ [ [ diff --git a/__tests__/__prod_snapshots__/patch.js.snap b/__tests__/__prod_snapshots__/patch.js.snap index 960d9a7c..4472b7b0 100644 --- a/__tests__/__prod_snapshots__/patch.js.snap +++ b/__tests__/__prod_snapshots__/patch.js.snap @@ -1,7 +1,7 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`applyPatches throws when \`op\` is not "add", "replace", nor "remove" 1`] = `"[Immer] minified error nr: 17. Full error at: https://bit.ly/3cXEKWf"`; +exports[`applyPatches > throws when \`op\` is not "add", "replace", nor "remove" 1`] = `[Error: [Immer] minified error nr: 17. Full error at: https://bit.ly/3cXEKWf]`; -exports[`applyPatches throws when \`path\` cannot be resolved 1`] = `"[Immer] minified error nr: 18. Full error at: https://bit.ly/3cXEKWf"`; +exports[`applyPatches > throws when \`path\` cannot be resolved 1`] = `[Error: [Immer] minified error nr: 18. Full error at: https://bit.ly/3cXEKWf]`; -exports[`applyPatches throws when \`path\` cannot be resolved 2`] = `"[Immer] minified error nr: 18. Full error at: https://bit.ly/3cXEKWf"`; +exports[`applyPatches > throws when \`path\` cannot be resolved 2`] = `[Error: [Immer] minified error nr: 18. Full error at: https://bit.ly/3cXEKWf]`; diff --git a/__tests__/__prod_snapshots__/plugins.js.snap b/__tests__/__prod_snapshots__/plugins.js.snap index bb668ed2..ecac10d6 100644 --- a/__tests__/__prod_snapshots__/plugins.js.snap +++ b/__tests__/__prod_snapshots__/plugins.js.snap @@ -1,9 +1,9 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`error when using Maps 1`] = `"[Immer] minified error nr: 0. Full error at: https://bit.ly/3cXEKWf"`; +exports[`error when using Maps 1`] = `[Error: [Immer] minified error nr: 0. Full error at: https://bit.ly/3cXEKWf]`; -exports[`error when using patches - 1 1`] = `"[Immer] minified error nr: 0. Full error at: https://bit.ly/3cXEKWf"`; +exports[`error when using patches - 1 1`] = `[Error: [Immer] minified error nr: 0. Full error at: https://bit.ly/3cXEKWf]`; -exports[`error when using patches - 2 1`] = `"[Immer] minified error nr: 0. Full error at: https://bit.ly/3cXEKWf"`; +exports[`error when using patches - 2 1`] = `[Error: [Immer] minified error nr: 0. Full error at: https://bit.ly/3cXEKWf]`; -exports[`error when using patches - 3 1`] = `"[Immer] minified error nr: 0. Full error at: https://bit.ly/3cXEKWf"`; +exports[`error when using patches - 3 1`] = `[Error: [Immer] minified error nr: 0. Full error at: https://bit.ly/3cXEKWf]`; diff --git a/__tests__/__prod_snapshots__/readme.js.snap b/__tests__/__prod_snapshots__/readme.js.snap index 4b1e71ae..81703d47 100644 --- a/__tests__/__prod_snapshots__/readme.js.snap +++ b/__tests__/__prod_snapshots__/readme.js.snap @@ -1,3 +1,3 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Producers can update Maps 4`] = `"[Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf"`; +exports[`Producers can update Maps 4`] = `[Error: [Immer] minified error nr: 2. Full error at: https://bit.ly/3cXEKWf]`; From 78332e7586336afbce8b6240768161077eaec02d Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sat, 6 Sep 2025 23:23:05 -0400 Subject: [PATCH 5/7] Remove Jest config files --- ignoreObseleteSnapshots.js | 6 ------ jest.config.build.js | 16 ---------------- jest.config.build.snapshots.js | 15 --------------- jest.config.js | 8 -------- 4 files changed, 45 deletions(-) delete mode 100644 ignoreObseleteSnapshots.js delete mode 100644 jest.config.build.js delete mode 100644 jest.config.build.snapshots.js delete mode 100644 jest.config.js diff --git a/ignoreObseleteSnapshots.js b/ignoreObseleteSnapshots.js deleted file mode 100644 index 235de126..00000000 --- a/ignoreObseleteSnapshots.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = function(results) { - // don't count obselete snapshot as a failure, but just check if there are no failing tests - // console.dir(results) - results.success = results.testResults.every(r => r.numFailingTests === 0) - return results -} diff --git a/jest.config.build.js b/jest.config.build.js deleted file mode 100644 index 12896786..00000000 --- a/jest.config.build.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - moduleNameMapper: { - "src/.*": "/dist/cjs/immer.cjs.production.js" - }, - testEnvironmentOptions: { - url: "http://localhost" - }, - globals: { - USES_BUILD: true - }, - preset: "ts-jest/presets/js-with-ts", - testEnvironment: "node", - testMatch: ["**/__tests__/**/*.[jt]s?(x)"], - snapshotResolver: "/jest.config.build.snapshots.js", - testResultsProcessor: "/ignoreObseleteSnapshots.js" -} diff --git a/jest.config.build.snapshots.js b/jest.config.build.snapshots.js deleted file mode 100644 index eaf102dc..00000000 --- a/jest.config.build.snapshots.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - // resolves from test to snapshot path - resolveSnapshotPath: (testPath, snapshotExtension) => - testPath.replace("__tests__", "__tests__/__prod_snapshots__") + - snapshotExtension, - - // resolves from snapshot to test path - resolveTestPath: (snapshotFilePath, snapshotExtension) => - snapshotFilePath - .replace("__tests__/__prod_snapshots__", "__tests__") - .slice(0, -snapshotExtension.length), - - // Example test path, used for preflight consistency check of the implementation above - testPathForConsistencyCheck: "some/__tests__/example.test.js" -} diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index b94c55e5..00000000 --- a/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - testEnvironmentOptions: { - url: "http://localhost" - }, - preset: "ts-jest/presets/js-with-ts", - testEnvironment: "node", - testMatch: ["**/__tests__/**/*.[jt]s?(x)"] -} From 0c29676f9e0bd6b78af628773ca799dd58d6c3ca Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sat, 6 Sep 2025 23:24:04 -0400 Subject: [PATCH 6/7] Add prod test config --- vitest-custom-reporter.ts | 18 ++++++++++++++++++ vitest.config.build.ts | 23 +++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 vitest-custom-reporter.ts create mode 100644 vitest.config.build.ts diff --git a/vitest-custom-reporter.ts b/vitest-custom-reporter.ts new file mode 100644 index 00000000..5b233385 --- /dev/null +++ b/vitest-custom-reporter.ts @@ -0,0 +1,18 @@ +import {Reporter} from "vitest" + +export default class CustomReporter implements Reporter { + onFinished(files: any[], errors: unknown[]) { + // Replicate the logic from ignoreObseleteSnapshots.js + // Don't count obsolete snapshots as failures, just check if there are no failing tests + const hasFailingTests = files.some( + (file: any) => + file.result?.state === "fail" && + file.tasks?.some((task: any) => task.result?.state === "fail") + ) + + if (!hasFailingTests && errors.length === 0) { + // Override success status similar to the original Jest processor + process.exitCode = 0 + } + } +} diff --git a/vitest.config.build.ts b/vitest.config.build.ts new file mode 100644 index 00000000..ecbbe880 --- /dev/null +++ b/vitest.config.build.ts @@ -0,0 +1,23 @@ +import {defineConfig} from "vitest/config" +import path from "path" + +export default defineConfig({ + resolve: { + alias: { + "^src/(.*)": path.resolve(__dirname, "dist/cjs/immer.cjs.production.js") + } + }, + define: { + "global.USES_BUILD": true, + "process.env.NODE_ENV": '"production"' + }, + test: { + environment: "node", + include: ["**/__tests__/**/*.[jt]s?(x)"], + globals: true, + resolveSnapshotPath: (testPath: string, snapExtension: string) => + testPath.replace("__tests__", "__tests__/__prod_snapshots__") + + snapExtension, + reporters: ["default", "./vitest-custom-reporter.ts"] + } +}) From a68eb42a9b51f84744005e5a7e0e5d7f705148e2 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sat, 6 Sep 2025 23:24:26 -0400 Subject: [PATCH 7/7] Update test commands --- package.json | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 4abc6ea9..ee68f2bf 100644 --- a/package.json +++ b/package.json @@ -27,13 +27,14 @@ "sideEffects": false, "scripts": { "pretest": "yarn build", - "test": "jest && yarn test:build && yarn test:flow", + "test": "vitest run && yarn test:build && yarn test:flow", "test:perf": "cd __performance_tests__ && node add-data.mjs && node todo.mjs && node incremental.mjs && node large-obj.mjs", "test:flow": "yarn flow check __tests__/flow", - "test:build": "NODE_ENV='production' yarn jest --config jest.config.build.js", - "watch": "jest --watch", - "coverage": "jest --coverage", - "coveralls": "jest --coverage && cat ./coverage/lcov.info | ./node_modules/.bin/coveralls && rm -rf ./coverage", + "test:build": "vitest run --config vitest.config.build.ts", + "test:src": "vitest run", + "watch": "vitest", + "coverage": "vitest run --coverage", + "coveralls": "vitest run --coverage && cat ./coverage/lcov.info | ./node_modules/.bin/coveralls && rm -rf ./coverage", "build": "tsup", "publish-docs": "cd website && GIT_USER=mweststrate USE_SSH=true yarn docusaurus deploy", "start": "cd website && yarn start", @@ -71,7 +72,6 @@ ], "devDependencies": { "@babel/core": "^7.21.3", - "@types/jest": "^25.1.2", "coveralls": "^3.0.0", "cpx2": "^3.0.0", "deep-freeze": "^0.0.1", @@ -79,7 +79,6 @@ "husky": "^1.2.0", "immutable": "^3.8.2", "import-size": "^1.0.2", - "jest": "^29.5.0", "lodash": "^4.17.4", "lodash.clonedeep": "^4.5.0", "prettier": "1.19.1", @@ -88,7 +87,6 @@ "rimraf": "^2.6.2", "seamless-immutable": "^7.1.3", "semantic-release": "^17.0.2", - "ts-jest": "^29.0.0", "tsup": "^6.7.0", "typescript": "^5.0.2", "vitest": "^3.2.4"