From ac6ad4911d21750c3553632662c316f16ce911ce Mon Sep 17 00:00:00 2001 From: RSamaium Date: Mon, 9 Oct 2023 18:33:46 +0200 Subject: [PATCH] react integration --- docs/.vitepress/config.js | 2 +- packages/client/package-lock.json | 262 ++- packages/client/package.json | 15 + packages/client/src/Gui/Gui.ts | 498 +++++ packages/client/src/Gui/React.ts | 93 + .../client/src/{ => Gui}/RpgGuiCompiled.ts | 0 packages/client/src/Gui/Vue.ts | 109 ++ packages/client/src/Renderer.ts | 8 +- packages/client/src/RpgClientEngine.ts | 2 +- packages/client/src/RpgGui.ts | 553 ------ packages/client/src/Scene/Scene.ts | 4 +- packages/client/src/index.ts | 3 +- packages/common/src/Utils.ts | 9 +- packages/compiler/package-lock.json | 486 +++-- packages/compiler/package.json | 1 + packages/compiler/src/build/client-config.ts | 13 +- .../src/build/vite-plugin-config.toml.ts | 5 +- .../src/build/vite-plugin-map-extract.ts | 2 + .../src/build/vite-plugin-map-update.ts | 2 +- .../compiler/src/build/vite-plugin-require.ts | 4 +- .../compiler/src/build/vite-plugin-tsx-xml.ts | 3 +- packages/sample2/main/client.ts | 46 - packages/sample2/main/gui/test.tsx | 9 + packages/sample2/main/player.ts | 3 +- packages/sample2/package-lock.json | 1729 +++++++++-------- packages/sample2/package.json | 3 + packages/sample2/tsconfig.json | 3 +- 27 files changed, 2235 insertions(+), 1632 deletions(-) create mode 100644 packages/client/src/Gui/Gui.ts create mode 100644 packages/client/src/Gui/React.ts rename packages/client/src/{ => Gui}/RpgGuiCompiled.ts (100%) create mode 100644 packages/client/src/Gui/Vue.ts delete mode 100644 packages/client/src/RpgGui.ts create mode 100644 packages/sample2/main/gui/test.tsx diff --git a/docs/.vitepress/config.js b/docs/.vitepress/config.js index 61a3b8ec..cf3eca0e 100644 --- a/docs/.vitepress/config.js +++ b/docs/.vitepress/config.js @@ -145,7 +145,7 @@ const guideMenu = [{ { text: "Supporting Gamepad Input", link: "/guide/gamepad" }, { text: "Creating Responsive Game Design", link: "/guide/responsive-design" }, { text: "Create Progressive Web Apps (PWA)", link: "/guide/pwa" }, - { text: "Add TailwindCSS", link: "/guide/tailwindcss" } + { text: "Add TailwindCSS", link: "/guide/tailwindcss" }, { text: "Upgrade/Update RPGJS", link: "/guide/upgrade" } ] diff --git a/packages/client/package-lock.json b/packages/client/package-lock.json index 19bbc30d..d63f8c9a 100644 --- a/packages/client/package-lock.json +++ b/packages/client/package-lock.json @@ -9,6 +9,7 @@ "version": "4.0.2", "license": "MIT", "dependencies": { + "@nanostores/react": "^0.7.1", "@pixi/tilemap": "^4.0.0", "@rpgjs/common": "^4.0.2", "@rpgjs/tiled": "^4.0.2", @@ -19,6 +20,8 @@ "lodash.merge": "4.6.2", "pixi-viewport": "^5.0.2", "pixi.js": "7.2.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rxjs": "7.8.0", "simple-room-client": "^2.0.6", "vue": "^3.2.47" @@ -28,6 +31,7 @@ "@rpgjs/compiler": "^4.0.2", "@types/css-font-loading-module": "^0.0.8", "@types/node": "^18.16.0", + "@types/react": "^18.2.25", "typescript": "^5.0.4" } }, @@ -2190,6 +2194,24 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@nanostores/react": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@nanostores/react/-/react-0.7.1.tgz", + "integrity": "sha512-EXQg9N4MdI4eJQz/AZLIx3hxQ6BuBmV4Q55bCd5YCSgEOAW7tGTsIZxpRXxvxLXzflNvHTBvfrDNY38TlSVBkQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "nanostores": "^0.9.0", + "react": ">=18.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2591,12 +2613,12 @@ } }, "node_modules/@rpgjs/common": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rpgjs/common/-/common-4.0.0-rc.12.tgz", - "integrity": "sha512-gBn9ONXVxGPb13gh3AmWf0lS260TlQuGEGRq9YqM+J/HAGmQwjO+sU2I6SE/joGtJBp/bLMXshyYG7qTMrMrmA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/common/-/common-4.0.2.tgz", + "integrity": "sha512-xvPyu07bMr13lCVhukRic19huRsdgNZsL3YyqUeNaqQrgo4/Juy69T7gruYZQh5CITXDR8zI25lolUO4mxE8Dg==", "dependencies": { - "@rpgjs/tiled": "^4.0.0-rc.12", - "@rpgjs/types": "^4.0.0-rc.12", + "@rpgjs/tiled": "^4.0.2", + "@rpgjs/types": "^4.0.2", "rbush": "^3.0.1", "rxjs": "^7.8.0", "sat": "^0.9.0", @@ -2604,9 +2626,9 @@ } }, "node_modules/@rpgjs/compiler": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rpgjs/compiler/-/compiler-4.0.0-rc.12.tgz", - "integrity": "sha512-LzstT2KKUR5omwqEl+Y2mTjic3d1ixm/fdDdn5jzYcZUMM5fU0Aok0XZo2jqECiK35XzsPZTTjRcCBIXfHwP7Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/compiler/-/compiler-4.0.2.tgz", + "integrity": "sha512-Tq/RN7GOlDq690PT31gxHqAqfwHuctx2C++z0k+pCnH19WRLPokO7xwUC8yU0vbI64TGzowLEaWkUFfWWjhRNA==", "dev": true, "dependencies": { "@babel/core": "^7.21.4", @@ -2646,9 +2668,9 @@ } }, "node_modules/@rpgjs/tiled": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rpgjs/tiled/-/tiled-4.0.0-rc.12.tgz", - "integrity": "sha512-BTO9Y+CnWqnPAZEQ1eaPXJAggBarkcojnzP9QpQiKnvgYYDXjjDjtLg9n+TP/b/76IPOW2WCGOhivoJ3sWY4IA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/tiled/-/tiled-4.0.2.tgz", + "integrity": "sha512-XL7+hFHF5lM1o/aRSRO6K32EMuamRMv30PFwtd/vnmyQ3woY+20bHKEBwiSO/1+hZajfFGPnAWZQ0Av0kGhEGA==", "dependencies": { "axios": "^1.3.4", "buffer": "^6.0.3", @@ -2657,9 +2679,9 @@ } }, "node_modules/@rpgjs/types": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rpgjs/types/-/types-4.0.0-rc.12.tgz", - "integrity": "sha512-ZqxcFo0NA5MkDyFJkO41BgoosZZAm0SBhK4I1+M62N9weZUyVl8nHn1w+Wii2MKzmewVH0GcrMRADoRtR3Pu3w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/types/-/types-4.0.2.tgz", + "integrity": "sha512-SvvD25qy0/3WmoNLIoAqObHphfpgvJCgGW+wQqCGH/a2UOAtbErx9BN7xmlx0EH6Ce1+suMGDnfAe8m5bmllwg==", "dependencies": { "rxjs": "^7.8.1" } @@ -2753,6 +2775,29 @@ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==" }, + "node_modules/@types/prop-types": { + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.25", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.25.tgz", + "integrity": "sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react/node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, "node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -2762,6 +2807,12 @@ "@types/node": "*" } }, + "node_modules/@types/scheduler": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==", + "dev": true + }, "node_modules/@types/trusted-types": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", @@ -5040,8 +5091,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/jsesc": { "version": "2.5.2", @@ -5188,6 +5238,17 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", @@ -5377,17 +5438,18 @@ } }, "node_modules/nanostores": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.8.1.tgz", - "integrity": "sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.9.3.tgz", + "integrity": "sha512-KobZjcVyNndNrb5DAjfs0WG0lRcZu5Q1BOrfTOxokFLi25zFrWPjg+joXC6kuDqNfSt9fQwppyjUBkRPtsL+8w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "peer": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" } }, "node_modules/node-releases": { @@ -5858,6 +5920,29 @@ "quickselect": "^2.0.0" } }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -6219,6 +6304,14 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -6302,6 +6395,20 @@ "rxjs": "7.8.0" } }, + "node_modules/simple-room-client/node_modules/nanostores": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.8.1.tgz", + "integrity": "sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -9750,6 +9857,12 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@nanostores/react": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@nanostores/react/-/react-0.7.1.tgz", + "integrity": "sha512-EXQg9N4MdI4eJQz/AZLIx3hxQ6BuBmV4Q55bCd5YCSgEOAW7tGTsIZxpRXxvxLXzflNvHTBvfrDNY38TlSVBkQ==", + "requires": {} + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -10051,12 +10164,12 @@ "optional": true }, "@rpgjs/common": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rpgjs/common/-/common-4.0.0-rc.12.tgz", - "integrity": "sha512-gBn9ONXVxGPb13gh3AmWf0lS260TlQuGEGRq9YqM+J/HAGmQwjO+sU2I6SE/joGtJBp/bLMXshyYG7qTMrMrmA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/common/-/common-4.0.2.tgz", + "integrity": "sha512-xvPyu07bMr13lCVhukRic19huRsdgNZsL3YyqUeNaqQrgo4/Juy69T7gruYZQh5CITXDR8zI25lolUO4mxE8Dg==", "requires": { - "@rpgjs/tiled": "^4.0.0-rc.12", - "@rpgjs/types": "^4.0.0-rc.12", + "@rpgjs/tiled": "^4.0.2", + "@rpgjs/types": "^4.0.2", "rbush": "^3.0.1", "rxjs": "^7.8.0", "sat": "^0.9.0", @@ -10064,9 +10177,9 @@ } }, "@rpgjs/compiler": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rpgjs/compiler/-/compiler-4.0.0-rc.12.tgz", - "integrity": "sha512-LzstT2KKUR5omwqEl+Y2mTjic3d1ixm/fdDdn5jzYcZUMM5fU0Aok0XZo2jqECiK35XzsPZTTjRcCBIXfHwP7Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/compiler/-/compiler-4.0.2.tgz", + "integrity": "sha512-Tq/RN7GOlDq690PT31gxHqAqfwHuctx2C++z0k+pCnH19WRLPokO7xwUC8yU0vbI64TGzowLEaWkUFfWWjhRNA==", "dev": true, "requires": { "@babel/core": "^7.21.4", @@ -10103,9 +10216,9 @@ } }, "@rpgjs/tiled": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rpgjs/tiled/-/tiled-4.0.0-rc.12.tgz", - "integrity": "sha512-BTO9Y+CnWqnPAZEQ1eaPXJAggBarkcojnzP9QpQiKnvgYYDXjjDjtLg9n+TP/b/76IPOW2WCGOhivoJ3sWY4IA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/tiled/-/tiled-4.0.2.tgz", + "integrity": "sha512-XL7+hFHF5lM1o/aRSRO6K32EMuamRMv30PFwtd/vnmyQ3woY+20bHKEBwiSO/1+hZajfFGPnAWZQ0Av0kGhEGA==", "requires": { "axios": "^1.3.4", "buffer": "^6.0.3", @@ -10114,9 +10227,9 @@ } }, "@rpgjs/types": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/@rpgjs/types/-/types-4.0.0-rc.12.tgz", - "integrity": "sha512-ZqxcFo0NA5MkDyFJkO41BgoosZZAm0SBhK4I1+M62N9weZUyVl8nHn1w+Wii2MKzmewVH0GcrMRADoRtR3Pu3w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/types/-/types-4.0.2.tgz", + "integrity": "sha512-SvvD25qy0/3WmoNLIoAqObHphfpgvJCgGW+wQqCGH/a2UOAtbErx9BN7xmlx0EH6Ce1+suMGDnfAe8m5bmllwg==", "requires": { "rxjs": "^7.8.1" }, @@ -10212,6 +10325,31 @@ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==" }, + "@types/prop-types": { + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==", + "dev": true + }, + "@types/react": { + "version": "18.2.25", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.25.tgz", + "integrity": "sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + } + } + }, "@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -10221,6 +10359,12 @@ "@types/node": "*" } }, + "@types/scheduler": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==", + "dev": true + }, "@types/trusted-types": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", @@ -11891,8 +12035,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "jsesc": { "version": "2.5.2", @@ -12003,6 +12146,14 @@ } } }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", @@ -12144,9 +12295,10 @@ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" }, "nanostores": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.8.1.tgz", - "integrity": "sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==" + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.9.3.tgz", + "integrity": "sha512-KobZjcVyNndNrb5DAjfs0WG0lRcZu5Q1BOrfTOxokFLi25zFrWPjg+joXC6kuDqNfSt9fQwppyjUBkRPtsL+8w==", + "peer": true }, "node-releases": { "version": "2.0.13", @@ -12497,6 +12649,23 @@ "quickselect": "^2.0.0" } }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -12771,6 +12940,14 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -12834,6 +13011,13 @@ "msgpack-lite": "0.1.26", "nanostores": "^0.8.0", "rxjs": "7.8.0" + }, + "dependencies": { + "nanostores": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.8.1.tgz", + "integrity": "sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==" + } } }, "source-map": { diff --git a/packages/client/package.json b/packages/client/package.json index 37e26139..5690604e 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -13,9 +13,21 @@ "watch": "tsc -w" }, "keywords": [], + "typesVersions": { + "*": { + "react": [ + "lib/Gui/React.d.ts" + ] + } + }, + "exports": { + ".": "./lib/index.js", + "./react": "./lib/Gui/React.js" + }, "author": "Samuel Ronce", "license": "MIT", "dependencies": { + "@nanostores/react": "^0.7.1", "@pixi/tilemap": "^4.0.0", "@rpgjs/common": "^4.0.2", "@rpgjs/tiled": "^4.0.2", @@ -26,6 +38,8 @@ "lodash.merge": "4.6.2", "pixi-viewport": "^5.0.2", "pixi.js": "7.2.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rxjs": "7.8.0", "simple-room-client": "^2.0.6", "vue": "^3.2.47" @@ -36,6 +50,7 @@ "@rpgjs/compiler": "^4.0.2", "@types/css-font-loading-module": "^0.0.8", "@types/node": "^18.16.0", + "@types/react": "^18.2.25", "typescript": "^5.0.4" }, "type": "module" diff --git a/packages/client/src/Gui/Gui.ts b/packages/client/src/Gui/Gui.ts new file mode 100644 index 00000000..2b96732f --- /dev/null +++ b/packages/client/src/Gui/Gui.ts @@ -0,0 +1,498 @@ +import { Utils } from '@rpgjs/common' +import { map } from 'rxjs' +import { RpgSound } from '../Sound/RpgSound' +import { RpgClientEngine, RpgResource } from '../index' +import { RpgRenderer } from '../Renderer' +import { GameEngineClient } from '../GameEngine' +import { SceneMap } from '../Scene/Map' +import { VueGui } from './Vue' + +interface GuiOptions { + data: any, + attachToSprite: boolean + display: boolean, + name: string + isFunction: boolean, + gui: any +} + +interface GuiList { + [guiName: string]: GuiOptions +} + +const COMPONENT_LIBRARIES: any = [ + VueGui +] + +export class Gui { + private renderer: RpgRenderer + private gameEngine: GameEngineClient + public clientEngine: RpgClientEngine + private socket + public gui: GuiList = {} + private librariesInstances: any[] = [] + + async _initialize(clientEngine: RpgClientEngine, guiEl: HTMLDivElement) { + this.clientEngine = clientEngine + this.renderer = clientEngine.renderer + this.gameEngine = clientEngine.gameEngine + const { gui } = this.renderer.options + + for (let ui of gui) { + let name = ui.name + if (Utils.isFunction(ui)) { + name = Utils.camelToKebab(name) + } + this.gui[name] = { + data: ui.data, + attachToSprite: ui.rpgAttachToSprite, + display: false, + name: name, + isFunction: Utils.isFunction(ui), + gui: ui + } + } + + if (this.clientEngine.envs?.['VITE_REACT']) { + console.warn('[RPGJS] React GUI is experimental feature. So, its use may change over time. Not yet in production') + COMPONENT_LIBRARIES.push(await import('./React').then(m => m.ReactGui)) + } + + for (let componentClass of COMPONENT_LIBRARIES) { + const el = document.createElement('div') + el.style.position = 'absolute' + guiEl.appendChild(el) + this.librariesInstances.push(new componentClass(el, this)) + } + } + + getInjectObject(): any { + const self = this + return { + /** + * Recovery of the current scene + * + * ```js + * export default { + * inject: ['rpgScene'], + * mounted() { + * const scene = this.rpgScene() + * scene.stopInputs() + * } + * } + * ``` + * + * @prop {Function returns RpgScene} [rpgScene] + * @memberof VueInject + * */ + rpgScene: this.renderer.getScene.bind(this.renderer), + + /** + * Retrieve the main container of the game + * + * ```js + * export default { + * inject: ['rpgStage'], + * mounted() { + * const blur = new PIXI.BlurFilter() + this.rpgStage.filters = [blur] + * } + * } + * ``` + * + * @prop {PIXI.Container} [rpgStage] + * @memberof VueInject + * */ + rpgStage: this.renderer.stage, + + /** + * Listen to all the objects present in the room (events and players) + * + * ```js + * export default { + * inject: ['rpgObjects'], + * mounted() { + * this.obs = this.rpgObjects.subscribe((objects) => { + * for (let id in objects) { + * const obj = objects[id] + * console.log(obj.object, obj.paramsChanged) + * } + * }) + * }, + * unmounted() { + * this.obs.unsubscribe() + * } + * } + * ``` + * + * > remember to unsubscribe for memory leaks + * + * It is an observable that returns an object: + * + * * the key is the object identifier + * * The value is an object comprising: + * * `object`: The entire object + * * `paramsChanged`: Only the representation of the properties that have been changed on this object + * + * @prop {Observable<{ [objectId]: { object: object, paramsChanged: object } }>} [rpgObjects] + * @memberof VueInject + * */ + rpgObjects: this.clientEngine.objects, + + /** + * Recovers and listens to the current player + * + * ```js + * export default { + * inject: ['rpgCurrentPlayer'], + * mounted() { + * this.obs = this.rpgCurrentPlayer.subscribe((obj) => { + * console.log(obj.object, obj.paramsChanged) + * }) + * }, + * unmounted() { + * this.obs.unsubscribe() + * } + * } + * ``` + * + * * `object`: The whole player + * * `paramsChanged`: Only the representation of the properties that have been changed on this player + * + * @prop {Observable<{ object: object, paramsChanged: object }>} [rpgCurrentPlayer] + * @memberof VueInject + * */ + rpgCurrentPlayer: this.clientEngine.objects + .pipe( + map((objects: any) => objects[this.gameEngine.playerId]) + ), + rpgGameEngine: this.gameEngine, + + /** + * Tell the server to close the GUI. + * + * It is a function with 2 parameters: + * * `name`: The name of the component + * * `data`: The data you want to pass to the server + * + * ```js + * export default { + * inject: ['rpgGuiClose'], + * methods: { + * close() { + * this.rpgGuiClose('gui-name', { + * amount: 1000 + * }) + * } + * } + * } + * ``` + * + * @prop {Function(name, data)} [rpgGuiClose] + * @memberof VueInject + * */ + rpgGuiClose(name: string, data?) { + const guiId = name || this.$options?.name + self.socket.emit('gui.exit', { + guiId, + data + }) + }, + + /** + * Perform an interaction with the open GUI + * + * It is a function with 2 parameters: + * * `guiId`: The name of the component/Gui + * * `name`: The name of the interaction (defined on the server side) + * * `data`: Data to be sent + * + * ```js + * export default { + * inject: ['rpgGuiInteraction'], + * methods: { + * changeGold() { + * this.rpgGuiInteraction('gui-name', 'change-gold', { + * amount: 100 + * }) + * } + * } + * } + * ``` + * + * @prop {Function(guiId, name, data = {})} [rpgGuiInteraction] + * @memberof VueInject + * */ + rpgGuiInteraction: (guiId: string, name: string, data: any = {}) => { + this.socket.emit('gui.interaction', { + guiId, + name, + data + }) + }, + + /** + * Listen to the keys that are pressed on the keyboard + * + * ```js + * export default { + * inject: ['rpgKeypress'], + * mounted() { + * this.obs = this.rpgKeypress.subscribe(({ inputName, control }) => { + * console.log(inputName) // "escape" + * console.log(control.actionName) // "back" + * }) + * }, + * unmounted() { + * this.obs.unsubscribe() + * } + * } + * ``` + * + * @prop {Observable<{ inputName: string, control: { actionName: string, options: any } }>} [rpgKeypress] + * @memberof VueInject + * */ + rpgKeypress: this.clientEngine.keyChange + .pipe( + map(name => { + const control = this.clientEngine.controls.getControl(name) + return { + inputName: name, + control + } + }) + ), + + /** + * Recovers the socket. + * + * ```js + * export default { + * inject: ['rpgSocket'], + * mounted() { + * const socket = this.rpgSocket() + * socket.emit('foo', 'bar') + * } + * } + * ``` + * + * @prop {Function returns RpgScene} [rpgSocket] + * @memberof VueInject + * */ + rpgSocket: () => this.socket, + + /** + * The RpgGui object to control GUIs + * + * ```js + * export default { + * inject: ['rpgGui'], + * mounted() { + * const guis = this.rpgGui.getAll() + * } + * } + * ``` + * + * @prop {RpgGui} [rpgGui] + * @memberof VueInject + * */ + rpgGui: this, + + /** + * Equivalent to RpgSound + * + * ```js + * export default { + * inject: ['rpgSound'], + * mounted() { + * this.rpgSound.get('my-sound-id').play() + * } + * } + * ``` + * + * @prop {RpgSound} [rpgSound] + * @memberof VueInject + * */ + rpgSound: RpgSound, + + /** + * Find the game's image and sound library + * + * ```js + * export default { + * inject: ['rpgResource'], + * mounted() { + * const resourceImage = this.rpgResource.spritesheets.get('image_id') + * const resourceSound = this.rpgResource.sounds.get('sound_id') + * } + * } + * ``` + * + * @prop { { spritesheets: Map, sounds: Map } } [rpgResource] + * @memberof VueInject + * */ + rpgResource: RpgResource, + + /** + * Get RpgClientEngine instance + * + * ```js + * export default { + * inject: ['rpgEngine'], + * mounted() { + * const vueInstance = this.rpgEngine.vueInstance + * } + * } + * ``` + * + * @prop {RpgClientEngine} [rpgEngine] + * @memberof VueInject + * */ + rpgEngine: this.clientEngine + } + } + + /** @internal */ + _setSocket(socket) { + this.socket = socket + this.socket.on('gui.open', ({ guiId, data }) => { + this.display(guiId, data) + }) + this.socket.on('gui.tooltip', ({ players, display }) => { + for (let playerId of players) { + const sprite = this.renderer.getScene()?.getSprite(playerId) + if (sprite) sprite.guiDisplay = display + } + }) + this.socket.on('gui.exit', (guiId) => { + this.hide(guiId) + }) + } + + /** @internal */ + _setGui(id, obj) { + const guiObj = this.get(id) + if (!guiObj) { + throw `The GUI named ${id} is non-existent. Please add the component in the gui property of the decorator @RpgClient` + } + for (let key in obj) { + guiObj[key] = obj[key] + } + this.librariesInstances.forEach(instance => { + instance.gui = Object.assign({}, this.gui) + }) + } + + /** + * Get a GUI. You retrieve GUI data and information whether it is displayed or not + * + * ```ts + * import { RpgGui } from '@rpgjs/client' + * + * const gui = RpgGui.get('my-gui') + * console.log(gui.display) // false + * ``` + * + * @title Get a GUI + * @method RpgGui.get(id) + * @param {string} id + * @returns { { data: any, display: boolean } } + * @memberof RpgGui + */ + get(id) { + if (typeof id != 'string') { + id = id.name + } + return this.gui[id] + } + + /** + * Get all GUI. You retrieve GUI data and information whether it is displayed or not + * + * ```ts + * import { RpgGui } from '@rpgjs/client' + * + * const gui = RpgGui.getAll() + * console.log(gui) // { 'rpg-dialog': { data: {}, display: true } } + * ``` + * + * @title Get all GUI + * @method RpgGui.getAll() + * @returns { { [guiName]: { data: any, display: boolean } }} + * @memberof RpgGui + */ + getAll() { + return this.gui + } + + /** + * Checks if the GUI exists RpgClient's gui array + * + * ```ts + * import { RpgGui } from '@rpgjs/client' + * + * RpgGui.exists('my-gui') // true + * ``` + * + * @title GUI Exists ? + * @method RpgGui.exists(id) + * @param {string} id + * @returns {boolean} + * @memberof RpgGui + */ + exists(id: string): boolean { + return !!this.get(id) + } + + /** + * Calls a GUI according to identifier. You can send retrievable data in the component + * + * ```ts + * import { RpgGui } from '@rpgjs/client' + * + * RpgGui.display('my-gui') + * ``` + * + * @title Display GUI + * @method RpgGui.display(id,data) + * @param {string} id + * @param {object} [data] + * @returns {void} + * @memberof RpgGui + */ + display(id: string, data = {}) { + this._setGui(id, { + display: true, + data + }) + } + + /** + * Hide a GUI according to its identifier + * + * ```ts + * import { RpgGui } from '@rpgjs/client' + * + * RpgGui.hide('my-gui') + * ``` + * + * @title Hide GUI + * @method RpgGui.hide(id) + * @param {string} id + * @returns {void} + * @memberof RpgGui + */ + hide(id: string) { + this._setGui(id, { + display: false + }) + } + + /** @internal */ + clear() { + this.gui = {} + } + +} + +export const RpgGui = new Gui() \ No newline at end of file diff --git a/packages/client/src/Gui/React.ts b/packages/client/src/Gui/React.ts new file mode 100644 index 00000000..691c6496 --- /dev/null +++ b/packages/client/src/Gui/React.ts @@ -0,0 +1,93 @@ +import { createRoot } from 'react-dom/client'; +import { createElement, Fragment, useState, createContext, useEffect, useContext, useCallback, useSyncExternalStore, useRef } from 'react' +import { RpgClientEngine } from '../RpgClientEngine'; +import { RpgRenderer } from '../Renderer'; +import { BehaviorSubject, map, tap } from 'rxjs'; +import type { Gui } from './Gui'; +import { RpgSprite } from '../Sprite/Player'; + +export { useStore } from '@nanostores/react' +export const RpgReactContext = createContext({} as any) + +export const useObjects = () => { + const [objects, setObjects] = useState([] as any[]) + const { rpgObjects } = useContext(RpgReactContext) + useEffect(() => { + rpgObjects + .pipe( + map((objects: any) => Object.values(objects).map((obj: any) => obj.object)) + ) + .subscribe(setObjects) + }, []) + return objects +} + +export const useCurrentPlayer = () => { + const { rpgCurrentPlayer } = useContext(RpgReactContext); + + const currentPlayerRef = useRef({}); + let _onChanges + + const subscribe = (onChanges) => { + _onChanges = onChanges + return () => { + _onChanges = null + } + } + + useEffect(() => { + const ob$ = rpgCurrentPlayer + .pipe( + map((player: any) => player.object), + tap((player: any) => currentPlayerRef.current = player) + ); + const subscription = ob$.subscribe(() => { + _onChanges?.() + }); + return () => subscription.unsubscribe(); + }, []); + + return useSyncExternalStore(subscribe, () => currentPlayerRef.current); +} + +export class ReactGui { + private app: any + private clientEngine: RpgClientEngine + private renderer: RpgRenderer + private _gui: BehaviorSubject = new BehaviorSubject([] as any) + + constructor(rootEl: HTMLDivElement, parentGui: Gui) { + this.app = createRoot(rootEl) + this.clientEngine = parentGui.clientEngine + this.renderer = this.clientEngine.renderer + + const GuiWrapper = () => { + const [_gui, setGui] = useState([]) + useEffect(() => { + this._gui.subscribe(gui => setGui(gui)) + }, []) + return createElement(RpgReactContext.Provider, { + value: parentGui.getInjectObject() + }, + _gui.filter(ui => ui.display).map(ui => createElement(ui.gui, { + key: ui.name, + ...(ui.data || {}) + })) + ) + } + + this.app.render( + createElement(GuiWrapper, null) + ) + } + + set gui(val) { + let array: any = [] + for (let key in val) { + // ignore vuejs component + if (!val[key].isFunction) continue + array.push(val[key]) + } + this._gui.next(array) + } +} \ No newline at end of file diff --git a/packages/client/src/RpgGuiCompiled.ts b/packages/client/src/Gui/RpgGuiCompiled.ts similarity index 100% rename from packages/client/src/RpgGuiCompiled.ts rename to packages/client/src/Gui/RpgGuiCompiled.ts diff --git a/packages/client/src/Gui/Vue.ts b/packages/client/src/Gui/Vue.ts new file mode 100644 index 00000000..0e59e6a6 --- /dev/null +++ b/packages/client/src/Gui/Vue.ts @@ -0,0 +1,109 @@ +import RpgGuiCompiled from './RpgGuiCompiled' +import { App, ComponentPublicInstance, createApp } from 'vue' +import { RpgCommonPlayer, Utils } from '@rpgjs/common' +import { RpgRenderer } from '../Renderer' +import { GameEngineClient } from '../GameEngine' +import { RpgClientEngine } from '../RpgClientEngine' +import type { Gui } from './Gui' +import { SceneMap } from '../Scene/Map' + +interface VueInstance extends ComponentPublicInstance { + gui: GuiList, + tooltips: RpgCommonPlayer[] +} + +interface GuiOptions { + data: any, + attachToSprite: boolean + display: boolean, + name: string +} + +interface GuiList { + [guiName: string]: GuiOptions +} + +interface VueInstance extends ComponentPublicInstance { + gui: GuiList, + tooltips: RpgCommonPlayer[] +} + +export class VueGui { + private renderer: RpgRenderer + private gameEngine: GameEngineClient + private clientEngine: RpgClientEngine + private app: App + private vm: VueInstance + private socket + + constructor(rootEl: HTMLDivElement, parentGui: Gui) { + this.clientEngine = parentGui.clientEngine + this.renderer = this.clientEngine.renderer + this.gameEngine = this.clientEngine.gameEngine + const { gui } = parentGui + + const obj = { + render: RpgGuiCompiled, + data() { + return { + gui, + tooltips: [] + } + }, + provide: () => { + return parentGui.getInjectObject() + }, + computed: { + fixedGui() { + return Object.values(this.gui).filter((gui: any) => !gui.attachToSprite) + }, + attachedGui() { + return Object.values(this.gui).filter((gui: any) => gui.attachToSprite) + } + }, + methods: { + propagate: (type: string, event) => { + this.renderer.canvas.dispatchEvent(new MouseEvent(type, event)) + }, + tooltipPosition: (position: { x: number, y: number }) => { + const scene = this.renderer.getScene() + const viewport = scene?.viewport + if (viewport) { + const left = position.x - viewport.left + const top = position.y - viewport.top + return { + transform: `translate(${left}px,${top}px)` + } + } + }, + tooltipFilter(sprites: RpgCommonPlayer[], ui: GuiOptions): RpgCommonPlayer[] { + return sprites.filter(tooltip => tooltip.guiDisplay) + } + } + } + + this.app = createApp(obj) + + const guiVue = Object.values(gui).filter(ui => !Utils.isFunction(ui)) + + for (let ui of guiVue) { + this.app.component(ui.name, ui) + } + this.vm = this.app.mount(rootEl) as VueInstance + this.renderer.app = this.app + this.renderer.vm = this.vm + } + + set gui(val) { + for (let key in val) { + // ignore react component + if (val[key].isFunction) continue + this.vm.gui[key] = val[key] + } + } + + /** @internal */ + update(logicObjects: RpgCommonPlayer) { + this.vm.tooltips = Object.values(logicObjects).map((object: any) => object.object) + } +} diff --git a/packages/client/src/Renderer.ts b/packages/client/src/Renderer.ts index 2cea2f98..175620a9 100644 --- a/packages/client/src/Renderer.ts +++ b/packages/client/src/Renderer.ts @@ -2,7 +2,7 @@ import { RpgPlugin, HookClient } from '@rpgjs/common' import { SceneMap } from './Scene/Map' import { Scene } from './Scene/Scene' import { Scene as PresetScene } from './Presets/Scene' -import { RpgGui } from './RpgGui' +import { RpgGui } from './Gui/Gui' import { RpgClientEngine } from './RpgClientEngine' import type { App, ComponentPublicInstance } from 'vue' import { TransitionScene } from './Effects/TransitionScene' @@ -112,9 +112,11 @@ export class RpgRenderer { if (!this.guiEl) { this.guiEl = document.createElement('div') - this.selector.appendChild(this.guiEl) + this.guiEl = this.selector.appendChild(this.guiEl) } + this.guiEl.style.position = 'absolute' + if (!this.canvasEl) { this.selector.insertBefore(this.renderer.view as HTMLCanvasElement, this.selector.firstChild) const [canvas] = document.querySelector(this.options.selector).children @@ -131,7 +133,7 @@ export class RpgRenderer { this.fadeContainer.visible = false this.fadeContainer.alpha = 0 - RpgGui._initalize(this.clientEngine) + RpgGui._initialize(this.clientEngine, this.guiEl) this.resize() } diff --git a/packages/client/src/RpgClientEngine.ts b/packages/client/src/RpgClientEngine.ts index eabdf4fe..06b11c3c 100644 --- a/packages/client/src/RpgClientEngine.ts +++ b/packages/client/src/RpgClientEngine.ts @@ -5,7 +5,7 @@ import { _initSound, sounds } from './Sound/Sounds' import { World } from 'simple-room-client' import { BehaviorSubject, Observable, Subject, Subscription, lastValueFrom } from 'rxjs' import { ajax } from 'rxjs/ajax' -import { RpgGui } from './RpgGui' +import { RpgGui } from './Gui/Gui' import { RpgCommonPlayer, PrebuiltGui, diff --git a/packages/client/src/RpgGui.ts b/packages/client/src/RpgGui.ts deleted file mode 100644 index 68524c22..00000000 --- a/packages/client/src/RpgGui.ts +++ /dev/null @@ -1,553 +0,0 @@ -import RpgGuiCompiled from './RpgGuiCompiled' -import { App, ComponentPublicInstance, createApp } from 'vue' -import { RpgCommonPlayer } from '@rpgjs/common' -import { map } from 'rxjs' -import { RpgSound } from './Sound/RpgSound' -import { RpgClientEngine, RpgResource } from './index' -import { RpgRenderer } from './Renderer' -import { GameEngineClient } from './GameEngine' -import { SceneMap } from './Scene/Map' - -interface GuiOptions { - data: any, - attachToSprite: boolean - display: boolean, - name: string -} - -interface GuiList { - [guiName: string]: GuiOptions -} - -interface VueInstance extends ComponentPublicInstance { - gui: GuiList, - tooltips: RpgCommonPlayer[] -} - -class Gui { - private renderer: RpgRenderer - private gameEngine: GameEngineClient - private clientEngine: RpgClientEngine - private app: App - private vm: VueInstance - private socket - private gui: GuiList = {} - - /** @internal */ - _initalize(clientEngine: RpgClientEngine) { - - this.clientEngine = clientEngine - this.renderer = clientEngine.renderer - this.gameEngine = clientEngine.gameEngine - - const self = this - const { gui } = this.renderer.options - const selectorGui = this.renderer.guiEl - - const obj = { - /* template: ` -
- -
- -
-
- `,*/ - render: RpgGuiCompiled, - data() { - return { - gui, - tooltips: [] - } - }, - provide: () => { - return { - /** - * Recovery of the current scene - * - * ```js - * export default { - * inject: ['rpgScene'], - * mounted() { - * const scene = this.rpgScene() - * scene.stopInputs() - * } - * } - * ``` - * - * @prop {Function returns RpgScene} [rpgScene] - * @memberof VueInject - * */ - rpgScene: this.renderer.getScene.bind(this.renderer), - - /** - * Retrieve the main container of the game - * - * ```js - * export default { - * inject: ['rpgStage'], - * mounted() { - * const blur = new PIXI.BlurFilter() - this.rpgStage.filters = [blur] - * } - * } - * ``` - * - * @prop {PIXI.Container} [rpgStage] - * @memberof VueInject - * */ - rpgStage: this.renderer.stage, - - /** - * Listen to all the objects present in the room (events and players) - * - * ```js - * export default { - * inject: ['rpgObjects'], - * mounted() { - * this.obs = this.rpgObjects.subscribe((objects) => { - * for (let id in objects) { - * const obj = objects[id] - * console.log(obj.object, obj.paramsChanged) - * } - * }) - * }, - * unmounted() { - * this.obs.unsubscribe() - * } - * } - * ``` - * - * > remember to unsubscribe for memory leaks - * - * It is an observable that returns an object: - * - * * the key is the object identifier - * * The value is an object comprising: - * * `object`: The entire object - * * `paramsChanged`: Only the representation of the properties that have been changed on this object - * - * @prop {Observable<{ [objectId]: { object: object, paramsChanged: object } }>} [rpgObjects] - * @memberof VueInject - * */ - rpgObjects: this.clientEngine.objects, - - /** - * Recovers and listens to the current player - * - * ```js - * export default { - * inject: ['rpgCurrentPlayer'], - * mounted() { - * this.obs = this.rpgCurrentPlayer.subscribe((obj) => { - * console.log(obj.object, obj.paramsChanged) - * }) - * }, - * unmounted() { - * this.obs.unsubscribe() - * } - * } - * ``` - * - * * `object`: The whole player - * * `paramsChanged`: Only the representation of the properties that have been changed on this player - * - * @prop {Observable<{ object: object, paramsChanged: object }>} [rpgCurrentPlayer] - * @memberof VueInject - * */ - rpgCurrentPlayer: this.clientEngine.objects - .pipe( - map((objects: any) => objects[this.gameEngine.playerId]) - ), - rpgGameEngine: this.gameEngine, - - /** - * Tell the server to close the GUI. - * - * It is a function with 2 parameters: - * * `name`: The name of the component - * * `data`: The data you want to pass to the server - * - * ```js - * export default { - * inject: ['rpgGuiClose'], - * methods: { - * close() { - * this.rpgGuiClose('gui-name', { - * amount: 1000 - * }) - * } - * } - * } - * ``` - * - * @prop {Function(name, data)} [rpgGuiClose] - * @memberof VueInject - * */ - rpgGuiClose(name: string, data?) { - const guiId = name || this.$options.name - self.socket.emit('gui.exit', { - guiId, - data - }) - }, - - /** - * Perform an interaction with the open GUI - * - * It is a function with 2 parameters: - * * `guiId`: The name of the component/Gui - * * `name`: The name of the interaction (defined on the server side) - * * `data`: Data to be sent - * - * ```js - * export default { - * inject: ['rpgGuiInteraction'], - * methods: { - * changeGold() { - * this.rpgGuiInteraction('gui-name', 'change-gold', { - * amount: 100 - * }) - * } - * } - * } - * ``` - * - * @prop {Function(guiId, name, data = {})} [rpgGuiInteraction] - * @memberof VueInject - * */ - rpgGuiInteraction: (guiId: string, name: string, data: any = {}) => { - this.socket.emit('gui.interaction', { - guiId, - name, - data - }) - }, - - /** - * Listen to the keys that are pressed on the keyboard - * - * ```js - * export default { - * inject: ['rpgKeypress'], - * mounted() { - * this.obs = this.rpgKeypress.subscribe(({ inputName, control }) => { - * console.log(inputName) // "escape" - * console.log(control.actionName) // "back" - * }) - * }, - * unmounted() { - * this.obs.unsubscribe() - * } - * } - * ``` - * - * @prop {Observable<{ inputName: string, control: { actionName: string, options: any } }>} [rpgKeypress] - * @memberof VueInject - * */ - rpgKeypress: this.clientEngine.keyChange - .pipe( - map(name => { - const control = this.clientEngine.controls.getControl(name) - return { - inputName: name, - control - } - }) - ), - - /** - * Recovers the socket. - * - * ```js - * export default { - * inject: ['rpgSocket'], - * mounted() { - * const socket = this.rpgSocket() - * socket.emit('foo', 'bar') - * } - * } - * ``` - * - * @prop {Function returns RpgScene} [rpgSocket] - * @memberof VueInject - * */ - rpgSocket: () => this.socket, - - /** - * The RpgGui object to control GUIs - * - * ```js - * export default { - * inject: ['rpgGui'], - * mounted() { - * const guis = this.rpgGui.getAll() - * } - * } - * ``` - * - * @prop {RpgGui} [rpgGui] - * @memberof VueInject - * */ - rpgGui: this, - - /** - * Equivalent to RpgSound - * - * ```js - * export default { - * inject: ['rpgSound'], - * mounted() { - * this.rpgSound.get('my-sound-id').play() - * } - * } - * ``` - * - * @prop {RpgSound} [rpgSound] - * @memberof VueInject - * */ - rpgSound: RpgSound, - - /** - * Find the game's image and sound library - * - * ```js - * export default { - * inject: ['rpgResource'], - * mounted() { - * const resourceImage = this.rpgResource.spritesheets.get('image_id') - * const resourceSound = this.rpgResource.sounds.get('sound_id') - * } - * } - * ``` - * - * @prop { { spritesheets: Map, sounds: Map } } [rpgResource] - * @memberof VueInject - * */ - rpgResource: RpgResource, - - /** - * Get RpgClientEngine instance - * - * ```js - * export default { - * inject: ['rpgEngine'], - * mounted() { - * const vueInstance = this.rpgEngine.vueInstance - * } - * } - * ``` - * - * @prop {RpgClientEngine} [rpgEngine] - * @memberof VueInject - * */ - rpgEngine: this.clientEngine - } - }, - computed: { - fixedGui() { - return Object.values(this.gui).filter((gui: any) => !gui.attachToSprite) - }, - attachedGui() { - return Object.values(this.gui).filter((gui: any) => gui.attachToSprite) - } - }, - methods: { - propagate: (type: string, event) => { - this.renderer.canvas.dispatchEvent(new MouseEvent(type, event)) - }, - tooltipPosition: (position: { x: number, y: number }) => { - const scene = this.renderer.getScene() - const viewport = scene?.viewport - if (viewport) { - const left = position.x - viewport.left - const top = position.y - viewport.top - return { - transform: `translate(${left}px,${top}px)` - } - } - }, - tooltipFilter(sprites: RpgCommonPlayer[], ui: GuiOptions): RpgCommonPlayer[] { - return sprites.filter(tooltip => tooltip.guiDisplay) - } - } - } - - this.app = createApp(obj) - - for (let ui of gui) { - this.app.component(ui.name, ui) - this.gui[ui.name] = { - data: ui.data, - attachToSprite: ui.rpgAttachToSprite, - display: false, - name: ui.name - } - } - this.vm = this.app.mount(selectorGui) as VueInstance - this.vm.gui = this.gui - this.renderer.app = this.app - this.renderer.vm = this.vm - } - - /** @internal */ - update(logicObjects: RpgCommonPlayer) { - this.vm.tooltips = Object.values(logicObjects).map((object: any) => object.object) - } - - /** @internal */ - _setSocket(socket) { - this.socket = socket - this.socket.on('gui.open', ({ guiId, data }) => { - this.display(guiId, data) - }) - this.socket.on('gui.tooltip', ({ players, display }) => { - for (let playerId of players) { - const sprite = this.renderer.getScene()?.getSprite(playerId) - if (sprite) sprite.guiDisplay = display - } - }) - this.socket.on('gui.exit', (guiId) => { - this.hide(guiId) - }) - } - - /** @internal */ - _setGui(id, obj) { - const guiObj = this.get(id) - if (!guiObj) { - throw `The GUI named ${id} is non-existent. Please add the component in the gui property of the decorator @RpgClient` - } - for (let key in obj) { - guiObj[key] = obj[key] - } - this.vm.gui = Object.assign({}, this.vm.gui) - } - - /** - * Get a GUI. You retrieve GUI data and information whether it is displayed or not - * - * ```ts - * import { RpgGui } from '@rpgjs/client' - * - * const gui = RpgGui.get('my-gui') - * console.log(gui.display) // false - * ``` - * - * @title Get a GUI - * @method RpgGui.get(id) - * @param {string} id - * @returns { { data: any, display: boolean } } - * @memberof RpgGui - */ - get(id) { - if (typeof id != 'string') { - id = id.name - } - return this.gui[id] - } - - /** - * Get all GUI. You retrieve GUI data and information whether it is displayed or not - * - * ```ts - * import { RpgGui } from '@rpgjs/client' - * - * const gui = RpgGui.getAll() - * console.log(gui) // { 'rpg-dialog': { data: {}, display: true } } - * ``` - * - * @title Get all GUI - * @method RpgGui.getAll() - * @returns { { [guiName]: { data: any, display: boolean } }} - * @memberof RpgGui - */ - getAll() { - return this.gui - } - - /** - * Checks if the GUI exists RpgClient's gui array - * - * ```ts - * import { RpgGui } from '@rpgjs/client' - * - * RpgGui.exists('my-gui') // true - * ``` - * - * @title GUI Exists ? - * @method RpgGui.exists(id) - * @param {string} id - * @returns {boolean} - * @memberof RpgGui - */ - exists(id: string): boolean { - return !!this.get(id) - } - - /** - * Calls a GUI according to identifier. You can send retrievable data in the component - * - * ```ts - * import { RpgGui } from '@rpgjs/client' - * - * RpgGui.display('my-gui') - * ``` - * - * @title Display GUI - * @method RpgGui.display(id,data) - * @param {string} id - * @param {object} [data] - * @returns {void} - * @memberof RpgGui - */ - display(id: string, data = {}) { - this._setGui(id, { - display: true, - data - }) - } - - /** - * Hide a GUI according to its identifier - * - * ```ts - * import { RpgGui } from '@rpgjs/client' - * - * RpgGui.hide('my-gui') - * ``` - * - * @title Hide GUI - * @method RpgGui.hide(id) - * @param {string} id - * @returns {void} - * @memberof RpgGui - */ - hide(id: string) { - this._setGui(id, { - display: false - }) - } - - /** @internal */ - clear() { - this.gui = {} - } -} - -export const RpgGui = new Gui() \ No newline at end of file diff --git a/packages/client/src/Scene/Scene.ts b/packages/client/src/Scene/Scene.ts index d0c4664c..dd560b6f 100644 --- a/packages/client/src/Scene/Scene.ts +++ b/packages/client/src/Scene/Scene.ts @@ -3,7 +3,7 @@ import { KeyboardControls } from '../KeyboardControls' import RpgSprite from '../Sprite/Character' import { Animation } from '../Effects/Animation' import { BehaviorSubject, Observable } from 'rxjs' -import { RpgGui } from '../RpgGui' +import { RpgGui } from '../Gui/Gui' import { GameEngineClient } from '../GameEngine' import { RpgComponent } from '../Components/Component' import { Controls } from '@rpgjs/types' @@ -131,7 +131,7 @@ export abstract class Scene { animation.update(deltaRatio) } this.onDraw(time) - RpgGui.update(logicObjects) + // RpgGui.update(logicObjects) RpgPlugin.emit(HookClient.SceneDraw, this) } diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index d51781c9..f2ceb701 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -13,9 +13,10 @@ export { Animation as AnimationClass } from './Effects/Animation' export type { ISpriteCharacter } from './Interfaces/Character' export { SceneData } from './Scene/SceneData' export { SceneMap as RpgSceneMap } from './Scene/Map' -export { RpgGui } from './RpgGui'; +export { RpgGui } from './Gui/Gui'; export { Timeline, Ease } from './Effects/Timeline'; export { RpgComponent, RpgComponent as RpgSprite } from './Components/Component' +export { World, room } from 'simple-room-client' import { spritesheets } from './Sprite/Spritesheets' import { sounds } from './Sound/Sounds' diff --git a/packages/common/src/Utils.ts b/packages/common/src/Utils.ts index 576d5a24..2c0635dd 100644 --- a/packages/common/src/Utils.ts +++ b/packages/common/src/Utils.ts @@ -53,6 +53,12 @@ export function capitalize(s: unknown): string { return s.charAt(0).toUpperCase() + s.slice(1) } +export function camelToKebab(str: string): string { + return str + .replace(/([a-z])([A-Z])/g, '$1-$2') + .toLowerCase(); +} + export function arrayEquals(a: any[], b: any[]): boolean { return a.length === b.length && a.every((v, i) => v === b[i]) } @@ -186,5 +192,6 @@ export default { preciseNow, hexaToNumber, set, - round + round, + camelToKebab } \ No newline at end of file diff --git a/packages/compiler/package-lock.json b/packages/compiler/package-lock.json index 0c9c805b..024b5fbc 100644 --- a/packages/compiler/package-lock.json +++ b/packages/compiler/package-lock.json @@ -17,6 +17,7 @@ "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@iarna/toml": "^2.2.5", + "@vitejs/plugin-react": "^4.1.0", "@vitejs/plugin-vue": "^4.2.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", @@ -110,25 +111,25 @@ } }, "node_modules/@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -160,11 +161,11 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dependencies": { - "@babel/types": "^7.21.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -196,12 +197,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dependencies": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -293,20 +294,20 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -335,26 +336,26 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -456,17 +457,17 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "engines": { "node": ">=6.9.0" } @@ -485,13 +486,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -511,9 +512,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.13.tgz", - "integrity": "sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1344,6 +1345,34 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.22.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", @@ -1626,31 +1655,31 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", + "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1680,12 +1709,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2182,6 +2211,43 @@ "string.prototype.matchall": "^4.0.6" } }, + "node_modules/@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, "node_modules/@types/chai": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", @@ -2218,6 +2284,24 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" }, + "node_modules/@vitejs/plugin-react": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", + "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", + "dependencies": { + "@babel/core": "^7.22.20", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.1.tgz", @@ -2994,9 +3078,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/core-js-compat": { "version": "3.32.1", @@ -4893,6 +4977,14 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -6655,25 +6747,25 @@ "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==" }, "@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "dependencies": { "debug": { @@ -6692,11 +6784,11 @@ } }, "@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "requires": { - "@babel/types": "^7.21.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -6719,12 +6811,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "requires": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -6794,17 +6886,17 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { @@ -6824,23 +6916,23 @@ } }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/helper-optimise-call-expression": { @@ -6906,14 +6998,14 @@ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==" + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" }, "@babel/helper-wrap-function": { "version": "7.22.10", @@ -6926,13 +7018,13 @@ } }, "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" } }, "@babel/highlight": { @@ -6946,9 +7038,9 @@ } }, "@babel/parser": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.13.tgz", - "integrity": "sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==" + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.22.5", @@ -7462,6 +7554,22 @@ "@babel/helper-plugin-utils": "^7.22.5" } }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, "@babel/plugin-transform-regenerator": { "version": "7.22.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", @@ -7666,28 +7774,28 @@ } }, "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "requires": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", + "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -7708,12 +7816,12 @@ } }, "@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "requires": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -7983,6 +8091,43 @@ "string.prototype.matchall": "^4.0.6" } }, + "@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "requires": { + "@babel/types": "^7.20.7" + } + }, "@types/chai": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", @@ -8019,6 +8164,18 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" }, + "@vitejs/plugin-react": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", + "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", + "requires": { + "@babel/core": "^7.22.20", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.2", + "react-refresh": "^0.14.0" + } + }, "@vitejs/plugin-vue": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.1.tgz", @@ -8599,9 +8756,9 @@ } }, "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "core-js-compat": { "version": "3.32.1", @@ -9920,6 +10077,11 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==" + }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", diff --git a/packages/compiler/package.json b/packages/compiler/package.json index cc459527..7f3f4fa8 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -26,6 +26,7 @@ "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@iarna/toml": "^2.2.5", + "@vitejs/plugin-react": "^4.1.0", "@vitejs/plugin-vue": "^4.2.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", diff --git a/packages/compiler/src/build/client-config.ts b/packages/compiler/src/build/client-config.ts index 1eb07c2e..211a87f4 100644 --- a/packages/compiler/src/build/client-config.ts +++ b/packages/compiler/src/build/client-config.ts @@ -7,6 +7,7 @@ import { resolve, join } from 'path' import requireTransform from './vite-plugin-require.js'; import { flagTransform } from './vite-plugin-flag-transform.js'; import vue from '@vitejs/plugin-vue' +import react from '@vitejs/plugin-react' import { worldTransformPlugin } from './vite-plugin-world-transform.js'; import fs from 'fs/promises' import _fs from 'fs' @@ -135,6 +136,14 @@ export async function clientBuildConfig(dirname: string, options: ClientBuildCon buildOptions.outputDir = 'dist' } + // found react packages in node_modules + const hasPkg = pkg => _fs.existsSync(join(cwd(), 'node_modules', pkg)) + let hasReact = false + if (hasPkg('react') && hasPkg('react-dom')) { + process.env.VITE_REACT = 'true' + hasReact = true + } + const libMode = config.vite?.build?.lib const vite = config.vite ?? {} @@ -193,6 +202,7 @@ export async function clientBuildConfig(dirname: string, options: ClientBuildCon plugins = [ ...plugins, vue(), + react(), cssPlugin(config), codeInjectorPlugin(), NodeModulesPolyfillPlugin(), @@ -372,7 +382,7 @@ export async function clientBuildConfig(dirname: string, options: ClientBuildCon }, extensions: ['.ts', '.js', '.jsx', '.json', '.vue', '.css', '.scss', '.sass', '.html', 'tmx', 'tsx', '.toml'], }, - assetsInclude: ['**/*.tmx', '**/*.tsx'], + assetsInclude: ['**/*.tmx', "{!(gui)/**/*}.tsx"], server: options.server, logLevel: options.server?.loglevel, debug: options.server?.debug, @@ -409,6 +419,7 @@ export async function clientBuildConfig(dirname: string, options: ClientBuildCon resolve(dirname, 'index.html') : entryPointServer() }, + external: !hasReact ? ['react', 'react-dom/client'] : [] }), }, ...moreBuildOptions diff --git a/packages/compiler/src/build/vite-plugin-config.toml.ts b/packages/compiler/src/build/vite-plugin-config.toml.ts index ba863281..52b88146 100644 --- a/packages/compiler/src/build/vite-plugin-config.toml.ts +++ b/packages/compiler/src/build/vite-plugin-config.toml.ts @@ -227,7 +227,7 @@ export function loadClientFiles(modulePath: string, options, config) { const importSceneMapString = importString(modulePath, 'scene-map', 'sceneMap') const importSpriteString = importString(modulePath, 'sprite') const importEngine = importString(modulePath, 'client', 'engine') - const guiFilesString = searchFolderAndTransformToImportString('gui', modulePath, '.vue') + const guiFilesString = searchFolderAndTransformToImportString('gui', modulePath, ['.vue', '.tsx', '.jsx']) let importSpritesheets: ImportImageObject[] = [] const extraOptions = { @@ -440,7 +440,8 @@ export default function configTomlPlugin(options: ClientBuildConfigOptions = {}, VITE_BUILT: ${env.VITE_BUILT}, VITE_SERVER_URL: ${serverUrl ? "'" + serverUrl + "'" : 'undefined'}, VITE_RPG_TYPE: '${options.type ?? 'mmorpg'}', - VITE_ASSETS_PATH: '${env.VITE_ASSETS_PATH ?? ''}' + VITE_ASSETS_PATH: '${env.VITE_ASSETS_PATH ?? ''}', + VITE_REACT: ${env.VITE_REACT}, }` if (id.endsWith(MODULE_NAME)) { const modulesToImport = modules.reduce((acc, module) => { diff --git a/packages/compiler/src/build/vite-plugin-map-extract.ts b/packages/compiler/src/build/vite-plugin-map-extract.ts index 8d14d0db..ff730a68 100644 --- a/packages/compiler/src/build/vite-plugin-map-extract.ts +++ b/packages/compiler/src/build/vite-plugin-map-extract.ts @@ -5,6 +5,8 @@ import { globFiles } from './utils.js'; // Process a TSX file and copy its image to the output directory async function processTsxFile(tsxFile: string, output: string) { + if (tsxFile.includes('gui')) return + const content = fs.readFileSync(tsxFile, 'utf-8'); const result = await parseStringPromise(content); const imagePath = path.join(path.dirname(tsxFile), result.tileset.image[0].$.source); diff --git a/packages/compiler/src/build/vite-plugin-map-update.ts b/packages/compiler/src/build/vite-plugin-map-update.ts index 7f202b56..4751ddfe 100644 --- a/packages/compiler/src/build/vite-plugin-map-update.ts +++ b/packages/compiler/src/build/vite-plugin-map-update.ts @@ -23,7 +23,7 @@ export function mapUpdatePlugin(_serverUrl?: string): Plugin { data }).catch(errorApi) } - else if (file.endsWith('tsx')) { + else if (file.endsWith('tsx') && !file.includes('gui')) { info(`File ${file} changed, updating tileset...`) // open file const data = await fs.readFile(file, 'utf-8'); diff --git a/packages/compiler/src/build/vite-plugin-require.ts b/packages/compiler/src/build/vite-plugin-require.ts index 212636fd..28c51a23 100644 --- a/packages/compiler/src/build/vite-plugin-require.ts +++ b/packages/compiler/src/build/vite-plugin-require.ts @@ -6,8 +6,8 @@ import _generate from "@babel/generator"; import { Plugin } from "vite"; import { importDeclaration, importDefaultSpecifier, stringLiteral, identifier, newExpression, expressionStatement, memberExpression, BinaryExpression, ExpressionStatement } from "@babel/types"; -const traverse = _traverse.default ?? _generate; -const generate = _generate.default ?? _generate; +const traverse = _traverse['default'] ?? _generate; +const generate = _generate['default'] ?? _generate; export default function vitePluginRequire(opts?: { fileRegex?: RegExp; diff --git a/packages/compiler/src/build/vite-plugin-tsx-xml.ts b/packages/compiler/src/build/vite-plugin-tsx-xml.ts index a1f7f408..45fae403 100644 --- a/packages/compiler/src/build/vite-plugin-tsx-xml.ts +++ b/packages/compiler/src/build/vite-plugin-tsx-xml.ts @@ -9,10 +9,9 @@ export const tsxXmlPlugin = (): Plugin => { configureServer(server) { server.middlewares.use((req, res, next) => { - if (req.url && (req.url.endsWith('.tsx'))) { + if (req.url && (req.url.endsWith('.tsx')) && !req.url.includes('gui')) { const publicPath = server.config.root; const filePath = path.join(publicPath, req.url); - if (fs.existsSync(filePath)) { const xmlContent = fs.readFileSync(filePath, 'utf-8'); res.setHeader('Content-Type', 'application/xml'); diff --git a/packages/sample2/main/client.ts b/packages/sample2/main/client.ts index 65ba06c9..7abe2772 100644 --- a/packages/sample2/main/client.ts +++ b/packages/sample2/main/client.ts @@ -1,51 +1,5 @@ import { RpgClientEngine, Timeline, Ease } from "@rpgjs/client" -const animations = new Timeline() -.add(40, ({ scale }) => [{ - frameX: 0, - frameY: 1, - scale: [scale], -}], { - scale: { - from: 1, - to: 1.3, - easing: Ease.easeInBounce - } -}) -.add(40, ({ scale }) => [{ - frameX: 1, - frameY: 1, - scale: [scale], -}], { - scale: { - from: 1.3, - to: 1.5, - } -}) -.add(40, ({ scale }) => [{ - frameX: 3, - frameY: 1, - scale: [scale], -}], { - scale: { - from: 1.5, - to: 1.3, - } -}) -.add(40, ({ scale }) => [{ - frameX: 2, - frameY: 1, - scale: [scale], -}], { - scale: { - from: 1.3, - to: 1.2, - } -}) -.create() - -console.log(animations) - export default { async onStart(engine: RpgClientEngine) { diff --git a/packages/sample2/main/gui/test.tsx b/packages/sample2/main/gui/test.tsx new file mode 100644 index 00000000..2286b07d --- /dev/null +++ b/packages/sample2/main/gui/test.tsx @@ -0,0 +1,9 @@ +import { room } from '@rpgjs/client' +import { RpgReactContext, useObjects, useCurrentPlayer } from '@rpgjs/client/react' +import { useContext } from 'react' + +export default function Test({ gold }) { + const player = useCurrentPlayer() + console.log(player) + return <>{player?.position?.x} +} \ No newline at end of file diff --git a/packages/sample2/main/player.ts b/packages/sample2/main/player.ts index fcf9b8ea..39ecf659 100644 --- a/packages/sample2/main/player.ts +++ b/packages/sample2/main/player.ts @@ -13,7 +13,8 @@ const player: RpgPlayerHooks = { onInput(player: RpgPlayer, { input }) { const map = player.getCurrentMap() if (input == 'action') { - + const gui = player.gui('test') + gui.open({ gold: 10 }) // const event = map?.createDynamicEvent({ // x: player.position.x + 5, // y: player.position.y + 5, diff --git a/packages/sample2/package-lock.json b/packages/sample2/package-lock.json index b34d3cf7..a157c520 100644 --- a/packages/sample2/package-lock.json +++ b/packages/sample2/package-lock.json @@ -7,8 +7,9 @@ "": { "name": "sample2", "version": "4.0.2", - "license": "ISC", + "license": "MIT", "dependencies": { + "@nanostores/react": "^0.7.1", "@rpgjs/chat": "^4.0.2", "@rpgjs/client": "^4.0.2", "@rpgjs/common": "^4.0.2", @@ -22,6 +23,8 @@ "@rpgjs/server": "^4.0.2", "@rpgjs/standalone": "^4.0.2", "@rpgjs/title-screen": "^4.0.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rpgjs-helloworld": "^0.0.1", "socket.io-client": "^4.7.2" } @@ -805,9 +808,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", "engines": { "node": ">=6.9.0" } @@ -878,12 +881,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dependencies": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -946,9 +949,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } @@ -988,26 +991,26 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1109,17 +1112,17 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "engines": { "node": ">=6.9.0" } @@ -1175,9 +1178,9 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1189,13 +1192,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "@babel/plugin-transform-optional-chaining": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1662,9 +1665,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz", - "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -1709,9 +1712,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", - "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1754,17 +1757,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1791,9 +1794,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", - "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1879,9 +1882,9 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1982,11 +1985,11 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz", - "integrity": "sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -2089,15 +2092,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz", - "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", "dependencies": { "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/plugin-transform-parameters": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -2137,9 +2140,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz", - "integrity": "sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -2153,9 +2156,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -2389,16 +2392,16 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.10.tgz", - "integrity": "sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -2419,41 +2422,41 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.10", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", "@babel/plugin-transform-async-to-generator": "^7.22.5", "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", + "@babel/plugin-transform-block-scoping": "^7.22.15", "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", + "@babel/plugin-transform-destructuring": "^7.22.15", "@babel/plugin-transform-dotall-regex": "^7.22.5", "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", "@babel/plugin-transform-member-expression-literals": "^7.22.5", "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", "@babel/plugin-transform-modules-umd": "^7.22.5", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.10", - "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", "@babel/plugin-transform-property-literals": "^7.22.5", "@babel/plugin-transform-regenerator": "^7.22.10", "@babel/plugin-transform-reserved-words": "^7.22.5", @@ -2467,7 +2470,7 @@ "@babel/plugin-transform-unicode-regex": "^7.22.5", "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.10", + "@babel/types": "^7.22.19", "babel-plugin-polyfill-corejs2": "^0.4.5", "babel-plugin-polyfill-corejs3": "^0.8.3", "babel-plugin-polyfill-regenerator": "^0.5.2", @@ -2557,12 +2560,12 @@ } }, "node_modules/@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -3052,6 +3055,24 @@ "sparse-bitfield": "^3.0.3" } }, + "node_modules/@nanostores/react": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@nanostores/react/-/react-0.7.1.tgz", + "integrity": "sha512-EXQg9N4MdI4eJQz/AZLIx3hxQ6BuBmV4Q55bCd5YCSgEOAW7tGTsIZxpRXxvxLXzflNvHTBvfrDNY38TlSVBkQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "nanostores": "^0.9.0", + "react": ">=18.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3438,99 +3459,42 @@ "node": ">=14" } }, - "node_modules/@rollup/plugin-replace": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz", - "integrity": "sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.27.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-replace/node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.4.tgz", - "integrity": "sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "node_modules/@rpgjs/chat": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/chat/-/chat-4.0.0-rc.10.tgz", - "integrity": "sha512-+ABREzDeCUw8gIgYptdTwLd6tCAT0zeXBkJbyhJvsanru/sSfP4/JrXbP2cWznfSQwTb7bNueoG5UcDN54ITSg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/chat/-/chat-4.0.2.tgz", + "integrity": "sha512-sEmrP3+GPo+23DpppzMl/lI6fWJQKy0g7JMzYVi1Qro360KC8ynOQE8hdZ9bMzpGkEZTpMAidklM85/ngOznyg==", "dependencies": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10" + "@rpgjs/client": "^4.0.2", + "@rpgjs/server": "^4.0.2" } }, "node_modules/@rpgjs/client": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/client/-/client-4.0.0-rc.10.tgz", - "integrity": "sha512-8pxXhBt+naT2etjpcMMa6mI7TRNy6vbkFmotvjfVdfWYlQJ6seJ0r9Iu8bP1hM6bPpNi7uHHbQDPgKoEGH9IIA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/client/-/client-4.0.2.tgz", + "integrity": "sha512-1giTS0X/7dKVD8syC7/Fh9bXvvplklZkgeNu2SwiA08Rfjx4lDiPu0N42ulILT0wsZFaUKIpOH032XjKWil09A==", "dependencies": { "@pixi/tilemap": "^4.0.0", - "@rpgjs/common": "^4.0.0-rc.10", - "@rpgjs/tiled": "^4.0.0-rc.10", - "@rpgjs/types": "^4.0.0-rc.10", + "@rpgjs/common": "^4.0.2", + "@rpgjs/tiled": "^4.0.2", + "@rpgjs/types": "^4.0.2", "@types/howler": "2.2.7", "howler": "2.2.3", "lodash.get": "^4.4.2", "lodash.merge": "4.6.2", - "pixi-viewport": "5.0.1", + "pixi-viewport": "^5.0.2", "pixi.js": "7.2.4", "rxjs": "7.8.0", - "simple-room-client": "^2.0.5", + "simple-room-client": "^2.0.6", "vue": "^3.2.47" } }, "node_modules/@rpgjs/common": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/common/-/common-4.0.0-rc.10.tgz", - "integrity": "sha512-DE8A7JsvZGwQ+TbAYm/t5e12f8OixghzddK7ptU8Ob21EiX+Ea/j0ui65zN/ydQ/0B3OT7/+me5cYnDQoxl2/g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/common/-/common-4.0.2.tgz", + "integrity": "sha512-xvPyu07bMr13lCVhukRic19huRsdgNZsL3YyqUeNaqQrgo4/Juy69T7gruYZQh5CITXDR8zI25lolUO4mxE8Dg==", "dependencies": { - "@rpgjs/tiled": "^4.0.0-rc.10", - "@rpgjs/types": "^4.0.0-rc.10", + "@rpgjs/tiled": "^4.0.2", + "@rpgjs/types": "^4.0.2", "rbush": "^3.0.1", "rxjs": "^7.8.0", "sat": "^0.9.0", @@ -3546,9 +3510,9 @@ } }, "node_modules/@rpgjs/compiler": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/compiler/-/compiler-4.0.0-rc.10.tgz", - "integrity": "sha512-JzneWRb1Tzoyb+7kFCwdIoM+UtrWVLpIHhZBreV+fnumqIkZ7ZfDg4ZkmabbNX1hJBIsHxf6Q2z81sQFBycPWA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/compiler/-/compiler-4.0.2.tgz", + "integrity": "sha512-Tq/RN7GOlDq690PT31gxHqAqfwHuctx2C++z0k+pCnH19WRLPokO7xwUC8yU0vbI64TGzowLEaWkUFfWWjhRNA==", "dependencies": { "@babel/core": "^7.21.4", "@babel/generator": "^7.21.4", @@ -3558,11 +3522,12 @@ "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@iarna/toml": "^2.2.5", - "@rpgjs/common": "^4.0.0-rc.10", "@vitejs/plugin-vue": "^4.2.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", "axios": "^1.3.6", + "dedent": "^1.5.1", + "default-composer": "^0.5.1", "fs-extra": "^11.1.1", "glob": "^10.2.2", "image-size": "^1.0.2", @@ -3574,7 +3539,7 @@ "sass": "^1.62.1", "vite": "^4.3.2", "vite-node": "^0.30.1", - "vite-plugin-pwa": "^0.14.7", + "vite-plugin-pwa": "^0.16.4", "vite-plugin-require-transform": "^1.0.12", "vitest": "^0.30.1", "vitest-webgl-canvas-mock": "^1.1.0", @@ -3586,67 +3551,67 @@ } }, "node_modules/@rpgjs/database": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/database/-/database-4.0.0-rc.10.tgz", - "integrity": "sha512-8qs/F+NHZBBX851bCZ4lEDaypaNNevn8YBhDfUcBb1tXZwMdVtSLvAqP8GV1ZJC30HO0uo3SzMXdMtEuFlEP5A==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/database/-/database-4.0.2.tgz", + "integrity": "sha512-g6MRGu50OPBMY3AgD7OlazqPXOoDFXTvyKbXz91ZL07/CCs9S+SI6ndcgg0STve9ZoSbg8fAwtfFFwZYb3krkA==" }, "node_modules/@rpgjs/default-gui": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/default-gui/-/default-gui-4.0.0-rc.10.tgz", - "integrity": "sha512-GnZPB7QEK0ayaJvrq6WhbHt7IKgQWf2fMpThQ5bJVgjg814r1TIKngATXr6WJMyH6UTI3BFmIV/6i5rHUdAWkw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/default-gui/-/default-gui-4.0.2.tgz", + "integrity": "sha512-xmXMVVqE4r3pp7BHG5Up0qghhktke2jolj2UlZYZnDYc6CuxTJKA7UH4G2AfEsrDiNqGKByX+EAvdREvj+es6Q==", "dependencies": { - "@rpgjs/client": "^4.0.0-rc.10", + "@rpgjs/client": "^4.0.2", "rxjs": "^7.8.0", "typescript": "^5.0.2", "vue": "^3.2.47" } }, "node_modules/@rpgjs/gamepad": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/gamepad/-/gamepad-4.0.0-rc.10.tgz", - "integrity": "sha512-hs5Qo6Y99qu5V9Y6CvVBHMQnb5omrKMWJmRtXL5iP5c5jqpSVOUYAI+RdQ2ndV1f+R7LXXDh8EQIQSe/E2w1WA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/gamepad/-/gamepad-4.0.2.tgz", + "integrity": "sha512-eVVM6zmZvBkjIOqzZ8xGExp0l/pcGDlXVnya6G72EDwUhLPlAbhAFsOrHGBjORL7C0L4FLTqOhERkr5W5azYZQ==", "dependencies": { - "@rpgjs/client": "^4.0.0-rc.10", + "@rpgjs/client": "^4.0.2", "joypad.js": "^2.3.3" } }, "node_modules/@rpgjs/mobile-gui": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/mobile-gui/-/mobile-gui-4.0.0-rc.10.tgz", - "integrity": "sha512-Pbo/vJQo6caAmJAxjJhcByJZsOOiGN093WElNUY/xhW6EEkLHHNGe6kQvc6M3ycuoOeL2B2uapDtwbhZiaI/fQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/mobile-gui/-/mobile-gui-4.0.2.tgz", + "integrity": "sha512-PJD69RVx7lycd+7VSHCqez91QR6v1Z43UmAtTjw2LCDYhmttwXs2e8JWQKCdylDrQC6Mx7oZTZFIx/LID3MM2Q==", "dependencies": { - "@rpgjs/client": "^4.0.0-rc.10", + "@rpgjs/client": "^4.0.2", "nipplejs": "^0.10.1", "vue": "^3.2.47" } }, "node_modules/@rpgjs/plugin-emotion-bubbles": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/plugin-emotion-bubbles/-/plugin-emotion-bubbles-4.0.0-rc.10.tgz", - "integrity": "sha512-TpYh90Z07beel3wTUWdmTUEcfFLcCKd+6LKYetdIuXNV9efYVu3h1ZBGCwiawaN0GHnNx6zE3aBlIBkoV5tCHw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/plugin-emotion-bubbles/-/plugin-emotion-bubbles-4.0.2.tgz", + "integrity": "sha512-mKOoZrvMH1joUCTVPKohJzKSPox+IXoMQQGTMd009+aiqUpYvXKk92GKbx3d+xbZGOF35UxtEWR9x2yk4DzF2A==", "dependencies": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10" + "@rpgjs/client": "^4.0.2", + "@rpgjs/server": "^4.0.2" } }, "node_modules/@rpgjs/save": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/save/-/save-4.0.0-rc.10.tgz", - "integrity": "sha512-ZC2OV/WF+ofyJwoQ5yfFtHbSHVI24J6iw35KDdEH302pqaZMX7eikiqIxkAFuxAsgPgmbang+ifgx5rhstR0YQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/save/-/save-4.0.2.tgz", + "integrity": "sha512-LyGCz3NDGiJigbt7azd16OeltzM2NUYNLlX1avblC97YdjRtcTz0Rda0ey6fExWMi7CdhkcVHn/6TnK7NEsanA==", "dependencies": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10" + "@rpgjs/client": "^4.0.2", + "@rpgjs/server": "^4.0.2" } }, "node_modules/@rpgjs/server": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/server/-/server-4.0.0-rc.10.tgz", - "integrity": "sha512-O2DiwuTmODHdmHEp2vmJj1dlUWh8EZszpMQ5bB2nmpgITP0BKM+opieSaZn0YPj/f5DQY+3Q8adK/2iG99SZJA==", - "dependencies": { - "@rpgjs/common": "^4.0.0-rc.10", - "@rpgjs/database": "^4.0.0-rc.10", - "@rpgjs/tiled": "^4.0.0-rc.10", - "@rpgjs/types": "^4.0.0-rc.10", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/server/-/server-4.0.2.tgz", + "integrity": "sha512-wrGX+PaIFVezxIErTCpr6JmBTtpUPHyix7D8R0B9MPlL2ZgH+BNLkIrpqBHwvEhMgRVJLAr/kEVJ6mwwR/b42w==", + "dependencies": { + "@rpgjs/common": "^4.0.2", + "@rpgjs/database": "^4.0.2", + "@rpgjs/tiled": "^4.0.2", + "@rpgjs/types": "^4.0.2", "axios": "^1.3.6", "cors": "^2.8.5", "express": "^4.18.2", @@ -3660,19 +3625,19 @@ } }, "node_modules/@rpgjs/standalone": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/standalone/-/standalone-4.0.0-rc.10.tgz", - "integrity": "sha512-iY0A+goEDMlkLCj2jJ6ofuUPOocqMmb3w0U6Lgeir9pSVkpL7CUi9mc8nU+WFLrrkc+amZdXJrgDKDWrMVUO/w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/standalone/-/standalone-4.0.2.tgz", + "integrity": "sha512-M5yvGCK4oSjZuSrtgS+eEDgkMP1Ttddnt1/RXfrl5Lr7nlN43urEppAsb91nV9IuHH/7VlJZt7yuB2dZSPeSug==", "dependencies": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/common": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10" + "@rpgjs/client": "^4.0.2", + "@rpgjs/common": "^4.0.2", + "@rpgjs/server": "^4.0.2" } }, "node_modules/@rpgjs/tiled": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/tiled/-/tiled-4.0.0-rc.10.tgz", - "integrity": "sha512-d2JogD6rHpnoAzPdRQv8/vcVnwmw9064we4lL1aZkYc2ZhkhcaS7GXxkMQxrR3wBd3julAB7v8490ttXAHcSsw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/tiled/-/tiled-4.0.2.tgz", + "integrity": "sha512-XL7+hFHF5lM1o/aRSRO6K32EMuamRMv30PFwtd/vnmyQ3woY+20bHKEBwiSO/1+hZajfFGPnAWZQ0Av0kGhEGA==", "dependencies": { "axios": "^1.3.4", "buffer": "^6.0.3", @@ -3681,12 +3646,12 @@ } }, "node_modules/@rpgjs/title-screen": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/title-screen/-/title-screen-4.0.0-rc.10.tgz", - "integrity": "sha512-nPR4FqiYptKxwpsL5Ukq9HmIbetsolDhnVeJMMACdJ9W9q33lrYaN19lt0IkwnpI60YX2qNJ0QiCHLl6LvBKGg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/title-screen/-/title-screen-4.0.2.tgz", + "integrity": "sha512-dAVFsHmgTmM4Qk8SALGpGd+kuLRlp04GK2eQfMea5IlGr5n92+F6h8Ro3g64kcVGvGGVijDijt197q2elx0Arg==", "dependencies": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10", + "@rpgjs/client": "^4.0.2", + "@rpgjs/server": "^4.0.2", "axios": "^1.4.0", "body-parser": "^1.20.2", "mongoose": "^7.4.3", @@ -3694,9 +3659,9 @@ } }, "node_modules/@rpgjs/types": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/types/-/types-4.0.0-rc.10.tgz", - "integrity": "sha512-Q3XbXl5vDN7iA44T6xJJEDd3xsORnoxDhxhhTg9tBpra2gGdJ4Pgm/G4rTfycpjzpePqyxdBH2sxNj0ECQOk9Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/types/-/types-4.0.2.tgz", + "integrity": "sha512-SvvD25qy0/3WmoNLIoAqObHphfpgvJCgGW+wQqCGH/a2UOAtbErx9BN7xmlx0EH6Ce1+suMGDnfAe8m5bmllwg==", "dependencies": { "rxjs": "^7.8.1" } @@ -4294,9 +4259,9 @@ "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==" }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, "node_modules/@types/howler": { "version": "2.2.7", @@ -4322,9 +4287,9 @@ } }, "node_modules/@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", + "integrity": "sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==" }, "node_modules/@types/webidl-conversions": { "version": "7.0.0", @@ -4665,13 +4630,14 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "get-intrinsic": "^1.2.1", "is-array-buffer": "^3.0.2", "is-shared-array-buffer": "^1.0.2" @@ -4747,12 +4713,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", + "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "core-js-compat": "^3.32.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4896,9 +4862,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "funding": [ { "type": "opencollective", @@ -4914,10 +4880,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -5002,9 +4968,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001524", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz", - "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==", + "version": "1.0.30001546", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz", + "integrity": "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==", "funding": [ { "type": "opencollective", @@ -5338,11 +5304,11 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/core-js-compat": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", - "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dependencies": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.1" }, "funding": { "type": "opencollective", @@ -5445,6 +5411,19 @@ } } }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -5464,11 +5443,30 @@ "node": ">=0.10.0" } }, + "node_modules/default-composer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/default-composer/-/default-composer-0.5.1.tgz", + "integrity": "sha512-lEX0EoZZNkdDGL4kvu1SEi3blRkNF81VTx2PdFkQ7jxR+99tJRl6VoEiig91mwXf3xKYuXeBJzVsd7SvTA2c7A==" + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -5593,9 +5591,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.505", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.505.tgz", - "integrity": "sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==" + "version": "1.4.544", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz", + "integrity": "sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -5667,17 +5665,17 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "dependencies": { "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", + "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", @@ -5693,23 +5691,23 @@ "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", "typed-array-buffer": "^1.0.0", "typed-array-byte-length": "^1.0.0", "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -7171,6 +7169,17 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", @@ -7607,17 +7616,18 @@ } }, "node_modules/nanostores": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.8.1.tgz", - "integrity": "sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.9.3.tgz", + "integrity": "sha512-KobZjcVyNndNrb5DAjfs0WG0lRcZu5Q1BOrfTOxokFLi25zFrWPjg+joXC6kuDqNfSt9fQwppyjUBkRPtsL+8w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "peer": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" } }, "node_modules/negotiator": { @@ -7907,9 +7917,9 @@ } }, "node_modules/pixi-viewport": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pixi-viewport/-/pixi-viewport-5.0.1.tgz", - "integrity": "sha512-fIILU9xztqGnhGF5SYfjn1Rir/7asWkJ8zSUay2hwzPrdGTWFtB4yiIlZDeFaLf7KHA04RRb2kI01Sy1kNksAw==" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/pixi-viewport/-/pixi-viewport-5.0.2.tgz", + "integrity": "sha512-U77KnCTl81xEgxEQRFEuI7MYVySWwCVkA41EnM8KiOYwgVOwdBUa7318O+u61IOnTwnoYLzaihy/kpoONKU13Q==" }, "node_modules/pixi.js": { "version": "7.2.4", @@ -8171,6 +8181,29 @@ "quickselect": "^2.0.0" } }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -8230,13 +8263,13 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -8328,9 +8361,9 @@ } }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -8658,12 +8691,12 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -8742,6 +8775,14 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -8813,6 +8854,19 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.2.tgz", @@ -8894,9 +8948,9 @@ } }, "node_modules/simple-room-client": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/simple-room-client/-/simple-room-client-2.0.5.tgz", - "integrity": "sha512-OuSGM3QvBilB/hs7IlZcm4OhpnlWjGVg6z4pi601/iP/q0WQ+xbNU3yK3JFT7g32IACZuTbPMyQFVdkr+JdIPA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/simple-room-client/-/simple-room-client-2.0.6.tgz", + "integrity": "sha512-HA3cdXsnx/gpQVC9VU/ZbVMg6NgFFw9XZCwHqueEiToYbFLaRHdI+skFeL2B4Xp6aCDy1lu2AyUNYjNQmF733Q==", "dependencies": { "lodash.merge": "4.6.2", "lodash.mergewith": "4.6.2", @@ -8905,6 +8959,20 @@ "rxjs": "7.8.0" } }, + "node_modules/simple-room-client/node_modules/nanostores": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.8.1.tgz", + "integrity": "sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, "node_modules/simple-room/node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -9121,9 +9189,9 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.9.tgz", - "integrity": "sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -9132,6 +9200,7 @@ "has-symbols": "^1.0.3", "internal-slot": "^1.0.5", "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", "side-channel": "^1.0.4" }, "funding": { @@ -9139,13 +9208,13 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -9155,26 +9224,26 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9584,9 +9653,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -9746,25 +9815,26 @@ } }, "node_modules/vite-plugin-pwa": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.14.7.tgz", - "integrity": "sha512-dNJaf0fYOWncmjxv9HiSa2xrSjipjff7IkYE5oIUJ2x5HKu3cXgA8LRgzOwTc5MhwyFYRSU0xyN0Phbx3NsQYw==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.16.5.tgz", + "integrity": "sha512-Ahol4dwhMP2UHPQXkllSlXbihOaDFnvBIDPmAxoSZ1EObBUJGP4CMRyCyAVkIHjd6/H+//vH0DM2ON+XxHr81g==", "dependencies": { - "@rollup/plugin-replace": "^5.0.1", "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "pretty-bytes": "^6.0.0", - "rollup": "^3.7.2", - "workbox-build": "^6.5.4", - "workbox-window": "^6.5.4" + "fast-glob": "^3.3.1", + "pretty-bytes": "^6.1.1", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" + }, + "engines": { + "node": ">=16.0.0" }, "funding": { "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { "vite": "^3.1.0 || ^4.0.0", - "workbox-build": "^6.5.4", - "workbox-window": "^6.5.4" + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" } }, "node_modules/vite-plugin-require-transform": { @@ -10345,26 +10415,26 @@ } }, "node_modules/workbox-background-sync": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", - "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz", + "integrity": "sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==", "dependencies": { "idb": "^7.0.1", - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workbox-broadcast-update": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", - "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz", + "integrity": "sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==", "dependencies": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workbox-build": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", - "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.0.0.tgz", + "integrity": "sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==", "dependencies": { "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.11.1", @@ -10388,24 +10458,24 @@ "strip-comments": "^2.0.1", "tempy": "^0.6.0", "upath": "^1.2.0", - "workbox-background-sync": "6.6.0", - "workbox-broadcast-update": "6.6.0", - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-google-analytics": "6.6.0", - "workbox-navigation-preload": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-range-requests": "6.6.0", - "workbox-recipes": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0", - "workbox-streams": "6.6.0", - "workbox-sw": "6.6.0", - "workbox-window": "6.6.0" - }, - "engines": { - "node": ">=10.0.0" + "workbox-background-sync": "7.0.0", + "workbox-broadcast-update": "7.0.0", + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-google-analytics": "7.0.0", + "workbox-navigation-preload": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-range-requests": "7.0.0", + "workbox-recipes": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0", + "workbox-streams": "7.0.0", + "workbox-sw": "7.0.0", + "workbox-window": "7.0.0" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/workbox-build/node_modules/@rollup/plugin-babel": { @@ -10477,11 +10547,6 @@ "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/workbox-build/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - }, "node_modules/workbox-build/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -10615,115 +10680,114 @@ } }, "node_modules/workbox-cacheable-response": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", - "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", - "deprecated": "workbox-background-sync@6.6.0", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz", + "integrity": "sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==", "dependencies": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workbox-core": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", - "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.0.0.tgz", + "integrity": "sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==" }, "node_modules/workbox-expiration": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", - "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.0.0.tgz", + "integrity": "sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==", "dependencies": { "idb": "^7.0.1", - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workbox-google-analytics": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", - "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz", + "integrity": "sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==", "dependencies": { - "workbox-background-sync": "6.6.0", - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" + "workbox-background-sync": "7.0.0", + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "node_modules/workbox-navigation-preload": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", - "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz", + "integrity": "sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==", "dependencies": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workbox-precaching": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", - "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.0.0.tgz", + "integrity": "sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==", "dependencies": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "node_modules/workbox-range-requests": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", - "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz", + "integrity": "sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==", "dependencies": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workbox-recipes": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", - "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.0.0.tgz", + "integrity": "sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==", "dependencies": { - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "node_modules/workbox-routing": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", - "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.0.0.tgz", + "integrity": "sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==", "dependencies": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workbox-strategies": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", - "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.0.0.tgz", + "integrity": "sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==", "dependencies": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workbox-streams": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", - "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.0.0.tgz", + "integrity": "sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==", "dependencies": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0" + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0" } }, "node_modules/workbox-sw": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", - "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz", + "integrity": "sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==" }, "node_modules/workbox-window": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", - "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz", + "integrity": "sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==", "dependencies": { "@types/trusted-types": "^2.0.2", - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "node_modules/workerpool": { @@ -11581,9 +11645,9 @@ } }, "@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==" }, "@babel/core": { "version": "7.21.8", @@ -11635,12 +11699,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "requires": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -11685,9 +11749,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-function-name": { "version": "7.22.5", @@ -11715,23 +11779,23 @@ } }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/helper-optimise-call-expression": { @@ -11797,14 +11861,14 @@ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==" + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" }, "@babel/helper-wrap-function": { "version": "7.22.10", @@ -11842,21 +11906,21 @@ "integrity": "sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "@babel/plugin-transform-optional-chaining": "^7.22.15" } }, "@babel/plugin-proposal-async-generator-functions": { @@ -12150,9 +12214,9 @@ } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz", - "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", "requires": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -12179,9 +12243,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", - "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12206,17 +12270,17 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" } @@ -12231,9 +12295,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", - "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12283,9 +12347,9 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12344,11 +12408,11 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz", - "integrity": "sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "requires": { - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" } @@ -12409,15 +12473,15 @@ } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz", - "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", "requires": { "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/plugin-transform-parameters": "^7.22.15" } }, "@babel/plugin-transform-object-super": { @@ -12439,9 +12503,9 @@ } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.22.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz", - "integrity": "sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -12449,9 +12513,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12589,16 +12653,16 @@ } }, "@babel/preset-env": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.10.tgz", - "integrity": "sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -12619,41 +12683,41 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.10", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", "@babel/plugin-transform-async-to-generator": "^7.22.5", "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", + "@babel/plugin-transform-block-scoping": "^7.22.15", "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", + "@babel/plugin-transform-destructuring": "^7.22.15", "@babel/plugin-transform-dotall-regex": "^7.22.5", "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", "@babel/plugin-transform-member-expression-literals": "^7.22.5", "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", "@babel/plugin-transform-modules-umd": "^7.22.5", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.10", - "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", "@babel/plugin-transform-property-literals": "^7.22.5", "@babel/plugin-transform-regenerator": "^7.22.10", "@babel/plugin-transform-reserved-words": "^7.22.5", @@ -12667,7 +12731,7 @@ "@babel/plugin-transform-unicode-regex": "^7.22.5", "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.10", + "@babel/types": "^7.22.19", "babel-plugin-polyfill-corejs2": "^0.4.5", "babel-plugin-polyfill-corejs3": "^0.8.3", "babel-plugin-polyfill-regenerator": "^0.5.2", @@ -12736,12 +12800,12 @@ } }, "@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "requires": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -13011,6 +13075,12 @@ "sparse-bitfield": "^3.0.3" } }, + "@nanostores/react": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@nanostores/react/-/react-0.7.1.tgz", + "integrity": "sha512-EXQg9N4MdI4eJQz/AZLIx3hxQ6BuBmV4Q55bCd5YCSgEOAW7tGTsIZxpRXxvxLXzflNvHTBvfrDNY38TlSVBkQ==", + "requires": {} + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -13293,78 +13363,42 @@ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "optional": true }, - "@rollup/plugin-replace": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz", - "integrity": "sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==", - "requires": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.27.0" - }, - "dependencies": { - "magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - } - } - }, - "@rollup/pluginutils": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.4.tgz", - "integrity": "sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==", - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "dependencies": { - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - } - } - }, "@rpgjs/chat": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/chat/-/chat-4.0.0-rc.10.tgz", - "integrity": "sha512-+ABREzDeCUw8gIgYptdTwLd6tCAT0zeXBkJbyhJvsanru/sSfP4/JrXbP2cWznfSQwTb7bNueoG5UcDN54ITSg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/chat/-/chat-4.0.2.tgz", + "integrity": "sha512-sEmrP3+GPo+23DpppzMl/lI6fWJQKy0g7JMzYVi1Qro360KC8ynOQE8hdZ9bMzpGkEZTpMAidklM85/ngOznyg==", "requires": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10" + "@rpgjs/client": "^4.0.2", + "@rpgjs/server": "^4.0.2" } }, "@rpgjs/client": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/client/-/client-4.0.0-rc.10.tgz", - "integrity": "sha512-8pxXhBt+naT2etjpcMMa6mI7TRNy6vbkFmotvjfVdfWYlQJ6seJ0r9Iu8bP1hM6bPpNi7uHHbQDPgKoEGH9IIA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/client/-/client-4.0.2.tgz", + "integrity": "sha512-1giTS0X/7dKVD8syC7/Fh9bXvvplklZkgeNu2SwiA08Rfjx4lDiPu0N42ulILT0wsZFaUKIpOH032XjKWil09A==", "requires": { "@pixi/tilemap": "^4.0.0", - "@rpgjs/common": "^4.0.0-rc.10", - "@rpgjs/tiled": "^4.0.0-rc.10", - "@rpgjs/types": "^4.0.0-rc.10", + "@rpgjs/common": "^4.0.2", + "@rpgjs/tiled": "^4.0.2", + "@rpgjs/types": "^4.0.2", "@types/howler": "2.2.7", "howler": "2.2.3", "lodash.get": "^4.4.2", "lodash.merge": "4.6.2", - "pixi-viewport": "5.0.1", + "pixi-viewport": "^5.0.2", "pixi.js": "7.2.4", "rxjs": "7.8.0", - "simple-room-client": "^2.0.5", + "simple-room-client": "^2.0.6", "vue": "^3.2.47" } }, "@rpgjs/common": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/common/-/common-4.0.0-rc.10.tgz", - "integrity": "sha512-DE8A7JsvZGwQ+TbAYm/t5e12f8OixghzddK7ptU8Ob21EiX+Ea/j0ui65zN/ydQ/0B3OT7/+me5cYnDQoxl2/g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/common/-/common-4.0.2.tgz", + "integrity": "sha512-xvPyu07bMr13lCVhukRic19huRsdgNZsL3YyqUeNaqQrgo4/Juy69T7gruYZQh5CITXDR8zI25lolUO4mxE8Dg==", "requires": { - "@rpgjs/tiled": "^4.0.0-rc.10", - "@rpgjs/types": "^4.0.0-rc.10", + "@rpgjs/tiled": "^4.0.2", + "@rpgjs/types": "^4.0.2", "rbush": "^3.0.1", "rxjs": "^7.8.0", "sat": "^0.9.0", @@ -13382,9 +13416,9 @@ } }, "@rpgjs/compiler": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/compiler/-/compiler-4.0.0-rc.10.tgz", - "integrity": "sha512-JzneWRb1Tzoyb+7kFCwdIoM+UtrWVLpIHhZBreV+fnumqIkZ7ZfDg4ZkmabbNX1hJBIsHxf6Q2z81sQFBycPWA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/compiler/-/compiler-4.0.2.tgz", + "integrity": "sha512-Tq/RN7GOlDq690PT31gxHqAqfwHuctx2C++z0k+pCnH19WRLPokO7xwUC8yU0vbI64TGzowLEaWkUFfWWjhRNA==", "requires": { "@babel/core": "^7.21.4", "@babel/generator": "^7.21.4", @@ -13394,11 +13428,12 @@ "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@iarna/toml": "^2.2.5", - "@rpgjs/common": "^4.0.0-rc.10", "@vitejs/plugin-vue": "^4.2.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", "axios": "^1.3.6", + "dedent": "^1.5.1", + "default-composer": "^0.5.1", "fs-extra": "^11.1.1", "glob": "^10.2.2", "image-size": "^1.0.2", @@ -13410,7 +13445,7 @@ "sass": "^1.62.1", "vite": "^4.3.2", "vite-node": "^0.30.1", - "vite-plugin-pwa": "^0.14.7", + "vite-plugin-pwa": "^0.16.4", "vite-plugin-require-transform": "^1.0.12", "vitest": "^0.30.1", "vitest-webgl-canvas-mock": "^1.1.0", @@ -13419,67 +13454,67 @@ } }, "@rpgjs/database": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/database/-/database-4.0.0-rc.10.tgz", - "integrity": "sha512-8qs/F+NHZBBX851bCZ4lEDaypaNNevn8YBhDfUcBb1tXZwMdVtSLvAqP8GV1ZJC30HO0uo3SzMXdMtEuFlEP5A==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/database/-/database-4.0.2.tgz", + "integrity": "sha512-g6MRGu50OPBMY3AgD7OlazqPXOoDFXTvyKbXz91ZL07/CCs9S+SI6ndcgg0STve9ZoSbg8fAwtfFFwZYb3krkA==" }, "@rpgjs/default-gui": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/default-gui/-/default-gui-4.0.0-rc.10.tgz", - "integrity": "sha512-GnZPB7QEK0ayaJvrq6WhbHt7IKgQWf2fMpThQ5bJVgjg814r1TIKngATXr6WJMyH6UTI3BFmIV/6i5rHUdAWkw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/default-gui/-/default-gui-4.0.2.tgz", + "integrity": "sha512-xmXMVVqE4r3pp7BHG5Up0qghhktke2jolj2UlZYZnDYc6CuxTJKA7UH4G2AfEsrDiNqGKByX+EAvdREvj+es6Q==", "requires": { - "@rpgjs/client": "^4.0.0-rc.10", + "@rpgjs/client": "^4.0.2", "rxjs": "^7.8.0", "typescript": "^5.0.2", "vue": "^3.2.47" } }, "@rpgjs/gamepad": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/gamepad/-/gamepad-4.0.0-rc.10.tgz", - "integrity": "sha512-hs5Qo6Y99qu5V9Y6CvVBHMQnb5omrKMWJmRtXL5iP5c5jqpSVOUYAI+RdQ2ndV1f+R7LXXDh8EQIQSe/E2w1WA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/gamepad/-/gamepad-4.0.2.tgz", + "integrity": "sha512-eVVM6zmZvBkjIOqzZ8xGExp0l/pcGDlXVnya6G72EDwUhLPlAbhAFsOrHGBjORL7C0L4FLTqOhERkr5W5azYZQ==", "requires": { - "@rpgjs/client": "^4.0.0-rc.10", + "@rpgjs/client": "^4.0.2", "joypad.js": "^2.3.3" } }, "@rpgjs/mobile-gui": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/mobile-gui/-/mobile-gui-4.0.0-rc.10.tgz", - "integrity": "sha512-Pbo/vJQo6caAmJAxjJhcByJZsOOiGN093WElNUY/xhW6EEkLHHNGe6kQvc6M3ycuoOeL2B2uapDtwbhZiaI/fQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/mobile-gui/-/mobile-gui-4.0.2.tgz", + "integrity": "sha512-PJD69RVx7lycd+7VSHCqez91QR6v1Z43UmAtTjw2LCDYhmttwXs2e8JWQKCdylDrQC6Mx7oZTZFIx/LID3MM2Q==", "requires": { - "@rpgjs/client": "^4.0.0-rc.10", + "@rpgjs/client": "^4.0.2", "nipplejs": "^0.10.1", "vue": "^3.2.47" } }, "@rpgjs/plugin-emotion-bubbles": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/plugin-emotion-bubbles/-/plugin-emotion-bubbles-4.0.0-rc.10.tgz", - "integrity": "sha512-TpYh90Z07beel3wTUWdmTUEcfFLcCKd+6LKYetdIuXNV9efYVu3h1ZBGCwiawaN0GHnNx6zE3aBlIBkoV5tCHw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/plugin-emotion-bubbles/-/plugin-emotion-bubbles-4.0.2.tgz", + "integrity": "sha512-mKOoZrvMH1joUCTVPKohJzKSPox+IXoMQQGTMd009+aiqUpYvXKk92GKbx3d+xbZGOF35UxtEWR9x2yk4DzF2A==", "requires": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10" + "@rpgjs/client": "^4.0.2", + "@rpgjs/server": "^4.0.2" } }, "@rpgjs/save": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/save/-/save-4.0.0-rc.10.tgz", - "integrity": "sha512-ZC2OV/WF+ofyJwoQ5yfFtHbSHVI24J6iw35KDdEH302pqaZMX7eikiqIxkAFuxAsgPgmbang+ifgx5rhstR0YQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/save/-/save-4.0.2.tgz", + "integrity": "sha512-LyGCz3NDGiJigbt7azd16OeltzM2NUYNLlX1avblC97YdjRtcTz0Rda0ey6fExWMi7CdhkcVHn/6TnK7NEsanA==", "requires": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10" + "@rpgjs/client": "^4.0.2", + "@rpgjs/server": "^4.0.2" } }, "@rpgjs/server": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/server/-/server-4.0.0-rc.10.tgz", - "integrity": "sha512-O2DiwuTmODHdmHEp2vmJj1dlUWh8EZszpMQ5bB2nmpgITP0BKM+opieSaZn0YPj/f5DQY+3Q8adK/2iG99SZJA==", - "requires": { - "@rpgjs/common": "^4.0.0-rc.10", - "@rpgjs/database": "^4.0.0-rc.10", - "@rpgjs/tiled": "^4.0.0-rc.10", - "@rpgjs/types": "^4.0.0-rc.10", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/server/-/server-4.0.2.tgz", + "integrity": "sha512-wrGX+PaIFVezxIErTCpr6JmBTtpUPHyix7D8R0B9MPlL2ZgH+BNLkIrpqBHwvEhMgRVJLAr/kEVJ6mwwR/b42w==", + "requires": { + "@rpgjs/common": "^4.0.2", + "@rpgjs/database": "^4.0.2", + "@rpgjs/tiled": "^4.0.2", + "@rpgjs/types": "^4.0.2", "axios": "^1.3.6", "cors": "^2.8.5", "express": "^4.18.2", @@ -13493,19 +13528,19 @@ } }, "@rpgjs/standalone": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/standalone/-/standalone-4.0.0-rc.10.tgz", - "integrity": "sha512-iY0A+goEDMlkLCj2jJ6ofuUPOocqMmb3w0U6Lgeir9pSVkpL7CUi9mc8nU+WFLrrkc+amZdXJrgDKDWrMVUO/w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/standalone/-/standalone-4.0.2.tgz", + "integrity": "sha512-M5yvGCK4oSjZuSrtgS+eEDgkMP1Ttddnt1/RXfrl5Lr7nlN43urEppAsb91nV9IuHH/7VlJZt7yuB2dZSPeSug==", "requires": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/common": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10" + "@rpgjs/client": "^4.0.2", + "@rpgjs/common": "^4.0.2", + "@rpgjs/server": "^4.0.2" } }, "@rpgjs/tiled": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/tiled/-/tiled-4.0.0-rc.10.tgz", - "integrity": "sha512-d2JogD6rHpnoAzPdRQv8/vcVnwmw9064we4lL1aZkYc2ZhkhcaS7GXxkMQxrR3wBd3julAB7v8490ttXAHcSsw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/tiled/-/tiled-4.0.2.tgz", + "integrity": "sha512-XL7+hFHF5lM1o/aRSRO6K32EMuamRMv30PFwtd/vnmyQ3woY+20bHKEBwiSO/1+hZajfFGPnAWZQ0Av0kGhEGA==", "requires": { "axios": "^1.3.4", "buffer": "^6.0.3", @@ -13514,12 +13549,12 @@ } }, "@rpgjs/title-screen": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/title-screen/-/title-screen-4.0.0-rc.10.tgz", - "integrity": "sha512-nPR4FqiYptKxwpsL5Ukq9HmIbetsolDhnVeJMMACdJ9W9q33lrYaN19lt0IkwnpI60YX2qNJ0QiCHLl6LvBKGg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/title-screen/-/title-screen-4.0.2.tgz", + "integrity": "sha512-dAVFsHmgTmM4Qk8SALGpGd+kuLRlp04GK2eQfMea5IlGr5n92+F6h8Ro3g64kcVGvGGVijDijt197q2elx0Arg==", "requires": { - "@rpgjs/client": "^4.0.0-rc.10", - "@rpgjs/server": "^4.0.0-rc.10", + "@rpgjs/client": "^4.0.2", + "@rpgjs/server": "^4.0.2", "axios": "^1.4.0", "body-parser": "^1.20.2", "mongoose": "^7.4.3", @@ -13527,9 +13562,9 @@ } }, "@rpgjs/types": { - "version": "4.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rpgjs/types/-/types-4.0.0-rc.10.tgz", - "integrity": "sha512-Q3XbXl5vDN7iA44T6xJJEDd3xsORnoxDhxhhTg9tBpra2gGdJ4Pgm/G4rTfycpjzpePqyxdBH2sxNj0ECQOk9Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rpgjs/types/-/types-4.0.2.tgz", + "integrity": "sha512-SvvD25qy0/3WmoNLIoAqObHphfpgvJCgGW+wQqCGH/a2UOAtbErx9BN7xmlx0EH6Ce1+suMGDnfAe8m5bmllwg==", "requires": { "rxjs": "^7.8.1" }, @@ -14030,9 +14065,9 @@ "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==" }, "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, "@types/howler": { "version": "2.2.7", @@ -14058,9 +14093,9 @@ } }, "@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", + "integrity": "sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==" }, "@types/webidl-conversions": { "version": "7.0.0", @@ -14352,13 +14387,14 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "requires": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "get-intrinsic": "^1.2.1", "is-array-buffer": "^3.0.2", "is-shared-array-buffer": "^1.0.2" @@ -14413,12 +14449,12 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", + "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", "requires": { "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "core-js-compat": "^3.32.2" } }, "babel-plugin-polyfill-regenerator": { @@ -14531,14 +14567,14 @@ } }, "browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "requires": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "update-browserslist-db": "^1.0.13" } }, "bson": { @@ -14585,9 +14621,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001524", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz", - "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==" + "version": "1.0.30001546", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz", + "integrity": "sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==" }, "chai": { "version": "4.3.8", @@ -14825,11 +14861,11 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "core-js-compat": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", - "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "requires": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.1" } }, "cors": { @@ -14899,6 +14935,12 @@ "ms": "2.1.2" } }, + "dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "requires": {} + }, "deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -14912,11 +14954,27 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, + "default-composer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/default-composer/-/default-composer-0.5.1.tgz", + "integrity": "sha512-lEX0EoZZNkdDGL4kvu1SEi3blRkNF81VTx2PdFkQ7jxR+99tJRl6VoEiig91mwXf3xKYuXeBJzVsd7SvTA2c7A==" + }, + "define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -15001,9 +15059,9 @@ } }, "electron-to-chromium": { - "version": "1.4.505", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.505.tgz", - "integrity": "sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==" + "version": "1.4.544", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz", + "integrity": "sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==" }, "emoji-regex": { "version": "9.2.2", @@ -15062,17 +15120,17 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, "es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "requires": { "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", + "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", @@ -15088,23 +15146,23 @@ "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", "typed-array-buffer": "^1.0.0", "typed-array-byte-length": "^1.0.0", "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.11" } }, "es-set-tostringtag": { @@ -16142,6 +16200,14 @@ } } }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", @@ -16439,9 +16505,10 @@ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" }, "nanostores": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.8.1.tgz", - "integrity": "sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==" + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.9.3.tgz", + "integrity": "sha512-KobZjcVyNndNrb5DAjfs0WG0lRcZu5Q1BOrfTOxokFLi25zFrWPjg+joXC6kuDqNfSt9fQwppyjUBkRPtsL+8w==", + "peer": true }, "negotiator": { "version": "0.6.3", @@ -16652,9 +16719,9 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pixi-viewport": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pixi-viewport/-/pixi-viewport-5.0.1.tgz", - "integrity": "sha512-fIILU9xztqGnhGF5SYfjn1Rir/7asWkJ8zSUay2hwzPrdGTWFtB4yiIlZDeFaLf7KHA04RRb2kI01Sy1kNksAw==" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/pixi-viewport/-/pixi-viewport-5.0.2.tgz", + "integrity": "sha512-U77KnCTl81xEgxEQRFEuI7MYVySWwCVkA41EnM8KiOYwgVOwdBUa7318O+u61IOnTwnoYLzaihy/kpoONKU13Q==" }, "pixi.js": { "version": "7.2.4", @@ -16846,6 +16913,23 @@ "quickselect": "^2.0.0" } }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -16896,13 +16980,13 @@ } }, "regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "set-function-name": "^2.0.0" } }, "regexpu-core": { @@ -16971,9 +17055,9 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", "requires": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -17259,12 +17343,12 @@ } }, "safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -17316,6 +17400,14 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -17382,6 +17474,16 @@ "send": "0.18.0" } }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "set-value": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.2.tgz", @@ -17455,15 +17557,22 @@ } }, "simple-room-client": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/simple-room-client/-/simple-room-client-2.0.5.tgz", - "integrity": "sha512-OuSGM3QvBilB/hs7IlZcm4OhpnlWjGVg6z4pi601/iP/q0WQ+xbNU3yK3JFT7g32IACZuTbPMyQFVdkr+JdIPA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/simple-room-client/-/simple-room-client-2.0.6.tgz", + "integrity": "sha512-HA3cdXsnx/gpQVC9VU/ZbVMg6NgFFw9XZCwHqueEiToYbFLaRHdI+skFeL2B4Xp6aCDy1lu2AyUNYjNQmF733Q==", "requires": { "lodash.merge": "4.6.2", "lodash.mergewith": "4.6.2", "msgpack-lite": "0.1.26", "nanostores": "^0.8.0", "rxjs": "7.8.0" + }, + "dependencies": { + "nanostores": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.8.1.tgz", + "integrity": "sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==" + } } }, "smart-buffer": { @@ -17627,9 +17736,9 @@ } }, "string.prototype.matchall": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.9.tgz", - "integrity": "sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -17638,37 +17747,38 @@ "has-symbols": "^1.0.3", "internal-slot": "^1.0.5", "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", "side-channel": "^1.0.4" } }, "string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "stringify-object": { @@ -17945,9 +18055,9 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -18191,17 +18301,15 @@ } }, "vite-plugin-pwa": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.14.7.tgz", - "integrity": "sha512-dNJaf0fYOWncmjxv9HiSa2xrSjipjff7IkYE5oIUJ2x5HKu3cXgA8LRgzOwTc5MhwyFYRSU0xyN0Phbx3NsQYw==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.16.5.tgz", + "integrity": "sha512-Ahol4dwhMP2UHPQXkllSlXbihOaDFnvBIDPmAxoSZ1EObBUJGP4CMRyCyAVkIHjd6/H+//vH0DM2ON+XxHr81g==", "requires": { - "@rollup/plugin-replace": "^5.0.1", "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "pretty-bytes": "^6.0.0", - "rollup": "^3.7.2", - "workbox-build": "^6.5.4", - "workbox-window": "^6.5.4" + "fast-glob": "^3.3.1", + "pretty-bytes": "^6.1.1", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" } }, "vite-plugin-require-transform": { @@ -18340,26 +18448,26 @@ } }, "workbox-background-sync": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", - "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz", + "integrity": "sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==", "requires": { "idb": "^7.0.1", - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workbox-broadcast-update": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", - "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz", + "integrity": "sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==", "requires": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workbox-build": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", - "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.0.0.tgz", + "integrity": "sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==", "requires": { "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.11.1", @@ -18383,21 +18491,21 @@ "strip-comments": "^2.0.1", "tempy": "^0.6.0", "upath": "^1.2.0", - "workbox-background-sync": "6.6.0", - "workbox-broadcast-update": "6.6.0", - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-google-analytics": "6.6.0", - "workbox-navigation-preload": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-range-requests": "6.6.0", - "workbox-recipes": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0", - "workbox-streams": "6.6.0", - "workbox-sw": "6.6.0", - "workbox-window": "6.6.0" + "workbox-background-sync": "7.0.0", + "workbox-broadcast-update": "7.0.0", + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-google-analytics": "7.0.0", + "workbox-navigation-preload": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-range-requests": "7.0.0", + "workbox-recipes": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0", + "workbox-streams": "7.0.0", + "workbox-sw": "7.0.0", + "workbox-window": "7.0.0" }, "dependencies": { "@rollup/plugin-babel": { @@ -18441,11 +18549,6 @@ "picomatch": "^2.2.2" } }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -18550,114 +18653,114 @@ } }, "workbox-cacheable-response": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", - "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz", + "integrity": "sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==", "requires": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workbox-core": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", - "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.0.0.tgz", + "integrity": "sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==" }, "workbox-expiration": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", - "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.0.0.tgz", + "integrity": "sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==", "requires": { "idb": "^7.0.1", - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workbox-google-analytics": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", - "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz", + "integrity": "sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==", "requires": { - "workbox-background-sync": "6.6.0", - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" + "workbox-background-sync": "7.0.0", + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "workbox-navigation-preload": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", - "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz", + "integrity": "sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==", "requires": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workbox-precaching": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", - "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.0.0.tgz", + "integrity": "sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==", "requires": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "workbox-range-requests": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", - "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz", + "integrity": "sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==", "requires": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workbox-recipes": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", - "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.0.0.tgz", + "integrity": "sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==", "requires": { - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "workbox-routing": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", - "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.0.0.tgz", + "integrity": "sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==", "requires": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workbox-strategies": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", - "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.0.0.tgz", + "integrity": "sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==", "requires": { - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workbox-streams": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", - "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.0.0.tgz", + "integrity": "sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==", "requires": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0" + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0" } }, "workbox-sw": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", - "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz", + "integrity": "sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==" }, "workbox-window": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", - "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz", + "integrity": "sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==", "requires": { "@types/trusted-types": "^2.0.2", - "workbox-core": "6.6.0" + "workbox-core": "7.0.0" } }, "workerpool": { diff --git a/packages/sample2/package.json b/packages/sample2/package.json index d8ecb1f8..20aee22b 100644 --- a/packages/sample2/package.json +++ b/packages/sample2/package.json @@ -12,6 +12,7 @@ "author": "", "license": "MIT", "dependencies": { + "@nanostores/react": "^0.7.1", "@rpgjs/chat": "^4.0.2", "@rpgjs/client": "^4.0.2", "@rpgjs/common": "^4.0.2", @@ -25,6 +26,8 @@ "@rpgjs/server": "^4.0.2", "@rpgjs/standalone": "^4.0.2", "@rpgjs/title-screen": "^4.0.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rpgjs-helloworld": "^0.0.1", "socket.io-client": "^4.7.2" }, diff --git a/packages/sample2/tsconfig.json b/packages/sample2/tsconfig.json index 2f2606cb..dee1e974 100644 --- a/packages/sample2/tsconfig.json +++ b/packages/sample2/tsconfig.json @@ -21,7 +21,8 @@ "types": [ "node" ], - "resolveJsonModule": true + "resolveJsonModule": true, + "jsx": "react" }, "include": [ ".",