From fb731056f4783f8be73b0426f8bc32666c836a2d Mon Sep 17 00:00:00 2001 From: nthouliss Date: Tue, 22 Feb 2022 15:09:44 +1100 Subject: [PATCH 01/37] Update packages to latest minor versions --- package.json | 12 ++++----- yarn.lock | 69 +++++++++++++++++++++++++++++----------------------- 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 97f02d1..007433b 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "fuse.js": "^6.4.6", "image-outline": "^0.1.0", "intersection-observer": "^0.12.0", - "konva": "^8.3.1", + "konva": "^8.3.2", "lodash.chunk": "^4.2.0", "lodash.clonedeep": "^4.5.0", "lodash.get": "^4.4.2", @@ -49,7 +49,7 @@ "react-konva-utils": "^0.1.7", "react-markdown": "4", "react-media": "^2.0.0-rc.1", - "react-modal": "^3.14.3", + "react-modal": "^3.14.4", "react-resize-detector": "^6.7.4", "react-router-dom": "^5.1.2", "react-router-hash-link": "^2.4.3", @@ -60,8 +60,8 @@ "react-toast-notifications": "^2.5.1", "react-use-gesture": "^9.1.3", "shortid": "^2.2.15", - "simple-peer": "^9.11.0", - "simplebar-react": "^2.3.5", + "simple-peer": "^9.11.1", + "simplebar-react": "^2.3.6", "simplify-js": "^1.2.4", "socket.io-client": "^4.1.3", "socket.io-msgpack-parser": "^3.0.1", @@ -70,7 +70,7 @@ "tiny-typed-emitter": "^2.1.0", "use-image": "^1.0.8", "uuid": "^8.3.2", - "webrtc-adapter": "^8.1.0" + "webrtc-adapter": "^8.1.1" }, "resolutions": { "simple-peer/get-browser-rtc": "substack/get-browser-rtc#4/head" @@ -114,7 +114,7 @@ "@types/react-router-dom": "^5.1.7", "@types/react-select": "^4.0.17", "@types/shortid": "^0.0.29", - "@types/simple-peer": "^9.11.1", + "@types/simple-peer": "^9.11.4", "@types/uuid": "^8.3.1", "typescript": "^4.2.4", "worker-loader": "^3.0.8" diff --git a/yarn.lock b/yarn.lock index dbf7a90..d8e649a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3273,10 +3273,10 @@ resolved "https://registry.yarnpkg.com/@types/shortid/-/shortid-0.0.29.tgz#8093ee0416a6e2bf2aa6338109114b3fbffa0e9b" integrity sha1-gJPuBBam4r8qpjOBCRFLP7/6Dps= -"@types/simple-peer@^9.11.1": - version "9.11.1" - resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-9.11.1.tgz#bef6ff1e75178d83438e33aa6a4df2fd98fded1d" - integrity sha512-Pzqbau/WlivSXdRC0He2Wz/ANj2wbi4gzJrtysZz93jvOyI2jo/ibMjUe6AvPllFl/UO6QXT/A0Rcp44bDQB5A== +"@types/simple-peer@^9.11.4": + version "9.11.4" + resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-9.11.4.tgz#1c358fcd9cb58318e27928ee90289fb0e3f50070" + integrity sha512-Elje14YvM47k+XEaoyRAeUSvZN7TOLWYL233QCckUaXjT4lRESHnYs0iOK2JoosO5DnCvWu/0Vpl9qnw4KCLWw== dependencies: "@types/node" "*" @@ -5602,7 +5602,14 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" -debug@^4.3.1, debug@~4.3.1: +debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +debug@~4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -8836,10 +8843,10 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -konva@^8.3.1: - version "8.3.1" - resolved "https://registry.yarnpkg.com/konva/-/konva-8.3.1.tgz#9243cbfada641fdda166446c61cbfc1b6bf00217" - integrity sha512-9YVM/nKWKTdGppPkhVY+E1FI+brrSmPygPO1qUSH2Dd7q0bgCX8V9DLqOp15myY7Wxmy5JDx9dWdd0fQZpikZw== +konva@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/konva/-/konva-8.3.2.tgz#3823a6ea0eb3605142c637f327c4cc29fd188c02" + integrity sha512-vWi51qFTFkEIp+HxMek1eH1fA1zFo0DPD3uqUez+v2gy/IfZF2eLu9DcEj7Exk532hxfHJi/2oZ0GQYHlhg/dQ== language-subtag-registry@~0.3.2: version "0.3.21" @@ -11360,10 +11367,10 @@ react-media@^2.0.0-rc.1: json2mq "^0.2.0" prop-types "^15.5.10" -react-modal@^3.14.3: - version "3.14.3" - resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.14.3.tgz#7eb7c5ec85523e5843e2d4737cc17fc3f6aeb1c0" - integrity sha512-+C2KODVKyu20zHXPJxfOOcf571L1u/EpFlH+oS/3YDn8rgVE51QZuxuuIwabJ8ZFnOEHaD+r6XNjqwtxZnXO0g== +react-modal@^3.14.4: + version "3.14.4" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.14.4.tgz#2ca7e8e9a180955e5c9508c228b73167c1e6f6a3" + integrity sha512-8surmulejafYCH9wfUmFyj4UfbSJwjcgbS9gf3oOItu4Hwd6ivJyVBETI0yHRhpJKCLZMUtnhzk76wXTsNL6Qg== dependencies: exenv "^1.2.0" prop-types "^15.7.2" @@ -12364,13 +12371,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -simple-peer@^9.11.0: - version "9.11.0" - resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.11.0.tgz#e8d27609c7a610c3ddd75767da868e8daab67571" - integrity sha512-qvdNu/dGMHBm2uQ7oLhQBMhYlrOZC1ywXNCH/i8I4etxR1vrjCnU6ZSQBptndB1gcakjo2+w4OHo7Sjza1SHxg== +simple-peer@^9.11.1: + version "9.11.1" + resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.11.1.tgz#9814d5723f821b778b7fb011bdefcbd1e788e6cc" + integrity sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw== dependencies: buffer "^6.0.3" - debug "^4.3.1" + debug "^4.3.2" err-code "^3.0.1" get-browser-rtc "^1.1.0" queue-microtask "^1.2.3" @@ -12384,18 +12391,18 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -simplebar-react@^2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/simplebar-react/-/simplebar-react-2.3.5.tgz#9d85803d01585f8a4899d45e7e681aef744568c6" - integrity sha512-tzlU4C96awc6yRtxRF3hm91daQyEOHVpVpAaaGaWL6jL0uSqqTrXyYdTerjUqYxf6X4ev9tPKXecEBOaFWSC4Q== +simplebar-react@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/simplebar-react/-/simplebar-react-2.3.6.tgz#27945a80b221caae8f241155cdba1bb6c201ebff" + integrity sha512-Igm/MRdt+LQ8edTTzjRoaATfXPPMByuUsVvHQHrkX7SH4jmvL85VshtOVcXFrOBspv9vqQtnIrOq/j9VmRSNDQ== dependencies: prop-types "^15.6.1" - simplebar "^5.3.5" + simplebar "^5.3.6" -simplebar@^5.3.5: - version "5.3.5" - resolved "https://registry.yarnpkg.com/simplebar/-/simplebar-5.3.5.tgz#799d14cdc8bb8ed245789745b9f3741d05403944" - integrity sha512-mcTlXEiva8pSMdNEzeV3C1KyBHk7Sn2Pe46U1Uwo53dCuQqdJIK0bEJrIPs8W4/RqJquKIsC8Y1h7+aqOl8ccA== +simplebar@^5.3.6: + version "5.3.6" + resolved "https://registry.yarnpkg.com/simplebar/-/simplebar-5.3.6.tgz#d9383576a09a6fd09e19543f8e9906a3e87c3896" + integrity sha512-FJUMbV+hNDd/m+1/fvD41TXKd5mSdlI5zgBygkaQIV3SffNbcLhSbJT6ufTs8ZNRLJ6i+qc/KCFMqWmvlGWMhA== dependencies: "@juggle/resize-observer" "^3.3.1" can-use-dom "^0.1.0" @@ -13986,10 +13993,10 @@ webpack@4.44.2: watchpack "^1.7.4" webpack-sources "^1.4.1" -webrtc-adapter@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/webrtc-adapter/-/webrtc-adapter-8.1.0.tgz#89429d837eb43c7a2885a0eb66390af6c552bba6" - integrity sha512-I+y/LWBiGYPVhIb8Ww7nyoNWhrCYENeGoRvZuyytLn/h+ahDBgItvuIfMdzT+xhOnjLIMVkOykttGJPv1dr6kA== +webrtc-adapter@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/webrtc-adapter/-/webrtc-adapter-8.1.1.tgz#e4a4dfd1b5085d119da40c4efc0147f7d0961cba" + integrity sha512-1yXevP7TeZGmklEXkvQVrZp3fOSJlLeXNGCA7NovQokxgP3/e2T3EVGL0eKU87S9vKppWjvRWqnJeSANEspOBg== dependencies: sdp "^3.0.2" From 48c7b49bab589fd30f016e9a0ab3647eb2fc5104 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Tue, 22 Feb 2022 15:10:18 +1100 Subject: [PATCH 02/37] Update latest browser versions --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d8e649a..348b3c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4691,9 +4691,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001181: - version "1.0.30001237" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz" - integrity sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw== + version "1.0.30001312" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz" + integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== capture-exit@^2.0.0: version "2.0.0" From 51a9caa2d79991d548538fb72625478185c99569 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Tue, 22 Feb 2022 15:21:48 +1100 Subject: [PATCH 03/37] Update dexie.js --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 007433b..611142d 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "color": "^3.2.1", "comlink": "^4.3.1", "deep-diff": "^1.0.2", - "dexie": "^3.2.0-beta.3", + "dexie": "^3.2.1", "dexie-react-hooks": "^1.0.7", "err-code": "^3.0.1", "fake-indexeddb": "^3.1.3", diff --git a/yarn.lock b/yarn.lock index 348b3c6..c795d48 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5764,10 +5764,10 @@ dexie-react-hooks@^1.0.7: resolved "https://registry.yarnpkg.com/dexie/-/dexie-3.0.3.tgz#ede63849dfe5f07e13e99bb72a040e8ac1d29dab" integrity sha512-BSFhGpngnCl1DOr+8YNwBDobRMH0ziJs2vts69VilwetHYOtEDcLqo7d/XiIphM0tJZ2rPPyAGd31lgH2Ln3nw== -dexie@^3.2.0-beta.3: - version "3.2.0-beta.3" - resolved "https://registry.yarnpkg.com/dexie/-/dexie-3.2.0-beta.3.tgz#6e14328b2257929d93f7d597307186cb982691f7" - integrity sha512-gfnFMoUIxXxoY8rtMaiW1ryAOJL663irbXLutPB2bFjbegIvsHGUbJf4a20eqcF0RYbBZUg6otML0pRTWAppig== +dexie@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/dexie/-/dexie-3.2.1.tgz#ef21456d725e700c1ab7ac4307896e4fdabaf753" + integrity sha512-Y8oz3t2XC9hvjkP35B5I8rUkKKwM36GGRjWQCMjzIYScg7W+GHKDXobSYswkisW7CxL1/tKQtggMDsiWqDUc1g== diff-sequences@^26.6.2: version "26.6.2" From f6c61a859f9bd3284db9ef4d32412c2be5306dac Mon Sep 17 00:00:00 2001 From: nthouliss Date: Tue, 22 Feb 2022 15:25:13 +1100 Subject: [PATCH 04/37] Update fake-indexeddb --- package.json | 2 +- yarn.lock | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 611142d..1b72a07 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dexie": "^3.2.1", "dexie-react-hooks": "^1.0.7", "err-code": "^3.0.1", - "fake-indexeddb": "^3.1.3", + "fake-indexeddb": "^3.1.7", "file-saver": "^2.0.5", "fuse.js": "^6.4.6", "image-outline": "^0.1.0", diff --git a/yarn.lock b/yarn.lock index c795d48..a2289a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6681,13 +6681,12 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fake-indexeddb@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fake-indexeddb/-/fake-indexeddb-3.1.3.tgz#76d59146a6b994b9bb50ac9949cbd96ad6cca760" - integrity sha512-kpWYPIUGmxW8Q7xG7ampGL63fU/kYNukrIyy9KFj3+KVlFbE/SmvWebzWXBiCMeR0cPK6ufDoGC7MFkPhPLH9w== +fake-indexeddb@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/fake-indexeddb/-/fake-indexeddb-3.1.7.tgz#d9efbeade113c15efbe862e4598a4b0a1797ed9f" + integrity sha512-CUGeCzCOVjmeKi2C0pcvSh6NDU6uQIaS+7YyR++tO/atJJujkBYVhDvfePdz/U8bD33BMVWirsr1MKczfAqbjA== dependencies: realistic-structured-clone "^2.0.1" - setimmediate "^1.0.5" fast-deep-equal@^3.1.1: version "3.1.3" @@ -12294,7 +12293,7 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4, setimmediate@^1.0.5: +setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= From 17793d655ab9399d96b1affcd16a327592f23d4d Mon Sep 17 00:00:00 2001 From: nthouliss Date: Tue, 22 Feb 2022 15:53:25 +1100 Subject: [PATCH 05/37] Update packages - react-intersection-observer - react-spring - react-spring/konva --- package.json | 6 +- yarn.lock | 162 +++++++++++++++++++++++++-------------------------- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/package.json b/package.json index 1b72a07..01a7383 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "@dnd-kit/sortable": "^4.0.0", "@mitchemmc/dexie-export-import": "^1.0.1", "@msgpack/msgpack": "^2.7.0", - "@react-spring/konva": "^9.2.4", + "@react-spring/konva": "9.2.6", "@sentry/integrations": "^6.11.0", "@sentry/react": "^6.11.0", "@stripe/stripe-js": "^1.16.0", @@ -44,7 +44,7 @@ "raw.macro": "^0.4.2", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-intersection-observer": "^8.32.0", + "react-intersection-observer": "8.32.5", "react-konva": "^17.0.2-5", "react-konva-utils": "^0.1.7", "react-markdown": "4", @@ -55,7 +55,7 @@ "react-router-hash-link": "^2.4.3", "react-scripts": "^4.0.3", "react-select": "^4.3.1", - "react-spring": "^9.2.4", + "react-spring": "9.2.6", "react-textarea-autosize": "^8.3.3", "react-toast-notifications": "^2.5.1", "react-use-gesture": "^9.1.3", diff --git a/yarn.lock b/yarn.lock index a2289a8..1ee02c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2329,90 +2329,90 @@ schema-utils "^2.6.5" source-map "^0.7.3" -"@react-spring/animated@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.2.4.tgz#062ecc0fdfef89f2541a42d8500428b70035f879" - integrity sha512-AfV6ZM8pCCAT29GY5C8/1bOPjZrv/7kD0vedjiE/tEYvNDwg9GlscrvsTViWR2XykJoYrDfdkYArrldWpsCJ5g== +"@react-spring/animated@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.2.6.tgz#58f30fb75d8bfb7ccbc156cfd6b974a8f3dfd54e" + integrity sha512-xjL6nmixYNDvnpTs1FFMsMfSC0tURwPCU3b2jWNriYGLfwZ7c/TcyaEZA7yiNnmdFnuR3f3Z27AqIgaFC083Cw== dependencies: - "@react-spring/shared" "~9.2.0" - "@react-spring/types" "~9.2.0" + "@react-spring/shared" "~9.2.6-beta.0" + "@react-spring/types" "~9.2.6-beta.0" -"@react-spring/core@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.2.4.tgz#275a4a065e3a315a4f5fb28c9a6f62ce718c25d6" - integrity sha512-R+PwyfsjiuYCWqaTTfCpYpRmsP0h87RNm7uxC1Uxy7QAHUfHEm2sAHn+AdHPwq/MbVwDssVT8C5yf2WGcqiXGg== +"@react-spring/core@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.2.6.tgz#ae22338fe55d070caf03abb4293b5519ba620d93" + integrity sha512-uPHUxmu+w6mHJrfQTMtmGJ8iZEwiVxz9kH7dRyk69bkZJt9z+w0Oj3UF4J3VcECZsbm3HRhN2ogXSAaqGjwhQw== dependencies: - "@react-spring/animated" "~9.2.0" - "@react-spring/shared" "~9.2.0" - "@react-spring/types" "~9.2.0" + "@react-spring/animated" "~9.2.6-beta.0" + "@react-spring/shared" "~9.2.6-beta.0" + "@react-spring/types" "~9.2.6-beta.0" -"@react-spring/konva@^9.2.4", "@react-spring/konva@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.2.4.tgz#e467b24b3b110ba496526c9001439ce561641e0d" - integrity sha512-19anDOIkfjcydDTfGgVIuZ3lruZxKubYGs9oHCswaP8SRLj7c1kkopJHUr/S4LXGxiIdqdF0XucWm0iTEPEq4w== +"@react-spring/konva@9.2.6", "@react-spring/konva@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.2.6.tgz#b64f1bb1ae26df145213fd2138b59ad9302b134a" + integrity sha512-O1A9sKfNM+Srl1Gs3MtXNMUcGr6lJdtwlsSRQQsWLxJS/wD1DHWGHOXcVitk5da2GCqOdFs+pQPajkwdMHIYag== dependencies: - "@react-spring/animated" "~9.2.0" - "@react-spring/core" "~9.2.0" - "@react-spring/shared" "~9.2.0" - "@react-spring/types" "~9.2.0" + "@react-spring/animated" "~9.2.6-beta.0" + "@react-spring/core" "~9.2.6-beta.0" + "@react-spring/shared" "~9.2.6-beta.0" + "@react-spring/types" "~9.2.6-beta.0" -"@react-spring/native@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.2.4.tgz#0fd335a44c05023f5428df444d8f1aa3da7abfc9" - integrity sha512-xKJWKh5qOhSclpL3iuGwJRLoZzTNvlBEnIrMs8yh8xvX6z9Lmnu4uGu5DpfrnM1GzBvRoktoCoLEx/VcEYFSng== +"@react-spring/native@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.2.6.tgz#725cde3f60cb4086c75b4cf4c3d843828ac143f1" + integrity sha512-xOt03jK2eLo0lDfAyuMD+G1uCoKL5dsmX/wSJNuWTEWhDuJQFcSgZFHqmVn3bu/Fmd02iVe5/pAOWll5e90N1Q== dependencies: - "@react-spring/animated" "~9.2.0" - "@react-spring/core" "~9.2.0" - "@react-spring/shared" "~9.2.0" - "@react-spring/types" "~9.2.0" + "@react-spring/animated" "~9.2.6-beta.0" + "@react-spring/core" "~9.2.6-beta.0" + "@react-spring/shared" "~9.2.6-beta.0" + "@react-spring/types" "~9.2.6-beta.0" -"@react-spring/rafz@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.2.4.tgz#44793e9adc14dd0dcd1573d094368af11a89d73a" - integrity sha512-SOKf9eue+vAX+DGo7kWYNl9i9J3gPUlQjifIcV9Bzw9h3i30wPOOP0TjS7iMG/kLp2cdHQYDNFte6nt23VAZkQ== +"@react-spring/rafz@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.2.6.tgz#d97484003875bf5fb5e6ec22dee97cc208363e48" + integrity sha512-62SivLKEpo7EfHPkxO5J3g9Cr9LF6+1A1RVOMJhkcpEYtbdbmma/d63Xp8qpMPEpk7uuWxaTb6jjyxW33pW3sg== -"@react-spring/shared@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.2.4.tgz#f9cc66ac5308a77293330a18518e34121f4008c1" - integrity sha512-ZEr4l2BxmyFRUvRA2VCkPfCJii4E7cGkwbjmTBx1EmcGrOnde/V2eF5dxqCTY3k35QuCegkrWe0coRJVkh8q2Q== +"@react-spring/shared@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.2.6.tgz#2c84e62cc0cfbbbbeb5546acd46c1f4b248bc562" + integrity sha512-Qrm9fopKG/RxZ3Rw+4euhrpnB3uXSyiON9skHbcBfmkkzagpkUR66MX1YLrhHw0UchcZuSDnXs0Lonzt1rpWag== dependencies: - "@react-spring/rafz" "~9.2.0" - "@react-spring/types" "~9.2.0" + "@react-spring/rafz" "~9.2.6-beta.0" + "@react-spring/types" "~9.2.6-beta.0" -"@react-spring/three@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.2.4.tgz#849c97658a6e1410b6f823ad21e2ee33feada820" - integrity sha512-ljFig7XW099VWwRPKPUf+4yYLivp/sSWXN3oO5SJOF/9BSoV1quS/9chZ5Myl5J14od3CsHf89Tv4FdlX5kHlA== +"@react-spring/three@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.2.6.tgz#07b6d6cf6c50103298aee1b780a6e457b1ab8ecc" + integrity sha512-sV80HWT5wjKgl6i51UALlMVhsad93pijEgkXh6mAefKmuDo9DDe6UufAOn1uCTVxPZKO7w9O7xgvlPm9nkBXag== dependencies: - "@react-spring/animated" "~9.2.0" - "@react-spring/core" "~9.2.0" - "@react-spring/shared" "~9.2.0" - "@react-spring/types" "~9.2.0" + "@react-spring/animated" "~9.2.6-beta.0" + "@react-spring/core" "~9.2.6-beta.0" + "@react-spring/shared" "~9.2.6-beta.0" + "@react-spring/types" "~9.2.6-beta.0" -"@react-spring/types@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.2.4.tgz#2365ce9d761f548a9adcb2cd68714bf26765a5de" - integrity sha512-zHUXrWO8nweUN/ISjrjqU7GgXXvoEbFca1CgiE0TY0H/dqJb3l+Rhx8ecPVNYimzFg3ZZ1/T0egpLop8SOv4aA== +"@react-spring/types@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.2.6.tgz#f60722fcf9f8492ae16d0bdc47f0ea3c2a16d2cf" + integrity sha512-l7mCw182DtDMnCI8CB9orgTAEoFZRtdQ6aS6YeEAqYcy3nQZPmPggIHH9DxyLw7n7vBPRSzu9gCvUMgXKpTflg== -"@react-spring/web@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.2.4.tgz#c6d5464a954bfd0d7bc90117050f796a95ebfa08" - integrity sha512-vtPvOalLFvuju/MDBtoSnCyt0xXSL6Amyv82fljOuWPl1yGd4M1WteijnYL9Zlriljl0a3oXcPunAVYTD9dbDQ== +"@react-spring/web@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.2.6.tgz#c4fba69e1b1b43bd1d6a62346530cfb07f2be09b" + integrity sha512-0HkRsEYR/CO3Uw46FWDWaF2wg2rUXcWE2R9AoZXthEYLUn5w9uE1mf2Jel7BxBxWGQ73owkqSQv+klA1Hb+ViQ== dependencies: - "@react-spring/animated" "~9.2.0" - "@react-spring/core" "~9.2.0" - "@react-spring/shared" "~9.2.0" - "@react-spring/types" "~9.2.0" + "@react-spring/animated" "~9.2.6-beta.0" + "@react-spring/core" "~9.2.6-beta.0" + "@react-spring/shared" "~9.2.6-beta.0" + "@react-spring/types" "~9.2.6-beta.0" -"@react-spring/zdog@~9.2.0": - version "9.2.4" - resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.2.4.tgz#db1d1924fe9920e917d889c4d3bb138bd0885cf1" - integrity sha512-rv7ptedS37SHr6yuCbRkUErAzAhebdgt8f4KUtZWzseC+7qLNkaZWf+uujgsb881qAuX9b9yz8rre9UKeYepgw== +"@react-spring/zdog@~9.2.6-beta.0": + version "9.2.6" + resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.2.6.tgz#fa620e7d0faa4b8027fc0922a9bcab42f4e0fdd8" + integrity sha512-02Zfc1keAkA4l1zsNWKG1L/Y5wExaD4GkcYjVFwmpB7RHdxCGG4io+qBV/Idpxji0XZ8oH8d5gCjlwTMZqlrkQ== dependencies: - "@react-spring/animated" "~9.2.0" - "@react-spring/core" "~9.2.0" - "@react-spring/shared" "~9.2.0" - "@react-spring/types" "~9.2.0" + "@react-spring/animated" "~9.2.6-beta.0" + "@react-spring/core" "~9.2.6-beta.0" + "@react-spring/shared" "~9.2.6-beta.0" + "@react-spring/types" "~9.2.6-beta.0" "@rollup/plugin-node-resolve@^7.1.1": version "7.1.3" @@ -11306,10 +11306,10 @@ react-input-autosize@^3.0.0: dependencies: prop-types "^15.5.8" -react-intersection-observer@^8.32.0: - version "8.32.0" - resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-8.32.0.tgz#47249332e12e8bb99ed35a10bb7dd10446445a7b" - integrity sha512-RlC6FvS3MFShxTn4FHAy904bVjX5Nn4/eTjUkurW0fHK+M/fyQdXuyCy9+L7yjA+YMGogzzSJNc7M4UtfSKvtw== +react-intersection-observer@8.32.5: + version "8.32.5" + resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-8.32.5.tgz#92e8d8888b0b43a5c10c398e0d483d574bce7f3e" + integrity sha512-4xKdUWRNdPueXXxTyMOV41w6qIa4tsV7BbWOW+IYsvGPP7wxOj9V6o3cKywie+/VDr5Qs7pCzi5Wom78dUxj1w== react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" @@ -11515,17 +11515,17 @@ react-select@^4.3.1: react-input-autosize "^3.0.0" react-transition-group "^4.3.0" -react-spring@^9.2.4: - version "9.2.4" - resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.2.4.tgz#9d89b0321664d594f957dca9459b13d94b3dfa39" - integrity sha512-bMjbyTW0ZGd+/h9cjtohLqCwOGqX2OuaTvalOVfLCGmhzEg/u3GgopI3LAm4UD2Br3MNdVdGgNVoESg4MGqKFQ== +react-spring@9.2.6: + version "9.2.6" + resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.2.6.tgz#f8c218954357bda5031c8f8e725e152fcad5fa4c" + integrity sha512-clqMjsqWo3SWuPm3Dt3W8Hi8LSgoA1v8sjw0hYnPpo2oNjhxOTkqHd1KmBxHhLpT2aD6AvbxqjzMZgmCgnu8lw== dependencies: - "@react-spring/core" "~9.2.0" - "@react-spring/konva" "~9.2.0" - "@react-spring/native" "~9.2.0" - "@react-spring/three" "~9.2.0" - "@react-spring/web" "~9.2.0" - "@react-spring/zdog" "~9.2.0" + "@react-spring/core" "~9.2.6-beta.0" + "@react-spring/konva" "~9.2.6-beta.0" + "@react-spring/native" "~9.2.6-beta.0" + "@react-spring/three" "~9.2.6-beta.0" + "@react-spring/web" "~9.2.6-beta.0" + "@react-spring/zdog" "~9.2.6-beta.0" react-textarea-autosize@^8.3.3: version "8.3.3" From 98e62d6b4f069b653bf80cb0bf398a6c72a9e160 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Thu, 10 Mar 2022 10:33:36 +1100 Subject: [PATCH 06/37] Update packages --- package.json | 4 ++-- yarn.lock | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 01a7383..4670981 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "fuse.js": "^6.4.6", "image-outline": "^0.1.0", "intersection-observer": "^0.12.0", - "konva": "^8.3.2", + "konva": "8.3.3", "lodash.chunk": "^4.2.0", "lodash.clonedeep": "^4.5.0", "lodash.get": "^4.4.2", @@ -68,7 +68,7 @@ "source-map-explorer": "^2.5.2", "theme-ui": "^0.10.0", "tiny-typed-emitter": "^2.1.0", - "use-image": "^1.0.8", + "use-image": "1.0.10", "uuid": "^8.3.2", "webrtc-adapter": "^8.1.1" }, diff --git a/yarn.lock b/yarn.lock index 1ee02c1..9e91049 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8842,10 +8842,10 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -konva@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/konva/-/konva-8.3.2.tgz#3823a6ea0eb3605142c637f327c4cc29fd188c02" - integrity sha512-vWi51qFTFkEIp+HxMek1eH1fA1zFo0DPD3uqUez+v2gy/IfZF2eLu9DcEj7Exk532hxfHJi/2oZ0GQYHlhg/dQ== +konva@8.3.3: + version "8.3.3" + resolved "https://registry.yarnpkg.com/konva/-/konva-8.3.3.tgz#409c811a7aa474e075e8928b8a931cf12d4dd517" + integrity sha512-S/v9JW3gNr4mweRwk4JLiJSnQAWs3aZBU4SY9pXGgCFxIvSDbKTnXTDYb2IMxFnurh3ItiR249RG0NvozHd1OA== language-subtag-registry@~0.3.2: version "0.3.21" @@ -13662,7 +13662,12 @@ use-composed-ref@^1.0.0: dependencies: ts-essentials "^2.0.3" -use-image@^1.0.7, use-image@^1.0.8: +use-image@1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/use-image/-/use-image-1.0.10.tgz#75c338ca228244b9ba54f9ae1a24cfffdd6b2fb8" + integrity sha512-Q+YvP9s5OpYNwrbLFyi9L8LX4o+c59rF12tP2ggwf8RC2Jf+xChhuDVjYO3oZfWgSfdM42ilPIOldjOl+pmb+g== + +use-image@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/use-image/-/use-image-1.0.8.tgz#a8fa4ae359afbb0fc30c7cab0a7f4d537281a9d4" integrity sha512-mTQBg+e+tLXvhxq2MozH2ZdUPglG7ozLUlSB036soydO1wg1ZV5msZ4X3aw7gX4ozW0P9yHYZAiZB+qbIdQJZQ== From d2f96845747eeba83fbb421c44c49a826257db08 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 13:40:29 +1100 Subject: [PATCH 07/37] Update packages --- package.json | 48 ++-- yarn.lock | 624 ++++++++++++++++++++++++++++----------------------- 2 files changed, 365 insertions(+), 307 deletions(-) diff --git a/package.json b/package.json index 4670981..e4e68c7 100644 --- a/package.json +++ b/package.json @@ -8,17 +8,17 @@ "@dnd-kit/core": "^3.1.1", "@dnd-kit/sortable": "^4.0.0", "@mitchemmc/dexie-export-import": "^1.0.1", - "@msgpack/msgpack": "^2.7.0", - "@react-spring/konva": "9.2.6", - "@sentry/integrations": "^6.11.0", - "@sentry/react": "^6.11.0", - "@stripe/stripe-js": "^1.16.0", - "@tensorflow/tfjs": "^3.8.0", - "@testing-library/jest-dom": "^5.11.9", - "@testing-library/react": "^11.2.5", - "@testing-library/user-event": "^13.0.2", + "@msgpack/msgpack": "^2.7.2", + "@react-spring/konva": "9.4.4", + "@sentry/integrations": "^6.19.3", + "@sentry/react": "^6.19.3", + "@stripe/stripe-js": "^1.26.0", + "@tensorflow/tfjs": "^3.15.0", + "@testing-library/jest-dom": "^5.16.3", + "@testing-library/react": "^13.0.0", + "@testing-library/user-event": "^14.0.3", "ajv": "^8.6.2", - "ammo.js": "kripken/ammo.js#85c0614cd5338aa0843814fe7bbd2df48164ece7", + "ammo.js": "kripken/ammo.js#7a574978fb28164a0a1510831eae52958edb4265", "case": "^1.6.3", "color": "^3.2.1", "comlink": "^4.3.1", @@ -28,10 +28,10 @@ "err-code": "^3.0.1", "fake-indexeddb": "^3.1.7", "file-saver": "^2.0.5", - "fuse.js": "^6.4.6", + "fuse.js": "^6.5.3", "image-outline": "^0.1.0", "intersection-observer": "^0.12.0", - "konva": "8.3.3", + "konva": "8.3.5", "lodash.chunk": "^4.2.0", "lodash.clonedeep": "^4.5.0", "lodash.get": "^4.4.2", @@ -40,22 +40,22 @@ "normalize-wheel": "^1.0.1", "pepjs": "^0.5.3", "polygon-clipping": "^0.15.3", - "pretty-bytes": "^5.6.0", + "pretty-bytes": "^6.0.0", "raw.macro": "^0.4.2", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-intersection-observer": "8.32.5", - "react-konva": "^17.0.2-5", - "react-konva-utils": "^0.1.7", + "react-intersection-observer": "8.33.1", + "react-konva": "^17.0.2-6", + "react-konva-utils": "^0.2.0", "react-markdown": "4", "react-media": "^2.0.0-rc.1", "react-modal": "^3.14.4", - "react-resize-detector": "^6.7.4", + "react-resize-detector": "^7.0.0", "react-router-dom": "^5.1.2", "react-router-hash-link": "^2.4.3", "react-scripts": "^4.0.3", - "react-select": "^4.3.1", - "react-spring": "9.2.6", + "react-select": "^5.2.2", + "react-spring": "9.4.4", "react-textarea-autosize": "^8.3.3", "react-toast-notifications": "^2.5.1", "react-use-gesture": "^9.1.3", @@ -100,8 +100,8 @@ "devDependencies": { "@types/color": "^3.0.1", "@types/deep-diff": "^1.0.0", - "@types/file-saver": "^2.0.2", - "@types/jest": "^26.0.23", + "@types/file-saver": "^2.0.5", + "@types/jest": "^27.4.1", "@types/lodash.chunk": "^4.2.6", "@types/lodash.clonedeep": "^4.5.6", "@types/lodash.get": "^4.4.6", @@ -110,12 +110,12 @@ "@types/normalize-wheel": "^1.0.0", "@types/react": "^17.0.6", "@types/react-dom": "^17.0.5", - "@types/react-modal": "^3.12.0", + "@types/react-modal": "^3.13.1", "@types/react-router-dom": "^5.1.7", - "@types/react-select": "^4.0.17", + "@types/react-select": "^5.0.1", "@types/shortid": "^0.0.29", "@types/simple-peer": "^9.11.4", - "@types/uuid": "^8.3.1", + "@types/uuid": "^8.3.4", "typescript": "^4.2.4", "worker-loader": "^3.0.8" } diff --git a/yarn.lock b/yarn.lock index 9e91049..675b9fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1974,7 +1974,7 @@ "@emotion/utils" "0.11.3" csstype "^2.5.7" -"@emotion/serialize@^1.0.0", "@emotion/serialize@^1.0.2": +"@emotion/serialize@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.2.tgz#77cb21a0571c9f68eb66087754a65fa97bfcd965" integrity sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A== @@ -2284,10 +2284,10 @@ dexie "^3.0.0-alpha.5 || ^2.0.4" rollup-plugin-sourcemaps "^0.6.3" -"@msgpack/msgpack@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-2.7.0.tgz#3a0fbe4e0406f6576895f990857e19da97376f18" - integrity sha512-mlRYq9FSsOd4m+3wZWatemn3hGFZPWNJ4JQOdrir4rrMK2PyIk26idKBoUWrqF3HJJHl+5GpRU+M0wEruJwecg== +"@msgpack/msgpack@^2.7.2": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-2.7.2.tgz#f34b8aa0c49f0dd55eb7eba577081299cbf3f90b" + integrity sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw== "@nodelib/fs.scandir@2.1.3": version "2.1.3" @@ -2329,90 +2329,91 @@ schema-utils "^2.6.5" source-map "^0.7.3" -"@react-spring/animated@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.2.6.tgz#58f30fb75d8bfb7ccbc156cfd6b974a8f3dfd54e" - integrity sha512-xjL6nmixYNDvnpTs1FFMsMfSC0tURwPCU3b2jWNriYGLfwZ7c/TcyaEZA7yiNnmdFnuR3f3Z27AqIgaFC083Cw== +"@react-spring/animated@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.4.4.tgz#15e21923e55c06ca2bcea432869b91b2f8b07519" + integrity sha512-e9xnuBaUTD+NolKikUmrGWjX8AVCPyj1GcEgjgq9E+0sXKv46UY7cm2EmB6mUDTxWIDVKebARY++xT4nGDraBQ== dependencies: - "@react-spring/shared" "~9.2.6-beta.0" - "@react-spring/types" "~9.2.6-beta.0" + "@react-spring/shared" "~9.4.4" + "@react-spring/types" "~9.4.4" -"@react-spring/core@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.2.6.tgz#ae22338fe55d070caf03abb4293b5519ba620d93" - integrity sha512-uPHUxmu+w6mHJrfQTMtmGJ8iZEwiVxz9kH7dRyk69bkZJt9z+w0Oj3UF4J3VcECZsbm3HRhN2ogXSAaqGjwhQw== +"@react-spring/core@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.4.4.tgz#7730988cec7302ba6e0977cf4c08c30249d95622" + integrity sha512-llgb0ljFyjMB0JhWsaFHOi9XFT8n1jBMVs1IFY2ipIBerWIRWrgUmIpakLPHTa4c4jwqTaDSwX90s2a0iN7dxQ== dependencies: - "@react-spring/animated" "~9.2.6-beta.0" - "@react-spring/shared" "~9.2.6-beta.0" - "@react-spring/types" "~9.2.6-beta.0" + "@react-spring/animated" "~9.4.4" + "@react-spring/rafz" "~9.4.4" + "@react-spring/shared" "~9.4.4" + "@react-spring/types" "~9.4.4" -"@react-spring/konva@9.2.6", "@react-spring/konva@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.2.6.tgz#b64f1bb1ae26df145213fd2138b59ad9302b134a" - integrity sha512-O1A9sKfNM+Srl1Gs3MtXNMUcGr6lJdtwlsSRQQsWLxJS/wD1DHWGHOXcVitk5da2GCqOdFs+pQPajkwdMHIYag== +"@react-spring/konva@9.4.4", "@react-spring/konva@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.4.4.tgz#e65e3b85274e9af36c6037dbafa402d9f01db076" + integrity sha512-ZHwsf4l/W5YzK8TwlvGXL9SYiHxxC6iEOAKStRs8WV6VuBvTFgIoGK5RNOTbsRC2N/spNWnN6JViz1PNbgrB+A== dependencies: - "@react-spring/animated" "~9.2.6-beta.0" - "@react-spring/core" "~9.2.6-beta.0" - "@react-spring/shared" "~9.2.6-beta.0" - "@react-spring/types" "~9.2.6-beta.0" + "@react-spring/animated" "~9.4.4" + "@react-spring/core" "~9.4.4" + "@react-spring/shared" "~9.4.4" + "@react-spring/types" "~9.4.4" -"@react-spring/native@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.2.6.tgz#725cde3f60cb4086c75b4cf4c3d843828ac143f1" - integrity sha512-xOt03jK2eLo0lDfAyuMD+G1uCoKL5dsmX/wSJNuWTEWhDuJQFcSgZFHqmVn3bu/Fmd02iVe5/pAOWll5e90N1Q== +"@react-spring/native@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.4.4.tgz#8581e03d0c4a11f3e5a1fc8cf505c81f9d9a5fcf" + integrity sha512-p0/JI59JVkgVjnoLvu+cpEgEkE0B3RDvzT1oNaCAx0ePaGQo4ICAS8PyOgPvN5IHUOy59CBLSMNnFyHV+IgaGQ== dependencies: - "@react-spring/animated" "~9.2.6-beta.0" - "@react-spring/core" "~9.2.6-beta.0" - "@react-spring/shared" "~9.2.6-beta.0" - "@react-spring/types" "~9.2.6-beta.0" + "@react-spring/animated" "~9.4.4" + "@react-spring/core" "~9.4.4" + "@react-spring/shared" "~9.4.4" + "@react-spring/types" "~9.4.4" -"@react-spring/rafz@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.2.6.tgz#d97484003875bf5fb5e6ec22dee97cc208363e48" - integrity sha512-62SivLKEpo7EfHPkxO5J3g9Cr9LF6+1A1RVOMJhkcpEYtbdbmma/d63Xp8qpMPEpk7uuWxaTb6jjyxW33pW3sg== +"@react-spring/rafz@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.4.4.tgz#736c9ed1099baebeea20c357b9700b01b83ea9de" + integrity sha512-5ki/sQ06Mdf8AuFstSt5zbNNicRT4LZogiJttDAww1ozhuvemafNWEHxhzcULgCPCDu2s7HsroaISV7+GQWrhw== -"@react-spring/shared@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.2.6.tgz#2c84e62cc0cfbbbbeb5546acd46c1f4b248bc562" - integrity sha512-Qrm9fopKG/RxZ3Rw+4euhrpnB3uXSyiON9skHbcBfmkkzagpkUR66MX1YLrhHw0UchcZuSDnXs0Lonzt1rpWag== +"@react-spring/shared@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.4.4.tgz#e1ae00a77d170d86d77d9a19dc7015bdddc2d26f" + integrity sha512-ySVgScDZlhm/+Iy2smY9i/DDrShArY0j6zjTS/Re1lasKnhq8qigoGiAxe8xMPJNlCaj3uczCqHy3TY9bKRtfQ== dependencies: - "@react-spring/rafz" "~9.2.6-beta.0" - "@react-spring/types" "~9.2.6-beta.0" + "@react-spring/rafz" "~9.4.4" + "@react-spring/types" "~9.4.4" -"@react-spring/three@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.2.6.tgz#07b6d6cf6c50103298aee1b780a6e457b1ab8ecc" - integrity sha512-sV80HWT5wjKgl6i51UALlMVhsad93pijEgkXh6mAefKmuDo9DDe6UufAOn1uCTVxPZKO7w9O7xgvlPm9nkBXag== +"@react-spring/three@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.4.4.tgz#a26de44854e166184ddba57313bfc52efce67368" + integrity sha512-z77ohxg8zG0CcZJojzfoJTTrjSbIyefNz2RlId68/4IypnOs1p8kB2Q1p+wX4KyWORpLg8ivsPcjtwBjGwfDtg== dependencies: - "@react-spring/animated" "~9.2.6-beta.0" - "@react-spring/core" "~9.2.6-beta.0" - "@react-spring/shared" "~9.2.6-beta.0" - "@react-spring/types" "~9.2.6-beta.0" + "@react-spring/animated" "~9.4.4" + "@react-spring/core" "~9.4.4" + "@react-spring/shared" "~9.4.4" + "@react-spring/types" "~9.4.4" -"@react-spring/types@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.2.6.tgz#f60722fcf9f8492ae16d0bdc47f0ea3c2a16d2cf" - integrity sha512-l7mCw182DtDMnCI8CB9orgTAEoFZRtdQ6aS6YeEAqYcy3nQZPmPggIHH9DxyLw7n7vBPRSzu9gCvUMgXKpTflg== +"@react-spring/types@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.4.4.tgz#97c69881788e624d7cc68d4385fdaa9b5fd20642" + integrity sha512-KpxKt/D//q/t/6FBcde/RE36LKp8PpWu7kFEMLwpzMGl9RpcexunmYOQJWwmJWtkQjgE1YRr7DzBMryz6La1cQ== -"@react-spring/web@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.2.6.tgz#c4fba69e1b1b43bd1d6a62346530cfb07f2be09b" - integrity sha512-0HkRsEYR/CO3Uw46FWDWaF2wg2rUXcWE2R9AoZXthEYLUn5w9uE1mf2Jel7BxBxWGQ73owkqSQv+klA1Hb+ViQ== +"@react-spring/web@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.4.4.tgz#0d13356e61c1d47e83a36112e19e5db691f3fbe5" + integrity sha512-iJmOLdhcuizriUlu/xqBc5y8KaFts+UI+iC+GxyTwBtzxA9czKiSAZW2ESuhG8stafa3jncwjfTQQp84KN36cw== dependencies: - "@react-spring/animated" "~9.2.6-beta.0" - "@react-spring/core" "~9.2.6-beta.0" - "@react-spring/shared" "~9.2.6-beta.0" - "@react-spring/types" "~9.2.6-beta.0" + "@react-spring/animated" "~9.4.4" + "@react-spring/core" "~9.4.4" + "@react-spring/shared" "~9.4.4" + "@react-spring/types" "~9.4.4" -"@react-spring/zdog@~9.2.6-beta.0": - version "9.2.6" - resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.2.6.tgz#fa620e7d0faa4b8027fc0922a9bcab42f4e0fdd8" - integrity sha512-02Zfc1keAkA4l1zsNWKG1L/Y5wExaD4GkcYjVFwmpB7RHdxCGG4io+qBV/Idpxji0XZ8oH8d5gCjlwTMZqlrkQ== +"@react-spring/zdog@~9.4.4": + version "9.4.4" + resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.4.4.tgz#e0e19175a9a22d74614dbf3c624513fd35e69f9d" + integrity sha512-qmD8zRcodbQKTAFVMdgW2pYIZP1KttDnz2S2JEc7kx8I8F5ljn9czgRl5c4w9HJ0dpO8VTfPq4sKa4tlUL23yg== dependencies: - "@react-spring/animated" "~9.2.6-beta.0" - "@react-spring/core" "~9.2.6-beta.0" - "@react-spring/shared" "~9.2.6-beta.0" - "@react-spring/types" "~9.2.6-beta.0" + "@react-spring/animated" "~9.4.4" + "@react-spring/core" "~9.4.4" + "@react-spring/shared" "~9.4.4" + "@react-spring/types" "~9.4.4" "@rollup/plugin-node-resolve@^7.1.1": version "7.1.3" @@ -2442,78 +2443,78 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@sentry/browser@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.11.0.tgz#9e90bbc0488ebcdd1e67937d8d5b4f13c3f6dee0" - integrity sha512-Qr2QRA0t5/S9QQqxzYKvM9W8prvmiWuldfwRX4hubovXzcXLgUi4WK0/H612wSbYZ4dNAEcQbtlxFWJNN4wxdg== +"@sentry/browser@6.19.3": + version "6.19.3" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.19.3.tgz#b4cfc6eba48d10a5fdf096c05ca11303354edb8b" + integrity sha512-E8UA6IN8z9hL6aGzOHUzqgNZiBwARkA89i8ncKB9QU1/+jl7598ZLziN4+uyPeZiRquEz8Ub7Ve1eacs1u+fbw== dependencies: - "@sentry/core" "6.11.0" - "@sentry/types" "6.11.0" - "@sentry/utils" "6.11.0" + "@sentry/core" "6.19.3" + "@sentry/types" "6.19.3" + "@sentry/utils" "6.19.3" tslib "^1.9.3" -"@sentry/core@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.11.0.tgz#40e94043afcf6407a109be26655c77832c64e740" - integrity sha512-09TB+f3pqEq8LFahFWHO6I/4DxHo+NcS52OkbWMDqEi6oNZRD7PhPn3i14LfjsYVv3u3AESU8oxSEGbFrr2UjQ== +"@sentry/core@6.19.3": + version "6.19.3" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.19.3.tgz#88268afc8c42716c455ad77bb4bed2bbf96abd83" + integrity sha512-RcGmYdkrE3VYBMl9Hgv4GKsC8FEVUdWYsfGIcT/btwP2YpBeUaTZl+1vV9r3Ncdl125LqzP5CKSj5otVxiEg6g== dependencies: - "@sentry/hub" "6.11.0" - "@sentry/minimal" "6.11.0" - "@sentry/types" "6.11.0" - "@sentry/utils" "6.11.0" + "@sentry/hub" "6.19.3" + "@sentry/minimal" "6.19.3" + "@sentry/types" "6.19.3" + "@sentry/utils" "6.19.3" tslib "^1.9.3" -"@sentry/hub@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.11.0.tgz#ddf9ddb0577d1c8290dc02c0242d274fe84d6c16" - integrity sha512-pT9hf+ZJfVFpoZopoC+yJmFNclr4NPqPcl2cgguqCHb69DklD1NxgBNWK8D6X05qjnNFDF991U6t1mxP9HrGuw== +"@sentry/hub@6.19.3": + version "6.19.3" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.19.3.tgz#d555c83404f19ac9b68f336b051b8e7a9d75feb0" + integrity sha512-iYbkrxEZt6CrHP3U3r54MARVZSs3YHjAMUMOTlC16s/Amz1McwV95XtI3NJaqMhwzl7R5vbGrs3xOtLg1V1Uyw== dependencies: - "@sentry/types" "6.11.0" - "@sentry/utils" "6.11.0" + "@sentry/types" "6.19.3" + "@sentry/utils" "6.19.3" tslib "^1.9.3" -"@sentry/integrations@^6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-6.11.0.tgz#da0706306b5ff13eaae5771095d7fc82c9f4c68b" - integrity sha512-CtSMW+PJlw+EunDJ+9LCWxRcXQIsUDlcUZOhFyAdmM5YIbg2V0IqHtnYg8X2sSGRO3aTEc7lOG5nF4lqr3R0yg== +"@sentry/integrations@^6.19.3": + version "6.19.3" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-6.19.3.tgz#b5ac64591a9c7ae60f54c7d5ebd0d9152215c377" + integrity sha512-hOyX0UoH1ZyFtOjIazL2M9HfQMIjwukv0AtTX2W7sVfV1qxvISaV5lYZrAw1xB1lRoUwOJr/C0odddHWtBgdsA== dependencies: - "@sentry/types" "6.11.0" - "@sentry/utils" "6.11.0" + "@sentry/types" "6.19.3" + "@sentry/utils" "6.19.3" localforage "^1.8.1" tslib "^1.9.3" -"@sentry/minimal@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.11.0.tgz#806d5512658370e40827b3e3663061db708fff33" - integrity sha512-XkZ7qrdlGp4IM/gjGxf1Q575yIbl5RvPbg+WFeekpo16Ufvzx37Mr8c2xsZaWosISVyE6eyFpooORjUlzy8EDw== +"@sentry/minimal@6.19.3": + version "6.19.3" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.19.3.tgz#b9b7f0d7f0cd2341b243318668ac01458f9d7889" + integrity sha512-xy/6ThHK8B2NJT98nWrx6V9eVgUbzq2N/8lv5/QqrKsICjxx22TRC8Q6zPg/o7BYcrY5vpugSEbIeErTnyxHDA== dependencies: - "@sentry/hub" "6.11.0" - "@sentry/types" "6.11.0" + "@sentry/hub" "6.19.3" + "@sentry/types" "6.19.3" tslib "^1.9.3" -"@sentry/react@^6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-6.11.0.tgz#291a184b0f1ae75a78d592e78171f0a1c3609490" - integrity sha512-Qq57pqxE5VVsRp/ou+xv/R15ds54vv8F4/WbS+a4vEB1KqdX2NzfFDuKni5G+pZD4XNl9CI+LeUyiKtD4K/k7Q== +"@sentry/react@^6.19.3": + version "6.19.3" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-6.19.3.tgz#6b2bfb19faa55cf83af593a5778bb23cd2cf60a3" + integrity sha512-Zza1RX0+1tFCM1Hfq3Yl50cbc/ml0V/katw4aVZIU6+vEgvk5EuSFKU2LtblmJkpID7x6UwWz+1qgXumZPze6Q== dependencies: - "@sentry/browser" "6.11.0" - "@sentry/minimal" "6.11.0" - "@sentry/types" "6.11.0" - "@sentry/utils" "6.11.0" + "@sentry/browser" "6.19.3" + "@sentry/minimal" "6.19.3" + "@sentry/types" "6.19.3" + "@sentry/utils" "6.19.3" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" -"@sentry/types@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.11.0.tgz#5122685478d32ddacd3a891cbcf550012df85f7c" - integrity sha512-gm5H9eZhL6bsIy/h3T+/Fzzz2vINhHhqd92CjHle3w7uXdTdFV98i2pDpErBGNTSNzbntqOMifYEB5ENtZAvcg== +"@sentry/types@6.19.3": + version "6.19.3" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.3.tgz#94b19da68d4d23561efb1014f72968bcea85cd0c" + integrity sha512-jHhqxp8MIWSfOc3krorirTGKTEaSFO6XrAvi+2AZhr6gvOChwOgzgrN2ZqesJcZmgCsqWV21u3usSwYeRrjOJA== -"@sentry/utils@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.11.0.tgz#d1dee4faf4d9c42c54bba88d5a66fb96b902a14c" - integrity sha512-IOvyFHcnbRQxa++jO+ZUzRvFHEJ1cZjrBIQaNVc0IYF0twUOB5PTP6joTcix38ldaLeapaPZ9LGfudbvYvxkdg== +"@sentry/utils@6.19.3": + version "6.19.3" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.19.3.tgz#0c3a3f0b86c12e3b079e56e37a44e62a1226043d" + integrity sha512-GdC9B/FK7qd0zItY43135bYbhuVSawE18bIrQDNuno8gTpDJ5OgShpTN9zR53AmMh16/lwKNnV3ZZjlpKcxuNw== dependencies: - "@sentry/types" "6.11.0" + "@sentry/types" "6.19.3" tslib "^1.9.3" "@sinonjs/commons@^1.7.0": @@ -2530,10 +2531,10 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@stripe/stripe-js@^1.16.0": - version "1.16.0" - resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.16.0.tgz#73bce24fb7f47d719caa6b151e58e49b4167d463" - integrity sha512-ZSHbiwTrISoaTbpercmYGuY7QTg7HxfFyNgbJBaYbwHWbzMhpEdGTsmMpaBXIU6iiqwEEDaIyD8O6yJ+H5DWCg== +"@stripe/stripe-js@^1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.26.0.tgz#45670924753c01e18d0544ea1f1067b474aaa96f" + integrity sha512-4R1vC75yKaCVFARW3bhelf9+dKt4NP4iZY/sIjGK7AAMBVvZ47eG74NvsAIUdUnhOXSWFMjdFWqv+etk5BDW4g== "@styled-system/background@^5.1.2": version "5.1.2" @@ -2745,35 +2746,35 @@ "@svgr/plugin-svgo" "^5.5.0" loader-utils "^2.0.0" -"@tensorflow/tfjs-backend-cpu@3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.8.0.tgz#1b0655d5ca1b57370c1ea9586d571f3d63ca7393" - integrity sha512-iSwHrqX0Ixh1kelfmxIgChKft/KrcZk9EMHQcX+878XnX7mxB2HfWUqfiJVIcq+Fyr4I3oE4ncbbpmlKMxA85A== +"@tensorflow/tfjs-backend-cpu@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.15.0.tgz#f9aa5309f464c019d36cb42463813455d970f101" + integrity sha512-f+GREHSiVkVIpFAwkjB7YWcZefqQvCKQhrNjZzm1WX4VdnWlo0b1lTI+gPIIYNk4LEFMBNJbfqy/N1xNS/SOLQ== dependencies: "@types/seedrandom" "2.4.27" seedrandom "2.4.3" -"@tensorflow/tfjs-backend-webgl@3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.8.0.tgz#35fc3c69979805a0f84a5ffa99fe431512c72f6b" - integrity sha512-Pjv+oWPf+7YS8kz/UFh2QBeD3F74R63AEU48a44LVh63YHXvdRg/M/Mvhjd55Oe0crDbBLej287SgVB8DHjUXg== +"@tensorflow/tfjs-backend-webgl@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.15.0.tgz#5a1a302700003955aa3e10aabbdee08c28729cf6" + integrity sha512-QOxbTABFbP+m+UmCVB8VQlmZbsXiJOP8QRkRRZHhGWNKjtT3eWi+ROS1tbloS7/Q20SEmNZXCvcsjv0TBgFQPw== dependencies: - "@tensorflow/tfjs-backend-cpu" "3.8.0" + "@tensorflow/tfjs-backend-cpu" "3.15.0" "@types/offscreencanvas" "~2019.3.0" "@types/seedrandom" "2.4.27" "@types/webgl-ext" "0.0.30" - "@types/webgl2" "0.0.5" + "@types/webgl2" "0.0.6" seedrandom "2.4.3" -"@tensorflow/tfjs-converter@3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-3.8.0.tgz#78dd1c96acd775ceb112cd0c30deb5120a8a7536" - integrity sha512-IWalZtKNfsSHt9He3Tvfje71gwMnFg5msQEiEnAtVnz1Zly0Yi0mycGLp5TPyqPhZCcJ+i9OhgkAlL4sbjP1hw== +"@tensorflow/tfjs-converter@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-3.15.0.tgz#7346932800fc6f8509dbd468504d617cec5aa282" + integrity sha512-FBk3qGvNfS1xCw+ZLXCiD72vpR/rZaShFOY7HmLtTTfWlebWowrjaNqjvO8SKc7UGtRR/GJ7Bf3TgKyr9D3g0Q== -"@tensorflow/tfjs-core@3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-3.8.0.tgz#b7390db21bbcbf4c3da0c540d9318164d987767c" - integrity sha512-0VKqNpnTiXIeOql3dnEyPOxKA9yDA366onv3sphm6k8KAzkr+is+GHOHzmo8mL7+AujiOb6o0J7BYhr7yvpNjA== +"@tensorflow/tfjs-core@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-3.15.0.tgz#1fc676be2aa591cd48a2dd8301a41bc1bf0f9b14" + integrity sha512-X1XGr8rewm/n0RDMnaLRcRYsTHlQCqQUR5DCtjUf4TuII7kq/pkZ9xCKPPfS1qUd5jLy663h8j5cAyjJNUt/hw== dependencies: "@types/long" "^4.0.1" "@types/offscreencanvas" "~2019.3.0" @@ -2783,58 +2784,58 @@ node-fetch "~2.6.1" seedrandom "2.4.3" -"@tensorflow/tfjs-data@3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-data/-/tfjs-data-3.8.0.tgz#eb60485c35f5e493cab675e3071dc814d1c0dc5d" - integrity sha512-TuzI2ggCKb3lLUAsTGT/CMOkMZgrmgu1dQckEnft621RDJSQTN1o7xC0YLDmuwLwfUmWJax8TvsSxXBy2M5GSg== +"@tensorflow/tfjs-data@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-data/-/tfjs-data-3.15.0.tgz#158539cdf82f35cbe0ea259903e1a385884b9279" + integrity sha512-x8JOhpIsqN9jIWZqEmt2vLYf49lIhekI6nyw/fgAKjtx+I4qKw2gY7/r11TewZRxyD2o7SOrSoNIZT8nQJ5YfQ== dependencies: "@types/node-fetch" "^2.1.2" node-fetch "~2.6.1" -"@tensorflow/tfjs-layers@3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-layers/-/tfjs-layers-3.8.0.tgz#f8afbc375aacab7457ac5d6a83d5c5b292105681" - integrity sha512-O7r0zkGFM2DTS2NdWhGUrKNgoY1GR7IX5aGIj50SQ8WnPWwY9gaVI7b+euP2Yg7A6kDiFXJIST+MY9EottyqSA== +"@tensorflow/tfjs-layers@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-layers/-/tfjs-layers-3.15.0.tgz#9f71497f37d2b1b067bf8adaa1e562a85b22c7a9" + integrity sha512-6MWTrRd+kK2rto/HXX0Gg9yGIkT0twvuzTHcxFHUJVlW3JYulRCp185h3AcBytyzqQeae5eA73aOovm3lBvN+A== -"@tensorflow/tfjs@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-3.8.0.tgz#76e9e5447c1d1725bcc25904c2c8c21f615acb0f" - integrity sha512-4tVMEfGT8l8JBei/O0K0j7pcNbWR7C9r6WAuvoFXQBiu6FkwUhnM+rNrBHoh1/UaYKKm1enVbiyAP9+sbSFRaw== +"@tensorflow/tfjs@^3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-3.15.0.tgz#20692fd6a3d4284b6d1d9d50e22232fe7d1c015a" + integrity sha512-sXcgD5hJsFsKlsBqSQYL21i27PtZ2V4fJLpKhGHXbNxvWq7B83UJuAzhc05x9hU6Ectnq4/41cMdTN/D+pe75Q== dependencies: - "@tensorflow/tfjs-backend-cpu" "3.8.0" - "@tensorflow/tfjs-backend-webgl" "3.8.0" - "@tensorflow/tfjs-converter" "3.8.0" - "@tensorflow/tfjs-core" "3.8.0" - "@tensorflow/tfjs-data" "3.8.0" - "@tensorflow/tfjs-layers" "3.8.0" + "@tensorflow/tfjs-backend-cpu" "3.15.0" + "@tensorflow/tfjs-backend-webgl" "3.15.0" + "@tensorflow/tfjs-converter" "3.15.0" + "@tensorflow/tfjs-core" "3.15.0" + "@tensorflow/tfjs-data" "3.15.0" + "@tensorflow/tfjs-layers" "3.15.0" argparse "^1.0.10" chalk "^4.1.0" core-js "3" regenerator-runtime "^0.13.5" yargs "^16.0.3" -"@testing-library/dom@^7.28.1": - version "7.31.2" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" - integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== +"@testing-library/dom@^8.5.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.12.0.tgz#fef5e545533fb084175dda6509ee71d7d2f72e23" + integrity sha512-rBrJk5WjI02X1edtiUcZhgyhgBhiut96r5Jp8J5qktKdcvLcZpKDW8i2hkGMMItxrghjXuQ5AM6aE0imnFawaw== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" + aria-query "^5.0.0" chalk "^4.1.0" - dom-accessibility-api "^0.5.6" + dom-accessibility-api "^0.5.9" lz-string "^1.4.4" - pretty-format "^26.6.2" + pretty-format "^27.0.2" -"@testing-library/jest-dom@^5.11.9": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" - integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== +"@testing-library/jest-dom@^5.16.3": + version "5.16.3" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.3.tgz#b76851a909586113c20486f1679ffb4d8ec27bfa" + integrity sha512-u5DfKj4wfSt6akfndfu1eG06jsdyA/IUrlX2n3pyq5UXgXMhXY+NJb8eNK/7pqPWAhCKsCGWDdDO0zKMKAYkEA== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^4.2.2" + aria-query "^5.0.0" chalk "^3.0.0" css "^3.0.0" css.escape "^1.5.1" @@ -2842,20 +2843,19 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@^11.2.5": - version "11.2.7" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" - integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== +"@testing-library/react@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.0.0.tgz#8cdaf4667c6c2b082eb0513731551e9db784e8bc" + integrity sha512-p0lYA1M7uoEmk2LnCbZLGmHJHyH59sAaZVXChTXlyhV/PRW9LoIh4mdf7tiXsO8BoNG+vN8UnFJff1hbZeXv+w== dependencies: "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^7.28.1" + "@testing-library/dom" "^8.5.0" + "@types/react-dom" "*" -"@testing-library/user-event@^13.0.2": - version "13.2.1" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.2.1.tgz#7a71a39e50b4a733afbe2916fa2b99966e941f98" - integrity sha512-cczlgVl+krjOb3j1625usarNEibI0IFRJrSWX9UsJ1HKYFgCQv9Nb7QAipUDXl3Xdz8NDTsiS78eAkPSxlzTlw== - dependencies: - "@babel/runtime" "^7.12.5" +"@testing-library/user-event@^14.0.3": + version "14.0.3" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.0.3.tgz#463667596122c13d997f70b73426947ab71de962" + integrity sha512-zIgBG5CxfXbMsm4wBS6iQC3TBNMZk16O25i4shS9MM+eSG7PZHrsBF6LFIesUkepkZ3QKKgstB2/Nola6nvy4A== "@theme-ui/color-modes@0.10.0": version "0.10.0" @@ -3018,10 +3018,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/file-saver@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.3.tgz#b734c4f5a04d20615eaed3dc106e2ab321082009" - integrity sha512-MBIou8pd/41jkff7s97B47bc9+p0BszqqDJsO51yDm49uUxeKzrfuNl5fSLC6BpLEWKA8zlwyqALVmXrFwoBHQ== +"@types/file-saver@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.5.tgz#9ee342a5d1314bb0928375424a2f162f97c310c7" + integrity sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ== "@types/glob@^7.1.1": version "7.1.3" @@ -3075,13 +3075,13 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/jest@^26.0.23": - version "26.0.24" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" - integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== +"@types/jest@^27.4.1": + version "27.4.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" + integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" @@ -3196,10 +3196,17 @@ dependencies: "@types/react" "*" -"@types/react-modal@^3.12.0": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@types/react-modal/-/react-modal-3.12.1.tgz#fd1558762ed96020291b831190c85bc721aad3c1" - integrity sha512-pgq/jAnSJqHX7NXTFyUSXwlFOBUGngBXavFmAIKE7bkM7WNKyF/9XvmMr2+eIBOvR8waiA0Nj2qHfDZqMgeT6w== +"@types/react-modal@^3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@types/react-modal/-/react-modal-3.13.1.tgz#5b9845c205fccc85d9a77966b6e16dc70a60825a" + integrity sha512-iY/gPvTDIy6Z+37l+ibmrY+GTV4KQTHcCyR5FIytm182RQS69G5ps4PH2FxtC7bAQ2QRHXMevsBgck7IQruHNg== + dependencies: + "@types/react" "*" + +"@types/react-reconciler@~0.26.2": + version "0.26.4" + resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.26.4.tgz#651404be172cf29b65cddf246d8d964b4e448399" + integrity sha512-bdx4aIBkQRDAnzc23JBFeZmVpmfLJHfHikmQukEt9qs4bQtq9f+PDbNwhR9u74FkIUyIDz1I1qJ8OF6RwadKpw== dependencies: "@types/react" "*" @@ -3220,20 +3227,17 @@ "@types/history" "*" "@types/react" "*" -"@types/react-select@^4.0.17": - version "4.0.17" - resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-4.0.17.tgz#2e5ab4042c09c988bfc2711550329b0c3c9f8513" - integrity sha512-ZK5wcBhJaqC8ntQl0CJvK2KXNNsk1k5flM7jO+vNPPlceRzdJQazA6zTtQUyNr6exp5yrAiwiudtYxgGlgGHLg== +"@types/react-select@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-5.0.1.tgz#04fc85edd34a72675a0ab56ad4c30428aab0e444" + integrity sha512-h5Im0AP0dr4AVeHtrcvQrLV+gmPa7SA0AGdxl2jOhtwiE6KgXBFSogWw8az32/nusE6AQHlCOHQWjP1S/+oMWA== dependencies: - "@emotion/serialize" "^1.0.0" - "@types/react" "*" - "@types/react-dom" "*" - "@types/react-transition-group" "*" + react-select "*" -"@types/react-transition-group@*": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.2.tgz#38890fd9db68bf1f2252b99a942998dc7877c5b3" - integrity sha512-KibDWL6nshuOJ0fu8ll7QnV/LVTo3PzQ9aCPnRUYPfX7eZohHwLIdNHj7pftanREzHNP4/nJa8oeM73uSiavMQ== +"@types/react-transition-group@^4.4.0": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" + integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== dependencies: "@types/react" "*" @@ -3246,10 +3250,10 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/resize-observer-browser@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.6.tgz#d8e6c2f830e2650dc06fe74464472ff64b54a302" - integrity sha512-61IfTac0s9jvNtBCpyo86QeaN8qqpMGHdK0uGKCCIy2dt5/Yk84VduHIdWAcmkC5QvdkPL0p5eWYgUZtHKKUVg== +"@types/resize-observer-browser@^0.1.6": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz#294aaadf24ac6580b8fbd1fe3ab7b59fe85f9ef3" + integrity sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg== "@types/resolve@0.0.8": version "0.0.8" @@ -3316,20 +3320,20 @@ dependencies: source-map "^0.6.1" -"@types/uuid@^8.3.1": - version "8.3.1" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.1.tgz#1a32969cf8f0364b3d8c8af9cc3555b7805df14f" - integrity sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg== +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@types/webgl-ext@0.0.30": version "0.0.30" resolved "https://registry.yarnpkg.com/@types/webgl-ext/-/webgl-ext-0.0.30.tgz#0ce498c16a41a23d15289e0b844d945b25f0fb9d" integrity sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg== -"@types/webgl2@0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@types/webgl2/-/webgl2-0.0.5.tgz#dd925e20ab8ace80eb4b1e46fda5b109c508fb0d" - integrity sha512-oGaKsBbxQOY5+aJFV3KECDhGaXt+yZJt2y/OZsnQGLRkH6Fvr7rv4pCt3SRH1somIHfej/c4u7NSpCyd9x+1Ow== +"@types/webgl2@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/webgl2/-/webgl2-0.0.6.tgz#1ea2db791362bd8521548d664dbd3c5311cdf4b6" + integrity sha512-50GQhDVTq/herLMiqSQkdtRu+d5q/cWHn4VvKJtrj4DJAjo1MNkWYa2MA41BaBO1q1HgsUjuQvEOk0QHvlnAaQ== "@types/webpack-sources@*": version "2.0.0" @@ -3723,9 +3727,9 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -ammo.js@kripken/ammo.js#85c0614cd5338aa0843814fe7bbd2df48164ece7: +ammo.js@kripken/ammo.js#7a574978fb28164a0a1510831eae52958edb4265: version "0.0.2" - resolved "https://codeload.github.com/kripken/ammo.js/tar.gz/85c0614cd5338aa0843814fe7bbd2df48164ece7" + resolved "https://codeload.github.com/kripken/ammo.js/tar.gz/7a574978fb28164a0a1510831eae52958edb4265" ansi-colors@^3.0.0: version "3.2.4" @@ -3764,6 +3768,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -3778,6 +3787,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -3814,6 +3828,11 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" +aria-query@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" + integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== + arity-n@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" @@ -5774,6 +5793,11 @@ diff-sequences@^26.6.2: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -5842,6 +5866,11 @@ dom-accessibility-api@^0.5.6: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz#8c2aa6325968f2933160a0b7dbb380893ddf3e7d" integrity sha512-ml3lJIq9YjUfM9TUnEPvEYWFSwivwIGBPKpewX7tii7fwCazA8yCioGdqQcNsItPpfFvSJ3VIdMQPj60LJhcQA== +dom-accessibility-api@^0.5.9: + version "0.5.13" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b" + integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw== + dom-converter@^0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -7029,10 +7058,10 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -fuse.js@^6.4.6: - version "6.4.6" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.4.6.tgz#62f216c110e5aa22486aff20be7896d19a059b79" - integrity sha512-/gYxR/0VpXmWSfZOIPS3rWwU8SHgsRTwWuXhyb2O6s7aRuVtHtxCkR33bNYu3wyLyNx/Wpv0vU7FZy8Vj53VNw== +fuse.js@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.5.3.tgz#7446c0acbc4ab0ab36fa602e97499bdb69452b93" + integrity sha512-sA5etGE7yD/pOqivZRBvUBd/NaL2sjAu6QuSaFoe1H2BrJSkH/T/UXAJ8CdXdw7DvY3Hs8CXKYkDWX7RiP5KOg== gensync@^1.0.0-beta.1: version "1.0.0-beta.2" @@ -8297,6 +8326,16 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" @@ -8345,6 +8384,11 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -8408,6 +8452,16 @@ jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-matcher-utils@^27.0.0: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + jest-message-util@^26.6.0, jest-message-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" @@ -8842,10 +8896,10 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -konva@8.3.3: - version "8.3.3" - resolved "https://registry.yarnpkg.com/konva/-/konva-8.3.3.tgz#409c811a7aa474e075e8928b8a931cf12d4dd517" - integrity sha512-S/v9JW3gNr4mweRwk4JLiJSnQAWs3aZBU4SY9pXGgCFxIvSDbKTnXTDYb2IMxFnurh3ItiR249RG0NvozHd1OA== +konva@8.3.5: + version "8.3.5" + resolved "https://registry.yarnpkg.com/konva/-/konva-8.3.5.tgz#017799db93f70ef6437eaa8e7776a4b32648344b" + integrity sha512-RjaZN8PwZN3n/AlqLmtPNozLRXd6pPo11UawTJpvuOAKEkSQSXI1EHntDRIPnrrJ/j4gU0VmPzWs7/ZgLZnAPQ== language-subtag-registry@~0.3.2: version "0.3.21" @@ -9067,7 +9121,7 @@ lodash.unset@^4.5.2: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lodash@^4.17.15, lodash@^4.17.19, lodash@^4.7.0: +lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -11014,10 +11068,10 @@ pretty-bytes@^5.3.0: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== -pretty-bytes@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== +pretty-bytes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.0.0.tgz#928be2ad1f51a2e336add8ba764739f9776a8140" + integrity sha512-6UqkYefdogmzqAZWzJ7laYeJnaXDy2/J+ZqiiMtS7t7OfpXWTlaeGMwX8U6EFvPV/YWWEKRkS8hKS4k60WHTOg== pretty-error@^2.1.1: version "2.1.2" @@ -11037,6 +11091,15 @@ pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" +pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -11072,7 +11135,7 @@ prompts@2.4.0, prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -11299,17 +11362,10 @@ react-error-overlay@^6.0.9: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== -react-input-autosize@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-3.0.0.tgz#6b5898c790d4478d69420b55441fcc31d5c50a85" - integrity sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg== - dependencies: - prop-types "^15.5.8" - -react-intersection-observer@8.32.5: - version "8.32.5" - resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-8.32.5.tgz#92e8d8888b0b43a5c10c398e0d483d574bce7f3e" - integrity sha512-4xKdUWRNdPueXXxTyMOV41w6qIa4tsV7BbWOW+IYsvGPP7wxOj9V6o3cKywie+/VDr5Qs7pCzi5Wom78dUxj1w== +react-intersection-observer@8.33.1: + version "8.33.1" + resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-8.33.1.tgz#8e6442cac7052ed63056e191b7539e423e7d5c64" + integrity sha512-3v+qaJvp3D1MlGHyM+KISVg/CMhPiOlO6FgPHcluqHkx4YFCLuyXNlQ/LE6UkbODXlQcLOppfX6UMxCEkUhDLw== react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" @@ -11321,15 +11377,15 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-konva-utils@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/react-konva-utils/-/react-konva-utils-0.1.7.tgz#f3feb6c0dd5a930020fd10a0f57d5c7a904166c8" - integrity sha512-wjNq4TsPXaig2Zufg6nBeFQpijR3FJ4iL2YrmtlwQN7Ase158eWHrpHKNySdMo2E4OSls8220sIaTY5TlrzqyA== +react-konva-utils@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/react-konva-utils/-/react-konva-utils-0.2.0.tgz#e79ed7776edd50f40c152d8d49d2693ff12e910b" + integrity sha512-xjxhmuZnRJthInyb5wLwdgtO5gQnUvCpEutMoFwQtnwL4s4JFNLTq+fjlmCGhP+TxiJXiztzwinptL+wxP16pg== dependencies: react-konva "^17.0.2-4" use-image "^1.0.7" -react-konva@^17.0.2-4, react-konva@^17.0.2-5: +react-konva@^17.0.2-4: version "17.0.2-5" resolved "https://registry.yarnpkg.com/react-konva/-/react-konva-17.0.2-5.tgz#e70b0acf323402de0a540f27b300fbe7ed151849" integrity sha512-IyzdfqRDK8r1ulp/jbLPX18AuO+n5yNtL0+4T0QEUsgArRqIl/VRCG1imA5mYJBk0cBNC5+fWDHN+HWEW62ZEQ== @@ -11337,6 +11393,15 @@ react-konva@^17.0.2-4, react-konva@^17.0.2-5: react-reconciler "~0.26.2" scheduler "^0.20.2" +react-konva@^17.0.2-6: + version "17.0.2-6" + resolved "https://registry.yarnpkg.com/react-konva/-/react-konva-17.0.2-6.tgz#80b3fdebfd915878eafe554c191bec282cdda0de" + integrity sha512-cfRsBKxqAQ6gTBmyrKptKRWhHD+C068dvyqcZ4h8qzKbAacTXQtfLMSpOI+d+ptxSMvayIbbCdbsBmk3bWiClQ== + dependencies: + "@types/react-reconciler" "~0.26.2" + react-reconciler "~0.26.2" + scheduler "^0.20.2" + react-lifecycles-compat@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -11390,15 +11455,13 @@ react-refresh@^0.8.3: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== -react-resize-detector@^6.7.4: - version "6.7.4" - resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-6.7.4.tgz#594cc026115af05484e8011157b5dc2137492680" - integrity sha512-wzvGmUdEDMhiUHVZGnl4kuyj/TEQhvbB5LyAGkbYXetwJ2O+u/zftmPvU+kxiO1h+d9aUqQBKcNLS7TvB3ytqA== +react-resize-detector@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-7.0.0.tgz#fbd46917ee905b7796c797aa6b301b454a6b9229" + integrity sha512-Xd1POfpVzH9O3F/xB/0xYy2ijtKjE/z7y4c/aJP593YSzhPy2vDhsNPjes+uQbgL1RezxJajQ679qPs8K5LAFw== dependencies: - "@types/resize-observer-browser" "^0.1.5" - lodash.debounce "^4.0.8" - lodash.throttle "^4.1.1" - resize-observer-polyfill "^1.5.1" + "@types/resize-observer-browser" "^0.1.6" + lodash "^4.17.21" react-router-dom@^5.1.2: version "5.2.0" @@ -11502,30 +11565,30 @@ react-scripts@^4.0.3: optionalDependencies: fsevents "^2.1.3" -react-select@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-4.3.1.tgz#389fc07c9bc7cf7d3c377b7a05ea18cd7399cb81" - integrity sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q== +react-select@*, react-select@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.2.2.tgz#3d5edf0a60f1276fd5f29f9f90a305f0a25a5189" + integrity sha512-miGS2rT1XbFNjduMZT+V73xbJEeMzVkJOz727F6MeAr2hKE0uUSA8Ff7vD44H32x2PD3SRB6OXTY/L+fTV3z9w== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" "@emotion/react" "^11.1.1" + "@types/react-transition-group" "^4.4.0" memoize-one "^5.0.0" prop-types "^15.6.0" - react-input-autosize "^3.0.0" react-transition-group "^4.3.0" -react-spring@9.2.6: - version "9.2.6" - resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.2.6.tgz#f8c218954357bda5031c8f8e725e152fcad5fa4c" - integrity sha512-clqMjsqWo3SWuPm3Dt3W8Hi8LSgoA1v8sjw0hYnPpo2oNjhxOTkqHd1KmBxHhLpT2aD6AvbxqjzMZgmCgnu8lw== +react-spring@9.4.4: + version "9.4.4" + resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.4.4.tgz#0a53440013f97c1ebaa739a24a902487f36a5c1e" + integrity sha512-VOqilh9DJBsS6Pf550YLhdReS3j9a2AQVh7NcsNtWoxTYIeuErWi6ym0++6bBhQp4yT5xvVvUDaJ8ez8vrFgaw== dependencies: - "@react-spring/core" "~9.2.6-beta.0" - "@react-spring/konva" "~9.2.6-beta.0" - "@react-spring/native" "~9.2.6-beta.0" - "@react-spring/three" "~9.2.6-beta.0" - "@react-spring/web" "~9.2.6-beta.0" - "@react-spring/zdog" "~9.2.6-beta.0" + "@react-spring/core" "~9.4.4" + "@react-spring/konva" "~9.4.4" + "@react-spring/native" "~9.4.4" + "@react-spring/three" "~9.4.4" + "@react-spring/web" "~9.4.4" + "@react-spring/zdog" "~9.4.4" react-textarea-autosize@^8.3.3: version "8.3.3" @@ -11869,11 +11932,6 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" From d2ea5efa43efcb9fa717613eaa3901816cef0aa0 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Thu, 31 Mar 2022 19:21:07 +1100 Subject: [PATCH 08/37] Add guard clause for errors on ImportExportModal --- src/modals/ImportExportModal.tsx | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index da64d47..9a8d866 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -103,15 +103,17 @@ function ImportExportModal({ } catch (e) { setIsLoading(false); backgroundTaskRunningRef.current = false; - if (e.message.startsWith("Max buffer length exceeded")) { - setError( - new Error( - "Max image size exceeded ensure your database doesn't have an image over 100MB" - ) - ); - } else { - console.error(e); - setError(e); + if (e instanceof(Error)) { + if (e.message.startsWith("Max buffer length exceeded")) { + setError( + new Error( + "Max image size exceeded ensure your database doesn't have an image over 100MB" + ) + ); + } else { + console.error(e); + setError(e); + } } } // Set file input to null to allow adding the same data 2 times in a row @@ -393,9 +395,11 @@ function ImportExportModal({ const blob = new Blob([buffer]); saveAs(blob, `${shortid.generate()}.owlbear`); addSuccessToast("Exported", checkedMaps, checkedTokens); - } catch (e) { - console.error(e); - setError(e); + } catch (e: unknown) { + if (e instanceof(Error)) { + console.error(e); + setError(e); + } } setIsLoading(false); backgroundTaskRunningRef.current = false; From 5b871975ab47015483dd2e09944a423a79022582 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Thu, 31 Mar 2022 19:21:52 +1100 Subject: [PATCH 09/37] Add user information of unsuccessful imports --- src/modals/ImportExportModal.tsx | 43 ++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index 9a8d866..0b9b158 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -68,6 +68,23 @@ function ImportExportModal({ addToast(`${message} ${tokenText}`); } } + + function addWarningToast( + message: string, + mapNames: string[], + ) { + let mapText = ""; + + if (mapNames.length > 0) { + for (let map in mapNames) { + console.log(mapNames[map]); + mapText += `${mapNames[map]}, ` + } + } + // mapText.trimEnd(); + mapText = mapText.replace(/,\s*$/, ""); + addToast(`${message} ${mapText}`); + } function openFileDialog() { if (fileInputRef.current) { @@ -172,6 +189,9 @@ function ImportExportModal({ let newTokenIds: Record = {}; // Mapping of old asset ids to new asset ids let newAssetIds: Record = {}; + // Mapping of old asset ids to old maps + let oldAssetIds: Record = {}; + // Mapping of old maps ids to new map ids let newMapIds: Record = {}; @@ -236,10 +256,15 @@ function ImportExportModal({ const newThumbnailId = uuid(); newAssetIds[map.file] = newFileId; newAssetIds[map.thumbnail] = newThumbnailId; + + oldAssetIds[map.file] = { mapName: map.name, assetType: "file" }; + oldAssetIds[map.thumbnail] = { mapName: map.name, assetType: "thumbnail" }; + const newResolutionIds: Record = {}; for (let res of Object.keys(map.resolutions)) { newResolutionIds[res] = uuid(); newAssetIds[map.resolutions[res]] = newResolutionIds[res]; + oldAssetIds[map.resolutions[res]] = { mapName: map.name, assetType: "resolution" }; } // Change ids and owner newMaps.push({ @@ -261,6 +286,7 @@ function ImportExportModal({ .table("assets") .bulkGet(Object.keys(newAssetIds)); let newAssets: Asset[] = []; + const processedAssetIds: string[] = [] for (let asset of assetsToAdd) { if (asset) { newAssets.push({ @@ -268,11 +294,24 @@ function ImportExportModal({ id: newAssetIds[asset.id], owner: userId, }); - } else { - throw new MissingAssetError("Import missing assets"); + processedAssetIds.push(asset.id) } } + const unprocessed = Object.keys(newAssetIds).filter(item => processedAssetIds.indexOf(item) < 0); + const unprocessedMaps: string[] = [] + if (unprocessed.length > 0) { + for (let item of unprocessed) { + let unprocessedMapAsset = oldAssetIds[item] + + if (!unprocessedMaps.includes(unprocessedMapAsset.mapName)) { + unprocessedMaps.push(unprocessedMapAsset.mapName) + } + } + + addWarningToast("Could not import ", unprocessedMaps) + } + // Add map groups with new ids let newMapGroups: Group[] = []; if (checkedMapGroups.length > 0) { From 3a0a9b231de5eb378d8b547e7c738466af8e6f9b Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 14:56:32 +1100 Subject: [PATCH 10/37] Edit toast messages --- src/components/Toast.tsx | 22 +++++++++++++++++---- src/modals/ImportExportModal.tsx | 34 ++++++++++++++++++-------------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/components/Toast.tsx b/src/components/Toast.tsx index c90abee..e215cdf 100644 --- a/src/components/Toast.tsx +++ b/src/components/Toast.tsx @@ -1,15 +1,29 @@ import React from "react"; import { Box, Text } from "theme-ui"; -import { ToastProvider as DefaultToastProvider } from "react-toast-notifications"; +import { AppearanceTypes, ToastProvider as DefaultToastProvider } from "react-toast-notifications"; -function CustomToast({ children }: { children?: React.ReactNode }) { +function getToastAppearance(appearance: AppearanceTypes) { + let colour = "overlay" + if (appearance === "error") { + colour = "secondary" + } else if (appearance === "info") { + colour = "overlay" + } else if (appearance === "warning") { + colour = "highlight" + } else if (appearance === "success") { + colour = "primary" + } + return colour; +} + +function CustomToast({ appearance, children }: { appearance: AppearanceTypes, children: React.ReactNode}) { return ( + > {children} diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index 0b9b158..88230df 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -55,16 +55,16 @@ function ImportExportModal({ const { addToast } = useToasts(); function addSuccessToast( message: string, - maps: SelectData[], - tokens: SelectData[] + maps: number, + tokens: number ) { - const mapText = `${maps.length} map${maps.length > 1 ? "s" : ""}`; - const tokenText = `${tokens.length} token${tokens.length > 1 ? "s" : ""}`; - if (maps.length > 0 && tokens.length > 0) { + const mapText = `${maps} map${maps > 1 ? "s" : ""}`; + const tokenText = `${tokens} token${tokens > 1 ? "s" : ""}`; + if (maps > 0 && tokens > 0) { addToast(`${message} ${mapText} and ${tokenText}`); - } else if (maps.length > 0) { + } else if (maps > 0) { addToast(`${message} ${mapText}`); - } else if (tokens.length > 0) { + } else if (tokens > 0) { addToast(`${message} ${tokenText}`); } } @@ -76,14 +76,17 @@ function ImportExportModal({ let mapText = ""; if (mapNames.length > 0) { - for (let map in mapNames) { - console.log(mapNames[map]); - mapText += `${mapNames[map]}, ` + if (mapNames.length === 1) { + mapText += `${mapNames[0]}` + } else { + for (let map in mapNames) { + mapText += `${mapNames[map]}, ` + } + mapText = mapText.replace(/,\s*$/, ""); } } - // mapText.trimEnd(); - mapText = mapText.replace(/,\s*$/, ""); - addToast(`${message} ${mapText}`); + const toastMessage = {message} {mapText} + addToast(toastMessage, {appearance: "warning", autoDismiss: true }); } function openFileDialog() { @@ -386,7 +389,8 @@ function ImportExportModal({ } } ); - addSuccessToast("Imported", checkedMaps, checkedTokens); + const totalImportedMaps = checkedMaps.length - unprocessedMaps.length + addSuccessToast("Imported", totalImportedMaps, checkedTokens.length); } catch (e) { console.error(e); if (e instanceof MissingAssetError) { @@ -433,7 +437,7 @@ function ImportExportModal({ ); const blob = new Blob([buffer]); saveAs(blob, `${shortid.generate()}.owlbear`); - addSuccessToast("Exported", checkedMaps, checkedTokens); + addSuccessToast("Exported", checkedMaps.length, checkedTokens.length); } catch (e: unknown) { if (e instanceof(Error)) { console.error(e); From c1cde5b94f7eba4b9dfefa25dda30b1b298e8983 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 14:56:55 +1100 Subject: [PATCH 11/37] Add error guards to catch blocks --- src/components/dice/DiceInteraction.tsx | 4 +++- src/helpers/grid.ts | 4 +++- src/hooks/useImageDrop.ts | 10 ++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/dice/DiceInteraction.tsx b/src/components/dice/DiceInteraction.tsx index 88cf213..8494c24 100644 --- a/src/components/dice/DiceInteraction.tsx +++ b/src/components/dice/DiceInteraction.tsx @@ -108,7 +108,9 @@ function DiceInteraction({ } }); } catch (error) { - setError(error); + if (error instanceof Error) { + setError(error); + } } }, [onSceneMount]); diff --git a/src/helpers/grid.ts b/src/helpers/grid.ts index 2c5db2d..7e7a8e6 100644 --- a/src/helpers/grid.ts +++ b/src/helpers/grid.ts @@ -562,7 +562,9 @@ export async function getGridSizeFromImage(image: HTMLImageElement) { try { prediction = await gridSizeML(image, candidates); } catch (error) { - logError(error); + if (error instanceof Error) { + logError(error); + } } if (!prediction) { diff --git a/src/hooks/useImageDrop.ts b/src/hooks/useImageDrop.ts index dde5616..749cdcc 100644 --- a/src/hooks/useImageDrop.ts +++ b/src/hooks/useImageDrop.ts @@ -67,10 +67,12 @@ function useImageDrop( } } } catch (e) { - if (e.message === "Failed to fetch") { - addToast("Unable to import image: failed to fetch"); - } else { - addToast("Unable to import image"); + if (e instanceof Error) { + if (e.message === "Failed to fetch") { + addToast("Unable to import image: failed to fetch"); + } else { + addToast("Unable to import image"); + } } } } From fde9c41145e2e6a8d3a2642fea950a8347952406 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 15:14:48 +1100 Subject: [PATCH 12/37] Edit variable names in addWarningToast function --- src/modals/ImportExportModal.tsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index 88230df..d02118f 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -71,21 +71,21 @@ function ImportExportModal({ function addWarningToast( message: string, - mapNames: string[], + items: string[], ) { - let mapText = ""; + let text = ""; - if (mapNames.length > 0) { - if (mapNames.length === 1) { - mapText += `${mapNames[0]}` + if (items.length > 0) { + if (items.length === 1) { + text += `${items[0]}` } else { - for (let map in mapNames) { - mapText += `${mapNames[map]}, ` + for (let item in items) { + text += `${items[item]}, ` } - mapText = mapText.replace(/,\s*$/, ""); + text = text.replace(/,\s*$/, ""); } } - const toastMessage = {message} {mapText} + const toastMessage = {message} {text} addToast(toastMessage, {appearance: "warning", autoDismiss: true }); } From 262785c65efa8db3cfc3af5fed2f9ca1846196ac Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 16:17:15 +1100 Subject: [PATCH 13/37] Add tokens to import success check --- src/modals/ImportExportModal.tsx | 86 ++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 33 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index d02118f..1d2f549 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -193,7 +193,7 @@ function ImportExportModal({ // Mapping of old asset ids to new asset ids let newAssetIds: Record = {}; // Mapping of old asset ids to old maps - let oldAssetIds: Record = {}; + let oldAssetIds: Record = {}; // Mapping of old maps ids to new map ids let newMapIds: Record = {}; @@ -201,28 +201,40 @@ function ImportExportModal({ let newTokens: Token[] = []; if (checkedTokens.length > 0) { const tokenIds = checkedTokens.map((token) => token.id); - const tokensToAdd = await importDB.table("tokens").bulkGet(tokenIds); + const tokensToAdd: Token[] = await importDB.table("tokens").bulkGet(tokenIds); for (let token of tokensToAdd) { - // Generate new ids - const newId = uuid(); - newTokenIds[token.id] = newId; + if (token.name === "Vorkhal") { + console.log("found") + } + if (token) { + // Generate new ids + const newId = uuid(); + newTokenIds[token.id] = newId; + + if (token.type === "default") { + if (userId) { + newTokens.push({ ...token, id: newId, owner: userId }); + } + } else { + const newFileId = uuid(); + const newThumbnailId = uuid(); + newAssetIds[token.file] = newFileId; + newAssetIds[token.thumbnail] = newThumbnailId; - if (token.type === "default") { - newTokens.push({ ...token, id: newId, owner: userId }); - } else { - const newFileId = uuid(); - const newThumbnailId = uuid(); - newAssetIds[token.file] = newFileId; - newAssetIds[token.thumbnail] = newThumbnailId; + oldAssetIds[token.file] = { itemName: token.name, item: "token", assetType: "file" }; + oldAssetIds[token.thumbnail] = { itemName: token.name, item: "token", assetType: "thumbnail" }; - // Change ids and owner - newTokens.push({ - ...token, - id: newId, - owner: userId, - file: newFileId, - thumbnail: newThumbnailId, - }); + // Change ids and owner + if (userId) { + newTokens.push({ + ...token, + id: newId, + owner: userId, + file: newFileId, + thumbnail: newThumbnailId, + }); + } + } } } } @@ -260,14 +272,14 @@ function ImportExportModal({ newAssetIds[map.file] = newFileId; newAssetIds[map.thumbnail] = newThumbnailId; - oldAssetIds[map.file] = { mapName: map.name, assetType: "file" }; - oldAssetIds[map.thumbnail] = { mapName: map.name, assetType: "thumbnail" }; + oldAssetIds[map.file] = { itemName: map.name, item: "map", assetType: "file" }; + oldAssetIds[map.thumbnail] = { itemName: map.name, item: "map", assetType: "thumbnail" }; const newResolutionIds: Record = {}; for (let res of Object.keys(map.resolutions)) { newResolutionIds[res] = uuid(); newAssetIds[map.resolutions[res]] = newResolutionIds[res]; - oldAssetIds[map.resolutions[res]] = { mapName: map.name, assetType: "resolution" }; + oldAssetIds[map.resolutions[res]] = { itemName: map.name, item: "map", assetType: "resolution" }; } // Change ids and owner newMaps.push({ @@ -301,18 +313,25 @@ function ImportExportModal({ } } - const unprocessed = Object.keys(newAssetIds).filter(item => processedAssetIds.indexOf(item) < 0); - const unprocessedMaps: string[] = [] - if (unprocessed.length > 0) { - for (let item of unprocessed) { - let unprocessedMapAsset = oldAssetIds[item] + const unprocessedAssets = Object.keys(newAssetIds).filter(item => processedAssetIds.indexOf(item) < 0); + let unprocessedMaps = 0 + let unprocessedTokens = 0 + if (unprocessedAssets.length > 0) { + const unprocessedItems: string[] = [] + for (let item of unprocessedAssets) { + let unprocessedItem = oldAssetIds[item] - if (!unprocessedMaps.includes(unprocessedMapAsset.mapName)) { - unprocessedMaps.push(unprocessedMapAsset.mapName) + if (!unprocessedItems.includes(unprocessedItem.itemName)) { + unprocessedItems.push(unprocessedItem.itemName) + if (unprocessedItem.item === "map") { + unprocessedMaps += 1 + } else if (unprocessedItem.item === "token") { + unprocessedTokens += 1 + } } } - addWarningToast("Could not import ", unprocessedMaps) + addWarningToast("Could not import item(s)", unprocessedItems) } // Add map groups with new ids @@ -389,8 +408,9 @@ function ImportExportModal({ } } ); - const totalImportedMaps = checkedMaps.length - unprocessedMaps.length - addSuccessToast("Imported", totalImportedMaps, checkedTokens.length); + const totalImportedMaps = checkedMaps.length - unprocessedMaps + const totalImportedTokens = checkedTokens.length - unprocessedTokens + addSuccessToast("Imported", totalImportedMaps, totalImportedTokens); } catch (e) { console.error(e); if (e instanceof MissingAssetError) { From bd3a312e2f3bc07d58ad626fc23fe5635c2da6ff Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 16:17:23 +1100 Subject: [PATCH 14/37] Edit toast colours --- src/components/Toast.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Toast.tsx b/src/components/Toast.tsx index e215cdf..366ce2a 100644 --- a/src/components/Toast.tsx +++ b/src/components/Toast.tsx @@ -5,11 +5,11 @@ import { AppearanceTypes, ToastProvider as DefaultToastProvider } from "react-to function getToastAppearance(appearance: AppearanceTypes) { let colour = "overlay" if (appearance === "error") { - colour = "secondary" + colour = "highlight" } else if (appearance === "info") { colour = "overlay" } else if (appearance === "warning") { - colour = "highlight" + colour = "secondary" } else if (appearance === "success") { colour = "primary" } From 6adee0684aa42c74adcdde4894e940ed4ba860ba Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 16:55:26 +1100 Subject: [PATCH 15/37] Remove debug console.log --- src/modals/ImportExportModal.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index 1d2f549..ff3f17b 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -203,9 +203,6 @@ function ImportExportModal({ const tokenIds = checkedTokens.map((token) => token.id); const tokensToAdd: Token[] = await importDB.table("tokens").bulkGet(tokenIds); for (let token of tokensToAdd) { - if (token.name === "Vorkhal") { - console.log("found") - } if (token) { // Generate new ids const newId = uuid(); From acfc84b4064a6f41aed18e009ea1a81e0ceab7ba Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 17:07:38 +1100 Subject: [PATCH 16/37] Make type changes on Dexie items --- src/modals/ImportExportModal.tsx | 16 ++++++++-------- src/workers/DatabaseWorker.ts | 15 ++++++++------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index ff3f17b..1163c99 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -201,7 +201,7 @@ function ImportExportModal({ let newTokens: Token[] = []; if (checkedTokens.length > 0) { const tokenIds = checkedTokens.map((token) => token.id); - const tokensToAdd: Token[] = await importDB.table("tokens").bulkGet(tokenIds); + const tokensToAdd: Token[] = await importDB.table("tokens").bulkGet(tokenIds); for (let token of tokensToAdd) { if (token) { // Generate new ids @@ -240,7 +240,7 @@ function ImportExportModal({ let newStates: MapState[] = []; if (checkedMaps.length > 0) { const mapIds = checkedMaps.map((map) => map.id); - const mapsToAdd = await importDB.table("maps").bulkGet(mapIds); + const mapsToAdd = await importDB.table("maps").bulkGet(mapIds); for (let map of mapsToAdd) { let state: MapState = await importDB.table("states").get(map.id); // Apply new token ids to imported state @@ -295,7 +295,7 @@ function ImportExportModal({ // Add assets with new ids const assetsToAdd = await importDB - .table("assets") + .table("assets") .bulkGet(Object.keys(newAssetIds)); let newAssets: Asset[] = []; const processedAssetIds: string[] = [] @@ -380,26 +380,26 @@ function ImportExportModal({ ], async () => { if (newTokens.length > 0) { - await db.table("tokens").bulkAdd(newTokens); + await db.table("tokens").bulkAdd(newTokens); } if (newMaps.length > 0) { - await db.table("maps").bulkAdd(newMaps); + await db.table("maps").bulkAdd(newMaps); } if (newStates.length > 0) { await db.table("states").bulkAdd(newStates); } if (newAssets.length > 0) { - await db.table("assets").bulkAdd(newAssets); + await db.table("assets").bulkAdd(newAssets); } if (newMapGroups.length > 0) { const mapGroup = await db.table("groups").get("maps"); await db - .table("groups") + .table("groups") .update("maps", { items: [...newMapGroups, ...mapGroup.items] }); } if (newTokenGroups.length > 0) { const tokenGroup = await db.table("groups").get("tokens"); - await db.table("groups").update("tokens", { + await db.table("groups").update("tokens", { items: [...newTokenGroups, ...tokenGroup.items], }); } diff --git a/src/workers/DatabaseWorker.ts b/src/workers/DatabaseWorker.ts index 4665445..33c807e 100644 --- a/src/workers/DatabaseWorker.ts +++ b/src/workers/DatabaseWorker.ts @@ -12,6 +12,7 @@ import blobToBuffer from "../helpers/blobToBuffer"; import { Map } from "../types/Map"; import { Token } from "../types/Token"; +import { Asset } from "../types/Asset"; type ProgressCallback = (progress: ExportProgress) => boolean; @@ -34,7 +35,7 @@ let service = { // Load entire table let items: T[] = []; // Use a cursor instead of toArray to prevent IPC max size error - await db.table(table).each((item) => { + await db.table(table).each((item: any) => { items.push(item); }); @@ -77,7 +78,7 @@ let service = { let db = getDatabase({}); // Add assets for selected maps and tokens - const maps = await db + const maps: Map[] = await db .table("maps") .where("id") .anyOf(mapIds) @@ -125,7 +126,7 @@ let service = { return false; }; - const data = await exportDB(db as any, { + const data = await exportDB(db, { progressCallback, filter, numRowsPerChunk: 1, @@ -176,7 +177,7 @@ let service = { importMeta.data.databaseVersion, false ); - await importInto(importDB as any, data, { + await importInto(importDB, data, { progressCallback, acceptNameDiff: true, overwriteValues: true, @@ -207,10 +208,10 @@ let service = { const assetSizes: { id: string; size: number }[] = []; await db - .table("assets") + .table("assets") .where("owner") .notEqual(userId) - .each((asset) => { + .each((asset: Asset) => { assetSizes.push({ id: asset.id, size: asset.file.byteLength }); }); const totalSize = assetSizes.reduce((acc, cur) => acc + cur.size, 0); @@ -226,7 +227,7 @@ let service = { break; } } - await db.table("assets").bulkDelete(assetsToDelete); + await db.table("assets").bulkDelete(assetsToDelete); } } catch {} }, From 5999486147711a7900126fd975dd231fe53ef0dd Mon Sep 17 00:00:00 2001 From: nthouliss Date: Fri, 1 Apr 2022 17:08:21 +1100 Subject: [PATCH 17/37] Edit formatting on Toast.tsx --- src/components/Toast.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Toast.tsx b/src/components/Toast.tsx index 366ce2a..5c663d1 100644 --- a/src/components/Toast.tsx +++ b/src/components/Toast.tsx @@ -16,14 +16,14 @@ function getToastAppearance(appearance: AppearanceTypes) { return colour; } -function CustomToast({ appearance, children }: { appearance: AppearanceTypes, children: React.ReactNode}) { +function CustomToast({ appearance, children }: { appearance: AppearanceTypes, children: React.ReactNode }) { return ( + > {children} From 1414080db68888fb5f074ab330acb954d7c7ff27 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Mon, 4 Apr 2022 11:24:11 +1000 Subject: [PATCH 18/37] Edit backend server --- .env.production | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.production b/.env.production index c3e4aef..17ad647 100644 --- a/.env.production +++ b/.env.production @@ -1,5 +1,5 @@ -REACT_APP_BROKER_URL=https://rocket.owlbear.rodeo -REACT_APP_ICE_SERVERS_URL=https://rocket.owlbear.rodeo/iceservers +REACT_APP_BROKER_URL=https://launch.owlbear.rodeo +REACT_APP_ICE_SERVERS_URL=https://launch.owlbear.rodeo/iceservers REACT_APP_STRIPE_API_KEY=pk_live_MJjzi5djj524Y7h3fL5PNh4e00a852XD51 REACT_APP_STRIPE_URL=https://payment.owlbear.rodeo REACT_APP_VERSION=$npm_package_version From 88c165d5abd510544c9ad08bef6b3c942fae0914 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Mon, 4 Apr 2022 11:30:50 +1000 Subject: [PATCH 19/37] Add check for database query --- src/modals/ImportExportModal.tsx | 65 +++++++++++++++++--------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index 1163c99..b0cb3b2 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -68,7 +68,7 @@ function ImportExportModal({ addToast(`${message} ${tokenText}`); } } - + function addWarningToast( message: string, items: string[], @@ -86,7 +86,7 @@ function ImportExportModal({ } } const toastMessage = {message} {text} - addToast(toastMessage, {appearance: "warning", autoDismiss: true }); + addToast(toastMessage, { appearance: "warning", autoDismiss: true }); } function openFileDialog() { @@ -123,7 +123,7 @@ function ImportExportModal({ } catch (e) { setIsLoading(false); backgroundTaskRunningRef.current = false; - if (e instanceof(Error)) { + if (e instanceof (Error)) { if (e.message.startsWith("Max buffer length exceeded")) { setError( new Error( @@ -201,35 +201,38 @@ function ImportExportModal({ let newTokens: Token[] = []; if (checkedTokens.length > 0) { const tokenIds = checkedTokens.map((token) => token.id); - const tokensToAdd: Token[] = await importDB.table("tokens").bulkGet(tokenIds); - for (let token of tokensToAdd) { - if (token) { - // Generate new ids - const newId = uuid(); - newTokenIds[token.id] = newId; - - if (token.type === "default") { - if (userId) { - newTokens.push({ ...token, id: newId, owner: userId }); - } - } else { - const newFileId = uuid(); - const newThumbnailId = uuid(); - newAssetIds[token.file] = newFileId; - newAssetIds[token.thumbnail] = newThumbnailId; + const tokensToAdd: Token[] | undefined = await importDB.table("tokens").bulkGet(tokenIds); - oldAssetIds[token.file] = { itemName: token.name, item: "token", assetType: "file" }; - oldAssetIds[token.thumbnail] = { itemName: token.name, item: "token", assetType: "thumbnail" }; + if (tokensToAdd) { + for (let token of tokensToAdd) { + if (token) { + // Generate new ids + const newId = uuid(); + newTokenIds[token.id] = newId; - // Change ids and owner - if (userId) { - newTokens.push({ - ...token, - id: newId, - owner: userId, - file: newFileId, - thumbnail: newThumbnailId, - }); + if (token.type === "default") { + if (userId) { + newTokens.push({ ...token, id: newId, owner: userId }); + } + } else { + const newFileId = uuid(); + const newThumbnailId = uuid(); + newAssetIds[token.file] = newFileId; + newAssetIds[token.thumbnail] = newThumbnailId; + + oldAssetIds[token.file] = { itemName: token.name, item: "token", assetType: "file" }; + oldAssetIds[token.thumbnail] = { itemName: token.name, item: "token", assetType: "thumbnail" }; + + // Change ids and owner + if (userId) { + newTokens.push({ + ...token, + id: newId, + owner: userId, + file: newFileId, + thumbnail: newThumbnailId, + }); + } } } } @@ -456,7 +459,7 @@ function ImportExportModal({ saveAs(blob, `${shortid.generate()}.owlbear`); addSuccessToast("Exported", checkedMaps.length, checkedTokens.length); } catch (e: unknown) { - if (e instanceof(Error)) { + if (e instanceof (Error)) { console.error(e); setError(e); } From 8cd33653ba1e817ff227419579e4c02d6a747d5d Mon Sep 17 00:00:00 2001 From: nthouliss Date: Mon, 4 Apr 2022 11:57:43 +1000 Subject: [PATCH 20/37] Fix build issues --- src/modals/ImportExportModal.tsx | 130 +++++++++++++++++-------------- src/workers/DatabaseWorker.ts | 8 +- 2 files changed, 75 insertions(+), 63 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index b0cb3b2..bb4666c 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -201,7 +201,7 @@ function ImportExportModal({ let newTokens: Token[] = []; if (checkedTokens.length > 0) { const tokenIds = checkedTokens.map((token) => token.id); - const tokensToAdd: Token[] | undefined = await importDB.table("tokens").bulkGet(tokenIds); + const tokensToAdd: Token[] | undefined = await importDB.table("tokens").bulkGet(tokenIds); if (tokensToAdd) { for (let token of tokensToAdd) { @@ -243,73 +243,85 @@ function ImportExportModal({ let newStates: MapState[] = []; if (checkedMaps.length > 0) { const mapIds = checkedMaps.map((map) => map.id); - const mapsToAdd = await importDB.table("maps").bulkGet(mapIds); - for (let map of mapsToAdd) { - let state: MapState = await importDB.table("states").get(map.id); - // Apply new token ids to imported state - for (let tokenState of Object.values(state.tokens)) { - if (tokenState.tokenId in newTokenIds) { - tokenState.tokenId = newTokenIds[tokenState.tokenId]; - } - // Change token state file asset id - if (tokenState.type === "file" && tokenState.file in newAssetIds) { - tokenState.file = newAssetIds[tokenState.file]; - } - // Change token state owner if owned by the user of the map - if (tokenState.owner === map.owner && userId) { - tokenState.owner = userId; + const mapsToAdd = await importDB.table("maps").bulkGet(mapIds); + if (mapsToAdd) { + + for (let map of mapsToAdd) { + if (map) { + let state: MapState = await importDB.table("states").get(map.id); + // Apply new token ids to imported state + for (let tokenState of Object.values(state.tokens)) { + if (tokenState.tokenId in newTokenIds) { + tokenState.tokenId = newTokenIds[tokenState.tokenId]; + } + // Change token state file asset id + if (tokenState.type === "file" && tokenState.file in newAssetIds) { + tokenState.file = newAssetIds[tokenState.file]; + } + // Change token state owner if owned by the user of the map + if (tokenState.owner === map.owner && userId) { + tokenState.owner = userId; + } + } + // Generate new ids + const newId = uuid(); + newMapIds[map.id] = newId; + + if (map.type === "default") { + if (userId) { + newMaps.push({ ...map, id: newId, owner: userId }); + } + } else { + const newFileId = uuid(); + const newThumbnailId = uuid(); + newAssetIds[map.file] = newFileId; + newAssetIds[map.thumbnail] = newThumbnailId; + + oldAssetIds[map.file] = { itemName: map.name, item: "map", assetType: "file" }; + oldAssetIds[map.thumbnail] = { itemName: map.name, item: "map", assetType: "thumbnail" }; + + const newResolutionIds: Record = {}; + for (let res of Object.keys(map.resolutions)) { + newResolutionIds[res] = uuid(); + newAssetIds[map.resolutions[res]] = newResolutionIds[res]; + oldAssetIds[map.resolutions[res]] = { itemName: map.name, item: "map", assetType: "resolution" }; + } + + if (userId) { + // Change ids and owner + newMaps.push({ + ...map, + id: newId, + owner: userId, + file: newFileId, + thumbnail: newThumbnailId, + resolutions: newResolutionIds, + }); + } + } + + newStates.push({ ...state, mapId: newId }); } } - // Generate new ids - const newId = uuid(); - newMapIds[map.id] = newId; - - if (map.type === "default") { - newMaps.push({ ...map, id: newId, owner: userId }); - } else { - const newFileId = uuid(); - const newThumbnailId = uuid(); - newAssetIds[map.file] = newFileId; - newAssetIds[map.thumbnail] = newThumbnailId; - - oldAssetIds[map.file] = { itemName: map.name, item: "map", assetType: "file" }; - oldAssetIds[map.thumbnail] = { itemName: map.name, item: "map", assetType: "thumbnail" }; - - const newResolutionIds: Record = {}; - for (let res of Object.keys(map.resolutions)) { - newResolutionIds[res] = uuid(); - newAssetIds[map.resolutions[res]] = newResolutionIds[res]; - oldAssetIds[map.resolutions[res]] = { itemName: map.name, item: "map", assetType: "resolution" }; - } - // Change ids and owner - newMaps.push({ - ...map, - id: newId, - owner: userId, - file: newFileId, - thumbnail: newThumbnailId, - resolutions: newResolutionIds, - }); - } - - newStates.push({ ...state, mapId: newId }); } } // Add assets with new ids - const assetsToAdd = await importDB - .table("assets") + const assetsToAdd: Asset[] | undefined = await importDB + .table("assets") .bulkGet(Object.keys(newAssetIds)); let newAssets: Asset[] = []; const processedAssetIds: string[] = [] - for (let asset of assetsToAdd) { - if (asset) { - newAssets.push({ - ...asset, - id: newAssetIds[asset.id], - owner: userId, - }); - processedAssetIds.push(asset.id) + if (assetsToAdd) { + for (let asset of assetsToAdd) { + if (asset && userId) { + newAssets.push({ + ...asset, + id: newAssetIds[asset.id], + owner: userId, + }); + processedAssetIds.push(asset.id) + } } } diff --git a/src/workers/DatabaseWorker.ts b/src/workers/DatabaseWorker.ts index 33c807e..4a9fc11 100644 --- a/src/workers/DatabaseWorker.ts +++ b/src/workers/DatabaseWorker.ts @@ -126,7 +126,7 @@ let service = { return false; }; - const data = await exportDB(db, { + const data = await exportDB(db as any, { progressCallback, filter, numRowsPerChunk: 1, @@ -177,7 +177,7 @@ let service = { importMeta.data.databaseVersion, false ); - await importInto(importDB, data, { + await importInto(importDB as any, data, { progressCallback, acceptNameDiff: true, overwriteValues: true, @@ -208,7 +208,7 @@ let service = { const assetSizes: { id: string; size: number }[] = []; await db - .table("assets") + .table("assets") .where("owner") .notEqual(userId) .each((asset: Asset) => { @@ -227,7 +227,7 @@ let service = { break; } } - await db.table("assets").bulkDelete(assetsToDelete); + await db.table("assets").bulkDelete(assetsToDelete); } } catch {} }, From e18aaae0c559707cc5055029373ec1edf964692e Mon Sep 17 00:00:00 2001 From: nthouliss Date: Wed, 6 Apr 2022 11:59:14 +1000 Subject: [PATCH 21/37] Edit backend servers --- .env.production | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.production b/.env.production index 17ad647..0003c6c 100644 --- a/.env.production +++ b/.env.production @@ -1,5 +1,5 @@ -REACT_APP_BROKER_URL=https://launch.owlbear.rodeo -REACT_APP_ICE_SERVERS_URL=https://launch.owlbear.rodeo/iceservers +REACT_APP_BROKER_URL=https://stage.owlbear.rodeo +REACT_APP_ICE_SERVERS_URL=https://stage.owlbear.rodeo/iceservers REACT_APP_STRIPE_API_KEY=pk_live_MJjzi5djj524Y7h3fL5PNh4e00a852XD51 REACT_APP_STRIPE_URL=https://payment.owlbear.rodeo REACT_APP_VERSION=$npm_package_version From 012cb412745611f7c0c92e29fb30f77e4fb3150b Mon Sep 17 00:00:00 2001 From: nthouliss Date: Wed, 6 Apr 2022 12:06:31 +1000 Subject: [PATCH 22/37] Revert ammo.js package update --- package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index e4e68c7..7905c93 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^14.0.3", "ajv": "^8.6.2", - "ammo.js": "kripken/ammo.js#7a574978fb28164a0a1510831eae52958edb4265", + "ammo.js": "kripken/ammo.js#85c0614cd5338aa0843814fe7bbd2df48164ece7", "case": "^1.6.3", "color": "^3.2.1", "comlink": "^4.3.1", diff --git a/yarn.lock b/yarn.lock index 675b9fa..f5ce009 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3727,9 +3727,9 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -ammo.js@kripken/ammo.js#7a574978fb28164a0a1510831eae52958edb4265: +ammo.js@kripken/ammo.js#85c0614cd5338aa0843814fe7bbd2df48164ece7: version "0.0.2" - resolved "https://codeload.github.com/kripken/ammo.js/tar.gz/7a574978fb28164a0a1510831eae52958edb4265" + resolved "https://codeload.github.com/kripken/ammo.js/tar.gz/85c0614cd5338aa0843814fe7bbd2df48164ece7" ansi-colors@^3.0.0: version "3.2.4" From 89ddbf7e5ce7375e3aed118588640b9260055be6 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Wed, 6 Apr 2022 15:53:45 +1000 Subject: [PATCH 23/37] Update socket.io-client package --- package.json | 2 +- yarn.lock | 94 +++++++++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 7905c93..f035a0f 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "simple-peer": "^9.11.1", "simplebar-react": "^2.3.6", "simplify-js": "^1.2.4", - "socket.io-client": "^4.1.3", + "socket.io-client": "^4.4.1", "socket.io-msgpack-parser": "^3.0.1", "source-map-explorer": "^2.5.2", "theme-ui": "^0.10.0", diff --git a/yarn.lock b/yarn.lock index f5ce009..421971c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2531,6 +2531,16 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@socket.io/base64-arraybuffer@~1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#568d9beae00b0d835f4f8c53fd55714986492e61" + integrity sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ== + +"@socket.io/component-emitter@~3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz#8863915676f837d9dad7b76f50cb500c1e9422e9" + integrity sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q== + "@stripe/stripe-js@^1.26.0": version "1.26.0" resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.26.0.tgz#45670924753c01e18d0544ea1f1067b474aaa96f" @@ -2990,11 +3000,6 @@ dependencies: "@types/color-convert" "*" -"@types/component-emitter@^1.2.10": - version "1.2.10" - resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.10.tgz#ef5b1589b9f16544642e473db5ea5639107ef3ea" - integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg== - "@types/deep-diff@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/deep-diff/-/deep-diff-1.0.1.tgz#eae15119c68b72b541731872a2883da89dc39396" @@ -4272,11 +4277,6 @@ base64-arraybuffer-es6@^0.7.0: resolved "https://registry.yarnpkg.com/base64-arraybuffer-es6/-/base64-arraybuffer-es6-0.7.0.tgz#dbe1e6c87b1bf1ca2875904461a7de40f21abc86" integrity sha512-ESyU/U1CFZDJUdr+neHRhNozeCv72Y7Vm0m1DCbjX3KBjT6eYocvAJlSk6+8+HkVwXlT1FNxhGW6q3UKAlCvvw== -base64-arraybuffer@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" - integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= - base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -5635,6 +5635,13 @@ debug@~4.3.1: dependencies: ms "2.1.2" +debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -6101,27 +6108,27 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -engine.io-client@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-5.1.2.tgz#27108da9b39ae03262443d945caf2caa3655c4cb" - integrity sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ== +engine.io-client@~6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.1.1.tgz#800d4b9db5487d169686729e5bd887afa78d36b0" + integrity sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g== dependencies: - base64-arraybuffer "0.1.4" - component-emitter "~1.3.0" + "@socket.io/component-emitter" "~3.0.0" debug "~4.3.1" - engine.io-parser "~4.0.1" + engine.io-parser "~5.0.0" has-cors "1.1.0" parseqs "0.0.6" parseuri "0.0.6" - ws "~7.4.2" + ws "~8.2.3" + xmlhttprequest-ssl "~2.0.0" yeast "0.1.2" -engine.io-parser@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.2.tgz#e41d0b3fb66f7bf4a3671d2038a154024edb501e" - integrity sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg== +engine.io-parser@~5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.3.tgz#ca1f0d7b11e290b4bfda251803baea765ed89c09" + integrity sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg== dependencies: - base64-arraybuffer "0.1.4" + "@socket.io/base64-arraybuffer" "~1.0.2" enhanced-resolve@^4.3.0: version "4.3.0" @@ -12522,18 +12529,17 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socket.io-client@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.1.3.tgz#236daa642a9f229932e00b7221e843bf74232a62" - integrity sha512-hISFn6PDpgDifVUiNklLHVPTMv1LAk8poHArfIUdXa+gKgbr0MZbAlquDFqCqsF30yBqa+jg42wgos2FK50BHA== +socket.io-client@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.4.1.tgz#b6aa9448149d09b8d0b2bbf3d2fac310631fdec9" + integrity sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ== dependencies: - "@types/component-emitter" "^1.2.10" + "@socket.io/component-emitter" "~3.0.0" backo2 "~1.0.2" - component-emitter "~1.3.0" - debug "~4.3.1" - engine.io-client "~5.1.2" + debug "~4.3.2" + engine.io-client "~6.1.1" parseuri "0.0.6" - socket.io-parser "~4.0.4" + socket.io-parser "~4.1.1" socket.io-msgpack-parser@^3.0.1: version "3.0.1" @@ -12543,13 +12549,12 @@ socket.io-msgpack-parser@^3.0.1: component-emitter "~1.3.0" notepack.io "~2.2.0" -socket.io-parser@~4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0" - integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g== +socket.io-parser@~4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.1.2.tgz#0a97d4fb8e67022158a568450a6e41887e42035e" + integrity sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog== dependencies: - "@types/component-emitter" "^1.2.10" - component-emitter "~1.3.0" + "@socket.io/component-emitter" "~3.0.0" debug "~4.3.1" sockjs-client@^1.5.0: @@ -14371,10 +14376,10 @@ ws@^7.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== -ws@~7.4.2: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@~8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" + integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== x-is-string@^0.1.0: version "0.1.0" @@ -14391,6 +14396,11 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" + integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" From 1ea05e8686cae414c867a20418fdc8cad5af10b5 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Mon, 11 Apr 2022 15:20:48 +1000 Subject: [PATCH 24/37] Improve checking for duplication on unprocessed assets --- src/modals/ImportExportModal.tsx | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index bb4666c..3b0ce6e 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -193,7 +193,7 @@ function ImportExportModal({ // Mapping of old asset ids to new asset ids let newAssetIds: Record = {}; // Mapping of old asset ids to old maps - let oldAssetIds: Record = {}; + let oldAssetIds: Record = {}; // Mapping of old maps ids to new map ids let newMapIds: Record = {}; @@ -220,8 +220,8 @@ function ImportExportModal({ newAssetIds[token.file] = newFileId; newAssetIds[token.thumbnail] = newThumbnailId; - oldAssetIds[token.file] = { itemName: token.name, item: "token", assetType: "file" }; - oldAssetIds[token.thumbnail] = { itemName: token.name, item: "token", assetType: "thumbnail" }; + oldAssetIds[token.file] = { itemName: token.name, itemId: token.id, item: "token", assetType: "file", newId: newId }; + oldAssetIds[token.thumbnail] = { itemName: token.name, itemId: token.id, item: "token", assetType: "thumbnail", newId: newId }; // Change ids and owner if (userId) { @@ -277,14 +277,14 @@ function ImportExportModal({ newAssetIds[map.file] = newFileId; newAssetIds[map.thumbnail] = newThumbnailId; - oldAssetIds[map.file] = { itemName: map.name, item: "map", assetType: "file" }; - oldAssetIds[map.thumbnail] = { itemName: map.name, item: "map", assetType: "thumbnail" }; + oldAssetIds[map.file] = { itemName: map.name, itemId: map.id, item: "map", assetType: "file", newId: newId }; + oldAssetIds[map.thumbnail] = { itemName: map.name, itemId: map.id, item: "map", assetType: "thumbnail", newId: newId }; const newResolutionIds: Record = {}; for (let res of Object.keys(map.resolutions)) { newResolutionIds[res] = uuid(); newAssetIds[map.resolutions[res]] = newResolutionIds[res]; - oldAssetIds[map.resolutions[res]] = { itemName: map.name, item: "map", assetType: "resolution" }; + oldAssetIds[map.resolutions[res]] = { itemName: map.name, itemId: map.id, item: "map", assetType: "resolution", newId: newId }; } if (userId) { @@ -329,21 +329,26 @@ function ImportExportModal({ let unprocessedMaps = 0 let unprocessedTokens = 0 if (unprocessedAssets.length > 0) { - const unprocessedItems: string[] = [] + const unprocessedItems: { id: string, name: string }[] = [] for (let item of unprocessedAssets) { let unprocessedItem = oldAssetIds[item] - if (!unprocessedItems.includes(unprocessedItem.itemName)) { - unprocessedItems.push(unprocessedItem.itemName) + if (!!!(unprocessedItems.some(value => value.id === unprocessedItem.itemId))) { + unprocessedItems.push({ id: unprocessedItem.itemId, name: unprocessedItem.itemName }) if (unprocessedItem.item === "map") { unprocessedMaps += 1 + const index = newMaps.findIndex(map => map.id === unprocessedItem.newId) + newMaps.splice(index, 1) } else if (unprocessedItem.item === "token") { unprocessedTokens += 1 + const index = newTokens.findIndex(token => token.id === unprocessedItem.newId) + newTokens.splice(index, 1) } } } - addWarningToast("Could not import item(s)", unprocessedItems) + const unprocessedItemNames = unprocessedItems.map(item => item.name) + addWarningToast("Could not import item(s)", unprocessedItemNames) } // Add map groups with new ids From 8f78da4e11c66bfb0196213e5bddfd22fa3a8ac1 Mon Sep 17 00:00:00 2001 From: nthouliss Date: Mon, 11 Apr 2022 15:55:20 +1000 Subject: [PATCH 25/37] Remove map states of corrupted maps on import --- src/modals/ImportExportModal.tsx | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/modals/ImportExportModal.tsx b/src/modals/ImportExportModal.tsx index 3b0ce6e..b57be21 100644 --- a/src/modals/ImportExportModal.tsx +++ b/src/modals/ImportExportModal.tsx @@ -325,24 +325,39 @@ function ImportExportModal({ } } + // compare items added to newAssetIds against those that were processed const unprocessedAssets = Object.keys(newAssetIds).filter(item => processedAssetIds.indexOf(item) < 0); let unprocessedMaps = 0 let unprocessedTokens = 0 + // check if there are any items that have been unprocessed if (unprocessedAssets.length > 0) { const unprocessedItems: { id: string, name: string }[] = [] for (let item of unprocessedAssets) { + // get information of unprocessed item from oldAssetIds list let unprocessedItem = oldAssetIds[item] + // should only remove corrupted asset once (one map can have multiple unprocessed assets) if (!!!(unprocessedItems.some(value => value.id === unprocessedItem.itemId))) { unprocessedItems.push({ id: unprocessedItem.itemId, name: unprocessedItem.itemName }) if (unprocessedItem.item === "map") { unprocessedMaps += 1 + + // remove corrupt map from newMaps list -> otherwise corrupt data will be imported const index = newMaps.findIndex(map => map.id === unprocessedItem.newId) - newMaps.splice(index, 1) + if (index !== -1) { + newMaps.splice(index, 1) + } + + const stateIndex = newStates.findIndex(state => state.mapId === unprocessedItem.newId) + if (stateIndex !== -1) { + newStates.splice(stateIndex, 1) + } } else if (unprocessedItem.item === "token") { unprocessedTokens += 1 const index = newTokens.findIndex(token => token.id === unprocessedItem.newId) - newTokens.splice(index, 1) + if (index !== -1) { + newTokens.splice(index, 1) + } } } } From 3d0a3a74e0a835331aae9f7e6d54e42ef2816042 Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Thu, 21 Apr 2022 09:33:43 +1000 Subject: [PATCH 26/37] Fix toggle fog being triggered with middle mouse drag --- src/components/tools/FogTool.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/components/tools/FogTool.tsx b/src/components/tools/FogTool.tsx index 94494e8..726c697 100644 --- a/src/components/tools/FogTool.tsx +++ b/src/components/tools/FogTool.tsx @@ -325,7 +325,7 @@ function FogTool({ setDrawingShape(null); } - eraseHoveredShapes(); + eraseHoveredShapes(props); setIsBrushDown(false); } @@ -566,7 +566,10 @@ function FogTool({ }); }, [toolSettings.useFogCut]); - function eraseHoveredShapes() { + function eraseHoveredShapes(event: any) { + if (!leftMouseButton(event)) { + return; + } // Erase if (hoveredShapes.length > 0) { if (toolSettings.type === "remove") { @@ -605,9 +608,14 @@ function FogTool({ handleShapeOver(shape, isBrushDown)} + onMouseMove={(e: Konva.KonvaEventObject) => + (!isBrushDown || leftMouseButton(e)) && + handleShapeOver(shape, isBrushDown) + } onTouchOver={() => handleShapeOver(shape, isBrushDown)} - onMouseDown={() => handleShapeOver(shape, true)} + onMouseDown={(e: Konva.KonvaEventObject) => + leftMouseButton(e) && handleShapeOver(shape, true) + } onTouchStart={() => handleShapeOver(shape, true)} onMouseUp={eraseHoveredShapes} onTouchEnd={eraseHoveredShapes} From c4e1589eb96df4be2e1231110e672d12a6110b72 Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Thu, 21 Apr 2022 10:09:32 +1000 Subject: [PATCH 27/37] Add blog message to the home page --- src/routes/Home.tsx | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/routes/Home.tsx b/src/routes/Home.tsx index 4747936..edc5ea3 100644 --- a/src/routes/Home.tsx +++ b/src/routes/Home.tsx @@ -1,5 +1,14 @@ import { useState, useEffect } from "react"; -import { Flex, Button, Image, Text, IconButton, Link } from "theme-ui"; +import { + Flex, + Button, + Image, + Text, + IconButton, + Link, + Message, + Paragraph, +} from "theme-ui"; import { useHistory } from "react-router-dom"; import Footer from "../components/Footer"; @@ -141,6 +150,18 @@ function Home() { onRequestClose={() => setIsGettingStartedModalOpen(false)} /> + + + Check out our new blog{" "} + for all the news on the next version of Owlbear Rodeo + +