From ef00135f211dfae41987718bdef60f9739107d29 Mon Sep 17 00:00:00 2001 From: Juan Cazala Date: Fri, 4 Aug 2023 14:00:14 -0300 Subject: [PATCH] feat: SDK7 thumbnails (#2817) * feat: add support for screenshots in sdk7 projects * fix: take screenshot of newly created project --- package-lock.json | 527 +++++++++++++++-------------- package.json | 3 +- src/modules/editor/sagas.ts | 54 +-- src/modules/inspector/actions.ts | 4 + src/modules/inspector/reducer.ts | 19 +- src/modules/inspector/sagas.ts | 155 ++++++--- src/modules/inspector/selectors.ts | 1 + 7 files changed, 433 insertions(+), 330 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8918bc96..72fcd6fc6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,8 +15,9 @@ "@dcl/content-hash-tree": "^1.1.3", "@dcl/crypto": "^3.0.1", "@dcl/hashing": "^3.0.4", + "@dcl/mini-rpc": "^1.0.6", "@dcl/schemas": "^8.2.2", - "@dcl/sdk": "^7.3.3", + "@dcl/sdk": "^7.3.6", "@dcl/ui-env": "^1.2.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^11.0.0", @@ -2292,9 +2293,9 @@ } }, "node_modules/@dcl/ecs": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/ecs/-/ecs-7.3.3.tgz", - "integrity": "sha512-pgOzUXzebulUlNtwCkpp8J8T2bSPoIdDA0Pru87h9rifDiaKj12KQCm6TcFHzXsl0Zm8Ff46OR6PaWx/neVqEw==" + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/ecs/-/ecs-7.3.6.tgz", + "integrity": "sha512-yxc/XXGWILDLvU8UJorKM0n97n+uqrv6puSx9i4nSQ2P1e4Wrw8ukcr4QE9azyvdi9jOB9GP5a5JOhDBJbzUfQ==" }, "node_modules/@dcl/ecs-math": { "version": "2.0.2", @@ -2312,14 +2313,14 @@ "integrity": "sha512-Cg+MoIOn+BYmQV2q8zSFnNYY+GldlnUazwBnfgrq3i66ZxOaZ65h01btd8OUtSAlfWG4VTNIOHDjtKqmuwJNBg==" }, "node_modules/@dcl/inspector": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/inspector/-/inspector-7.3.3.tgz", - "integrity": "sha512-+Vhm69fjO8SEWGz2GgmI3yueAs6I9LlfTR11ToD9o9mVk7Dxoxb8sgwyx841DzQRv+ShyrQ0kB3foS839ytAzQ==" + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/inspector/-/inspector-7.3.6.tgz", + "integrity": "sha512-17foKuR+FAYuXCZArnqKQZtLKIm/s2ooCpsgFKpWY6lgdYodcYHu7qtNy7VMa9j+U5GO1qQxkX9ET4F3GmrJHw==" }, "node_modules/@dcl/js-runtime": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/js-runtime/-/js-runtime-7.3.3.tgz", - "integrity": "sha512-t+oM/A8tRy5sOqEY40a/cDA+oUkIA1FZMjH3ZuEoRah0UXGnwHz36m32A/uu4Uz3UYEYrxbG5EbkBWxwW9+Wmw==" + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/js-runtime/-/js-runtime-7.3.6.tgz", + "integrity": "sha512-n15VTV5wmilxjgeUJq1dMLfcBr3EW/+85Ngz+10RJUbXK0VubHZcqha/STQ8B6N0MkZk75QCAGIb8MxvYzSTrg==" }, "node_modules/@dcl/kernel": { "version": "1.0.0-2505075507.commit-6af9c3b", @@ -2396,6 +2397,15 @@ } } }, + "node_modules/@dcl/mini-rpc": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@dcl/mini-rpc/-/mini-rpc-1.0.6.tgz", + "integrity": "sha512-Oo61XGPub4s2uGowwjpW2mJs3CVIRDY0kQzJGF2fn3z4MePoq3jTBQbNU7bpkonFmAuoQCR0kJB63GEPRtjdsg==", + "dependencies": { + "fp-future": "^1.0.1", + "mitt": "^3.0.1" + } + }, "node_modules/@dcl/posix": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@dcl/posix/-/posix-1.0.4.tgz", @@ -2410,11 +2420,11 @@ } }, "node_modules/@dcl/react-ecs": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/react-ecs/-/react-ecs-7.3.3.tgz", - "integrity": "sha512-dt/2dW73xula2MQX/CUiF1Hdvujl7ZqzOmQtTilG2dDCj8VKAumrp+2IcUAgihlmpIXaipUYCLHHknl4bskThQ==", + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/react-ecs/-/react-ecs-7.3.6.tgz", + "integrity": "sha512-PJ77UvtKF/HQNV8Qt0cetzkzcw1KOEWqP6FvM3vjCpxz34OhaYmJPAb14pOTZG4UXsaY24pvyka84fsbzbamtA==", "dependencies": { - "@dcl/ecs": "7.3.3", + "@dcl/ecs": "7.3.6", "react": "^18.2.0", "react-reconciler": "^0.29.0" } @@ -2481,26 +2491,26 @@ } }, "node_modules/@dcl/sdk": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/sdk/-/sdk-7.3.3.tgz", - "integrity": "sha512-IKOt7NanePicnmR8ue9AS0wKVf31u1kzVAg+DUxWXkRSGJlKSaN9R/ZroUrD0XrDE6hL92KveIjCe1gpdc9x8A==", + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/sdk/-/sdk-7.3.6.tgz", + "integrity": "sha512-G/rP+VuHl9qjDsPLzEZx2p8m70EJ6x56wNcxi57ZpelC6W+4J7a4Yu2kwQ9a01JU6vSkA3ImYv9XfkfV5PFM5g==", "dependencies": { - "@dcl/ecs": "7.3.3", + "@dcl/ecs": "7.3.6", "@dcl/ecs-math": "2.0.2", "@dcl/explorer": "1.0.132930-20230725144125.commit-5991944", - "@dcl/js-runtime": "7.3.3", - "@dcl/react-ecs": "7.3.3", - "@dcl/sdk-commands": "7.3.3" + "@dcl/js-runtime": "7.3.6", + "@dcl/react-ecs": "7.3.6", + "@dcl/sdk-commands": "7.3.6" } }, "node_modules/@dcl/sdk-commands": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/sdk-commands/-/sdk-commands-7.3.3.tgz", - "integrity": "sha512-LzyICrMlaLyStTjZznjNGf61oxvD4RxPLE/Av1EAAM0TO3Mak7914kQch2yqMcoKM0tnDAWofyvmpnl3kBHz1Q==", + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/sdk-commands/-/sdk-commands-7.3.6.tgz", + "integrity": "sha512-+aBelHoJrFNNEBqSUEgGhk4CFB5I/uE9NLvXX1vp884+xsIdBSrmSHJ38DT9VUtaNkFBNnbznBVqksi6tzOcGw==", "dependencies": { - "@dcl/ecs": "7.3.3", + "@dcl/ecs": "7.3.6", "@dcl/hashing": "1.1.3", - "@dcl/inspector": "7.3.3", + "@dcl/inspector": "7.3.6", "@dcl/linker-dapp": "0.9.1", "@dcl/mini-comms": "1.0.1-20230216163137.commit-a4c75be", "@dcl/protocol": "1.0.0-5623934099.commit-07e0626", @@ -2517,7 +2527,7 @@ "chokidar": "^3.5.3", "colorette": "^2.0.19", "dcl-catalyst-client": "^21.5.0", - "esbuild": "^0.17.12", + "esbuild": "^0.18.17", "extract-zip": "2.0.1", "fp-future": "^1.0.1", "glob": "^9.3.2", @@ -2544,9 +2554,9 @@ } }, "node_modules/@dcl/sdk-commands/node_modules/@dcl/schemas": { - "version": "8.2.3-20230718182824.commit-356025c", - "resolved": "https://registry.npmjs.org/@dcl/schemas/-/schemas-8.2.3-20230718182824.commit-356025c.tgz", - "integrity": "sha512-5/Wp8odYxfNahGChAM7M7xl1C8A5okSlxGicjboeuL8g0YQ4HojlwYQ9jnqZhbYcc+Xp9KoOZL0pzzzez+7HPQ==", + "version": "8.2.3-20230801124703.commit-ade94fc", + "resolved": "https://registry.npmjs.org/@dcl/schemas/-/schemas-8.2.3-20230801124703.commit-ade94fc.tgz", + "integrity": "sha512-GP8veICDcxZaxcCbsr8oT0tgOtv3OPN+LJMo3DsNPx1ABe2UhrjJGk5qETfZX5qyTtcKLNMhEMZ3SP11PbU2qg==", "dependencies": { "ajv": "^8.11.0", "ajv-errors": "^3.0.0", @@ -2738,9 +2748,9 @@ "integrity": "sha512-cy3+dN6Exm4bd2cpMAx7aHyqztfuRhKOr9Bny0irJi79y1nnnGVeOxc6pPSDcO4uR3JFmZit9B5SifT1AxXHiw==" }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", + "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", "cpu": [ "arm" ], @@ -2753,9 +2763,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", + "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", "cpu": [ "arm64" ], @@ -2768,9 +2778,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", + "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", "cpu": [ "x64" ], @@ -2783,9 +2793,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", + "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", "cpu": [ "arm64" ], @@ -2798,9 +2808,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", + "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", "cpu": [ "x64" ], @@ -2813,9 +2823,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", + "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", "cpu": [ "arm64" ], @@ -2828,9 +2838,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", + "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", "cpu": [ "x64" ], @@ -2843,9 +2853,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", + "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", "cpu": [ "arm" ], @@ -2858,9 +2868,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", + "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", "cpu": [ "arm64" ], @@ -2873,9 +2883,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", + "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", "cpu": [ "ia32" ], @@ -2888,9 +2898,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", + "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", "cpu": [ "loong64" ], @@ -2903,9 +2913,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", + "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", "cpu": [ "mips64el" ], @@ -2918,9 +2928,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", + "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", "cpu": [ "ppc64" ], @@ -2933,9 +2943,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", + "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", "cpu": [ "riscv64" ], @@ -2948,9 +2958,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", + "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", "cpu": [ "s390x" ], @@ -2963,9 +2973,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", "cpu": [ "x64" ], @@ -2978,9 +2988,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", + "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", "cpu": [ "x64" ], @@ -2993,9 +3003,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", + "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", "cpu": [ "x64" ], @@ -3008,9 +3018,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", + "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", "cpu": [ "x64" ], @@ -3023,9 +3033,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", + "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", "cpu": [ "arm64" ], @@ -3038,9 +3048,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", + "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", "cpu": [ "ia32" ], @@ -3053,9 +3063,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", + "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", "cpu": [ "x64" ], @@ -14594,9 +14604,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -14605,28 +14615,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" } }, "node_modules/escalade": { @@ -32401,9 +32411,9 @@ } }, "node_modules/ts-proto": { - "version": "1.156.1", - "resolved": "https://registry.npmjs.org/ts-proto/-/ts-proto-1.156.1.tgz", - "integrity": "sha512-zgEGjaUySjWs7e4vdg5xNk/nxMinQnIMG+0KcvEBmE1vy03Yvc7tmeoJdB7qt/p/+0taEUwEdbjegR5t1B+nEA==", + "version": "1.156.2", + "resolved": "https://registry.npmjs.org/ts-proto/-/ts-proto-1.156.2.tgz", + "integrity": "sha512-0ZAbGmfvB2R79QJfpTIk56T8xM4k9ZS+z77517HDpuFZFizCMceCIE3IhdYQWbmP1oSYLzw0AeVbVHi2PIigKQ==", "dependencies": { "case-anything": "^2.1.13", "protobufjs": "^7.2.4", @@ -32998,9 +33008,9 @@ } }, "node_modules/undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", + "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", "dependencies": { "busboy": "^1.6.0" }, @@ -37347,9 +37357,9 @@ } }, "@dcl/ecs": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/ecs/-/ecs-7.3.3.tgz", - "integrity": "sha512-pgOzUXzebulUlNtwCkpp8J8T2bSPoIdDA0Pru87h9rifDiaKj12KQCm6TcFHzXsl0Zm8Ff46OR6PaWx/neVqEw==" + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/ecs/-/ecs-7.3.6.tgz", + "integrity": "sha512-yxc/XXGWILDLvU8UJorKM0n97n+uqrv6puSx9i4nSQ2P1e4Wrw8ukcr4QE9azyvdi9jOB9GP5a5JOhDBJbzUfQ==" }, "@dcl/ecs-math": { "version": "2.0.2", @@ -37367,14 +37377,14 @@ "integrity": "sha512-Cg+MoIOn+BYmQV2q8zSFnNYY+GldlnUazwBnfgrq3i66ZxOaZ65h01btd8OUtSAlfWG4VTNIOHDjtKqmuwJNBg==" }, "@dcl/inspector": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/inspector/-/inspector-7.3.3.tgz", - "integrity": "sha512-+Vhm69fjO8SEWGz2GgmI3yueAs6I9LlfTR11ToD9o9mVk7Dxoxb8sgwyx841DzQRv+ShyrQ0kB3foS839ytAzQ==" + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/inspector/-/inspector-7.3.6.tgz", + "integrity": "sha512-17foKuR+FAYuXCZArnqKQZtLKIm/s2ooCpsgFKpWY6lgdYodcYHu7qtNy7VMa9j+U5GO1qQxkX9ET4F3GmrJHw==" }, "@dcl/js-runtime": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/js-runtime/-/js-runtime-7.3.3.tgz", - "integrity": "sha512-t+oM/A8tRy5sOqEY40a/cDA+oUkIA1FZMjH3ZuEoRah0UXGnwHz36m32A/uu4Uz3UYEYrxbG5EbkBWxwW9+Wmw==" + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/js-runtime/-/js-runtime-7.3.6.tgz", + "integrity": "sha512-n15VTV5wmilxjgeUJq1dMLfcBr3EW/+85Ngz+10RJUbXK0VubHZcqha/STQ8B6N0MkZk75QCAGIb8MxvYzSTrg==" }, "@dcl/kernel": { "version": "1.0.0-2505075507.commit-6af9c3b", @@ -37437,6 +37447,15 @@ } } }, + "@dcl/mini-rpc": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@dcl/mini-rpc/-/mini-rpc-1.0.6.tgz", + "integrity": "sha512-Oo61XGPub4s2uGowwjpW2mJs3CVIRDY0kQzJGF2fn3z4MePoq3jTBQbNU7bpkonFmAuoQCR0kJB63GEPRtjdsg==", + "requires": { + "fp-future": "^1.0.1", + "mitt": "^3.0.1" + } + }, "@dcl/posix": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@dcl/posix/-/posix-1.0.4.tgz", @@ -37451,11 +37470,11 @@ } }, "@dcl/react-ecs": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/react-ecs/-/react-ecs-7.3.3.tgz", - "integrity": "sha512-dt/2dW73xula2MQX/CUiF1Hdvujl7ZqzOmQtTilG2dDCj8VKAumrp+2IcUAgihlmpIXaipUYCLHHknl4bskThQ==", + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/react-ecs/-/react-ecs-7.3.6.tgz", + "integrity": "sha512-PJ77UvtKF/HQNV8Qt0cetzkzcw1KOEWqP6FvM3vjCpxz34OhaYmJPAb14pOTZG4UXsaY24pvyka84fsbzbamtA==", "requires": { - "@dcl/ecs": "7.3.3", + "@dcl/ecs": "7.3.6", "react": "^18.2.0", "react-reconciler": "^0.29.0" }, @@ -37515,26 +37534,26 @@ } }, "@dcl/sdk": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/sdk/-/sdk-7.3.3.tgz", - "integrity": "sha512-IKOt7NanePicnmR8ue9AS0wKVf31u1kzVAg+DUxWXkRSGJlKSaN9R/ZroUrD0XrDE6hL92KveIjCe1gpdc9x8A==", + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/sdk/-/sdk-7.3.6.tgz", + "integrity": "sha512-G/rP+VuHl9qjDsPLzEZx2p8m70EJ6x56wNcxi57ZpelC6W+4J7a4Yu2kwQ9a01JU6vSkA3ImYv9XfkfV5PFM5g==", "requires": { - "@dcl/ecs": "7.3.3", + "@dcl/ecs": "7.3.6", "@dcl/ecs-math": "2.0.2", "@dcl/explorer": "1.0.132930-20230725144125.commit-5991944", - "@dcl/js-runtime": "7.3.3", - "@dcl/react-ecs": "7.3.3", - "@dcl/sdk-commands": "7.3.3" + "@dcl/js-runtime": "7.3.6", + "@dcl/react-ecs": "7.3.6", + "@dcl/sdk-commands": "7.3.6" } }, "@dcl/sdk-commands": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@dcl/sdk-commands/-/sdk-commands-7.3.3.tgz", - "integrity": "sha512-LzyICrMlaLyStTjZznjNGf61oxvD4RxPLE/Av1EAAM0TO3Mak7914kQch2yqMcoKM0tnDAWofyvmpnl3kBHz1Q==", + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@dcl/sdk-commands/-/sdk-commands-7.3.6.tgz", + "integrity": "sha512-+aBelHoJrFNNEBqSUEgGhk4CFB5I/uE9NLvXX1vp884+xsIdBSrmSHJ38DT9VUtaNkFBNnbznBVqksi6tzOcGw==", "requires": { - "@dcl/ecs": "7.3.3", + "@dcl/ecs": "7.3.6", "@dcl/hashing": "1.1.3", - "@dcl/inspector": "7.3.3", + "@dcl/inspector": "7.3.6", "@dcl/linker-dapp": "0.9.1", "@dcl/mini-comms": "1.0.1-20230216163137.commit-a4c75be", "@dcl/protocol": "1.0.0-5623934099.commit-07e0626", @@ -37551,7 +37570,7 @@ "chokidar": "^3.5.3", "colorette": "^2.0.19", "dcl-catalyst-client": "^21.5.0", - "esbuild": "^0.17.12", + "esbuild": "^0.18.17", "extract-zip": "2.0.1", "fp-future": "^1.0.1", "glob": "^9.3.2", @@ -37575,9 +37594,9 @@ } }, "@dcl/schemas": { - "version": "8.2.3-20230718182824.commit-356025c", - "resolved": "https://registry.npmjs.org/@dcl/schemas/-/schemas-8.2.3-20230718182824.commit-356025c.tgz", - "integrity": "sha512-5/Wp8odYxfNahGChAM7M7xl1C8A5okSlxGicjboeuL8g0YQ4HojlwYQ9jnqZhbYcc+Xp9KoOZL0pzzzez+7HPQ==", + "version": "8.2.3-20230801124703.commit-ade94fc", + "resolved": "https://registry.npmjs.org/@dcl/schemas/-/schemas-8.2.3-20230801124703.commit-ade94fc.tgz", + "integrity": "sha512-GP8veICDcxZaxcCbsr8oT0tgOtv3OPN+LJMo3DsNPx1ABe2UhrjJGk5qETfZX5qyTtcKLNMhEMZ3SP11PbU2qg==", "requires": { "ajv": "^8.11.0", "ajv-errors": "^3.0.0", @@ -37722,135 +37741,135 @@ "integrity": "sha512-cy3+dN6Exm4bd2cpMAx7aHyqztfuRhKOr9Bny0irJi79y1nnnGVeOxc6pPSDcO4uR3JFmZit9B5SifT1AxXHiw==" }, "@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", + "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", "optional": true }, "@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", + "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", "optional": true }, "@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", + "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", + "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", "optional": true }, "@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", + "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", + "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", + "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", "optional": true }, "@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", + "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", "optional": true }, "@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", + "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", "optional": true }, "@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", + "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", "optional": true }, "@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", + "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", + "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", + "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", + "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", "optional": true }, "@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", + "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", "optional": true }, "@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", + "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", + "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", "optional": true }, "@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", + "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", "optional": true }, "@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", + "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", "optional": true }, "@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", + "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", "optional": true }, "@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", + "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", "optional": true }, "@eslint/eslintrc": { @@ -47037,32 +47056,32 @@ } }, "esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "requires": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", + "requires": { + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" } }, "escalade": { @@ -61182,9 +61201,9 @@ } }, "ts-proto": { - "version": "1.156.1", - "resolved": "https://registry.npmjs.org/ts-proto/-/ts-proto-1.156.1.tgz", - "integrity": "sha512-zgEGjaUySjWs7e4vdg5xNk/nxMinQnIMG+0KcvEBmE1vy03Yvc7tmeoJdB7qt/p/+0taEUwEdbjegR5t1B+nEA==", + "version": "1.156.2", + "resolved": "https://registry.npmjs.org/ts-proto/-/ts-proto-1.156.2.tgz", + "integrity": "sha512-0ZAbGmfvB2R79QJfpTIk56T8xM4k9ZS+z77517HDpuFZFizCMceCIE3IhdYQWbmP1oSYLzw0AeVbVHi2PIigKQ==", "requires": { "case-anything": "^2.1.13", "protobufjs": "^7.2.4", @@ -61666,9 +61685,9 @@ } }, "undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", + "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", "requires": { "busboy": "^1.6.0" } diff --git a/package.json b/package.json index 3f6bef1d8..adc9add10 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,9 @@ "@dcl/content-hash-tree": "^1.1.3", "@dcl/crypto": "^3.0.1", "@dcl/hashing": "^3.0.4", + "@dcl/mini-rpc": "^1.0.6", "@dcl/schemas": "^8.2.2", - "@dcl/sdk": "^7.3.3", + "@dcl/sdk": "^7.3.6", "@dcl/ui-env": "^1.2.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^11.0.0", diff --git a/src/modules/editor/sagas.ts b/src/modules/editor/sagas.ts index 0f1d9367f..62c085254 100644 --- a/src/modules/editor/sagas.ts +++ b/src/modules/editor/sagas.ts @@ -121,6 +121,8 @@ import { ROTATION_GRID_RESOLUTION, fromCatalystWearableToWearable } from './utils' +import { MessageTransport } from '@dcl/mini-rpc' +import { CameraClient } from '@dcl/inspector' const editorWindow = window as EditorWindow export function* editorSaga() { @@ -565,30 +567,44 @@ function* handleScreenshot(_: TakeScreenshotAction) { const currentProject: Project | null = yield select(getCurrentProject) if (!currentProject) return - // wait for editor to be ready - let ready: boolean = yield select(isReady) - while (!ready) { - const readyAction: SetEditorReadyAction = yield take(SET_EDITOR_READY) - ready = readyAction.payload.isReady - } + const scene: Scene | null = yield select(getCurrentScene) + if (!scene) return - // wait for assets to load - let loading: boolean = yield select(isLoading) - while (loading) { - const loadingAction: SetEditorLoadingAction = yield take(SET_EDITOR_LOADING) - loading = loadingAction.payload.isLoading - } + if (scene.sdk6) { + // wait for editor to be ready + let ready: boolean = yield select(isReady) + while (!ready) { + const readyAction: SetEditorReadyAction = yield take(SET_EDITOR_READY) + ready = readyAction.payload.isReady + } - // rendering leeway - yield delay(2000) + // wait for assets to load + let loading: boolean = yield select(isLoading) + while (loading) { + const loadingAction: SetEditorLoadingAction = yield take(SET_EDITOR_LOADING) + loading = loadingAction.payload.isLoading + } + + // rendering leeway + yield delay(2000) - const screenshot: string = yield call(() => editorWindow.editor.takeScreenshot()) - if (!screenshot) return + const screenshot: string = yield call(() => editorWindow.editor.takeScreenshot()) + if (!screenshot) return - const thumbnail: string | null = yield call(() => resizeScreenshot(screenshot, THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT)) - if (!thumbnail) return + const thumbnail: string | null = yield call(() => resizeScreenshot(screenshot, THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT)) + if (!thumbnail) return - yield put(editProjectThumbnail(currentProject.id, thumbnail)) + yield put(editProjectThumbnail(currentProject.id, thumbnail)) + } else { + const iframe = document.getElementById('inspector') as HTMLIFrameElement | null + if (!iframe || !iframe.contentWindow!) return + const transport = new MessageTransport(window, iframe.contentWindow) + const camera = new CameraClient(transport) + const screenshot: string = yield call([camera, 'takeScreenshot'], +iframe.width, +iframe.height) + const thumbnail: string | null = yield call(resizeScreenshot, screenshot, THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT) + if (!thumbnail) return + yield put(editProjectThumbnail(currentProject.id, thumbnail)) + } } catch (e) { // skip screenshot } diff --git a/src/modules/inspector/actions.ts b/src/modules/inspector/actions.ts index 2611ff9f1..7e471e096 100644 --- a/src/modules/inspector/actions.ts +++ b/src/modules/inspector/actions.ts @@ -27,3 +27,7 @@ export const rpcFailure = ( nonce: number ) => action(RPC_FAILURE, { method, params, error, nonce }) export type RPCFailureAction = ReturnType + +export const TOGGLE_SCREENSHOT = 'Toggle Screenshot' +export const toggleScreenshot = (enabled: boolean) => action(TOGGLE_SCREENSHOT, { enabled }) +export type ToggleScreenshotAction = ReturnType diff --git a/src/modules/inspector/reducer.ts b/src/modules/inspector/reducer.ts index 4848d37f9..499a3e166 100644 --- a/src/modules/inspector/reducer.ts +++ b/src/modules/inspector/reducer.ts @@ -1,14 +1,23 @@ -import { Action } from 'typesafe-actions' +import { ToggleScreenshotAction, TOGGLE_SCREENSHOT } from './actions' -/* eslint-disable @typescript-eslint/ban-types */ -export type InspectorState = {} +export type InspectorState = { + screenshotEnabled: boolean +} -const INITIAL_STATE: InspectorState = {} +const INITIAL_STATE: InspectorState = { + screenshotEnabled: true +} -type InspectorReducerAction = Action +type InspectorReducerAction = ToggleScreenshotAction export function inspectorReducer(state = INITIAL_STATE, action: InspectorReducerAction) { switch (action.type) { + case TOGGLE_SCREENSHOT: { + return { + ...state, + screenshotEnabled: action.payload.enabled + } + } default: return state } diff --git a/src/modules/inspector/sagas.ts b/src/modules/inspector/sagas.ts index 174762d28..e1c873c5c 100644 --- a/src/modules/inspector/sagas.ts +++ b/src/modules/inspector/sagas.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/restrict-template-expressions */ -import { call, put, race, select, take, takeEvery } from 'redux-saga/effects' +import { call, delay, put, race, select, take, takeEvery } from 'redux-saga/effects' import { future, IFuture } from 'fp-future' import { hashV1 } from '@dcl/hashing' import { LoginFailureAction, LoginSuccessAction, LOGIN_FAILURE, LOGIN_SUCCESS } from 'modules/identity/actions' @@ -33,17 +33,21 @@ import { RPCSuccessAction, RPC_FAILURE, RPC_REQUEST, - RPC_SUCCESS + RPC_SUCCESS, + toggleScreenshot } from './actions' import { Project } from 'modules/project/types' import { isLoadingType } from 'decentraland-dapps/dist/modules/loading/selectors' -import { IframeStorage, MessageTransport } from '@dcl/inspector' +import { IframeStorage } from '@dcl/inspector' +import { MessageTransport } from '@dcl/mini-rpc' import { getParcels } from './utils' import { BuilderAPI, getContentsStorageUrl } from 'lib/api/builder' import { NO_CACHE_HEADERS } from 'lib/headers' import { Scene, SceneSDK7 } from 'modules/scene/types' -import { updateScene } from 'modules/scene/actions' +import { updateScene, UPDATE_SCENE } from 'modules/scene/actions' import { RootStore } from 'modules/common/types' +import { takeScreenshot } from 'modules/editor/actions' +import { isScreenshotEnabled } from './selectors' let nonces = 0 const getNonce = () => nonces++ @@ -56,6 +60,7 @@ export function* inspectorSaga(builder: BuilderAPI, store: RootStore) { yield takeEvery(RPC_REQUEST, handleRpcRequest) yield takeEvery(RPC_SUCCESS, handleRpcSuccess) yield takeEvery(RPC_FAILURE, handleRpcFailure) + yield takeEvery(UPDATE_SCENE, handleUpdateScene) function* handleOpenInspector(_action: OpenInspectorAction) { try { @@ -92,7 +97,7 @@ export function* inspectorSaga(builder: BuilderAPI, store: RootStore) { } } - function handleConnectInspector(action: ConnectInspectorAction) { + function* handleConnectInspector(action: ConnectInspectorAction) { const { iframeId } = action.payload const iframe = document.getElementById(iframeId) as HTMLIFrameElement | null @@ -100,6 +105,9 @@ export function* inspectorSaga(builder: BuilderAPI, store: RootStore) { throw new Error(`Iframe with id="${iframeId}" not found`) } + // disable the screenshots, turn it on once the scene is fully loaded + yield put(toggleScreenshot(false)) + const transport = new MessageTransport(window, iframe.contentWindow!, '*') const storage = new IframeStorage.Server(transport) @@ -114,6 +122,21 @@ export function* inspectorSaga(builder: BuilderAPI, store: RootStore) { return promise }) } + + // wait for RPC to be idle (3 seconds) + yield waitForRpcIdle(3000) + + // turn on screenshots + yield put(toggleScreenshot(true)) + + // check if project doesn't have a thumbnail (ie. because it's new), and if so, take a screenshot + const project: Project | null = yield select(getCurrentProject) + if (project) { + const result: boolean = yield call(hasThumbnail, project) + if (!result) { + yield put(takeScreenshot()) + } + } } function* handleRpcRequest(action: RPCRequestAction) { @@ -143,6 +166,13 @@ export function* inspectorSaga(builder: BuilderAPI, store: RootStore) { } } + function* handleUpdateScene() { + const isEnabled: boolean = yield select(isScreenshotEnabled) + if (isEnabled) { + yield put(takeScreenshot()) + } + } + // HANDLERS const handlers: Record<`${IframeStorage.Method}`, (params: any) => Generator> = { @@ -310,66 +340,64 @@ export function* inspectorSaga(builder: BuilderAPI, store: RootStore) { // remove from memory assets.delete(path) } +} - // UTILS - - function* getProject(projectId: string): any { - // grab projects from store - const projects: Record = yield select(getProjects) - const project = projects[projectId] - - // if project is found in store, return it - if (project) { - return project - } +function* getProject(projectId: string): any { + // grab projects from store + const projects: Record = yield select(getProjects) + const project = projects[projectId] - // if project is not in the store, check if projects are being loaded - const projectsLoadingState: ReturnType = yield select(getLoadingProjects) - const isLoading = isLoadingType(projectsLoadingState, LOAD_PROJECTS_REQUEST) + // if project is found in store, return it + if (project) { + return project + } - // if projects are not being loaded, then request them - if (!isLoading) { - yield put(loadProjectsRequest()) - } + // if project is not in the store, check if projects are being loaded + const projectsLoadingState: ReturnType = yield select(getLoadingProjects) + const isLoading = isLoadingType(projectsLoadingState, LOAD_PROJECTS_REQUEST) - // wait for projects to be loaded - const result: { success?: LoadProjectsSuccessAction; failure?: LoadProjectsFailureAction } = yield race({ - success: take(LOAD_PROJECTS_SUCCESS), - failure: take(LOAD_PROJECTS_FAILURE) - }) + // if projects are not being loaded, then request them + if (!isLoading) { + yield put(loadProjectsRequest()) + } - // if load is successful try getting the project again - if (result.success) { - const _project: Project = yield getProject(projectId) - return _project - } + // wait for projects to be loaded + const result: { success?: LoadProjectsSuccessAction; failure?: LoadProjectsFailureAction } = yield race({ + success: take(LOAD_PROJECTS_SUCCESS), + failure: take(LOAD_PROJECTS_FAILURE) + }) - // if load fails then throw - if (result.failure) { - console.error(result.failure) - throw new Error(`Could not load project`) - } + // if load is successful try getting the project again + if (result.success) { + const _project: Project = yield getProject(projectId) + return _project } - function* getScene() { - const project: Project = yield select(getCurrentProject) + // if load fails then throw + if (result.failure) { + console.error(result.failure) + throw new Error(`Could not load project`) + } +} - if (!project) { - throw new Error('Invalid project') - } +function* getScene() { + const project: Project = yield select(getCurrentProject) - const scene: Scene | null = yield select(getCurrentScene) + if (!project) { + throw new Error('Invalid project') + } - if (!scene) { - throw new Error('Invalid scene') - } + const scene: Scene | null = yield select(getCurrentScene) - if (!scene.sdk7) { - throw new Error('Scene must be SDK7') - } + if (!scene) { + throw new Error('Invalid scene') + } - return scene.sdk7 + if (!scene.sdk7) { + throw new Error('Scene must be SDK7') } + + return scene.sdk7 } function* isContentUploaded(path: string, hash: string) { @@ -383,3 +411,28 @@ function* isContentUploaded(path: string, hash: string) { return false } } + +function* waitForRpcIdle(ms: number) { + const { request }: { request: RPCRequestAction | null } = yield race({ + request: take(RPC_REQUEST), + timeout: delay(ms, true) + }) + if (request) { + let elapsed = 0 + while (elapsed < ms) { + const timestamp = Date.now() + yield race([take(RPC_REQUEST), delay(ms, true)]) + elapsed = Date.now() - timestamp + } + } +} + +function* hasThumbnail(project: Project) { + try { + if (!project.thumbnail) return false + const response: Response = yield call(fetch, project.thumbnail, { headers: NO_CACHE_HEADERS }) + return response.ok + } catch (error) { + return false + } +} diff --git a/src/modules/inspector/selectors.ts b/src/modules/inspector/selectors.ts index 1c54b03c8..99e8b6bf0 100644 --- a/src/modules/inspector/selectors.ts +++ b/src/modules/inspector/selectors.ts @@ -1,3 +1,4 @@ import { RootState } from 'modules/common/types' export const getState = (state: RootState) => state.inspector +export const isScreenshotEnabled = (state: RootState) => getState(state).screenshotEnabled