diff --git a/.babelrc b/.babelrc index 71ffb40c..10b220fe 100644 --- a/.babelrc +++ b/.babelrc @@ -7,8 +7,5 @@ "corejs": 3 } ] - ], - "plugins": [ - "@babel/plugin-proposal-class-properties" ] } diff --git a/assets/styles/fonts.css b/assets/styles/fonts.css index 7cc9488b..4e92a223 100644 --- a/assets/styles/fonts.css +++ b/assets/styles/fonts.css @@ -25,6 +25,12 @@ src: url('../fonts/Asterisk.woff2'); } +@font-face { + font-family: 'Burbank Big Regular'; + font-weight: bold; + src: url('../fonts/Burbank Big Regular Bold.woff2'); +} + @font-face { font-family: 'Burbank Small'; src: url('../fonts/Burbank Small Medium.woff2'); @@ -41,6 +47,12 @@ src: url('../fonts/CCComicrazy-Roman.woff2'); } +@font-face { + font-family: 'CCComiccrazy Bold'; + font-weight: bold; + src: url('../fonts/CCComicrazy_Bold.woff2'); +} + @font-face { font-family: 'CCFaceFront'; src: url('../fonts/CCFaceFront.woff2'); diff --git a/index.html b/index.html index 23c7df77..e656f99c 100644 --- a/index.html +++ b/index.html @@ -18,7 +18,7 @@ - + diff --git a/package-lock.json b/package-lock.json index 182da504..a5b980ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,29 +1,29 @@ { "name": "yukon", - "version": "1.5.0-beta", + "version": "1.6.0-beta", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "yukon", - "version": "1.5.0-beta", + "version": "1.6.0-beta", "license": "MIT", "devDependencies": { - "@babel/core": "^7.20.2", - "@babel/preset-env": "^7.20.2", - "babel-loader": "^8.3.0", + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "babel-loader": "^9.1.3", "compression-webpack-plugin": "^10.0.0", - "core-js": "^3.26.0", - "howler": "^2.2.3", - "html-webpack-plugin": "^5.5.0", - "javascript-obfuscator": "^4.0.0", - "phasereditor2d-launcher": "^3.35.1", + "core-js": "^3.33.0", + "howler": "^2.2.4", + "html-webpack-plugin": "^5.5.3", + "javascript-obfuscator": "^4.1.0", + "phasereditor2d-launcher": "^3.63.0", "phasereditor2d-ninepatch-plugin": "^1.2.0", - "socket.io-client": "^4.5.3", + "socket.io-client": "^4.7.2", "source-map": "^0.7.4", - "webpack": "^5.74.0", - "webpack-cli": "^4.10.0", - "webpack-dev-server": "^4.11.1", + "webpack": "^5.89.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1", "webpack-obfuscator": "^3.5.1" } }, @@ -41,47 +41,48 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", - "convert-source-map": "^1.7.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.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.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -92,13 +93,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.2.tgz", - "integrity": "sha512-SD75PMIK6i9H8G/tfGvB4KKl4Nw6Ssos9nGgYwxbgyTP0iX/Z55DveoH86rmUB/YHTQQ+ZC0F7xxaY8l2OF44Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -106,9 +108,9 @@ } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -120,61 +122,60 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "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==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", - "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -184,13 +185,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -200,142 +202,128 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "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==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "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==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "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==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "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==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@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.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -345,121 +333,121 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "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==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "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==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", - "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.11", - "@babel/types": "^7.18.10" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -467,9 +455,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.2.tgz", - "integrity": "sha512-afk318kh2uKbo7BEj2QtEi8HVCGrwHUffrYDy7dgVcSa2j9lY3LDjPzcyGdpX7xgm35aWqvciZJ4WKmdF/SxYg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -479,12 +467,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "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.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "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==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -494,14 +482,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "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==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -510,17 +498,11 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, "engines": { "node": ">=6.9.0" }, @@ -528,47 +510,37 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { - "@babel/core": "^7.12.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -577,46 +549,37 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -625,14 +588,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -641,82 +603,109 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -725,16 +714,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -743,53 +729,47 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.22.5" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { "node": ">=6.9.0" @@ -798,37 +778,45 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "node_modules/@babel/plugin-transform-block-scoping": { + "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==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -837,97 +825,132 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.12.0" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@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.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@babel/plugin-transform-destructuring": { + "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==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -936,13 +959,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -951,13 +975,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -966,15 +991,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "node_modules/@babel/plugin-transform-for-of": { + "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==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -983,13 +1006,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -998,13 +1023,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1013,21 +1039,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1036,13 +1054,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1051,13 +1070,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1066,14 +1085,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1082,13 +1101,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "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==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1097,14 +1118,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1113,13 +1136,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1128,30 +1152,29 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1160,13 +1183,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1175,14 +1199,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1191,15 +1215,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "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==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/compat-data": "^7.22.9", + "@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.15" }, "engines": { "node": ">=6.9.0" @@ -1208,16 +1234,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1226,14 +1250,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1242,29 +1266,30 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "node_modules/@babel/plugin-transform-optional-chaining": { + "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==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1273,14 +1298,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1289,13 +1314,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.1.tgz", - "integrity": "sha512-nDvKLrAvl+kf6BOy1UJ3MGwzzfTMgppxwiD2Jb4LO3xjYyZq30oQzDNJbCQpMdG9+j2IXHoiMrw5Cm/L6ZoxXQ==", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -1305,12 +1333,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1320,13 +1348,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -1336,12 +1364,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1351,12 +1379,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1366,13 +1394,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1382,12 +1410,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1397,12 +1425,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1412,12 +1440,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1427,12 +1455,28 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "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-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1442,13 +1486,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1457,39 +1501,43 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", + "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.2", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^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", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -1499,45 +1547,62 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.23.2", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@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.23.0", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^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.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^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.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.23.0", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-modules-systemjs": "^7.23.0", + "@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.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.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^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", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@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.23.0", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1547,61 +1612,65 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "node_modules/@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@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.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "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" }, @@ -1610,13 +1679,13 @@ } }, "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1701,9 +1770,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -1711,9 +1780,9 @@ } }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -1731,13 +1800,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -1811,9 +1880,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", + "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", "dev": true }, "node_modules/@types/express": { @@ -1924,190 +1993,204 @@ "@types/node": "*" } }, + "node_modules/@types/validator": { + "version": "13.11.5", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.5.tgz", + "integrity": "sha512-xW4qsT4UIYILu+7ZrBnfQdBYniZrMLYYK3wN9M/NdeIHgBN5pZI2/8Q7UfdWIcr5RLJv/OGENsx91JIpUUoC7Q==", + "dev": true + }, "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz", + "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=14.15.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -2141,9 +2224,9 @@ } }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2153,9 +2236,9 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -2171,14 +2254,14 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" }, "funding": { @@ -2203,35 +2286,16 @@ } } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "fast-deep-equal": "^3.1.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "peerDependencies": { - "ajv": "^6.9.1" + "ajv": "^8.8.2" } }, "node_modules/amdefine": { @@ -2347,61 +2411,59 @@ } }, "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 8.9" + "node": ">= 14.15.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.32.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/balanced-match": { @@ -2523,9 +2585,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "funding": [ { @@ -2535,13 +2597,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -2589,9 +2655,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001430", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz", - "integrity": "sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg==", + "version": "1.0.30001550", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001550.tgz", + "integrity": "sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==", "dev": true, "funding": [ { @@ -2601,6 +2667,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -2619,9 +2689,9 @@ } }, "node_modules/chance": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", - "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.9.tgz", + "integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==", "dev": true }, "node_modules/char-regex": { @@ -2679,12 +2749,13 @@ } }, "node_modules/class-validator": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", - "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", "dev": true, "dependencies": { - "libphonenumber-js": "^1.9.43", + "@types/validator": "^13.7.10", + "libphonenumber-js": "^1.10.14", "validator": "^13.7.0" } }, @@ -2753,10 +2824,10 @@ "node": ">= 12" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, "node_modules/compressible": { @@ -2809,59 +2880,6 @@ "webpack": "^5.1.0" } }, - "node_modules/compression-webpack-plugin/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/compression-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/compression-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2934,13 +2952,10 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "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==", + "dev": true }, "node_modules/cookie": { "version": "0.5.0", @@ -2958,9 +2973,9 @@ "dev": true }, "node_modules/core-js": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", - "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", + "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", "dev": true, "hasInstallScript": true, "funding": { @@ -2969,12 +2984,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", - "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4" + "browserslist": "^4.22.1" }, "funding": { "type": "opencollective", @@ -3222,9 +3237,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.558", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.558.tgz", + "integrity": "sha512-j9IcGmfkyN5MBH/0Xzg45GDHasXsnwEJDM6Xnr9H7GlGUni+JH4q6xp6Nk7NV5LjTmoEFBqhILIqg1McJrv6uA==", "dev": true }, "node_modules/emojis-list": { @@ -3246,31 +3261,31 @@ } }, "node_modules/engine.io-client": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", - "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.2.tgz", + "integrity": "sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", "xmlhttprequest-ssl": "~2.0.0" } }, "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", "dev": true, "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -3290,9 +3305,9 @@ } }, "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -3339,9 +3354,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, "node_modules/es-to-primitive": { @@ -3392,9 +3407,9 @@ } }, "node_modules/eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -3405,9 +3420,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3671,20 +3686,104 @@ "dev": true }, "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-up": { @@ -3995,9 +4094,9 @@ } }, "node_modules/howler": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", - "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.4.tgz", + "integrity": "sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==", "dev": true }, "node_modules/hpack.js": { @@ -4064,9 +4163,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -4242,12 +4341,12 @@ } }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/inversify": { @@ -4340,9 +4439,9 @@ } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -4628,27 +4727,27 @@ } }, "node_modules/javascript-obfuscator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-4.0.0.tgz", - "integrity": "sha512-vS/8w/9eKISzwXNLd+OLMCCwjD+dFMdOlCDOo919iR/MWdBs+7u1ybpwRoWOmODToPQKVYw5GasvZoIiPs5nPw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-4.1.0.tgz", + "integrity": "sha512-ckC0VFKQ0/sFtLH9apW/ZLfsP8LuZqZhVEM4VTJ5KLzyLaodW6C1lTU8808eboDmddKyvd2uyRx5bzc0Me0GYg==", "dev": true, "hasInstallScript": true, "dependencies": { "@javascript-obfuscator/escodegen": "2.3.0", "@javascript-obfuscator/estraverse": "5.4.0", - "acorn": "8.7.0", + "acorn": "8.8.2", "assert": "2.0.0", "chalk": "4.1.2", - "chance": "1.1.8", - "class-validator": "0.13.2", - "commander": "9.0.0", - "eslint-scope": "7.1.0", - "eslint-visitor-keys": "3.2.0", + "chance": "1.1.9", + "class-validator": "0.14.0", + "commander": "10.0.0", + "eslint-scope": "7.1.1", + "eslint-visitor-keys": "3.3.0", "fast-deep-equal": "3.1.3", "inversify": "6.0.1", "js-string-escape": "1.0.1", "md5": "2.3.0", - "mkdirp": "1.0.4", + "mkdirp": "2.1.3", "multimatch": "5.0.0", "opencollective-postinstall": "2.0.3", "process": "0.11.10", @@ -4656,13 +4755,13 @@ "source-map-support": "0.5.21", "string-template": "1.0.0", "stringz": "2.1.0", - "tslib": "2.3.1" + "tslib": "2.5.0" }, "bin": { "javascript-obfuscator": "bin/javascript-obfuscator" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^12.22.0 || ^14.0.0 || ^16.0.0 || ^17.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -4719,12 +4818,12 @@ "dev": true }, "node_modules/javascript-obfuscator/node_modules/commander": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", - "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=14" } }, "node_modules/javascript-obfuscator/node_modules/has-flag": { @@ -4748,12 +4847,6 @@ "node": ">=8" } }, - "node_modules/javascript-obfuscator/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -4826,15 +4919,15 @@ "dev": true }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -4852,6 +4945,16 @@ "node": ">=0.10.0" } }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -4866,9 +4969,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.10.13", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.13.tgz", - "integrity": "sha512-b74iyWmwb4GprAUPjPkJ11GTC7KX4Pd3onpJfKxYyY8y9Rbb4ERY47LvCMEDM09WD3thiLDMXtkfDK/AX+zT7Q==", + "version": "1.10.48", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.48.tgz", + "integrity": "sha512-Vvcgt4+o8+puIBJZLdMshPYx9nRN3/kTT7HPtOyfYrSQuN9PGBF1KUv0g07fjNzt4E4GuA7FnsLb+WeAMzyRQg==", "dev": true }, "node_modules/loader-runner": { @@ -4881,9 +4984,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", - "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -4927,19 +5030,13 @@ "tslib": "^2.0.3" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "yallist": "^3.0.2" } }, "node_modules/md5": { @@ -5069,15 +5166,18 @@ } }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", "dev": true, "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { @@ -5174,9 +5274,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/normalize-path": { @@ -5476,9 +5576,9 @@ "dev": true }, "node_modules/phasereditor2d-launcher": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/phasereditor2d-launcher/-/phasereditor2d-launcher-3.35.1.tgz", - "integrity": "sha512-EvI06Qh3vjs7YWWiC/kYAOsIps/xe+OFgmi/KRd+RlAno18zlYS0/WUDsMUasW+jb4FbiV/aJR4N4gtzsEmQNA==", + "version": "3.63.0", + "resolved": "https://registry.npmjs.org/phasereditor2d-launcher/-/phasereditor2d-launcher-3.63.0.tgz", + "integrity": "sha512-O02ZGOaTrOikH+ZTc4WyBTjXvnBQuBg0rifaXHTI2zVeD5Y1zv+nxaq8pgMZe6FWhwgVmF+0D9I47qN1UN0FkA==", "dev": true, "dependencies": { "adm-zip": "^0.5.5" @@ -5672,15 +5772,15 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/reflect-metadata": { @@ -5696,9 +5796,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -5708,15 +5808,15 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", "dev": true }, "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -5740,32 +5840,26 @@ } }, "node_modules/regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" } }, - "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -5821,12 +5915,12 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5895,17 +5989,18 @@ "dev": true }, "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 8.9.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", @@ -5931,9 +6026,9 @@ } }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -5985,9 +6080,9 @@ "dev": true }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -6125,6 +6220,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -6146,24 +6250,24 @@ "dev": true }, "node_modules/socket.io-client": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.3.tgz", - "integrity": "sha512-I/hqDYpQ6JKwtJOf5ikM+Qz+YujZPMEl6qBLhxiP0nX+TfXKhW4KZZG8lamrD6Y5ngjmYHreESVasVCgi5Kl3A==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.2.3", - "socket.io-parser": "~4.2.0" + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { "node": ">=10.0.0" } }, "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", @@ -6384,13 +6488,13 @@ } }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", + "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -6402,16 +6506,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz", - "integrity": "sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -6435,10 +6539,41 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -6496,9 +6631,9 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, "node_modules/type-check": { @@ -6564,18 +6699,18 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "engines": { "node": ">=4" @@ -6591,9 +6726,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "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==", "dev": true, "funding": [ { @@ -6603,6 +6738,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -6610,7 +6749,7 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -6670,9 +6809,9 @@ } }, "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "dev": true, "engines": { "node": ">= 0.10" @@ -6710,22 +6849,22 @@ } }, "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -6734,9 +6873,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -6757,44 +6896,42 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "5.x.x" }, "peerDependenciesMeta": { "@webpack-cli/generators": { "optional": true }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -6804,12 +6941,12 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=14" } }, "node_modules/webpack-dev-middleware": { @@ -6835,63 +6972,10 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -6900,7 +6984,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -6913,6 +6997,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -6922,7 +7007,7 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -6937,76 +7022,26 @@ "peerDependencies": { "webpack": "^4.37.0 || ^5.0.0" }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -7081,16 +7116,29 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=0.4.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" } }, "node_modules/webpack/node_modules/eslint-scope": { @@ -7115,10 +7163,16 @@ "node": ">=4.0" } }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -7214,9 +7268,9 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7229,9 +7283,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -7257,6 +7311,24 @@ "engines": { "node": ">=0.4.0" } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -7271,58 +7343,60 @@ } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" } }, "@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true }, "@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", - "convert-source-map": "^1.7.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.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.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" } }, "@babel/generator": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.2.tgz", - "integrity": "sha512-SD75PMIK6i9H8G/tfGvB4KKl4Nw6Ssos9nGgYwxbgyTP0iX/Z55DveoH86rmUB/YHTQQ+ZC0F7xxaY8l2OF44Q==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "requires": { - "@babel/types": "^7.20.2", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -7333,446 +7407,280 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.15" } }, "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "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==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", - "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "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==", "dev": true }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "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==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.23.0" } }, "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "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==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "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==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@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.20" } }, "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" } }, "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" } }, "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "requires": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "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==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "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==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", - "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.11", - "@babel/types": "^7.18.10" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" } }, "@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.2.tgz", - "integrity": "sha512-afk318kh2uKbo7BEj2QtEi8HVCGrwHUffrYDy7dgVcSa2j9lY3LDjPzcyGdpX7xgm35aWqvciZJ4WKmdF/SxYg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "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.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "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==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "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==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } + "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -7820,12 +7728,30 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-json-strings": { @@ -7909,353 +7835,521 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-transform-arrow-functions": { + "@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" } }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "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==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@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.9", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "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==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "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==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "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==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "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==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@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.15" } }, "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "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==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.1.tgz", - "integrity": "sha512-nDvKLrAvl+kf6BOy1UJ3MGwzzfTMgppxwiD2Jb4LO3xjYyZq30oQzDNJbCQpMdG9+j2IXHoiMrw5Cm/L6ZoxXQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", + "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.2", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^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", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -8265,106 +8359,127 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.23.2", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@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.23.0", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^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.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^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.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.23.0", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-modules-systemjs": "^7.23.0", + "@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.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.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^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", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@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.23.0", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" } }, "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" } }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" } }, "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "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" } }, "@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -8425,9 +8540,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -8435,9 +8550,9 @@ }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -8454,13 +8569,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@leichtgewicht/ip-codec": { @@ -8534,9 +8649,9 @@ } }, "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", + "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", "dev": true }, "@types/express": { @@ -8647,181 +8762,185 @@ "@types/node": "*" } }, + "@types/validator": { + "version": "13.11.5", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.5.tgz", + "integrity": "sha512-xW4qsT4UIYILu+7ZrBnfQdBYniZrMLYYK3wN9M/NdeIHgBN5pZI2/8Q7UfdWIcr5RLJv/OGENsx91JIpUUoC7Q==", + "dev": true + }, "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz", + "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==", "dev": true, "requires": { "@types/node": "*" } }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "requires": { - "envinfo": "^7.7.3" - } + "requires": {} }, "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "requires": {} }, @@ -8848,15 +8967,15 @@ } }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "requires": {} }, @@ -8867,14 +8986,14 @@ "dev": true }, "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, @@ -8885,34 +9004,16 @@ "dev": true, "requires": { "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } } }, "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "requires": {} + "requires": { + "fast-deep-equal": "^3.1.3" + } }, "amdefine": { "version": "1.0.1", @@ -8994,45 +9095,43 @@ "dev": true }, "babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.32.2" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.3" } }, "balanced-match": { @@ -9140,15 +9239,15 @@ } }, "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" } }, "buffer-from": { @@ -9184,9 +9283,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001430", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz", - "integrity": "sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg==", + "version": "1.0.30001550", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001550.tgz", + "integrity": "sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==", "dev": true }, "chalk": { @@ -9201,9 +9300,9 @@ } }, "chance": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", - "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.9.tgz", + "integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==", "dev": true }, "char-regex": { @@ -9241,12 +9340,13 @@ "dev": true }, "class-validator": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", - "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", "dev": true, "requires": { - "libphonenumber-js": "^1.9.43", + "@types/validator": "^13.7.10", + "libphonenumber-js": "^1.10.14", "validator": "^13.7.0" } }, @@ -9305,10 +9405,10 @@ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, "compressible": { @@ -9360,47 +9460,6 @@ "requires": { "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } } }, "concat-map": { @@ -9439,13 +9498,10 @@ "dev": true }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "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==", + "dev": true }, "cookie": { "version": "0.5.0", @@ -9460,18 +9516,18 @@ "dev": true }, "core-js": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", - "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", + "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", "dev": true }, "core-js-compat": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", - "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dev": true, "requires": { - "browserslist": "^4.21.4" + "browserslist": "^4.22.1" } }, "core-util-is": { @@ -9652,9 +9708,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.558", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.558.tgz", + "integrity": "sha512-j9IcGmfkyN5MBH/0Xzg45GDHasXsnwEJDM6Xnr9H7GlGUni+JH4q6xp6Nk7NV5LjTmoEFBqhILIqg1McJrv6uA==", "dev": true }, "emojis-list": { @@ -9670,28 +9726,28 @@ "dev": true }, "engine.io-client": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", - "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.2.tgz", + "integrity": "sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", "xmlhttprequest-ssl": "~2.0.0" } }, "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", "dev": true }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -9705,9 +9761,9 @@ "dev": true }, "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true }, "es-abstract": { @@ -9742,9 +9798,9 @@ } }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true }, "es-to-primitive": { @@ -9783,9 +9839,9 @@ "dev": true }, "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -9793,9 +9849,9 @@ } }, "eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "esprima": { @@ -10003,14 +10059,67 @@ } }, "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "dependencies": { + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "requires": { + "find-up": "^6.3.0" + } + } } }, "find-up": { @@ -10225,9 +10334,9 @@ "dev": true }, "howler": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", - "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.4.tgz", + "integrity": "sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==", "dev": true }, "hpack.js": { @@ -10290,9 +10399,9 @@ } }, "html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, "requires": { "@types/html-minifier-terser": "^6.0.0", @@ -10416,9 +10525,9 @@ } }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, "inversify": { @@ -10484,9 +10593,9 @@ "dev": true }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -10670,26 +10779,26 @@ "dev": true }, "javascript-obfuscator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-4.0.0.tgz", - "integrity": "sha512-vS/8w/9eKISzwXNLd+OLMCCwjD+dFMdOlCDOo919iR/MWdBs+7u1ybpwRoWOmODToPQKVYw5GasvZoIiPs5nPw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-4.1.0.tgz", + "integrity": "sha512-ckC0VFKQ0/sFtLH9apW/ZLfsP8LuZqZhVEM4VTJ5KLzyLaodW6C1lTU8808eboDmddKyvd2uyRx5bzc0Me0GYg==", "dev": true, "requires": { "@javascript-obfuscator/escodegen": "2.3.0", "@javascript-obfuscator/estraverse": "5.4.0", - "acorn": "8.7.0", + "acorn": "8.8.2", "assert": "2.0.0", "chalk": "4.1.2", - "chance": "1.1.8", - "class-validator": "0.13.2", - "commander": "9.0.0", - "eslint-scope": "7.1.0", - "eslint-visitor-keys": "3.2.0", + "chance": "1.1.9", + "class-validator": "0.14.0", + "commander": "10.0.0", + "eslint-scope": "7.1.1", + "eslint-visitor-keys": "3.3.0", "fast-deep-equal": "3.1.3", "inversify": "6.0.1", "js-string-escape": "1.0.1", "md5": "2.3.0", - "mkdirp": "1.0.4", + "mkdirp": "2.1.3", "multimatch": "5.0.0", "opencollective-postinstall": "2.0.3", "process": "0.11.10", @@ -10697,7 +10806,7 @@ "source-map-support": "0.5.21", "string-template": "1.0.0", "stringz": "2.1.0", - "tslib": "2.3.1" + "tslib": "2.5.0" }, "dependencies": { "ansi-styles": { @@ -10735,9 +10844,9 @@ "dev": true }, "commander": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", - "integrity": "sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", "dev": true }, "has-flag": { @@ -10754,12 +10863,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true } } }, @@ -10816,15 +10919,15 @@ "dev": true }, "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "kind-of": { @@ -10833,6 +10936,16 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -10844,9 +10957,9 @@ } }, "libphonenumber-js": { - "version": "1.10.13", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.13.tgz", - "integrity": "sha512-b74iyWmwb4GprAUPjPkJ11GTC7KX4Pd3onpJfKxYyY8y9Rbb4ERY47LvCMEDM09WD3thiLDMXtkfDK/AX+zT7Q==", + "version": "1.10.48", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.48.tgz", + "integrity": "sha512-Vvcgt4+o8+puIBJZLdMshPYx9nRN3/kTT7HPtOyfYrSQuN9PGBF1KUv0g07fjNzt4E4GuA7FnsLb+WeAMzyRQg==", "dev": true }, "loader-runner": { @@ -10856,9 +10969,9 @@ "dev": true }, "loader-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", - "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -10896,13 +11009,13 @@ "tslib": "^2.0.3" } }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { - "semver": "^6.0.0" + "yallist": "^3.0.2" } }, "md5": { @@ -11002,9 +11115,9 @@ } }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", "dev": true }, "ms": { @@ -11085,9 +11198,9 @@ "dev": true }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "normalize-path": { @@ -11309,9 +11422,9 @@ "dev": true }, "phasereditor2d-launcher": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/phasereditor2d-launcher/-/phasereditor2d-launcher-3.35.1.tgz", - "integrity": "sha512-EvI06Qh3vjs7YWWiC/kYAOsIps/xe+OFgmi/KRd+RlAno18zlYS0/WUDsMUasW+jb4FbiV/aJR4N4gtzsEmQNA==", + "version": "3.63.0", + "resolved": "https://registry.npmjs.org/phasereditor2d-launcher/-/phasereditor2d-launcher-3.63.0.tgz", + "integrity": "sha512-O02ZGOaTrOikH+ZTc4WyBTjXvnBQuBg0rifaXHTI2zVeD5Y1zv+nxaq8pgMZe6FWhwgVmF+0D9I47qN1UN0FkA==", "dev": true, "requires": { "adm-zip": "^0.5.5" @@ -11461,12 +11574,12 @@ } }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } }, "reflect-metadata": { @@ -11482,24 +11595,24 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "requires": { "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", "dev": true }, "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -11517,29 +11630,23 @@ } }, "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "requires": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" } }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -11585,12 +11692,12 @@ "dev": true }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -11638,14 +11745,15 @@ "dev": true }, "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" } }, "select-hose": { @@ -11664,9 +11772,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "send": { @@ -11716,9 +11824,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -11834,6 +11942,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -11852,21 +11966,21 @@ "dev": true }, "socket.io-client": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.3.tgz", - "integrity": "sha512-I/hqDYpQ6JKwtJOf5ikM+Qz+YujZPMEl6qBLhxiP0nX+TfXKhW4KZZG8lamrD6Y5ngjmYHreESVasVCgi5Kl3A==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.2.3", - "socket.io-parser": "~4.2.0" + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" } }, "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", @@ -12038,13 +12152,13 @@ "dev": true }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", + "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -12058,22 +12172,47 @@ } }, "terser-webpack-plugin": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz", - "integrity": "sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -12111,9 +12250,9 @@ "dev": true }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, "type-check": { @@ -12164,15 +12303,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "unpipe": { @@ -12182,9 +12321,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "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==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -12239,9 +12378,9 @@ "dev": true }, "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "dev": true }, "vary": { @@ -12270,22 +12409,22 @@ } }, "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -12294,18 +12433,31 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} }, "eslint-scope": { "version": "5.1.1", @@ -12323,10 +12475,16 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -12337,29 +12495,30 @@ } }, "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "dependencies": { "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true } } @@ -12375,53 +12534,12 @@ "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } } }, "webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -12430,7 +12548,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -12443,6 +12561,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -12452,52 +12571,13 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, "requires": {} } @@ -12609,9 +12689,9 @@ "dev": true }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrappy": { @@ -12621,9 +12701,9 @@ "dev": true }, "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "requires": {} }, @@ -12632,6 +12712,18 @@ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true } } } diff --git a/package.json b/package.json index ebc0d9de..6d741bf4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yukon", - "version": "1.5.0-beta", + "version": "1.6.0-beta", "scripts": { "dev": "webpack serve", "editor": "phasereditor2d-launcher -project . -max-number-files 5000", @@ -18,21 +18,21 @@ }, "homepage": "https://github.com/wizguin/yukon#readme", "devDependencies": { - "@babel/core": "^7.20.2", - "@babel/preset-env": "^7.20.2", - "babel-loader": "^8.3.0", + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "babel-loader": "^9.1.3", "compression-webpack-plugin": "^10.0.0", - "core-js": "^3.26.0", - "howler": "^2.2.3", - "html-webpack-plugin": "^5.5.0", - "javascript-obfuscator": "^4.0.0", - "phasereditor2d-launcher": "^3.35.1", + "core-js": "^3.33.0", + "howler": "^2.2.4", + "html-webpack-plugin": "^5.5.3", + "javascript-obfuscator": "^4.1.0", + "phasereditor2d-launcher": "^3.63.0", "phasereditor2d-ninepatch-plugin": "^1.2.0", - "socket.io-client": "^4.5.3", + "socket.io-client": "^4.7.2", "source-map": "^0.7.4", - "webpack": "^5.74.0", - "webpack-cli": "^4.10.0", - "webpack-dev-server": "^4.11.1", + "webpack": "^5.89.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1", "webpack-obfuscator": "^3.5.1" } } diff --git a/src/data/fonts.js b/src/data/fonts.js index 981e3b1f..d422d044 100644 --- a/src/data/fonts.js +++ b/src/data/fonts.js @@ -4,8 +4,9 @@ const fonts = { 'Arial:n4,n7', 'Arial Narrow:n4,n7', 'Asterisk:n4', + 'Burbank Big Regular:n7', 'Burbank Small:n4,n7', - 'CCComiccrazy:n4', + 'CCComiccrazy:n4,n7', 'CCFaceFront:n4,i7' ], urls: [ diff --git a/src/data/game.js b/src/data/game.js index 3465053a..d9a92f7e 100644 --- a/src/data/game.js +++ b/src/data/game.js @@ -17,6 +17,9 @@ const game = { width: 1520, height: 960, + maxWidth: 1520, + maxHeight: 960, + transparent: true, roundPixels: true, diff --git a/src/data/rooms.js b/src/data/rooms.js index 8f1db880..541a58f4 100644 --- a/src/data/rooms.js +++ b/src/data/rooms.js @@ -71,6 +71,12 @@ const rooms = { x: 828, y: 520 }, + 320: { + key: 'Dojo', + scene: require('@rooms/dojo/Dojo').default, + x: 400, + y: 680 + }, 321: { key: 'DojoExt', scene: require('@rooms/dojoext/DojoExt').default, @@ -130,6 +136,14 @@ const rooms = { scene: require('@rooms/cove/Cove').default, x: 840, y: 480 + }, + 951: { + key: 'Sensei', + scene: require('@rooms/../games/sensei/Sensei').default + }, + 998: { + key: 'CardJitsu', + scene: require('@rooms/../games/card/CardJitsu').default } } diff --git a/src/data/widgets.js b/src/data/widgets.js index f3fc82eb..65e05b88 100644 --- a/src/data/widgets.js +++ b/src/data/widgets.js @@ -4,7 +4,12 @@ const widgets = { 'IglooCatalog': require('@scenes/interface/catalogs/igloo/IglooCatalog'), 'FindFour': require('@scenes/games/four/FindFour'), - 'Map': require('@scenes/interface/game/map/Map') + 'Mancala': require('@scenes/games/mancala/Mancala'), + 'Map': require('@scenes/interface/game/map/Map'), + 'NinjaBelts': require('@scenes/interface/instructions/ninjabelts/NinjaBelts'), + 'NinjaInstructions': require('@scenes/interface/instructions/ninjainstructions/NinjaInstructions'), + 'NinjaProgress': require('@scenes/games/ninjaprogress/NinjaProgress'), + 'Sensei': require('@scenes/games/sensei/widget/SenseiWidget') } export default widgets diff --git a/src/engine/interface/InterfaceController.js b/src/engine/interface/InterfaceController.js index 10c01d9b..b401b0c3 100644 --- a/src/engine/interface/InterfaceController.js +++ b/src/engine/interface/InterfaceController.js @@ -94,8 +94,10 @@ export default class InterfaceController extends BaseScene { this.bringToTop('IglooEdit') } - bringToTop(key) { - this.scene.bringToTop(key) + bringToTop(key = null) { + if (key) { + this.scene.bringToTop(key) + } // Keeps InterfaceController scene always on top, for prompts this.scene.bringToTop() diff --git a/src/engine/loaders/CardLoader.js b/src/engine/loaders/CardLoader.js new file mode 100644 index 00000000..3faf1b28 --- /dev/null +++ b/src/engine/loaders/CardLoader.js @@ -0,0 +1,34 @@ +import BaseLoader from './BaseLoader' + + +export default class CardLoader extends BaseLoader { + + constructor(scene) { + super(scene) + + this.baseURL = '/assets/media/games/card/icons/' + this.keyPrefix = 'card/icons/' + } + + loadCard(card, callback) { + let key = this.getKey(card.id) + + if (this.checkComplete('image', key, () => { + this.onFileComplete(key, card, callback) + })) { + return + } + + this.image(key, `${card.id}.png`) + this.start() + } + + onFileComplete(key, card, callback) { + if (!this.textureExists(key)) { + return + } + + callback(key, card) + } + +} diff --git a/src/engine/network/plugins/plugins/Item.js b/src/engine/network/plugins/plugins/Item.js index be937e57..0a767529 100644 --- a/src/engine/network/plugins/plugins/Item.js +++ b/src/engine/network/plugins/plugins/Item.js @@ -24,12 +24,14 @@ export default class Item extends Plugin { } addItem(args) { + const item = parseInt(args.item) + // If item already in inventory - if (this.client.inventory[args.slot].includes(args.item)) return + if (this.client.inventory[args.slot].includes(item)) return // Update player data this.client.coins = args.coins - this.client.inventory[args.slot].push(args.item) + this.client.inventory[args.slot].push(item) this.client.inventory[args.slot].sort((a, b) => a - b) // Update player card @@ -38,6 +40,12 @@ export default class Item extends Plugin { // Update catalog coins this.interface.updateCatalogCoins(args.coins) + // Check no purchase popup + const data = this.crumbs.items[item] + if ('no_purchase_popup' in data && data.no_purchase_popup === 1) { + return + } + // Show prompt let text = `${args.name}\nhas been added to your inventory.` this.interface.prompt.showWindow(text, 'single') diff --git a/src/engine/network/plugins/plugins/MiniGame.js b/src/engine/network/plugins/plugins/MiniGame.js index ad0cf140..0f15f106 100644 --- a/src/engine/network/plugins/plugins/MiniGame.js +++ b/src/engine/network/plugins/plugins/MiniGame.js @@ -11,6 +11,11 @@ export default class MiniGame extends Plugin { } gameOver(args) { + if (this.world.client.activeSeat) { + this.world.events.once('leftseat', () => this.gameOver(args)) + return + } + // Difference in coins = coins earned this.interface.prompt.showCoin(args.coins - this.world.client.coins) diff --git a/src/engine/network/plugins/plugins/Table.js b/src/engine/network/plugins/plugins/Table.js index e82edccf..f144faf6 100644 --- a/src/engine/network/plugins/plugins/Table.js +++ b/src/engine/network/plugins/plugins/Table.js @@ -10,6 +10,11 @@ export default class Table extends Plugin { 'join_table': this.joinTable, 'update_table': this.updateTable } + + this.types = { + 'four': 'FindFour', + 'mancala': 'Mancala' + } } getTables(args) { @@ -19,8 +24,7 @@ export default class Table extends Plugin { joinTable(args) { this.world.client.sendMoveToSeat(args.table, args.seat) - // Todo: load different tables - this.interface.loadWidget('FindFour', true) + this.interface.loadWidget(this.types[args.game], true) } updateTable(args) { diff --git a/src/engine/network/plugins/plugins/Waddle.js b/src/engine/network/plugins/plugins/Waddle.js new file mode 100644 index 00000000..ee44e029 --- /dev/null +++ b/src/engine/network/plugins/plugins/Waddle.js @@ -0,0 +1,29 @@ +import Plugin from '../Plugin' + + +export default class Waddle extends Plugin { + + constructor(network) { + super(network) + this.events = { + 'get_waddles': this.getWaddles, + 'join_waddle': this.joinWaddle, + 'update_waddle': this.updateWaddle + } + } + + getWaddles(args) { + this.world.room.setWaddles(args.waddles) + } + + joinWaddle(args) { + this.interface.main.waddle.show(args.waddle, args.seat, args.game) + } + + updateWaddle(args) { + if (this.world.room.isReady) { + this.interface.main.waddle.updateWaddle(args.waddle, args.seat, args.username) + } + } + +} diff --git a/src/engine/world/WorldController.js b/src/engine/world/WorldController.js index 00046493..c916790d 100644 --- a/src/engine/world/WorldController.js +++ b/src/engine/world/WorldController.js @@ -100,6 +100,10 @@ export default class WorldController extends BaseScene { return buddy.online } + isClientUsername(username) { + return username.toLowerCase() === this.client.penguin.username.toLowerCase() + } + getColor(id) { return this.crumbs.colors[id - 1] || this.crumbs.colors[0] } diff --git a/src/engine/world/penguin/ClientController.js b/src/engine/world/penguin/ClientController.js index 962d6720..863e8673 100644 --- a/src/engine/world/penguin/ClientController.js +++ b/src/engine/world/penguin/ClientController.js @@ -271,14 +271,23 @@ export default class ClientController { this.network.send('join_table', { table: id }) } - sendMoveToSeat(table, seat) { - table = this.world.room.getTable(table) + sendMoveToSeat(id, seat, type = 'table') { + let container + + switch (type) { + case 'table': + container = this.world.room.getTable(id) + break + case 'waddle': + container = this.world.room.getWaddle(id) + break + } - if (!table) { + if (!container) { return } - seat = table[`seat${seat}`] + seat = container[`seat${seat}`] if (seat) { this.activeSeat = seat @@ -303,6 +312,7 @@ export default class ClientController { } this.activeSeat = null + this.world.events.emit('leftseat') } getSeatWorldPos(seat) { diff --git a/src/engine/world/room/RoomFactory.js b/src/engine/world/room/RoomFactory.js index e2b4e32e..5ff4a148 100644 --- a/src/engine/world/room/RoomFactory.js +++ b/src/engine/world/room/RoomFactory.js @@ -49,13 +49,15 @@ export default class RoomFactory { } createGame(args) { - let crumb = this.games[args.game] + let config = this.games[args.game] - if (crumb.flash) { - this.world.ruffle.bootGame(crumb) + if (config.flash) { + this.world.ruffle.bootGame(config) return } + + return this.createRoom({ room: args.game }) } } diff --git a/src/scenes/games/GameScene.js b/src/scenes/games/GameScene.js index c455e053..57b23f69 100644 --- a/src/scenes/games/GameScene.js +++ b/src/scenes/games/GameScene.js @@ -27,7 +27,15 @@ export default class GameScene extends BaseScene { this._create() this.setMusic() + this.interface.hideLoading() + this.interface.bringToTop() + + this.world.client.activeSeat = null + } + + preload() { + this._preload() } stop() { diff --git a/src/scenes/games/card/CardJitsu.js b/src/scenes/games/card/CardJitsu.js new file mode 100644 index 00000000..bc67c873 --- /dev/null +++ b/src/scenes/games/card/CardJitsu.js @@ -0,0 +1,662 @@ +/* START OF COMPILED CODE */ + +import GameScene from "../GameScene"; +import CardJitsuPlayer from "./CardJitsuPlayer"; +import Button from "../../components/Button"; +import CardJitsuHelp from "./help/CardJitsuHelp"; +import CardJitsuClock from "./clock/CardJitsuClock"; +/* START-USER-IMPORTS */ + +import CardLoader from '@engine/loaders/CardLoader' +import CardJitsuCard from './card/CardJitsuCard' +import CardJitsuPower from './power/CardJitsuPower' + +import Rules from './Rules' + +/* END-USER-IMPORTS */ + +export default class CardJitsu extends GameScene { + + constructor() { + super("CardJitsu"); + + /** @type {Phaser.GameObjects.Image} */ + this.bg; + /** @type {CardJitsuPlayer} */ + this.player2; + /** @type {CardJitsuPlayer} */ + this.player1; + /** @type {Phaser.GameObjects.Image} */ + this.closeButton; + /** @type {CardJitsuHelp} */ + this.help; + /** @type {Phaser.GameObjects.Image} */ + this.frame; + /** @type {CardJitsuClock} */ + this.clock; + /** @type {Phaser.GameObjects.Image} */ + this.spinner; + /** @type {Phaser.GameObjects.Text} */ + this.username2; + /** @type {Phaser.GameObjects.Text} */ + this.username1; + /** @type {CardJitsuPlayer[]} */ + this.players; + /** @type {Phaser.GameObjects.Text[]} */ + this.usernames; + + + /* START-USER-CTR-CODE */ + + window.card = this + + this.music = '116' + + /* END-USER-CTR-CODE */ + } + + /** @returns {void} */ + _preload() { + + this.load.pack("cardjitsu-pack", "assets/media/games/card/cardjitsu-pack.json"); + } + + /** @returns {void} */ + _create() { + + // bg + const bg = this.add.image(760, 480, "cardjitsu", "bg"); + + // player2 + const player2 = new CardJitsuPlayer(this, 760, 480); + this.add.existing(player2); + + // player1 + const player1 = new CardJitsuPlayer(this, 760, 480); + this.add.existing(player1); + player1.scaleX = -1; + player1.scaleY = 1; + + // closeButton + const closeButton = this.add.image(1464, 57, "cardjitsu", "close"); + + // help + const help = new CardJitsuHelp(this, 754, 24); + this.add.existing(help); + + // panel + const panel = this.add.image(760, 854, "cardjitsu", "panel"); + panel.setOrigin(0.500351370344343, 0.5); + + // frame + const frame = this.add.image(758, 480, "cardjitsu", "frame"); + frame.setOrigin(0.5003261578604045, 0.5005192107995846); + + // clock + const clock = new CardJitsuClock(this, 760, 676); + this.add.existing(clock); + clock.visible = false; + + // spinner + const spinner = this.add.image(760, 482, "cardjitsu", "spinner"); + + // username2 + const username2 = this.add.text(1420, 736, "", {}); + username2.setOrigin(1, 0); + username2.setStyle({ "align": "right", "color": "#000", "fixedWidth":410,"fontFamily": "CCComiccrazy", "fontSize": "28px", "fontStyle": "bold" }); + + // username1 + const username1 = this.add.text(100, 736, "", {}); + username1.setStyle({ "color": "#000", "fixedWidth":410,"fontFamily": "CCComiccrazy", "fontSize": "28px", "fontStyle": "bold" }); + + // lists + const players = [player1, player2]; + const usernames = [username1, username2]; + + // closeButton (components) + const closeButtonButton = new Button(closeButton); + closeButtonButton.spriteName = "close"; + closeButtonButton.callback = () => this.onCloseClick(); + + this.bg = bg; + this.player2 = player2; + this.player1 = player1; + this.closeButton = closeButton; + this.help = help; + this.frame = frame; + this.clock = clock; + this.spinner = spinner; + this.username2 = username2; + this.username1 = username1; + this.players = players; + this.usernames = usernames; + + this.events.emit("scene-awake"); + } + + + /* START-USER-CODE */ + + async create() { + this.container = this.add.dom(760, 480) + this.container.visible = false + + this.battlesPath = 'assets/media/games/card/battles/' + + this.events.once('emulator_ready', this.onEmulatorReady, this) + + this.player = await this.loadEmulator() + + super.create() + + this.myPlayer + this.opponent + + // Loader + this.cardLoader = new CardLoader(this) + + this.onDealCardLoad = this.onDealCardLoad.bind(this) + this.onRevealCardLoad = this.onRevealCardLoad.bind(this) + + // Spinner + this.tweens.add({ + targets: this.spinner, + angle: { from: 0, to: 180 }, + duration: 900, + repeat: -1, + ease: 'Cubic' + }) + + // Power effects + this.activePowers = [] + this.powersQueue = [] + + this.events.on('battle_complete', this.onBattleComplete, this) + + this.started = false + + this.awards = [4025, 4026, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 104] + this.rankUp = null + + this.addListeners() + + this.help.depth = 2000 + this.frame.depth = 2001 + + this.closeButton.on('pointerdown', this.playCloseSound, this) + } + + // probably a better way than needing 2 functions for this + addListeners() { + this.network.events.on('start_game', this.handleStartGame, this) + this.network.events.on('send_deal', this.handleSendDeal, this) + this.network.events.on('send_opponent_deal', this.handleSendOpponentDeal, this) + this.network.events.on('pick_card', this.handlePickCard, this) + this.network.events.on('reveal_card', this.handleRevealCard, this) + this.network.events.on('judge', this.handleJudge, this) + this.network.events.on('winner', this.handleWinner, this) + this.network.events.on('close_game', this.handleCloseGame, this) + this.network.events.on('award', this.handleAward, this) + } + + removeListeners() { + this.network.events.off('start_game', this.handleStartGame, this) + this.network.events.off('send_deal', this.handleSendDeal, this) + this.network.events.off('send_opponent_deal', this.handleSendOpponentDeal, this) + this.network.events.off('pick_card', this.handlePickCard, this) + this.network.events.off('reveal_card', this.handleRevealCard, this) + this.network.events.off('judge', this.handleJudge, this) + this.network.events.off('winner', this.handleWinner, this) + this.network.events.off('close_game', this.handleCloseGame, this) + this.network.events.off('close_game', this.handleCloseGame, this) + this.network.events.off('award', this.handleAward, this) + } + + async loadEmulator() { + const ruffle = window.RufflePlayer.newest() + const player = ruffle.createPlayer() + + this.container.setElement(player, { + width: '100%', + height: '100%', + pointerEvents: 'auto' + }) + + // Position dom below canvas + this.game.domContainer.style.zIndex = -10 + + await player.load({ + url: 'assets/media/games/card/battle.swf', + allowScriptAccess: true, + menu: false, + contextMenu: false, + scale: 'noborder', + autoplay: 'on', + + logLevel: 'info', + splashScreen: false + }) + + return player + } + + onEmulatorReady() { + this.bg.visible = false + this.container.visible = true + + this.network.send('start_game') + } + + getBattlesPath() { + return this.battlesPath + } + + getColor(seat) { + return this.players[seat].color + } + + getSensei(seat) { + return this.players[seat].sensei + } + + getRank(seat) { + return this.players[seat].rank + } + + handleStartGame(args) { + for (let user of args.users) { + this.setPlayer(user, args.users.indexOf(user)) + } + + this.spinner.visible = false + this.playBattle('walk') + + this.started = true + } + + handleSendDeal(args) { + for (let card of args.cards) { + this.cardLoader.loadCard(card, this.onDealCardLoad) + } + } + + handleSendOpponentDeal(args) { + for (let i = 0; i < args.deal; i++) { + let cardPrefab = this.createCard() + + cardPrefab.init(this.opponent, 'back') + } + } + + handlePickCard(args) { + if (this.opponent.pick) { + this.events.once('remove_pick', () => this.handlePickCard(args)) + return + } + + let card = this.opponent.dealtCards[args.card] + this.opponent.pickCard(card) + } + + handleRevealCard(args) { + this.cardLoader.loadCard(args.card, this.onRevealCardLoad) + } + + handleJudge(args) { + let cardPrefab = this.opponent.pick + + cardPrefab.setState('reveal') + + this.events.once('flipped', () => this.onFlipped(args.winner)) + } + + handleWinner(args) { + // Remove original handler + this.events.off('battle_complete') + + this.events.once('battle_complete', () => this.onLastBattle(args.winner, args.cards)) + } + + handleCloseGame(args) { + this.interface.prompt.showWindow(this.getFormatString('player_quit_prompt', args.username)) + + // remove this delay when BUG with 2 players joining the same room at exactly the same time is fixed + // currently add_player breaks because the previous room hasn't shut down yet + this.time.delayedCall(500, () => this.sendLeaveGame()) + } + + handleAward(args) { + this.rankUp = args.rank + + this.addAward(this.awards[args.rank - 1]) + } + + addAward(award) { + let type = award == 104 ? 'face' : 'body' + + // this should be abstracted, user inventory could be its own class + if (this.world.client.inventory[type].includes(award)) { + return + } + + this.world.client.inventory[type].push(award) + this.world.client.inventory[type].sort((a, b) => a - b) + } + + setPlayer(user, index) { + let player = this.players[index] + player.set(user) + + if (this.world.isClientUsername(user.username)) { + this.myPlayer = player + } else { + this.opponent = player + } + } + + onBattleComplete() { + this.playBattle('ambient') + + this.network.send('send_deal') + } + + onFlipped(winner) { + if (winner == -1) { + this.onFlippedTie() + } else { + this.onFlippedWin(winner) + } + + this.checkPowersOnPlayed() + + this.processPowers() + } + + onFlippedTie() { + this.events.once('powers_complete', this.judgeTie, this) + } + + onFlippedWin(winner) { + let winCard = this.players[winner].pick + + this.checkPowerOnScored(this.players[winner], winCard) + + this.events.once('powers_complete', () => this.judge(winner, winCard)) + } + + // powers start + + checkPowersOnPlayed() { + this.checkPowerOnPlayed(this.player1, this.player1.pick) + this.checkPowerOnPlayed(this.player2, this.player2.pick) + } + + checkPowerOnPlayed(player, card) { + if (this.hasPower(card) && Rules.onPlayed.includes(card.powerId)) { + this.addPower(player, card) + } + } + + checkPowerOnScored(player, card) { + if (this.hasPower(card) && !Rules.onPlayed.includes(card.powerId)) { + this.addPower(player, card) + } + } + + hasPower(card) { + return card.powerId > 0 + } + + addPower(player, card) { + if (card.powerId == 1) { + let hasReverse = this.activePowers.some(power => power.isReverseEffect & power.isPick) + + if (hasReverse) { + return + } + } + + let power = new CardJitsuPower(this, player, card) + + this.add.existing(power) + + this.activePowers.push(power) + } + + removePower(power) { + let index = this.activePowers.indexOf(power) + + this.activePowers.splice(index, 1) + } + + processPowers() { + this.powersQueue = this.activePowers.slice() + + this.nextPower() + } + + nextPower() { + if (!this.powersQueue.length) { + this.events.emit('powers_complete') + return + } + + let next = this.powersQueue.shift() + + next.process() + } + + // powers end + + onDealCardLoad(key, card) { + let cardPrefab = this.createCard() + + cardPrefab.init(this.myPlayer, 'front', card) + cardPrefab.icon.setTexture(key) + } + + onRevealCardLoad(key, card) { + let cardPrefab = this.opponent.pick + + cardPrefab.updateCard(card) + cardPrefab.icon.setTexture(key) + } + + onLastBattle(winSeat, winCards = []) { + this.playBattle('ambient') + + let winner = this.players[winSeat] + let cards = winner.findWins(winCards) + + for (let i = 0; i < cards.length; i++) { + cards[i].tweenToOver(i) + } + + this.soundManager.play('end') + + this.time.delayedCall(1000, () => this.playGameOver(winSeat, !winCards.length)) + } + + onCloseClick() { + if (!this.started) { + this.sendLeaveGame() + return + } + + this.showCloseGamePrompt() + } + + getOppositeSeat(seat) { + return (seat + 1) % 2 + } + + playBattle(battle, winSeat = null) { + this.player.loadBattle(battle, winSeat) + } + + createCard() { + let card = new CardJitsuCard(this) + this.add.existing(card) + + return card + } + + allCardsDealt() { + this.myPlayer.enableCards() + this.updateDisabledCards() + + this.clock.start() + this.help.unlock() + } + + updateDisabledCards() { + let limit = this.activePowers.find(power => power.isLimiter && power.player != this.myPlayer) + + if (limit) { + this.disableElement(limit) + } + } + + disableElement(power) { + let element = Rules.limiters[power.powerId] + + this.myPlayer.disableElement(element) + } + + timeUp() { + let pickable = this.myPlayer.pickableCards + + if (pickable.length) { + let random = Phaser.Math.RND.pick(pickable) + + this.pickCard(random) + } + } + + pickCard(card) { + if (this.myPlayer.pick || !this.myPlayer.pickableCards.includes(card)) { + return + } + + this.myPlayer.pickCard(card) + this.network.send('pick_card', { card: card.id }) + + this.clock.stop() + this.help.lock() + } + + judge(winner, winCard) { + if (winner == this.myPlayer.seat) { + this.judgeWin(winner, winCard) + } else { + this.judgeLoss(winner, winCard) + } + } + + judgeTie() { + this.players.forEach(player => player.cardLose()) + + this.playBattle('tie') + this.soundManager.play('tie') + } + + judgeWin(winSeat, winCard) { + this.myPlayer.cardWin() + this.opponent.cardLose() + + this.judgePlayBattle(winSeat, winCard) + } + + judgeLoss(winSeat, winCard) { + this.myPlayer.cardLose() + this.opponent.cardWin() + + this.judgePlayBattle(winSeat, winCard) + } + + judgePlayBattle(winSeat, winCard) { + let battle = winCard.powerId == 0 ? winCard.elementId : `pow_${winCard.id}` + + this.playBattle(battle, winSeat) + } + + playGameOver(winSeat, hasNoCards) { + this.playBattle('tie') + + let callback = () => this.time.delayedCall(500, () => this.showGameOverPrompt(winSeat, hasNoCards)) + + this.events.once('battle_complete', callback) + } + + showCloseGamePrompt() { + this.interface.prompt.showWindow(this.getString('quit_game_prompt'), 'dual', () => { + this.sendLeaveGame() + + this.interface.prompt.window.visible = false + }) + } + + showGameOverPrompt(winSeat, hasNoCards) { + let message = this.getGameOverMessage(winSeat, hasNoCards) + + this.interface.prompt.showWindow(message, 'single', () => { + this.winsPromptCallback() + + this.interface.prompt.window.visible = false + }) + } + + getGameOverMessage(winSeat, hasNoCards) { + let username = this.players[winSeat].username + let message = this.getFormatString('wins', username) + + if (!hasNoCards) { + return message + } + + let loserUsername = this.players[this.getOppositeSeat(winSeat)].username + let loserMessage = this.getFormatString('sudden_death', loserUsername) + + return `${loserMessage}\n${message}` + } + + winsPromptCallback() { + if (!this.rankUp) { + this.sendLeaveGame() + return + } + + this.interface.events.once('sensei_ready', () => { + this.interface.loadedWidgets.Sensei.rankUp(this.rankUp) + }) + + this.interface.loadWidget('Sensei') + } + + sendLeaveGame() { + this.network.send('leave_game') + this.leaveGame() + } + + leaveGame() { + this.removeListeners() + + // destroying room scene would remove need to remove these events + this.events.off('battle_complete') + this.events.off('flipped') + this.events.off('remove_pick') + this.events.off('powers_complete') + + this.game.domContainer.style.zIndex = 'auto' + + this.world.client.sendJoinLastRoom() + } + + playCloseSound() { + this.soundManager.play('switch') + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/card/CardJitsu.scene b/src/scenes/games/card/CardJitsu.scene new file mode 100644 index 00000000..848e3518 --- /dev/null +++ b/src/scenes/games/card/CardJitsu.scene @@ -0,0 +1,217 @@ +{ + "id": "594505eb-e825-43c4-87c4-a1394daaa2e7", + "sceneType": "SCENE", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "GameScene", + "preloadMethodName": "_preload", + "preloadPackFiles": [ + "yukon/assets/media/games/card/cardjitsu-pack.json" + ], + "createMethodName": "_create", + "sceneKey": "CardJitsu", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Image", + "id": "c12c3e43-59eb-4f80-ad9a-810a06c53763", + "label": "bg", + "scope": "CLASS", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "bg" + }, + "x": 760, + "y": 480 + }, + { + "prefabId": "2c95b708-e07e-4a6b-ad34-afb595594583", + "id": "3f476cde-316b-42f5-ad18-da70ada1474d", + "unlock": [ + "x", + "y", + "username", + "usernameText" + ], + "label": "player2", + "scope": "CLASS", + "components": [], + "x": 760, + "y": 480, + "nestedPrefabs": [], + "list": [] + }, + { + "prefabId": "2c95b708-e07e-4a6b-ad34-afb595594583", + "id": "6fd982c9-843f-4778-899e-de82fbcde04d", + "unlock": [ + "x", + "y", + "scaleX", + "scaleY", + "username", + "usernameText" + ], + "label": "player1", + "scope": "CLASS", + "components": [], + "x": 760, + "y": 480, + "scaleX": -1, + "scaleY": 1, + "nestedPrefabs": [], + "list": [] + }, + { + "type": "Image", + "id": "7a0d7dac-7b59-4a80-bc52-f98bbe8639bd", + "label": "closeButton", + "scope": "CLASS", + "components": [ + "Button" + ], + "Button.spriteName": "close", + "Button.callback": "() => this.onCloseClick()", + "texture": { + "key": "cardjitsu", + "frame": "close" + }, + "x": 1464, + "y": 57 + }, + { + "prefabId": "94535fbd-178b-46f2-a995-1dd72d803895", + "id": "a1e810c2-0719-4c82-b4c9-f0d891121829", + "unlock": [ + "x", + "y" + ], + "label": "help", + "scope": "CLASS", + "components": [], + "x": 754, + "y": 24, + "nestedPrefabs": [], + "list": [] + }, + { + "type": "Image", + "id": "db30b7ad-1640-42d2-836d-9ac3e76bee29", + "label": "panel", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "panel" + }, + "x": 760, + "y": 854, + "originX": 0.500351370344343 + }, + { + "type": "Image", + "id": "9e6b3a10-20e4-48fb-95b7-8e3259b670c4", + "label": "frame", + "scope": "CLASS", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "frame" + }, + "x": 758, + "y": 480, + "originX": 0.5003261578604045, + "originY": 0.5005192107995846 + }, + { + "prefabId": "ebed3022-bcec-4b40-b9a2-de88069e87b6", + "id": "5ae193e4-747e-4c9e-a9b1-33e45c465696", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "clock", + "scope": "CLASS", + "components": [], + "x": 760, + "y": 676, + "visible": false, + "nestedPrefabs": [], + "list": [] + }, + { + "type": "Image", + "id": "0c63a625-f56a-40e1-8863-870ad03ce58f", + "label": "spinner", + "scope": "CLASS", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "spinner" + }, + "x": 760, + "y": 482 + }, + { + "type": "Text", + "id": "a3698971-d213-46ce-b701-03bf7dd7a7ed", + "label": "username2", + "scope": "CLASS", + "components": [], + "x": 1420, + "y": 736, + "originX": 1, + "fixedWidth": 410, + "align": "right", + "fontFamily": "CCComiccrazy", + "fontSize": "28px", + "fontStyle": "bold", + "color": "#000" + }, + { + "type": "Text", + "id": "c54766f1-4ebc-4dc0-b3a4-b119c06d9faf", + "label": "username1", + "scope": "CLASS", + "components": [], + "x": 100, + "y": 736, + "fixedWidth": 410, + "fontFamily": "CCComiccrazy", + "fontSize": "28px", + "fontStyle": "bold", + "color": "#000" + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + }, + "lists": [ + { + "id": "6ce89abe-2ddb-4c0a-a242-5e92240d350e", + "label": "players", + "objectIds": [ + "6fd982c9-843f-4778-899e-de82fbcde04d", + "3f476cde-316b-42f5-ad18-da70ada1474d" + ] + }, + { + "id": "612a85bc-48d2-4a9f-a377-75a400da8bca", + "label": "usernames", + "objectIds": [ + "c54766f1-4ebc-4dc0-b3a4-b119c06d9faf", + "a3698971-d213-46ce-b701-03bf7dd7a7ed" + ] + } + ] +} \ No newline at end of file diff --git a/src/scenes/games/card/CardJitsuPlayer.js b/src/scenes/games/card/CardJitsuPlayer.js new file mode 100644 index 00000000..be019531 --- /dev/null +++ b/src/scenes/games/card/CardJitsuPlayer.js @@ -0,0 +1,164 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class CardJitsuPlayer extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /* START-USER-CTR-CODE */ + + this.seat + this.username + + this.color + this.sensei + this.rank + + this.dealtCards = new Array(5).fill(null) + this.pick + + this.wins = [] + this.losses = [] + + /* END-USER-CTR-CODE */ + } + + /* START-USER-CODE */ + + get usernameText() { + return this.scene.usernames[this.seat] + } + + get dealtNotNull() { + return this.dealtCards.filter(Boolean) + } + + get pickableCards() { + return this.dealtNotNull.filter(card => !card.isDisabled) + } + + getElementWins(element) { + return this.wins.filter(win => win.elementId == element) + } + + getColorWins(color) { + return this.wins.filter(win => win.color == color) + } + + set(user) { + this.seat = this.scene.players.indexOf(this) + + this.username = user.username + this.usernameText.text = user.username.toUpperCase() + + this.color = this.world.getColor(user.color) + + this.sensei = user.sensei || false + + this.rank = user.ninjaRank + } + + pickCard(card) { + this.disableCards() + + let index = this.dealtCards.indexOf(card) + this.dealtCards[index] = null + + card.setState('pick') + this.pick = card + } + + cardWin() { + if (!this.pick) { + return + } + + this.wins.push(this.pick) + + this.pick.setState('thumbnail') + this.removePick() + } + + cardLose() { + if (!this.pick) { + return + } + + this.losses.push(this.pick) + + this.pick.explode() + this.removePick() + } + + removePick() { + this.pick = null + + if (this === this.scene.opponent) { + this.scene.events.emit('remove_pick') + } + } + + enableCards() { + for (let dealt of this.dealtNotNull) { + dealt.enableInput() + } + } + + disableCards() { + for (let dealt of this.dealtNotNull) { + dealt.disableInput() + } + } + + findWins(find) { + return this.wins.filter(card => find.includes(card.id)) + } + + disableElement(element) { + for (let card of this.dealtNotNull) { + if (card.elementId == element) { + card.disableCard() + } + } + } + + discardElement(element) { + let elementWins = this.getElementWins(element) + + if (elementWins.length) { + this.discardCard(elementWins.pop()) + } + } + + discardColor(color) { + let colorWins = this.getColorWins(color) + + // Order by element + let order = { f: 1, w: 2, s: 3 } + colorWins.sort((a, b) => order[a.elementId] - order[b.elementId]) + + if (colorWins.length) { + this.discardCard(colorWins.shift()) + } + } + + discardCard(card) { + this.wins.splice(this.wins.indexOf(card), 1) + + card.destroy() + } + + arrangeWinCards() { + for (let card of this.wins) { + card.tweenToWin() + } + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/card/CardJitsuPlayer.scene b/src/scenes/games/card/CardJitsuPlayer.scene new file mode 100644 index 00000000..0f3c8429 --- /dev/null +++ b/src/scenes/games/card/CardJitsuPlayer.scene @@ -0,0 +1,34 @@ +{ + "id": "2c95b708-e07e-4a6b-ad34-afb595594583", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "b231576b-de89-413b-8255-8a717b8986e4", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/card/Rules.js b/src/scenes/games/card/Rules.js new file mode 100644 index 00000000..0d44267a --- /dev/null +++ b/src/scenes/games/card/Rules.js @@ -0,0 +1,29 @@ +export default { + onPlayed: [1, 16, 17, 18], + currentRound: [4, 5, 6, 7, 8, 9, 10, 11, 12, 16, 17, 18], + affectsOwnPlayer: [2], + + discardElements: { + 4: 's', + 5: 'w', + 6: 'f' + }, + discardColors: { + 7: 'r', + 8: 'b', + 9: 'g', + 10: 'y', + 11: 'o', + 12: 'p' + }, + replacements: { + 16: ['w', 'f'], + 17: ['s', 'w'], + 18: ['f', 's'] + }, + limiters: { + 13: 's', + 14: 'f', + 15: 'w' + } +} diff --git a/src/scenes/games/card/card/CardJitsuCard.js b/src/scenes/games/card/card/CardJitsuCard.js new file mode 100644 index 00000000..9b1910a3 --- /dev/null +++ b/src/scenes/games/card/card/CardJitsuCard.js @@ -0,0 +1,450 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import CardJitsuThumb from "./CardJitsuThumb"; +import CardJitsuHint from "./CardJitsuHint"; +import CardJitsuExplosion from "./explosion/CardJitsuExplosion"; +/* START-USER-IMPORTS */ + +import layout from '../layout' + +/* END-USER-IMPORTS */ + +export default class CardJitsuCard extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 750, y ?? 1000); + + /** @type {Phaser.GameObjects.Image} */ + this.shadow; + /** @type {Phaser.GameObjects.Image} */ + this.hover; + /** @type {Phaser.GameObjects.Image} */ + this.back; + /** @type {Phaser.GameObjects.Sprite} */ + this.glow; + /** @type {Phaser.GameObjects.Sprite} */ + this.icon; + /** @type {Phaser.GameObjects.Image} */ + this.colorSprite; + /** @type {Phaser.GameObjects.Image} */ + this.element; + /** @type {Phaser.GameObjects.Image} */ + this.disabled; + /** @type {Phaser.GameObjects.Text} */ + this.valueText; + /** @type {CardJitsuThumb} */ + this.thumbnail; + /** @type {CardJitsuHint} */ + this.hint; + /** @type {CardJitsuExplosion} */ + this.explosion; + + + // shadow + const shadow = scene.add.image(99, 111, "cardjitsu", "card/shadow"); + this.add(shadow); + + // hover + const hover = scene.add.image(95, 107, "cardjitsu", "card/hover"); + hover.visible = false; + this.add(hover); + + // back + const back = scene.add.image(95, 107, "cardjitsu", "card/back"); + back.visible = false; + this.add(back); + + // glow + const glow = scene.add.sprite(95, 105, "cardjitsu", "card/glow0001"); + glow.visible = false; + glow.alpha = 0.5; + glow.alphaTopLeft = 0.5; + glow.alphaTopRight = 0.5; + glow.alphaBottomLeft = 0.5; + glow.alphaBottomRight = 0.5; + this.add(glow); + + // icon + const icon = scene.add.sprite(1, 1, "_MISSING"); + icon.setOrigin(0, 0); + icon.visible = false; + this.add(icon); + + // colorSprite + const colorSprite = scene.add.image(95, 107, "cardjitsu", "card/color"); + colorSprite.tintTopLeft = 1132705; + colorSprite.tintTopRight = 1132705; + colorSprite.tintBottomLeft = 1132705; + colorSprite.tintBottomRight = 1132705; + this.add(colorSprite); + + // element + const element = scene.add.image(28, 28, "cardjitsu", "card/f"); + element.setOrigin(0.5116279069767442, 0.5128205128205128); + this.add(element); + + // disabled + const disabled = scene.add.image(95, 107, "cardjitsu", "card/disabled"); + disabled.visible = false; + this.add(disabled); + + // valueText + const valueText = scene.add.text(1, 48, "", {}); + valueText.text = "88"; + valueText.setStyle({ "align": "center", "color": "#000", "fixedWidth":52,"fontFamily": "Burbank Big Regular", "fontSize": "38px", "fontStyle": "bold" }); + this.add(valueText); + + // thumbnail + const thumbnail = new CardJitsuThumb(scene, 47, 45); + thumbnail.visible = false; + this.add(thumbnail); + + // hint + const hint = new CardJitsuHint(scene, 95, -120); + hint.visible = false; + this.add(hint); + + // explosion + const explosion = new CardJitsuExplosion(scene, 101, 129); + explosion.visible = false; + this.add(explosion); + + this.shadow = shadow; + this.hover = hover; + this.back = back; + this.glow = glow; + this.icon = icon; + this.colorSprite = colorSprite; + this.element = element; + this.disabled = disabled; + this.valueText = valueText; + this.thumbnail = thumbnail; + this.hint = hint; + this.explosion = explosion; + + /* START-USER-CTR-CODE */ + + this.player + this.state + + this.id + this.powerId + this.description + this.elementId + + this.spacer + this.color + this.glow + + this.tween + + this.glow.anims.play('card/glow') + + this.on('pointerup', this.onUp, this) + this.on('pointerover', this.onOver, this) + this.on('pointerout', this.onOut, this) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + get isDisabled() { + return this.disabled.visible + } + + init(player, state, card = null) { + if (!player.dealtCards.includes(null)) { + return + } + + this.player = player + + let empty = player.dealtCards.indexOf(null) + player.dealtCards[empty] = this + + if (card) { + this.updateCard(card) + } + + this.updateDepth() + this.setState(state) + + this.tweenToDealt(empty) + } + + get isPowerCard() { + return this.powerId > 0 + } + + updateCard(card) { + let tint = layout.colors[card.color].color + + this.id = card.id + this.powerId = card.powerId + this.elementId = card.element + this.value = card.value + this.color = card.color + + this.description = this.powerId + ? this.getString(`pow_${this.powerId}`) + : '' + + this.valueText.text = card.value + this.colorSprite.tint = tint + + this.element.setFrame(`card/${card.element}`) + + if (this.isPowerCard) { + this.glow.tint = tint + } + + this.thumbnail.color.tint = tint + this.thumbnail.element.setFrame(`card/thumbnail/${card.element}`) + } + + setState(state) { + this.state = state + + switch (state) { + case 'back': + this.setStateBack() + break + case 'pick': + this.setStatePick() + break + case 'reveal': + this.setStateReveal() + break + case 'thumbnail': + this.setStateThumbnail() + break + default: + this.setStateFront() + break + } + } + + setStateFront() { + this.scale = layout.scale.front + this.spacer = layout.spacer.dealtFront + + this.showFrontSprites(true) + } + + setStateBack() { + this.scale = layout.scale.back + this.spacer = layout.spacer.dealtBack + + this.showFrontSprites(false) + } + + setStatePick() { + this.scale = layout.scale.pick + + if (!this.tween) { + this.tweenToPick() + return + } + + this.tween.once('complete', this.tweenToPick, this) + } + + setStateReveal() { + this.scale = layout.scale.pick + + if (!this.tween) { + this.revealCard() + return + } + + this.tween.once('complete', this.revealCard, this) + } + + setStateThumbnail() { + this.spacer = layout.spacer.win + + this.list.map(sprite => sprite.visible = false) + this.thumbnail.visible = true + + this.tweenToWin() + } + + showFrontSprites(show) { + this.thumbnail.visible = false + this.back.visible = !show + this.valueText.visible = show + this.element.visible = show + this.colorSprite.visible = show + this.icon.visible = show + this.glow.visible = show && this.isPowerCard + } + + tweenToDealt(empty) { + let seat = this.player.seat + + let pos = layout.pos.dealts[seat] + + let x = (seat === 0) + ? pos.x + (this.spacer * empty) + : pos.x - (this.spacer * empty) - this.spacer + + this.tweenTo(x, pos.y) + + this.tween.once('complete', this.onTweenToDealtComplete, this) + } + + onTweenToDealtComplete() { + if (this.player != this.scene.myPlayer) { + return + } + + for (let card of this.player.dealtNotNull) { + if (card.tween) { + return + } + } + + this.scene.allCardsDealt() + } + + tweenToPick() { + this.scale = layout.scale.pick + + let pos = layout.pos.picks[this.player.seat] + + this.tweenTo(pos.x, pos.y) + } + + tweenToWin() { + let pos = layout.pos.wins[this.player.seat][this.elementId] + + let wins = this.player.getElementWins(this.elementId) + let index = wins.indexOf(this) + 1 + + let y = pos.y + (this.spacer * index) + + this.tweenTo(pos.x, y) + + this.tween.once('complete', this.updateDepth, this) + } + + tweenToOver(cardIndex) { + if (this.tween) { + this.tween.once('complete', () => this.tweenToOver(cardIndex)) + return + } + + let spacer = layout.spacer.out + + let pos = layout.pos.over[this.player.seat] + + let x = pos.x + (spacer * cardIndex) + + this.tweenTo(x, pos.y) + } + + tweenTo(x, y) { + this.tween = this.scene.tweens.add({ + targets: this, + duration: 500, + + x: x, + y: y + }) + + this.tween.once('complete', this.removeTween, this) + } + + removeTween() { + if (!this.tween) { + return + } + + this.tween.remove() + this.tween = null + } + + revealCard() { + this.scene.time.delayedCall(1000, () => this.flip()) + } + + flip() { + let timeline = this.scene.tweens.createTimeline({ + onComplete: () => this.scene.time.delayedCall(500, () => this.scene.events.emit('flipped')) + }) + + timeline.add({ + targets: this, + duration: 250, + + x: this.x + this.back.width / 2, + scaleX: 0, + + onComplete: () => this.showFrontSprites(true) + }) + + timeline.add({ + targets: this, + duration: 250, + + x: this.x, + scaleX: 1, + }) + + timeline.play() + } + + enableInput() { + this.setSize(this.colorSprite.width, this.colorSprite.height) + this.setInteractive() + + // Offset + this.input.hitArea.x = this.colorSprite.x + this.input.hitArea.y = this.colorSprite.y + + this.disabled.visible = false + } + + disableInput() { + this.disableInteractive() + this.onOut() + } + + disableCard() { + this.disableInput() + this.disabled.visible = true + } + + onUp() { + this.scene.pickCard(this) + } + + onOver() { + this.hover.visible = true + + if (this.isPowerCard) { + this.hint.show() + } + } + + onOut() { + this.hover.visible = false + + this.hint.close() + } + + updateDepth() { + this.depth = this.y + } + + explode() { + this.explosion.show() + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/card/card/CardJitsuCard.scene b/src/scenes/games/card/card/CardJitsuCard.scene new file mode 100644 index 00000000..2d873272 --- /dev/null +++ b/src/scenes/games/card/card/CardJitsuCard.scene @@ -0,0 +1,202 @@ +{ + "id": "a407308b-445f-4a78-a4f2-b93495772216", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "6c346f50-1d14-4573-89dc-cad5ae046a9c", + "label": "container_1", + "x": 750, + "y": 1000, + "list": [ + { + "type": "Image", + "id": "947a2411-722b-4b2f-9f67-60ba43f40807", + "label": "shadow", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/shadow" + }, + "x": 99, + "y": 111 + }, + { + "type": "Image", + "id": "468a9224-d66e-4a4e-abac-23255c005723", + "label": "hover", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/hover" + }, + "x": 95, + "y": 107, + "visible": false + }, + { + "type": "Image", + "id": "e2a1144d-f852-45e0-820c-963e0b038b76", + "label": "back", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/back" + }, + "x": 95, + "y": 107, + "visible": false + }, + { + "type": "Sprite", + "id": "a753f951-e279-4ec6-9e49-d1af7527c434", + "label": "glow", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/glow0001" + }, + "x": 95, + "y": 105, + "visible": false, + "alpha": 0.5, + "alphaTopLeft": 0.5, + "alphaTopRight": 0.5, + "alphaBottomLeft": 0.5, + "alphaBottomRight": 0.5 + }, + { + "type": "Sprite", + "id": "9aca60f5-218c-4d87-a2ad-c661e35b5f74", + "label": "icon", + "scope": "CLASS", + "texture": {}, + "x": 1, + "y": 1, + "originX": 0, + "originY": 0, + "visible": false + }, + { + "type": "Image", + "id": "c6c0d21a-8e8a-4c4f-b867-7a5ae4b43e0e", + "label": "colorSprite", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/color" + }, + "x": 95, + "y": 107, + "tintTopLeft": "#1148a1", + "tintTopRight": "#1148a1", + "tintBottomLeft": "#1148a1", + "tintBottomRight": "#1148a1" + }, + { + "type": "Image", + "id": "28a70a05-3a13-4981-ba5e-01ec1a854dec", + "label": "element", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/f" + }, + "x": 28, + "y": 28, + "originX": 0.5116279069767442, + "originY": 0.5128205128205128 + }, + { + "type": "Image", + "id": "efa94a48-8431-4d8e-81e2-294e2a7f2846", + "label": "disabled", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/disabled" + }, + "x": 95, + "y": 107, + "visible": false + }, + { + "type": "Text", + "id": "10b504e1-dd20-411b-83e8-31df0743d59c", + "label": "valueText", + "scope": "CLASS", + "x": 1, + "y": 48, + "text": "88", + "fixedWidth": 52, + "align": "center", + "fontFamily": "Burbank Big Regular", + "fontSize": "38px", + "fontStyle": "bold", + "color": "#000" + }, + { + "prefabId": "f44f8f17-7031-4845-aaba-fc842a544771", + "id": "23b26ff4-5fed-4419-b975-ead0216911c4", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "thumbnail", + "scope": "CLASS", + "x": 47, + "y": 45, + "visible": false + }, + { + "prefabId": "f7bc21d3-944c-4122-96b0-93ea4388bcff", + "id": "0d7b3b9b-993f-444e-83fa-2198e18910f7", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "hint", + "scope": "CLASS", + "x": 95, + "y": -120, + "visible": false + }, + { + "prefabId": "cb9a1643-8ee1-408f-89d0-0a8bbdb8ecee", + "id": "fb57c098-d2be-4f60-acf1-428eeb021c87", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "explosion", + "scope": "CLASS", + "x": 101, + "y": 129, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/card/card/CardJitsuHint.js b/src/scenes/games/card/card/CardJitsuHint.js new file mode 100644 index 00000000..ac72a325 --- /dev/null +++ b/src/scenes/games/card/card/CardJitsuHint.js @@ -0,0 +1,59 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class CardJitsuHint extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.icon; + /** @type {Phaser.GameObjects.Text} */ + this.description; + + + // hint + const hint = scene.add.image(0, 0, "cardjitsu", "card/hint"); + this.add(hint); + + // icon + const icon = scene.add.image(0, -87, "cardjitsu", "card/power/1"); + icon.setOrigin(0.5, 0.5135135135135135); + this.add(icon); + + // description + const description = scene.add.text(0, 0, "", {}); + description.setOrigin(0.5, 0.5); + description.setStyle({ "align": "center", "color": "#000", "fixedWidth":300,"fixedHeight":130,"fontFamily": "CCComiccrazy", "fontSize": "24px", "fontStyle": "bold" }); + description.setLineSpacing(1); + description.setWordWrapWidth(300, true); + this.add(description); + + this.icon = icon; + this.description = description; + + /* START-USER-CTR-CODE */ + + this.description.setResolution(1) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show() { + this.icon.setFrame(`card/power/${this.parentContainer.powerId}`) + + this.description.text = this.parentContainer.description + + super.show() + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/card/card/CardJitsuHint.scene b/src/scenes/games/card/card/CardJitsuHint.scene new file mode 100644 index 00000000..5c6b8df3 --- /dev/null +++ b/src/scenes/games/card/card/CardJitsuHint.scene @@ -0,0 +1,77 @@ +{ + "id": "f7bc21d3-944c-4122-96b0-93ea4388bcff", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "d1a28e21-a0ab-469f-ad9f-3aeeee456248", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "92c4b27a-4d26-4219-b33d-a64e40d6491e", + "label": "hint", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "card/hint" + } + }, + { + "type": "Image", + "id": "0e24a1b2-3bc4-408f-98aa-72a985b57917", + "label": "icon", + "scope": "CLASS", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "card/power/1" + }, + "y": -87, + "originY": 0.5135135135135135 + }, + { + "type": "Text", + "id": "4bfbda05-5539-4e91-ad28-78eb4d2d0cd8", + "label": "description", + "scope": "CLASS", + "components": [], + "originX": 0.5, + "originY": 0.5, + "fixedWidth": 300, + "fixedHeight": 130, + "lineSpacing": 1, + "align": "center", + "fontFamily": "CCComiccrazy", + "fontSize": "24px", + "fontStyle": "bold", + "color": "#000", + "wordWrapWidth": 300, + "wordWrapUseAdvanced": true + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/card/card/CardJitsuThumb.js b/src/scenes/games/card/card/CardJitsuThumb.js new file mode 100644 index 00000000..9d8b36b0 --- /dev/null +++ b/src/scenes/games/card/card/CardJitsuThumb.js @@ -0,0 +1,47 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class CardJitsuThumb extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.color; + /** @type {Phaser.GameObjects.Image} */ + this.element; + + + // back + const back = scene.add.image(0, 0, "cardjitsu", "card/thumbnail/back"); + this.add(back); + + // color + const color = scene.add.image(-2, -2, "cardjitsu", "card/thumbnail/color"); + color.tintTopLeft = 1132705; + color.tintTopRight = 1132705; + color.tintBottomLeft = 1132705; + color.tintBottomRight = 1132705; + this.add(color); + + // element + const element = scene.add.image(0, 0, "cardjitsu", "card/thumbnail/f"); + element.setOrigin(0.5, 0.5102040816326531); + this.add(element); + + this.color = color; + this.element = element; + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/card/card/CardJitsuThumb.scene b/src/scenes/games/card/card/CardJitsuThumb.scene new file mode 100644 index 00000000..d077b472 --- /dev/null +++ b/src/scenes/games/card/card/CardJitsuThumb.scene @@ -0,0 +1,77 @@ +{ + "id": "f44f8f17-7031-4845-aaba-fc842a544771", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "snapEnabled": true, + "snapWidth": 1533, + "snapHeight": 963, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "3d6d8f71-4942-41ab-882c-cbb250278716", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "508731ad-5b4c-455b-a37b-7aedbe538f01", + "label": "back", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "card/thumbnail/back" + } + }, + { + "type": "Image", + "id": "ce66837f-6376-4b3c-aea9-71bb41e10eec", + "label": "color", + "scope": "CLASS", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "card/thumbnail/color" + }, + "x": -2, + "y": -2, + "tintTopLeft": "#1148a1", + "tintTopRight": "#1148a1", + "tintBottomLeft": "#1148a1", + "tintBottomRight": "#1148a1" + }, + { + "type": "Image", + "id": "3ad6fe2a-409a-49fa-94a7-5a40b43330a1", + "label": "element", + "scope": "CLASS", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "card/thumbnail/f" + }, + "originY": 0.5102040816326531 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/card/card/explosion/CardJitsuExplosion.js b/src/scenes/games/card/card/explosion/CardJitsuExplosion.js new file mode 100644 index 00000000..d2aa45d8 --- /dev/null +++ b/src/scenes/games/card/card/explosion/CardJitsuExplosion.js @@ -0,0 +1,64 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class CardJitsuExplosion extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Sprite} */ + this.poof; + /** @type {Phaser.GameObjects.Sprite} */ + this.start; + + + // poof + const poof = scene.add.sprite(8, -24, "cardjitsu", "card/explosion/poof/poof0008"); + poof.setOrigin(0.5006501950585176, 0.5); + poof.visible = false; + this.add(poof); + + // start + const start = scene.add.sprite(0, 0, "cardjitsu", "card/explosion/start"); + start.setOrigin(0.5014577259475219, 0.5016722408026756); + start.visible = false; + this.add(start); + + this.poof = poof; + this.start = start; + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show() { + super.show() + + this.start.once('animationcomplete', this.showPoof, this) + this.start.play('card/explosion/start') + } + + showPoof() { + this.poof.once('animationcomplete', this.close, this) + this.poof.play('card/explosion/poof') + + this.soundManager.play('explosion', { volume: 1.5 }) + } + + close() { + super.close() + + // Destroy card + this.parentContainer.destroy() + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/card/card/explosion/CardJitsuExplosion.scene b/src/scenes/games/card/card/explosion/CardJitsuExplosion.scene new file mode 100644 index 00000000..ec3a57e2 --- /dev/null +++ b/src/scenes/games/card/card/explosion/CardJitsuExplosion.scene @@ -0,0 +1,59 @@ +{ + "id": "cb9a1643-8ee1-408f-89d0-0a8bbdb8ecee", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "e7bfb279-18a7-49e4-9fa8-c3fe4c80d2f6", + "label": "container_1", + "list": [ + { + "type": "Sprite", + "id": "391966aa-0909-4214-b9fd-6150194390dc", + "label": "poof", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/explosion/poof/poof0008" + }, + "x": 8, + "y": -24, + "originX": 0.5006501950585176, + "visible": false + }, + { + "type": "Sprite", + "id": "4d21bfc4-c243-4863-8246-4369a55b0ede", + "label": "start", + "scope": "CLASS", + "texture": { + "key": "cardjitsu", + "frame": "card/explosion/start" + }, + "originX": 0.5014577259475219, + "originY": 0.5016722408026756, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/card/clock/CardJitsuClock.js b/src/scenes/games/card/clock/CardJitsuClock.js new file mode 100644 index 00000000..b88732da --- /dev/null +++ b/src/scenes/games/card/clock/CardJitsuClock.js @@ -0,0 +1,87 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class CardJitsuClock extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.clock; + /** @type {Phaser.GameObjects.Text} */ + this.time; + + + // clock + const clock = scene.add.image(0, 0, "cardjitsu", "clock/20"); + this.add(clock); + + // time + const time = scene.add.text(0, 0, "", {}); + time.setOrigin(0.5, 0.5); + time.text = "20"; + time.setStyle({ "align": "center", "color": "#000", "fixedWidth":200,"fontFamily": "CCComiccrazy", "fontSize": "44px", "strokeThickness":5,"shadow.color": "#fff", "shadow.blur":5,"shadow.stroke":true,"shadow.fill":true}); + this.add(time); + + this.clock = clock; + this.time = time; + + /* START-USER-CTR-CODE */ + + this.timerConfig = { + delay: 1000, + callback: this.onTimeEvent, + callbackScope: this, + repeat: 20, + startAt: 1000, + paused: true + } + + this.timer = scene.time.addEvent(this.timerConfig) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + start() { + this.show() + + this.timer.paused = false + } + + stop() { + this.close() + + this.timer.reset(this.timerConfig) + this.updateClock() + } + + onTimeEvent() { + if (this.timer.repeatCount == 0) { + this.timeUp() + return + } + + this.updateClock() + } + + timeUp() { + this.stop() + this.scene.timeUp() + } + + updateClock() { + this.time.text = this.timer.repeatCount + + this.clock.setFrame(`clock/${this.timer.repeatCount}`) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/card/clock/CardJitsuClock.scene b/src/scenes/games/card/clock/CardJitsuClock.scene new file mode 100644 index 00000000..d8a2d2fb --- /dev/null +++ b/src/scenes/games/card/clock/CardJitsuClock.scene @@ -0,0 +1,66 @@ +{ + "id": "ebed3022-bcec-4b40-b9a2-de88069e87b6", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "98f77107-b6ed-43ab-afe7-b671b634fc43", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "38218f7f-cf95-4b0f-b999-1093dd226621", + "label": "clock", + "scope": "CLASS", + "components": [], + "texture": { + "key": "cardjitsu", + "frame": "clock/20" + } + }, + { + "type": "Text", + "id": "6cb3e767-0b54-409d-8cd2-d211c434661a", + "label": "time", + "scope": "CLASS", + "components": [], + "originX": 0.5, + "originY": 0.5, + "text": "20", + "fixedWidth": 200, + "align": "center", + "fontFamily": "CCComiccrazy", + "fontSize": "44px", + "color": "#000", + "strokeThickness": 5, + "shadow.stroke": true, + "shadow.fill": true, + "shadow.color": "#fff", + "shadow.blur": 5 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/card/help/CardJitsuHelp.js b/src/scenes/games/card/help/CardJitsuHelp.js new file mode 100644 index 00000000..9714b4d9 --- /dev/null +++ b/src/scenes/games/card/help/CardJitsuHelp.js @@ -0,0 +1,118 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import SimpleButton from "../../../components/SimpleButton"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class CardJitsuHelp extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + // help + const help = scene.add.image(0, 0, "cardjitsu", "help"); + help.setOrigin(0.5005370569280344, 0.5004436557231589); + this.add(help); + + // text + const text = scene.add.text(0, -275, "", {}); + text.setOrigin(0.5, 0.5); + text.text = "If tied, the highest number wins."; + text.setStyle({ "align": "center", "color": "#333", "fixedWidth":828,"fixedHeight":50,"fontFamily": "Burbank Small", "fontSize": "32px" }); + this.add(text); + + // help (components) + const helpSimpleButton = new SimpleButton(help); + helpSimpleButton.hoverCallback = () => this.onOver(); + helpSimpleButton.hoverOutCallback = () => this.onOut(); + helpSimpleButton.pixelPerfect = true; + + /* START-USER-CTR-CODE */ + + text.text = this.getString('help_card') + + this.closedY = this.y + this.openY = this.y + 464 + + this.tween + + this.State = { + Closed: 0, + Open: 1 + } + + this.currentState = this.State.Closed + this.locked = true + + /* END-USER-CTR-CODE */ + } + + /* START-USER-CODE */ + + onOver() { + if (this.tween || this.currentState === this.State.Open || this.locked) { + return + } + + this.tween = this.scene.tweens.add({ + targets: this, + duration: 500, + y: this.openY, + ease: Phaser.Math.Easing.Cubic.Out, + + onComplete: () => this.onOpened() + }) + } + + onOut() { + if (this.tween || this.currentState === this.State.Closed || this.locked) { + return + } + + this.tween = this.scene.tweens.add({ + targets: this, + duration: 400, + y: this.closedY, + + onComplete: () => this.onClosed() + }) + } + + onOpened() { + this.currentState = this.State.Open + this.removeTween() + } + + onClosed() { + this.currentState = this.State.Closed + this.removeTween() + } + + close() { + this.y = this.closedY + this.onClosed() + } + + lock() { + this.locked = true + this.close() + } + + unlock() { + this.locked = false + } + + removeTween() { + if (!this.tween) { + return + } + + this.tween.remove() + this.tween = null + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/card/help/CardJitsuHelp.scene b/src/scenes/games/card/help/CardJitsuHelp.scene new file mode 100644 index 00000000..3044ce76 --- /dev/null +++ b/src/scenes/games/card/help/CardJitsuHelp.scene @@ -0,0 +1,66 @@ +{ + "id": "94535fbd-178b-46f2-a995-1dd72d803895", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "4645b7a2-5b6f-4953-9ebd-1226540eb5b4", + "label": "container_1", + "components": [], + "list": [ + { + "type": "Image", + "id": "ab83195e-cec8-49c5-a5b2-1eb80dc96830", + "label": "help", + "components": [ + "SimpleButton" + ], + "SimpleButton.hoverCallback": "() => this.onOver()", + "SimpleButton.hoverOutCallback": "() => this.onOut()", + "SimpleButton.pixelPerfect": true, + "texture": { + "key": "cardjitsu", + "frame": "help" + }, + "originX": 0.5005370569280344, + "originY": 0.5004436557231589 + }, + { + "type": "Text", + "id": "108802b2-880c-4a19-893e-a4ddb0e4763f", + "label": "text", + "components": [], + "y": -275, + "originX": 0.5, + "originY": 0.5, + "text": "If tied, the highest number wins.", + "fixedWidth": 828, + "fixedHeight": 50, + "align": "center", + "fontFamily": "Burbank Small", + "fontSize": "32px", + "color": "#333" + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/card/layout.js b/src/scenes/games/card/layout.js new file mode 100644 index 00000000..5124c13f --- /dev/null +++ b/src/scenes/games/card/layout.js @@ -0,0 +1,123 @@ +const layout = { + pos: { + dealts: [ + { + x: 100, + y: 770 + }, + { + x: 1420, + y: 770 + } + ], + picks: [ + { + x: 450, + y: 300 + }, + { + x: 850, + y: 300 + } + ], + wins: [ + { + f: { + x: 100, + y: 50 + }, + w: { + x: 200, + y: 50 + }, + s: { + x: 300, + y: 50 + } + }, + { + f: { + x: 1100, + y: 50 + }, + w: { + x: 1200, + y: 50 + }, + s: { + x: 1300, + y: 50 + } + } + ], + over: [ + { + x: 90, + y: 340 + }, + { + x: 1140, + y: 340 + } + ], + power: { + top: [ + { + x: 410, + y: 70 + }, + { + x: 950, + y: 70 + }, + { + x: 716, + y: 120 + } + ], + pick: [ + { + x: 500, + y: 220 + }, + { + x: 900, + y: 220 + } + ] + } + }, + spacer: { + dealtFront: 150, + dealtBack: 70, + win: 30, + out: 100 + }, + scale: { + front: 0.7, + back: 0.375, + pick: 1 + }, + colors: { + r: { + color: 0xe23c26 + }, + g: { + color: 0x61b946 + }, + b: { + color: 0x1148a1 + }, + p: { + color: 0xa399ca + }, + o: { + color: 0xf7952b + }, + y: { + color: 0xfbeb2d + } + } +} + +export default layout diff --git a/src/scenes/games/card/power/CardJitsuPower.js b/src/scenes/games/card/power/CardJitsuPower.js new file mode 100644 index 00000000..6685961f --- /dev/null +++ b/src/scenes/games/card/power/CardJitsuPower.js @@ -0,0 +1,235 @@ +import layout from '../layout' +import Rules from '../Rules' +import States from './States' + + +export default class CardJitsuPower extends Phaser.GameObjects.Sprite { + + constructor(scene, player, card) { + const pos = layout.pos.power.pick[player.seat] + const powerId = card.powerId + + super(scene, pos.x, pos.y, 'cardjitsu', `power/${powerId}`) + + this.player = player + this.card = card + this.powerId = powerId + + this.state = States.Pick + this.tween + + this.visible = false + + this.setOrigin(0, 0) + } + + get isCurrentRound() { + return Rules.currentRound.includes(this.powerId) + } + + get isAffectsOwnPlayer() { + return Rules.affectsOwnPlayer.includes(this.powerId) + } + + get isDiscardElement() { + return this.powerId in Rules.discardElements + } + + get isDiscardColor() { + return this.powerId in Rules.discardColors + } + + get isReplacement() { + return this.powerId in Rules.replacements + } + + get isLimiter() { + return this.powerId in Rules.limiters + } + + get isPick() { + return this.state == States.Pick + } + + get isActive() { + return this.state == States.Active + } + + get isComplete() { + return this.state == States.Complete + } + + get isReverseEffect() { + return this.powerId == 1 + } + + process() { + this.visible = true + + let target = this.getTarget() + + // No target + if (!target) { + this.onStateProcessed() + return + } + + // Target not moved + if (this.isTargetSame(target)) { + this.scene.time.delayedCall(1000, () => this.onStateProcessed()) + return + } + + this.tweenTo(target.x, target.y) + + this.tween.once('complete', this.onStateProcessed, this) + } + + isTargetSame(target) { + return target.x == this.x && target.y == this.y + } + + tweenTo(x, y) { + this.tween = this.scene.tweens.add({ + targets: this, + duration: 1000, + + x: x, + y: y, + + ease: 'Cubic.easeOut' + }) + } + + onStateProcessed() { + this.updateState() + + switch (this.state) { + case States.Active: + this.updateActive() + break + + case States.Complete: + this.removePower() + break + } + } + + updateActive() { + if (this.isCurrentRound) { + this.startRemove() + } else { + this.nextPower() + } + } + + getTarget() { + let seat = this.player.seat + let oppositeSeat = this.scene.getOppositeSeat(seat) + + return this.isActive + ? this.getActiveTarget(seat, oppositeSeat) + : this.getPickTarget(seat, oppositeSeat) + } + + getPickTarget(seat, oppositeSeat) { + let top = layout.pos.power.top + + if (this.isReverseEffect) { + return top[2] + } + + if (this.isAffectsOwnPlayer) { + return top[seat] + } + + if (this.isReplacement) { + return layout.pos.power.pick[oppositeSeat] + } + + return top[oppositeSeat] + } + + getActiveTarget(seat, oppositeSeat) { + let pick = layout.pos.power.pick + + if (this.isReverseEffect) { + return this.getReverseEffectTarget(seat, oppositeSeat) + } + + if (this.isAffectsOwnPlayer) { + return pick[seat] + } + + if (this.isLimiter) { + return null + } + + return pick[oppositeSeat] + } + + getReverseEffectTarget(seat, oppositeSeat) { + let opponentCard = this.scene.players[oppositeSeat].pick + let pick = layout.pos.power.pick + + if (this.card.elementId != opponentCard.elementId) { + this.playPoof() + return this + } + + if (this.card.value > opponentCard.value) { + return pick[oppositeSeat] + } + + if (this.card.value < opponentCard.value) { + return pick[seat] + } + + this.playPoof() + return this + } + + playPoof() { + this.anims.play('power/poof') + } + + updateState() { + this.state = this.getNextState() + } + + getNextState() { + return (this.state + 1) % Object.keys(States).length + } + + nextPower() { + this.scene.nextPower() + } + + startRemove() { + this.scene.time.delayedCall(500, () => this.removePower()) + } + + removePower() { + this.scene.removePower(this) + + this.nextPower() + this.afterRemove() + + this.destroy() + } + + afterRemove() { + let opponent = this.scene.players[this.scene.getOppositeSeat(this.player.seat)] + + if (this.isDiscardElement) { + opponent.discardElement(Rules.discardElements[this.powerId]) + } + + if (this.isDiscardColor) { + opponent.discardColor(Rules.discardColors[this.powerId]) + } + + opponent.arrangeWinCards() + } + +} diff --git a/src/scenes/games/card/power/States.js b/src/scenes/games/card/power/States.js new file mode 100644 index 00000000..b3ddc078 --- /dev/null +++ b/src/scenes/games/card/power/States.js @@ -0,0 +1,5 @@ +export default { + Pick: 0, + Active: 1, + Complete: 2 +} diff --git a/src/scenes/games/mancala/Mancala.js b/src/scenes/games/mancala/Mancala.js new file mode 100644 index 00000000..5c82c10f --- /dev/null +++ b/src/scenes/games/mancala/Mancala.js @@ -0,0 +1,592 @@ +import BaseContainer from '@scenes/base/BaseContainer' + +import { Button, DraggableContainer, SimpleButton } from '@components/components' + +import MancalaHint from './MancalaHint' +import MancalaPlayer from './MancalaPlayer' + + +export const preload = { + key: 'mancala-pack', + url: 'assets/media/games/mancala/mancala-pack.json', + loadString: 'mancala' +} + +/* START OF COMPILED CODE */ + +export default class Mancala extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {MancalaPlayer} */ + this.mancalaPlayer1; + /** @type {MancalaPlayer} */ + this.mancalaPlayer2; + /** @type {Phaser.GameObjects.Sprite} */ + this.popup; + /** @type {MancalaHint} */ + this.hint; + /** @type {Phaser.GameObjects.Image[]} */ + this.holes; + + + // window + const window = scene.add.image(0, 0, "mancala", "window"); + this.add(window); + + // bg2 + const bg2 = scene.add.image(0, 118, "mancala", "player/bg"); + bg2.flipY = true; + this.add(bg2); + + // bg1 + const bg1 = scene.add.image(0, -86, "mancala", "player/bg"); + this.add(bg1); + + // shadow + const shadow = scene.add.image(0, 16, "mancala", "shadow"); + this.add(shadow); + + // board + const board = scene.add.image(0, 10, "mancala", "board"); + this.add(board); + + // hole_13 + const hole_13 = scene.add.image(-200, 11, "mancala", "hole_1"); + hole_13.setOrigin(0.5, 0.5047619047619047); + this.add(hole_13); + + // hole_12 + const hole_12 = scene.add.image(-144, -20, "mancala", "hole"); + hole_12.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_12); + + // hole_11 + const hole_11 = scene.add.image(-86, -20, "mancala", "hole"); + hole_11.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_11); + + // hole_10 + const hole_10 = scene.add.image(-28, -20, "mancala", "hole"); + hole_10.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_10); + + // hole_9 + const hole_9 = scene.add.image(30, -20, "mancala", "hole"); + hole_9.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_9); + + // hole_8 + const hole_8 = scene.add.image(88, -20, "mancala", "hole"); + hole_8.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_8); + + // hole_7 + const hole_7 = scene.add.image(146, -20, "mancala", "hole"); + hole_7.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_7); + + // hole_6 + const hole_6 = scene.add.image(200, 11, "mancala", "hole_2"); + hole_6.setOrigin(0.5, 0.5047619047619047); + this.add(hole_6); + + // hole_5 + const hole_5 = scene.add.image(146, 40, "mancala", "hole"); + hole_5.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_5); + + // hole_4 + const hole_4 = scene.add.image(88, 40, "mancala", "hole"); + hole_4.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_4); + + // hole_3 + const hole_3 = scene.add.image(30, 40, "mancala", "hole"); + hole_3.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_3); + + // hole_2 + const hole_2 = scene.add.image(-28, 40, "mancala", "hole"); + hole_2.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_2); + + // hole_1 + const hole_1 = scene.add.image(-86, 40, "mancala", "hole"); + hole_1.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_1); + + // hole_0 + const hole_0 = scene.add.image(-144, 40, "mancala", "hole"); + hole_0.setOrigin(0.5102040816326531, 0.5102040816326531); + this.add(hole_0); + + // mancalaPlayer1 + const mancalaPlayer1 = new MancalaPlayer(scene, -193, 136); + this.add(mancalaPlayer1); + + // mancalaPlayer2 + const mancalaPlayer2 = new MancalaPlayer(scene, -193, -104); + this.add(mancalaPlayer2); + + // popup + const popup = scene.add.sprite(4, 16, "mancala", "popup/popup0005"); + popup.visible = false; + this.add(popup); + + // hint + const hint = new MancalaHint(scene, -144, -20); + hint.visible = false; + this.add(hint); + + // x_button + const x_button = scene.add.image(252, -160, "main", "blue-button"); + this.add(x_button); + + // blue_x + const blue_x = scene.add.image(252, -162, "main", "blue-x"); + this.add(blue_x); + + // lists + const holes = [hole_0, hole_1, hole_2, hole_3, hole_4, hole_5, hole_6, hole_7, hole_8, hole_9, hole_10, hole_11, hole_12, hole_13]; + + // this (components) + const thisDraggableContainer = new DraggableContainer(this); + thisDraggableContainer.handle = window; + + // mancalaPlayer1 (prefab fields) + mancalaPlayer1.bg = bg2; + mancalaPlayer1.mancala = hole_6; + + // mancalaPlayer2 (prefab fields) + mancalaPlayer2.bg = bg1; + mancalaPlayer2.mancala = hole_13; + + // x_button (components) + const x_buttonButton = new Button(x_button); + x_buttonButton.spriteName = "blue-button"; + x_buttonButton.callback = () => this.close(); + + this.mancalaPlayer1 = mancalaPlayer1; + this.mancalaPlayer2 = mancalaPlayer2; + this.popup = popup; + this.hint = hint; + this.holes = holes; + + /* START-USER-CTR-CODE */ + + this.maxStoneColor = 5 + this.holeSize = 49 + this.dropDelay = 168 + this.captureDelay = 130 + + popup.setInteractive() + popup.on('animationcomplete', (animation) => this.onPopupComplete(animation)) + + this.createButtons() + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + get isMyTurn() { + return this.currentTurn === this.myTurn + } + + get mancalas() { + return [this.mancalaPlayer1.mancala, this.mancalaPlayer2.mancala] + } + + get currentPlayer() { + return this[`mancalaPlayer${this.currentTurn}`] + } + + addListeners() { + this.network.events.on('get_game', this.handleGetGame, this) + this.network.events.on('join_game', this.handleJoinGame, this) + this.network.events.on('update_game', this.handleUpdateGame, this) + this.network.events.on('start_game', this.handleStartGame, this) + this.network.events.on('send_move', this.handleSendMove, this) + this.network.events.on('close_game', this.handleCloseGame, this) + } + + removeListeners() { + this.network.events.off('get_game', this.handleGetGame, this) + this.network.events.off('join_game', this.handleJoinGame, this) + this.network.events.off('update_game', this.handleUpdateGame, this) + this.network.events.off('start_game', this.handleStartGame, this) + this.network.events.off('send_move', this.handleSendMove, this) + this.network.events.off('close_game', this.handleCloseGame, this) + } + + show() { + this.map = null + this.currentTurn = 1 + this.myTurn = null + this.started = false + this.gameOver = false + + // Waiting for turn to finish + this.wait = false + + this.moveQueue = [] + this.timerEvents = [] + this.stones = [] + + super.show() + + this.addListeners() + this.network.send('get_game') + } + + close() { + if (!this.started) { + return this.sendLeaveTable() + } + + this.interface.prompt.showWindow(this.getString('quit_game_prompt'), 'dual', () => { + this.sendLeaveTable() + + this.interface.prompt.window.visible = false + }) + } + + handleGetGame(args) { + this.map = args.map + this.currentTurn = args.currentTurn + + for (let user of args.users) { + this.setPlayer(user, args.users.indexOf(user) + 1) + } + + if (args.started) { + return this.setupMap() + } + + this.network.send('join_game') + } + + handleJoinGame(args) { + this.myTurn = args.turn + } + + handleUpdateGame(args) { + this.setPlayer(args.username, args.turn) + } + + handleStartGame() { + this.started = true + this.setupMap() + } + + handleSendMove(args) { + this.moveQueue.push(args) + + if (this.moveQueue.length > 1) { + return + } + + this.moveStones(args) + } + + handleCloseGame(args) { + if (args.username) { + let text = this.getFormatString('player_quit_prompt', args.username) + this.interface.prompt.showWindow(text, 'single') + } + + // Wait for turn to finish + if (args.gameOver) { + this.gameOver = true + return + } + + this.leaveTable() + } + + setPlayer(username, turn) { + let player = this[`mancalaPlayer${turn}`] + player.set(username, turn) + } + + setupMap() { + let currentColor = 1 + + for (let i = 0; i < this.map.length; i++) { + let count = this.map[i] + + // Create initial stones + for (let j = 0; j < count; j++) { + this.createStone(i, currentColor) + + currentColor = (currentColor >= this.maxStoneColor) + ? 1 + : currentColor + 1 + } + } + + this.updateScore() + + this.mancalaPlayer1.setActive() + this.mancalaPlayer2.setActive() + } + + isMancala(hole) { + return this.mancalas.includes(hole) + } + + createButtons() { + for (let hole of this.holes) { + hole.stones = [] + hole.index = this.holes.indexOf(hole) + + let button = new SimpleButton(hole) + + button.pixelPerfect = false + + if (!this.isMancala(hole)) { + button.callback = () => this.onHoleClick(hole) + } + + button.hoverCallback = () => this.onHoleOver(hole) + button.hoverOutCallback = () => this.onHoleOut(hole) + } + } + + createStone(index, color) { + let hole = this.holes[index] + let stone = this.scene.add.sprite(hole.x, hole.y, 'mancala', `stone/${color}/placed`) + + stone.color = color + + this.updateStonePos(stone, hole) + this.add(stone) + + this.stones.push(stone) + } + + onHoleClick(hole) { + if (!this.isMyTurn) { + return + } + + this.hint.hideHint() + + if (!this.wait && this.currentPlayer.holes.includes(hole) && hole.stones.length) { + this.network.send('send_move', { hole: this.holes.indexOf(hole) }) + } + } + + onHoleOver(hole) { + if (!this.wait) { + this.bringToTop(this.hint) + + this.hint.showHint(hole, this.currentPlayer.holes.includes(hole) && this.isMyTurn) + } + } + + onHoleOut() { + this.hint.hideHint() + } + + moveStones(args) { + this.currentTurn = args.turn + let hole = this.holes[args.hole] + + this.wait = true + + hole.stones.map(stone => this.pickUpStone(stone)) + + // Update depths + hole.stones.slice(0).reverse().map(stone => this.bringToTop(stone)) + + let nextHole = hole.index + let i = 1 + + // Move stones + while (hole.stones.length > 0) { + nextHole = this.getNextHole(nextHole) + let stone = hole.stones.shift() + + this.dropStone(i, stone, this.holes[nextHole]) + + i++ + + if (hole.stones.length === 0) { + this.delayedCall(i * this.dropDelay, () => { + this.updateTurn(nextHole, args.move) + }) + } + } + } + + pickUpStone(stone) { + stone.anims.play(`mancala/stone/${stone.color}/hand`) + } + + getNextHole(hole) { + hole++ + let opponentMancala = (this.currentTurn === 1) ? 13 : 6 + + if (hole === opponentMancala) { + hole++ + } + + if (hole > this.holes.length - 1) { + hole = 0 + } + + return hole + } + + dropStone(i, stone, hole, delay = this.dropDelay) { + this.delayedCall(i * delay, () => { + stone.anims.play(`mancala/stone/${stone.color}/drop`) + + // Mancala holes play louder sound + if (this.isMancala(hole)) { + this.soundManager.play('drop', { volume: 0.5 }) + } else { + this.soundManager.play('drop', { volume: 0.2 }) + } + + this.updateStonePos(stone, hole) + }) + } + + updateStonePos(stone, hole) { + let randomNum = Math.random() * 6.283185307179586 + + // Randomize position in hole + stone.x = hole.x + Math.sin(randomNum) * Phaser.Math.Between(0, this.holeSize / 4) + stone.y = hole.y + Math.cos(randomNum) * Phaser.Math.Between(0, this.holeSize / 4) + + hole.stones.push(stone) + } + + updateTurn(lastHole = null, move = '') { + if (lastHole !== null) { + this.checkLastHole(lastHole, move) + } + + if (move !== 'capture') { + this.updateScore() + } + + if (!move) { + this.currentTurn = (this.currentTurn === 1) ? 2 : 1 + + this.mancalaPlayer1.setActive() + this.mancalaPlayer2.setActive() + + this.checkMoveQueue() + } + } + + checkMoveQueue() { + this.moveQueue.shift() + + if (this.moveQueue.length) { + return this.moveStones(this.moveQueue[0]) + } + + this.wait = false + + if (this.gameOver) { + this.leaveTable() + } + } + + checkLastHole(lastHole, move) { + switch (move) { + case 'free': + this.showPopup('free') + break + + case 'capture': + this.captureStones(lastHole) + break + + default: + break + } + } + + captureStones(hole) { + let captureHole = this.holes[12 - hole] + let currentMancala = this.currentPlayer.mancala + + let i = 1 + + // Move stones + while (captureHole.stones.length > 0) { + let stone = captureHole.stones.shift() + + this.dropStone(i, stone, currentMancala, this.captureDelay) + + i++ + } + + this.dropStone(i, this.holes[hole].stones.shift(), currentMancala, this.captureDelay) + + this.delayedCall(i * this.captureDelay, () => { + this.showPopup('capture') + }) + } + + updateScore() { + this.mancalaPlayer1.updateScore() + this.mancalaPlayer2.updateScore() + } + + showPopup(type) { + this.bringToTop(this.popup) + this.popup.anims.play(`mancala/popup/${type}`) + } + + onPopupComplete(animation) { + // End of capture popup moves to next turn + if (animation.key === 'mancala/popup/capture') { + return this.updateTurn() + } + + // Free turn + this.checkMoveQueue() + } + + sendLeaveTable() { + this.network.send('leave_table') + this.leaveTable() + } + + leaveTable() { + this.removeListeners() + this.resetGame() + + super.close() + + this.world.client.sendLeaveSeat() + } + + resetGame() { + this.scene.time.removeEvent(this.timerEvents) + + this.stones.map(stone => stone.destroy()) + this.holes.map(hole => hole.stones = []) + + this.mancalaPlayer1.reset() + this.mancalaPlayer2.reset() + } + + delayedCall(delay, callback) { + let timerEvent = this.scene.time.delayedCall(delay, callback) + this.timerEvents.push(timerEvent) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/mancala/Mancala.scene b/src/scenes/games/mancala/Mancala.scene new file mode 100644 index 00000000..af16ddf0 --- /dev/null +++ b/src/scenes/games/mancala/Mancala.scene @@ -0,0 +1,407 @@ +{ + "id": "f4fdbbc7-bf40-42c0-92c9-e80824c1e652", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "snapWidth": 58, + "snapHeight": 60, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "2e89319d-c037-4f9f-8b8c-a4af45dadf38", + "label": "container_1", + "components": [ + "DraggableContainer" + ], + "DraggableContainer.handle": "window", + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "55d91bff-c9af-40fd-ad97-0bdc375a99d4", + "label": "window", + "components": [], + "texture": { + "key": "mancala", + "frame": "window" + } + }, + { + "type": "Image", + "id": "76bf3f20-f10a-45ab-b2c6-76fe7a7ba86a", + "label": "bg2", + "components": [], + "texture": { + "key": "mancala", + "frame": "player/bg" + }, + "y": 118, + "flipY": true + }, + { + "type": "Image", + "id": "001894b7-e6e0-4caf-b9cc-04ce634e5282", + "label": "bg1", + "components": [], + "texture": { + "key": "mancala", + "frame": "player/bg" + }, + "y": -86 + }, + { + "type": "Image", + "id": "029699bc-46a0-4c39-8794-64b9bac2700a", + "label": "shadow", + "components": [], + "texture": { + "key": "mancala", + "frame": "shadow" + }, + "y": 16 + }, + { + "type": "Image", + "id": "8a60289b-06e8-4dae-a743-3da28ce00a85", + "label": "board", + "components": [], + "texture": { + "key": "mancala", + "frame": "board" + }, + "y": 10 + }, + { + "type": "Image", + "id": "d6000b2f-67d1-49df-91c3-49711c59fc64", + "label": "hole_13", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole_1" + }, + "x": -200, + "y": 11, + "originY": 0.5047619047619047 + }, + { + "type": "Image", + "id": "152805b6-0b3d-4b6c-bee7-378c9c5d726f", + "label": "hole_12", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": -144, + "y": -20, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "36432eed-487c-415d-85b8-fb68cab93e36", + "label": "hole_11", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": -86, + "y": -20, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "2c5d315e-9b9e-416d-b814-724181ec2064", + "label": "hole_10", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": -28, + "y": -20, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "ee42fdb0-7cdd-45a7-879a-77f2db75ba4c", + "label": "hole_9", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": 30, + "y": -20, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "c11152e4-188c-4cbf-a6c3-fdc8945f4151", + "label": "hole_8", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": 88, + "y": -20, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "12f66ea0-f7b9-47b9-9c6e-76ea297e9495", + "label": "hole_7", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": 146, + "y": -20, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "6aac4be8-f26c-47fe-ba0c-52d28eefa127", + "label": "hole_6", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole_2" + }, + "x": 200, + "y": 11, + "originY": 0.5047619047619047 + }, + { + "type": "Image", + "id": "0202ccd0-af01-44bb-a24d-0a2bb9384aa8", + "label": "hole_5", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": 146, + "y": 40, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "efae5d11-1f07-4f2a-b36c-1dbec458382e", + "label": "hole_4", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": 88, + "y": 40, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "e713e514-0694-489b-a3a2-cfd099f34187", + "label": "hole_3", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": 30, + "y": 40, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "9f44682c-679f-495b-ae2b-674d1a589c4b", + "label": "hole_2", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": -28, + "y": 40, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "b8baf473-a75f-4135-a894-537390a919a9", + "label": "hole_1", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": -86, + "y": 40, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "type": "Image", + "id": "9389f3d3-994d-43d1-92c5-4024661b79f4", + "label": "hole_0", + "components": [], + "texture": { + "key": "mancala", + "frame": "hole" + }, + "x": -144, + "y": 40, + "originX": 0.5102040816326531, + "originY": 0.5102040816326531 + }, + { + "prefabId": "bb969ff5-2103-4d09-a09b-4cad958047d4", + "id": "f52d5978-c409-4410-b4ab-487c7096d3cb", + "unlock": [ + "x", + "y", + "bg", + "mancala" + ], + "label": "mancalaPlayer1", + "scope": "CLASS", + "bg": "bg2", + "mancala": "hole_6", + "components": [], + "x": -193, + "y": 136, + "nestedPrefabs": [], + "list": [] + }, + { + "prefabId": "bb969ff5-2103-4d09-a09b-4cad958047d4", + "id": "ad4829d1-d06f-453a-a05e-aa2401544ad2", + "unlock": [ + "x", + "y", + "bg", + "mancala" + ], + "label": "mancalaPlayer2", + "scope": "CLASS", + "bg": "bg1", + "mancala": "hole_13", + "components": [], + "x": -193, + "y": -104, + "nestedPrefabs": [], + "list": [] + }, + { + "type": "Sprite", + "id": "09ec3328-6878-41df-9d53-721df330da61", + "label": "popup", + "scope": "CLASS", + "components": [], + "texture": { + "key": "mancala", + "frame": "popup/popup0005" + }, + "x": 4, + "y": 16, + "visible": false + }, + { + "prefabId": "325c2f02-83fe-4592-9a90-32228cab6f13", + "id": "e864d2f5-b71b-4106-ace2-d974512d3eff", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "hint", + "scope": "CLASS", + "components": [], + "x": -144, + "y": -20, + "visible": false, + "nestedPrefabs": [], + "list": [] + }, + { + "type": "Image", + "id": "f0061852-6a3b-4abe-b30f-17ab057412d8", + "label": "x_button", + "components": [ + "Button" + ], + "Button.spriteName": "blue-button", + "Button.callback": "() => this.close()", + "texture": { + "key": "main", + "frame": "blue-button" + }, + "x": 252, + "y": -160 + }, + { + "type": "Image", + "id": "50799ffa-d7f7-4746-9483-ea71c5beeedd", + "label": "blue_x", + "components": [], + "texture": { + "key": "main", + "frame": "blue-x" + }, + "x": 252, + "y": -162 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + }, + "lists": [ + { + "id": "0cc252c2-494b-4324-baf9-ad1f2bf25c77", + "label": "holes", + "objectIds": [ + "9389f3d3-994d-43d1-92c5-4024661b79f4", + "b8baf473-a75f-4135-a894-537390a919a9", + "9f44682c-679f-495b-ae2b-674d1a589c4b", + "e713e514-0694-489b-a3a2-cfd099f34187", + "efae5d11-1f07-4f2a-b36c-1dbec458382e", + "0202ccd0-af01-44bb-a24d-0a2bb9384aa8", + "6aac4be8-f26c-47fe-ba0c-52d28eefa127", + "12f66ea0-f7b9-47b9-9c6e-76ea297e9495", + "c11152e4-188c-4cbf-a6c3-fdc8945f4151", + "ee42fdb0-7cdd-45a7-879a-77f2db75ba4c", + "2c5d315e-9b9e-416d-b814-724181ec2064", + "36432eed-487c-415d-85b8-fb68cab93e36", + "152805b6-0b3d-4b6c-bee7-378c9c5d726f", + "d6000b2f-67d1-49df-91c3-49711c59fc64" + ] + } + ] +} \ No newline at end of file diff --git a/src/scenes/games/mancala/MancalaHint.js b/src/scenes/games/mancala/MancalaHint.js new file mode 100644 index 00000000..faebee99 --- /dev/null +++ b/src/scenes/games/mancala/MancalaHint.js @@ -0,0 +1,69 @@ +/* START OF COMPILED CODE */ + +export default class MancalaHint extends Phaser.GameObjects.Container { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Sprite} */ + this.hint; + /** @type {Phaser.GameObjects.Text} */ + this.text; + + + // hint + const hint = scene.add.sprite(0, 0, "mancala", "hint/hint0011"); + hint.setOrigin(0.49056603773584906, 0.9294117647058824); + this.add(hint); + + // text + const text = scene.add.text(0, -39, "", {}); + text.setOrigin(0.5, 0.5); + text.visible = false; + text.text = "99"; + text.setStyle({ "align": "center", "color": "#000", "fixedWidth":64,"fontFamily": "Arial", "fontSize": "32px" }); + this.add(text); + + this.hint = hint; + this.text = text; + + /* START-USER-CTR-CODE */ + + hint.on('animationcomplete', () => this.text.visible = true) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + showHint(hole, enabled) { + if (!hole.stones.length) { + return + } + + this.x = hole.x + this.y = hole.y + + let color = (enabled) ? '#000' : '#fff' + this.text.text = hole.stones.length + this.text.setColor(color) + + this.visible = true + + let anim = (enabled) ? 'enabled' : 'disabled' + this.hint.anims.play(`hint/${anim}`) + + } + + hideHint() { + this.hint.anims.stop() + + this.visible = false + this.text.visible = false + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/mancala/MancalaHint.scene b/src/scenes/games/mancala/MancalaHint.scene new file mode 100644 index 00000000..b3d46a51 --- /dev/null +++ b/src/scenes/games/mancala/MancalaHint.scene @@ -0,0 +1,63 @@ +{ + "id": "325c2f02-83fe-4592-9a90-32228cab6f13", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "b003f2ee-88af-4169-8a8d-f5a41c5b3fbf", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Sprite", + "id": "ce3caf58-2a72-44b9-8734-38eb48372b37", + "label": "hint", + "scope": "CLASS", + "components": [], + "texture": { + "key": "mancala", + "frame": "hint/hint0011" + }, + "originX": 0.49056603773584906, + "originY": 0.9294117647058824 + }, + { + "type": "Text", + "id": "fb2c6be3-4511-45b7-940c-f8ca7be5bd09", + "label": "text", + "scope": "CLASS", + "components": [], + "y": -39, + "originX": 0.5, + "originY": 0.5, + "visible": false, + "text": "99", + "fixedWidth": 64, + "align": "center", + "fontFamily": "Arial", + "fontSize": "32px", + "color": "#000" + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/mancala/MancalaPlayer.js b/src/scenes/games/mancala/MancalaPlayer.js new file mode 100644 index 00000000..383c41d2 --- /dev/null +++ b/src/scenes/games/mancala/MancalaPlayer.js @@ -0,0 +1,152 @@ +/* START OF COMPILED CODE */ + +export default class MancalaPlayer extends Phaser.GameObjects.Container { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.spinner; + /** @type {Phaser.GameObjects.Text} */ + this.waiting; + /** @type {Phaser.GameObjects.Text} */ + this.username; + /** @type {Phaser.GameObjects.Text} */ + this.score; + /** @type {any} */ + this.bg; + /** @type {any} */ + this.mancala; + + + // spinner + const spinner = scene.add.image(0, 0, "mancala", "player/spinner"); + this.add(spinner); + + // waiting + const waiting = scene.add.text(52, 0, "", {}); + waiting.setOrigin(0, 0.5); + waiting.text = "Waiting for Player"; + waiting.setStyle({ "fontFamily": "Arial", "fontSize": "24px" }); + this.add(waiting); + + // username + const username = scene.add.text(-47, -30, "", {}); + username.visible = false; + username.text = "USERNAME"; + username.setStyle({ "color": "#D5E1FF", "fixedWidth":330,"fontFamily": "CCFaceFront", "fontSize": "32px", "fontStyle": "bold italic", "stroke": "#006699", "strokeThickness":9}); + this.add(username); + + // score + const score = scene.add.text(432, 0, "", {}); + score.setOrigin(1, 0.5); + score.visible = false; + score.text = "Score: 0"; + score.setStyle({ "align": "right", "color": "#000", "fontFamily": "Arial", "fontSize": "24px" }); + this.add(score); + + this.spinner = spinner; + this.waiting = waiting; + this.username = username; + this.score = score; + + /* START-USER-CTR-CODE */ + + this.turnId + + // Spinner + this.spinnerTween = scene.tweens.add({ + targets: spinner, + angle: { from: 0, to: 180 }, + duration: 900, + repeat: -1, + ease: 'Cubic' + }) + + this.inactiveColor = username.style.color + this.inactiveStroke = username.style.stroke + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + get holes() { + if (this.turnId === 1) { + return this.parentContainer.holes.slice(0, 7) + } + + if (this.turnId === 2) { + return this.parentContainer.holes.slice(7, 14) + } + + return [] + } + + get stones() { + return this.holes.map(hole => hole.stones) + } + + set(username, turn) { + this.turnId = turn + + this.spinner.visible = false + this.waiting.visible = false + + this.username.text = username.toUpperCase() + this.username.visible = true + this.score.visible = true + } + + reset() { + this.turnId = null + + this.spinner.visible = true + this.waiting.visible = true + + this.username.text = '' + this.username.visible = false + this.score.visible = false + + this.setActive(true) + this.setScoreText(0) + } + + setActive(reset = false) { + let active = (reset) + ? false + : this.turnId === this.parentContainer.currentTurn + + let color = (active) ? '#fff' : this.inactiveColor + let stroke = (active) ? '#000' : this.inactiveStroke + + let bgFrame = active ? '_turn' : '' + + this.username.setColor(color) + this.username.setStroke(stroke) + + this.bg.setFrame(`player/bg${bgFrame}`) + } + + updateScore() { + if (!this.turnId) { + return + } + + let score = 0 + for (let stones of this.stones) { + score += stones.length + } + + this.setScoreText(score) + } + + setScoreText(score) { + this.score.text = `Score: ${score}` + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/mancala/MancalaPlayer.scene b/src/scenes/games/mancala/MancalaPlayer.scene new file mode 100644 index 00000000..86b71cb7 --- /dev/null +++ b/src/scenes/games/mancala/MancalaPlayer.scene @@ -0,0 +1,114 @@ +{ + "id": "bb969ff5-2103-4d09-a09b-4cad958047d4", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "fbe440e4-3c46-44fd-a3df-22cbec77387c", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "145c1cb0-bf8b-4f3e-9476-356a8b9170ec", + "label": "spinner", + "scope": "CLASS", + "components": [], + "texture": { + "key": "mancala", + "frame": "player/spinner" + } + }, + { + "type": "Text", + "id": "f47ca1f1-d476-415e-9191-c59c11b8937c", + "label": "waiting", + "scope": "CLASS", + "components": [], + "x": 52, + "originY": 0.5, + "text": "Waiting for Player", + "fontFamily": "Arial", + "fontSize": "24px" + }, + { + "type": "Text", + "id": "922fa1fd-ccd9-4ddb-a9d4-3b871943b0f4", + "label": "username", + "scope": "CLASS", + "components": [], + "x": -47, + "y": -30, + "visible": false, + "text": "USERNAME", + "fixedWidth": 330, + "fontFamily": "CCFaceFront", + "fontSize": "32px", + "fontStyle": "bold italic", + "color": "#D5E1FF", + "stroke": "#006699", + "strokeThickness": 9 + }, + { + "type": "Text", + "id": "9dc99cde-1ca7-4fd4-b015-73c17698ffe2", + "label": "score", + "scope": "CLASS", + "components": [], + "x": 432, + "originX": 1, + "originY": 0.5, + "visible": false, + "text": "Score: 0", + "align": "right", + "fontFamily": "Arial", + "fontSize": "24px", + "color": "#000" + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + }, + "prefabProperties": [ + { + "name": "bg", + "label": "bg", + "tooltip": "bg", + "defValue": "", + "customDefinition": false, + "type": { + "id": "expression", + "expressionType": "any" + } + }, + { + "name": "mancala", + "label": "mancala", + "tooltip": "mancala", + "defValue": "", + "customDefinition": false, + "type": { + "id": "expression", + "expressionType": "any" + } + } + ] +} \ No newline at end of file diff --git a/src/scenes/games/ninjaprogress/NinjaProgress.js b/src/scenes/games/ninjaprogress/NinjaProgress.js new file mode 100644 index 00000000..a23452a0 --- /dev/null +++ b/src/scenes/games/ninjaprogress/NinjaProgress.js @@ -0,0 +1,174 @@ +export const preload = { + key: 'ninjaprogress-pack', + url: 'assets/media/games/ninjaprogress/ninjaprogress-pack.json', + loadString: ['loading', 'ninjaprogress'] +} + +/* START OF COMPILED CODE */ + +import BaseContainer from "../../base/BaseContainer"; +import Interactive from "../../components/Interactive"; +import ProgressView from "./views/ProgressView"; +import Separator from "./Separator"; +import Button from "../../components/Button"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class NinjaProgress extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Rectangle} */ + this.cardsViewRect; + /** @type {ProgressView} */ + this.progress; + /** @type {Separator} */ + this.separator; + + + // block + const block = scene.add.rectangle(0, 0, 1520, 960); + block.isFilled = true; + block.fillColor = 0; + block.fillAlpha = 0.2; + this.add(block); + + // bg + const bg = scene.add.image(0, 51, "ninjaprogress", "bg/1"); + this.add(bg); + + // cardsViewRect + const cardsViewRect = scene.add.rectangle(-584, -210, 1168, 542); + cardsViewRect.setOrigin(0, 0); + cardsViewRect.visible = false; + cardsViewRect.isFilled = true; + this.add(cardsViewRect); + + // progress + const progress = new ProgressView(scene, 0, 0); + progress.visible = false; + this.add(progress); + + // frame2 + const frame2 = scene.add.image(0, -2, "ninjaprogress", "frame/2"); + frame2.setOrigin(0.500374531835206, 0.5); + this.add(frame2); + + // separator + const separator = new Separator(scene, -18, -214); + separator.visible = true; + this.add(separator); + + // frame1 + const frame1 = scene.add.image(2, 23, "ninjaprogress", "frame/1"); + this.add(frame1); + + // xButton + const xButton = scene.add.image(541, -305, "ninjaprogress", "close"); + this.add(xButton); + + // block (components) + new Interactive(block); + + // xButton (components) + const xButtonButton = new Button(xButton); + xButtonButton.spriteName = "close"; + xButtonButton.callback = () => this.close(); + + this.cardsViewRect = cardsViewRect; + this.progress = progress; + this.separator = separator; + + /* START-USER-CTR-CODE */ + + this.ninjaRank + this.ninjaProgress + this.ninjaCards + + this.createCardsViewMask() + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + addListeners() { + this.network.events.on('get_ninja', this.handleGetNinja, this) + } + + removeListeners() { + this.network.events.off('get_ninja', this.handleGetNinja, this) + } + + show() { + this.addListeners() + + this.network.send('get_ninja') + + super.show() + } + + close() { + this.removeListeners() + this.reset() + + super.close() + } + + reset() { + this.separator.close() + this.separator.cards.setCards([]) + + this.progress.close() + this.progress.setCardsNum(0) + + this.separator.cards.page = 1 + } + + handleGetNinja(args) { + this.ninjaRank = args.rank + this.ninjaProgress = args.progress + this.ninjaCards = args.cards + + this.progress.setCardsNum(args.cards.length) + this.showProgress() + + this.setCards() + + this.separator.setEnable(true) + } + + showProgress() { + if (!this.progress.down) { + this.progress.show(this.ninjaRank, this.ninjaProgress) + } + } + + hideProgress() { + this.progress.close() + } + + setCards() { + this.separator.cards.setCards(this.ninjaCards) + } + + createCardsViewMask() { + let rect = this.cardsViewRect + let graphics = this.scene.make.graphics() + + // World position + let matrix = rect.getWorldTransformMatrix() + + graphics.fillRect(matrix.getX(0, 0), matrix.getY(0, 0), rect.width, rect.height) + + let mask = graphics.createGeometryMask() + + this.separator.cards.setMask(mask) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/ninjaprogress/NinjaProgress.scene b/src/scenes/games/ninjaprogress/NinjaProgress.scene new file mode 100644 index 00000000..afd20f6f --- /dev/null +++ b/src/scenes/games/ninjaprogress/NinjaProgress.scene @@ -0,0 +1,148 @@ +{ + "id": "9c33734a-197d-4f67-a819-ddfed17122cb", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "24a2f1b7-2511-43fa-a48d-fdd3ce8acf40", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Rectangle", + "id": "fa964fba-f465-4781-ac56-f5ed6a276e3a", + "label": "block", + "components": [ + "Interactive" + ], + "isFilled": true, + "fillColor": "#000000", + "fillAlpha": 0.2, + "width": 1520, + "height": 960 + }, + { + "type": "Image", + "id": "ad799b05-40ff-4e8c-a56e-dc291a18cd30", + "label": "bg", + "components": [], + "texture": { + "key": "ninjaprogress", + "frame": "bg/1" + }, + "y": 51 + }, + { + "type": "Rectangle", + "id": "f4dfcd8f-5bc5-4f39-9f7a-963abaae952a", + "label": "cardsViewRect", + "scope": "CLASS", + "components": [], + "x": -584, + "y": -210, + "originX": 0, + "originY": 0, + "visible": false, + "isFilled": true, + "width": 1168, + "height": 542 + }, + { + "prefabId": "69fb792c-79d1-47f9-a9aa-152d9e190c9d", + "id": "eb43e92d-7d06-471a-a937-c8b14e00548f", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "progress", + "scope": "CLASS", + "components": [], + "x": 0, + "y": 0, + "visible": false, + "nestedPrefabs": [], + "list": [] + }, + { + "type": "Image", + "id": "e5afcad6-4320-4997-ae48-b1aa760a21a5", + "label": "frame2", + "components": [], + "texture": { + "key": "ninjaprogress", + "frame": "frame/2" + }, + "y": -2, + "originX": 0.500374531835206 + }, + { + "prefabId": "4f090387-6719-455f-887b-a8bf5946be9f", + "id": "bd670da4-42f1-471a-9318-85ff9dbdae60", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "separator", + "scope": "CLASS", + "components": [], + "x": -18, + "y": -214, + "visible": true, + "nestedPrefabs": [], + "list": [] + }, + { + "type": "Image", + "id": "b59f681c-846b-436f-a297-0239e4c83f62", + "label": "frame1", + "components": [], + "texture": { + "key": "ninjaprogress", + "frame": "frame/1" + }, + "x": 2, + "y": 23 + }, + { + "type": "Image", + "id": "0972ddd2-bf0a-4b96-9f03-b2243200659b", + "label": "xButton", + "components": [ + "Button" + ], + "Button.spriteName": "close", + "Button.callback": "() => this.close()", + "texture": { + "key": "ninjaprogress", + "frame": "close" + }, + "x": 541, + "y": -305 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/ninjaprogress/Separator.js b/src/scenes/games/ninjaprogress/Separator.js new file mode 100644 index 00000000..a719c565 --- /dev/null +++ b/src/scenes/games/ninjaprogress/Separator.js @@ -0,0 +1,123 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../base/BaseContainer"; +import CardsView from "./views/CardsView"; +import SimpleButton from "../../components/SimpleButton"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class Separator extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {CardsView} */ + this.cards; + /** @type {Phaser.GameObjects.Image} */ + this.arrow; + + + // cards + const cards = new CardsView(scene, 18, -322); + this.add(cards); + + // sep + const sep = scene.add.image(18, -3, "ninjaprogress", "separator/separator"); + this.add(sep); + + // button + const button = scene.add.image(0, -3, "ninjaprogress", "separator/button"); + this.add(button); + + // arrow + const arrow = scene.add.image(0, 6, "ninjaprogress", "separator/arrow"); + arrow.setOrigin(0.5, 0.5454545454545454); + this.add(arrow); + + // button (components) + const buttonSimpleButton = new SimpleButton(button); + buttonSimpleButton.callback = () => this.onClick(); + + this.cards = cards; + this.arrow = arrow; + + /* START-USER-CTR-CODE */ + + this.enable = false + + this.tween + this.down = false + + this.startX = this.x + this.startY = this.y + + this.yDiff = 574 + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + setEnable(enable) { + this.enable = enable + } + + onClick() { + if (this.tween || !this.enable) { + return + } + + this.cards.disableButtons() + + let duration = this.down ? 325 : 500 + let y = this.down ? this.y - this.yDiff : this.y + this.yDiff + let ease = this.down ? 'Quad.easeOut' : 'Quad.easeIn' + + this.down = !this.down + + if (this.down) { + this.parentContainer.hideProgress() + } + + this.tween = this.scene.tweens.add({ + targets: this, + duration: duration, + y: y, + ease: ease, + + onComplete: this.onTweenComplete, + onCompleteScope: this + }) + } + + onTweenComplete() { + this.arrow.flipY = this.down + this.tween = null + + if (!this.down) { + this.parentContainer.showProgress() + } + + this.cards.updateButtons() + } + + close() { + if (this.tween) { + this.tween.remove() + this.tween = null + } + + this.down = false + this.arrow.flipY = false + + this.x = this.startX + this.y = this.startY + + this.setEnable(false) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/ninjaprogress/Separator.scene b/src/scenes/games/ninjaprogress/Separator.scene new file mode 100644 index 00000000..f707964d --- /dev/null +++ b/src/scenes/games/ninjaprogress/Separator.scene @@ -0,0 +1,87 @@ +{ + "id": "4f090387-6719-455f-887b-a8bf5946be9f", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "c6d135e1-2a4a-4b77-a666-bcdae81665f9", + "label": "container_1", + "components": [], + "list": [ + { + "prefabId": "eebb7e39-e8a3-4ccc-b5b3-6241aca388da", + "id": "ecd14e47-fbbf-4cfa-8a9b-988be08f4c61", + "unlock": [ + "x", + "y" + ], + "label": "cards", + "scope": "CLASS", + "components": [], + "x": 18, + "y": -322, + "nestedPrefabs": [], + "list": [] + }, + { + "type": "Image", + "id": "2d5f8b75-0c0b-4a5e-90a4-6abe9db5cc71", + "label": "sep", + "components": [], + "texture": { + "key": "ninjaprogress", + "frame": "separator/separator" + }, + "x": 18, + "y": -3 + }, + { + "type": "Image", + "id": "9727adbe-155c-48f6-b03b-79b85dcaf0a4", + "label": "button", + "components": [ + "SimpleButton" + ], + "SimpleButton.callback": "() => this.onClick()", + "texture": { + "key": "ninjaprogress", + "frame": "separator/button" + }, + "y": -3 + }, + { + "type": "Image", + "id": "91643b28-6d46-4265-9b91-21400c869581", + "label": "arrow", + "scope": "CLASS", + "components": [], + "texture": { + "key": "ninjaprogress", + "frame": "separator/arrow" + }, + "y": 6, + "originY": 0.5454545454545454 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/ninjaprogress/views/CardsView.js b/src/scenes/games/ninjaprogress/views/CardsView.js new file mode 100644 index 00000000..7e77a6a7 --- /dev/null +++ b/src/scenes/games/ninjaprogress/views/CardsView.js @@ -0,0 +1,203 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Button from "../../../components/Button"; +/* START-USER-IMPORTS */ + +import CardLoader from '@engine/loaders/CardLoader' +import CardsViewCard from './CardsViewCard' + +/* END-USER-IMPORTS */ + +export default class CardsView extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.bg; + /** @type {Phaser.GameObjects.Image} */ + this.down; + /** @type {Phaser.GameObjects.Image} */ + this.up; + /** @type {Array} */ + this.cards; + + + // bg + const bg = scene.add.image(0, 0, "ninjaprogress", "bg/2"); + this.add(bg); + + // scroll + const scroll = scene.add.image(470, 21, "ninjaprogress", "scroll/scroll"); + this.add(scroll); + + // down + const down = scene.add.image(470, 238, "ninjaprogress", "scroll/down"); + this.add(down); + + // up + const up = scene.add.image(470, -193, "ninjaprogress", "scroll/up"); + this.add(up); + + // lists + const cards = []; + + // down (components) + const downButton = new Button(down); + downButton.spriteName = "scroll/down"; + downButton.callback = () => this.nextPage(); + + // up (components) + const upButton = new Button(up); + upButton.spriteName = "scroll/up"; + upButton.callback = () => this.prevPage(); + + this.bg = bg; + this.down = down; + this.up = up; + this.cards = cards; + + /* START-USER-CTR-CODE */ + + this.startX = -478 + this.startY = -146 + + this.width = 5 + this.height = 3 + + this.cellWidth = 188 + this.cellHeight = 166 + + this.page = 1 + this.pageSize = this.width * this.height + + this.ninjaCards = [] + + this.cardLoader = new CardLoader(scene) + this.createCards() + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + get maxPage() { + return Math.ceil(this.ninjaCards.length / this.pageSize) + } + + createCards() { + for (let i = 0; i < this.pageSize; i++) { + let card = new CardsViewCard(this.scene, this.startX, this.startY) + + this.add(card) + this.cards.push(card) + } + + this.createGrid() + } + + createGrid() { + Phaser.Actions.GridAlign(this.cards, { + width: this.width, + height: this.height, + + cellWidth: this.cellWidth, + cellHeight: this.cellHeight, + + position: Phaser.Display.Align.CENTER, + + x: this.startX, + y: this.startY + }) + } + + setCards(ninjaCards) { + this.ninjaCards = ninjaCards + + this.showPage() + } + + showPage() { + let page = this.ninjaCards.slice((this.page - 1) * this.pageSize, this.page * this.pageSize) + + for (let i = 0; i < this.cards.length; i++) { + let prefab = this.cards[i] + + prefab.removeIcon() + + if (!page[i]) { + prefab.id = null + prefab.close() + + continue + } + + let card = page[i] + let key = this.cardLoader.getKey(card.id) + + prefab.id = card.id + + this.cardLoader.loadCard(card, () => this.onCardLoad(key, card, prefab)) + + prefab.show(card) + } + + this.updateButtons() + } + + prevPage() { + let page = this.page - 1 + if (page < 1) { + return + } + + this.page = page + this.showPage() + } + + nextPage() { + let page = this.page + 1 + if (page > this.maxPage) { + return + } + + this.page = page + this.showPage() + } + + onCardLoad(key, card, prefab) { + if (prefab.id == card.id) { + prefab.setIcon(key) + } + } + + updateButtons() { + if (!this.parentContainer.down) { + this.disableButtons() + return + } + + let upEnabled = this.page > 1 + let downEnabled = this.page < this.maxPage + + this.setButtons(upEnabled, downEnabled) + } + + disableButtons() { + this.setButtons(false, false) + } + + setButtons(upEnabled, downEnabled) { + this.up.input.enabled = upEnabled + this.down.input.enabled = downEnabled + + this.up.alpha = upEnabled ? 1 : 0.5 + this.down.alpha = downEnabled ? 1 : 0.5 + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/ninjaprogress/views/CardsView.scene b/src/scenes/games/ninjaprogress/views/CardsView.scene new file mode 100644 index 00000000..df230c44 --- /dev/null +++ b/src/scenes/games/ninjaprogress/views/CardsView.scene @@ -0,0 +1,98 @@ +{ + "id": "eebb7e39-e8a3-4ccc-b5b3-6241aca388da", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "f2796d25-cfcd-4029-aa65-b5959b3df19b", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "bcdbd623-a5b9-4c7b-ba61-e5929f6e594d", + "label": "bg", + "scope": "CLASS", + "components": [], + "texture": { + "key": "ninjaprogress", + "frame": "bg/2" + } + }, + { + "type": "Image", + "id": "6c6a4641-6550-4814-855c-b9ccb30ce606", + "label": "scroll", + "components": [], + "texture": { + "key": "ninjaprogress", + "frame": "scroll/scroll" + }, + "x": 470, + "y": 21 + }, + { + "type": "Image", + "id": "12eaafd0-60f0-4c74-8499-f5f82274178b", + "label": "down", + "scope": "CLASS", + "components": [ + "Button" + ], + "Button.spriteName": "scroll/down", + "Button.callback": "() => this.nextPage()", + "texture": { + "key": "ninjaprogress", + "frame": "scroll/down" + }, + "x": 470, + "y": 238 + }, + { + "type": "Image", + "id": "5d509cd6-a79e-419b-94fb-6a8fed349bdf", + "label": "up", + "scope": "CLASS", + "components": [ + "Button" + ], + "Button.spriteName": "scroll/up", + "Button.callback": "() => this.prevPage()", + "texture": { + "key": "ninjaprogress", + "frame": "scroll/up" + }, + "x": 470, + "y": -193 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + }, + "lists": [ + { + "id": "5f9fb9e1-bb62-4599-b6e1-05cdd4f4555c", + "label": "cards" + } + ] +} \ No newline at end of file diff --git a/src/scenes/games/ninjaprogress/views/CardsViewCard.js b/src/scenes/games/ninjaprogress/views/CardsViewCard.js new file mode 100644 index 00000000..49f33087 --- /dev/null +++ b/src/scenes/games/ninjaprogress/views/CardsViewCard.js @@ -0,0 +1,123 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +/* START-USER-IMPORTS */ + +import layout from '@scenes/games/card/layout' + +/* END-USER-IMPORTS */ + +export default class CardsViewCard extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Sprite} */ + this.glow; + /** @type {Phaser.GameObjects.Image} */ + this.back; + /** @type {Phaser.GameObjects.Image} */ + this.icon; + /** @type {Phaser.GameObjects.Image} */ + this.color; + /** @type {Phaser.GameObjects.Image} */ + this.element; + /** @type {Phaser.GameObjects.Text} */ + this.value; + + + // glow + const glow = scene.add.sprite(1, 0, "ninjaprogress", "card/glow0001"); + glow.setOrigin(0.503030303030303, 0.5); + glow.visible = false; + this.add(glow); + + // back + const back = scene.add.image(0, 0, "ninjaprogress", "card/back"); + back.scaleX = 0.95; + back.scaleY = 0.95; + back.setOrigin(0.5038167938931297, 0.5); + this.add(back); + + // shadow + const shadow = scene.add.image(3, 3, "ninjaprogress", "card/shadow"); + shadow.setOrigin(0.5038167938931297, 0.5); + this.add(shadow); + + // icon + const icon = scene.add.image(-66, -74, "_MISSING"); + icon.scaleX = 0.7; + icon.scaleY = 0.7; + icon.setOrigin(0, 0); + icon.visible = false; + this.add(icon); + + // color + const color = scene.add.image(0, 0, "ninjaprogress", "card/color"); + color.setOrigin(0.5038167938931297, 0.5); + color.tintTopLeft = 1132705; + color.tintTopRight = 1132705; + color.tintBottomLeft = 1132705; + color.tintBottomRight = 1132705; + this.add(color); + + // element + const element = scene.add.image(-47, -54, "ninjaprogress", "card/f"); + element.setOrigin(0.5, 0.5185185185185185); + this.add(element); + + // value + const value = scene.add.text(-66, -40, "", {}); + value.text = "88"; + value.setStyle({ "align": "center", "color": "#000", "fixedWidth":36,"fontFamily": "Burbank Big Regular", "fontSize": "26px", "fontStyle": "bold" }); + this.add(value); + + this.glow = glow; + this.back = back; + this.icon = icon; + this.color = color; + this.element = element; + this.value = value; + + /* START-USER-CTR-CODE */ + + this.id + + this.glow.anims.play('ninjaprogress/glow') + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show(card) { + let tint = layout.colors[card.color].color + + this.value.text = card.value + this.color.tint = tint + + this.element.setFrame(`card/${card.element}`) + + if (card.powerId > 0) { + this.glow.tint = tint + } + + this.glow.visible = card.powerId > 0 + + super.show() + } + + setIcon(key) { + this.icon.setTexture(key) + this.icon.visible = true + } + + removeIcon() { + this.icon.visible = false + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/ninjaprogress/views/CardsViewCard.scene b/src/scenes/games/ninjaprogress/views/CardsViewCard.scene new file mode 100644 index 00000000..4dce8b09 --- /dev/null +++ b/src/scenes/games/ninjaprogress/views/CardsViewCard.scene @@ -0,0 +1,129 @@ +{ + "id": "9f9b5b6f-5629-4026-a28d-0bfd8b2ac1e4", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "f9520288-babf-4d1e-9df3-6de2014f5bf8", + "label": "container_1", + "x": 760, + "y": 480, + "list": [ + { + "type": "Sprite", + "id": "695f8494-eea7-464d-97fa-98dec9180ffe", + "label": "glow", + "scope": "CLASS", + "texture": { + "key": "ninjaprogress", + "frame": "card/glow0001" + }, + "x": 1, + "originX": 0.503030303030303, + "visible": false + }, + { + "type": "Image", + "id": "0b8f3a7d-39ce-44f5-96ed-57f43fb888e7", + "label": "back", + "scope": "CLASS", + "texture": { + "key": "ninjaprogress", + "frame": "card/back" + }, + "scaleX": 0.95, + "scaleY": 0.95, + "originX": 0.5038167938931297 + }, + { + "type": "Image", + "id": "e1ca6d79-b0a8-49ef-a40a-2d60d05bdf90", + "label": "shadow", + "texture": { + "key": "ninjaprogress", + "frame": "card/shadow" + }, + "x": 3, + "y": 3, + "originX": 0.5038167938931297 + }, + { + "type": "Image", + "id": "3aa33900-d940-437c-8155-e66c64f3b560", + "label": "icon", + "scope": "CLASS", + "texture": {}, + "x": -66, + "y": -74, + "scaleX": 0.7, + "scaleY": 0.7, + "originX": 0, + "originY": 0, + "visible": false + }, + { + "type": "Image", + "id": "30e60b4b-9fe0-40bf-b4a7-b2d698495564", + "label": "color", + "scope": "CLASS", + "texture": { + "key": "ninjaprogress", + "frame": "card/color" + }, + "originX": 0.5038167938931297, + "tintTopLeft": "#1148a1", + "tintTopRight": "#1148a1", + "tintBottomLeft": "#1148a1", + "tintBottomRight": "#1148a1" + }, + { + "type": "Image", + "id": "229219ee-a4bd-4dc7-a844-2977401125c8", + "label": "element", + "scope": "CLASS", + "texture": { + "key": "ninjaprogress", + "frame": "card/f" + }, + "x": -47, + "y": -54, + "originY": 0.5185185185185185 + }, + { + "type": "Text", + "id": "eed3170b-7b07-4cdc-adcd-133f2a8e8bb7", + "label": "value", + "scope": "CLASS", + "x": -66, + "y": -40, + "text": "88", + "fixedWidth": 36, + "align": "center", + "fontFamily": "Burbank Big Regular", + "fontSize": "26px", + "fontStyle": "bold", + "color": "#000" + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/ninjaprogress/views/ProgressView.js b/src/scenes/games/ninjaprogress/views/ProgressView.js new file mode 100644 index 00000000..1d0ff4c5 --- /dev/null +++ b/src/scenes/games/ninjaprogress/views/ProgressView.js @@ -0,0 +1,214 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Button from "../../../components/Button"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class ProgressView extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Text} */ + this.cardsNum; + /** @type {Phaser.GameObjects.Image} */ + this.nextBelt; + /** @type {Phaser.GameObjects.Image} */ + this.currentBelt; + /** @type {Phaser.GameObjects.Text} */ + this.nextText; + /** @type {Phaser.GameObjects.Text} */ + this.currentText; + /** @type {Phaser.GameObjects.Image} */ + this.bar; + /** @type {Phaser.GameObjects.Text} */ + this.progressText; + /** @type {Phaser.GameObjects.Container} */ + this.sensei; + /** @type {Phaser.GameObjects.Container} */ + this.hideout; + + + // cardsButton + const cardsButton = scene.add.image(0, 254, "ninjaprogress", "button"); + cardsButton.setOrigin(0.5, 0.5060240963855421); + this.add(cardsButton); + + // cards + const cards = scene.add.image(68, 245, "ninjaprogress", "cards"); + this.add(cards); + + // cardsNum + const cardsNum = scene.add.text(64, 248, "", {}); + cardsNum.setOrigin(0.5, 0.5); + cardsNum.text = "0"; + cardsNum.setStyle({ "align": "center", "fixedWidth":100,"fontFamily": "Burbank Big Regular", "fontSize": "48px", "fontStyle": "bold", "stroke": "#000", "strokeThickness":8,"shadow.blur":2,"shadow.stroke":true,"shadow.fill":true}); + this.add(cardsNum); + + // cardsText + const cardsText = scene.add.text(-81, 254, "", {}); + cardsText.setOrigin(0.5, 0.5); + cardsText.text = "VIEW YOUR\nCARDS"; + cardsText.setStyle({ "align": "center", "color": "#736357", "fixedWidth":140,"fontFamily": "CCFaceFront", "fontSize": "20px", "fontStyle": "bold italic" }); + this.add(cardsText); + + // progressBg + const progressBg = scene.add.image(0, 0, "ninjaprogress", "progress"); + this.add(progressBg); + + // nextBelt + const nextBelt = scene.add.image(436, 27, "ninjaprogress", "next/1"); + nextBelt.setOrigin(0.5042735042735043, 0.5052631578947369); + this.add(nextBelt); + + // currentBelt + const currentBelt = scene.add.image(-399, 66, "ninjaprogress", "belt/1"); + currentBelt.setOrigin(0.502262443438914, 0.5); + this.add(currentBelt); + + // nextText + const nextText = scene.add.text(244, -42, "", {}); + nextText.setOrigin(0.5, 1); + nextText.text = "Next Belt"; + nextText.setStyle({ "align": "right", "color": "#333", "fixedWidth":500,"fontFamily": "Burbank Small", "fontSize": "26px", "fontStyle": "bold" }); + this.add(nextText); + + // currentText + const currentText = scene.add.text(-256, -42, "", {}); + currentText.setOrigin(0.5, 1); + currentText.text = "Current Belt"; + currentText.setStyle({ "color": "#333", "fixedWidth":500,"fontFamily": "Burbank Small", "fontSize": "32px", "fontStyle": "bold" }); + this.add(currentText); + + // bar + const bar = scene.add.image(46, 7, "ninjaprogress", "progress/1"); + bar.setOrigin(0.5008347245409015, 0.5); + this.add(bar); + + // progressText + const progressText = scene.add.text(-192, 8, "", {}); + progressText.setOrigin(1, 0.5); + progressText.visible = false; + progressText.text = "0%"; + progressText.setStyle({ "align": "right", "color": "#333", "fixedWidth":80,"fontFamily": "Burbank Small", "fontSize": "28px", "fontStyle": "bold" }); + this.add(progressText); + + // sensei + const sensei = scene.add.container(12, -14); + sensei.visible = false; + this.add(sensei); + + // senseiImage + const senseiImage = scene.add.image(116, 0, "ninjaprogress", "sensei"); + senseiImage.setOrigin(0.5, 0.5023255813953489); + sensei.add(senseiImage); + + // senseiText + const senseiText = scene.add.text(0, 20, "", {}); + senseiText.setOrigin(0.5, 0.5); + senseiText.text = "Well done, grasshopper. You have earned your\nblack belt. Take the next step of your training\njourney and challenge Sensei to become a ninja."; + senseiText.setStyle({ "align": "center", "color": "#333", "fixedWidth":600,"fontFamily": "Burbank Small", "fontSize": "26px" }); + senseiText.setLineSpacing(8); + sensei.add(senseiText); + + // hideout + const hideout = scene.add.container(-26, -6); + hideout.visible = false; + this.add(hideout); + + // hideoutImage + const hideoutImage = scene.add.image(0, 0, "ninjaprogress", "hideout"); + hideout.add(hideoutImage); + + // hideoutText + const hideoutText = scene.add.text(132, 10, "", {}); + hideoutText.setOrigin(0.5, 0.5); + hideoutText.text = "Congratulations, ninja! You are a wise Card-Jitsu\nmaster and you now have access to the Ninja Hideout."; + hideoutText.setStyle({ "align": "center", "color": "#333", "fixedWidth":800,"fontFamily": "Burbank Small", "fontSize": "26px" }); + hideoutText.setLineSpacing(8); + hideout.add(hideoutText); + + // cardsButton (components) + const cardsButtonButton = new Button(cardsButton); + cardsButtonButton.spriteName = "button"; + cardsButtonButton.callback = () => this.onButtonClick(); + + this.cardsNum = cardsNum; + this.nextBelt = nextBelt; + this.currentBelt = currentBelt; + this.nextText = nextText; + this.currentText = currentText; + this.bar = bar; + this.progressText = progressText; + this.sensei = sensei; + this.hideout = hideout; + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show(rank, progress) { + this.setRank(rank) + this.setProgress(progress) + + super.show() + } + + setRank(rank) { + this.setVisibleElements(rank) + this.setCurrentBelt(rank) + this.setNextBelt(rank) + } + + setCurrentBelt(rank) { + this.currentBelt.alpha = rank > 0 ? 1 : 0.25 + + rank = Phaser.Math.Clamp(rank, 1, 9) + + this.currentBelt.setFrame(`belt/${rank}`) + } + + setNextBelt(rank) { + rank = Phaser.Math.Clamp(rank + 1, 1, 9) + + this.nextBelt.setFrame(`next/${rank}`) + } + + setProgress(progress) { + progress = Phaser.Math.Clamp(progress, 1, 100) + + this.bar.setFrame(`progress/${progress}`) + } + + setCardsNum(num) { + this.cardsNum.text = num + } + + setVisibleElements(rank) { + let nextVisible = rank < 9 + let senseiVisible = rank == 9 + let ninjaVisible = rank == 10 + + this.bar.visible = nextVisible + this.nextText.visible = nextVisible + this.nextBelt.visible = nextVisible + + this.sensei.visible = senseiVisible + this.hideout.visible = ninjaVisible + + this.currentText.visible = !ninjaVisible + this.currentBelt.visible = !ninjaVisible + } + + onButtonClick() { + this.parentContainer.separator.onClick() + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/ninjaprogress/views/ProgressView.scene b/src/scenes/games/ninjaprogress/views/ProgressView.scene new file mode 100644 index 00000000..c98c88a5 --- /dev/null +++ b/src/scenes/games/ninjaprogress/views/ProgressView.scene @@ -0,0 +1,271 @@ +{ + "id": "69fb792c-79d1-47f9-a9aa-152d9e190c9d", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "e79a212e-9595-46b8-930e-6c5f2e0e62c0", + "label": "container_1", + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "ceff7150-8ae8-4b1a-ba67-c7018433f491", + "label": "cardsButton", + "components": [ + "Button" + ], + "Button.spriteName": "button", + "Button.callback": "() => this.onButtonClick()", + "texture": { + "key": "ninjaprogress", + "frame": "button" + }, + "y": 254, + "originY": 0.5060240963855421 + }, + { + "type": "Image", + "id": "7b9b4fe8-ae89-45a4-abb5-b027bf877c8b", + "label": "cards", + "texture": { + "key": "ninjaprogress", + "frame": "cards" + }, + "x": 68, + "y": 245 + }, + { + "type": "Text", + "id": "179eb58d-0975-484c-b228-cc6276263375", + "label": "cardsNum", + "scope": "CLASS", + "x": 64, + "y": 248, + "originX": 0.5, + "originY": 0.5, + "text": "0", + "fixedWidth": 100, + "align": "center", + "fontFamily": "Burbank Big Regular", + "fontSize": "48px", + "fontStyle": "bold", + "stroke": "#000", + "strokeThickness": 8, + "shadow.stroke": true, + "shadow.fill": true, + "shadow.blur": 2 + }, + { + "type": "Text", + "id": "928a8a3c-c2c0-4c2b-8b73-0b1bcd0cfe0e", + "label": "cardsText", + "x": -81, + "y": 254, + "originX": 0.5, + "originY": 0.5, + "text": "VIEW YOUR\nCARDS", + "fixedWidth": 140, + "align": "center", + "fontFamily": "CCFaceFront", + "fontSize": "20px", + "fontStyle": "bold italic", + "color": "#736357" + }, + { + "type": "Image", + "id": "076ce9cb-e64c-4dcc-be8a-e351954f6d6a", + "label": "progressBg", + "texture": { + "key": "ninjaprogress", + "frame": "progress" + } + }, + { + "type": "Image", + "id": "d269ba3b-46d9-4af2-8920-62965ed19bf6", + "label": "nextBelt", + "scope": "CLASS", + "texture": { + "key": "ninjaprogress", + "frame": "next/1" + }, + "x": 436, + "y": 27, + "originX": 0.5042735042735043, + "originY": 0.5052631578947369 + }, + { + "type": "Image", + "id": "a85434a7-54ef-4c09-99d2-857f010bf8fc", + "label": "currentBelt", + "scope": "CLASS", + "texture": { + "key": "ninjaprogress", + "frame": "belt/1" + }, + "x": -399, + "y": 66, + "originX": 0.502262443438914 + }, + { + "type": "Text", + "id": "21d65873-cc17-4483-be74-d80f8a55abad", + "label": "nextText", + "scope": "CLASS", + "x": 244, + "y": -42, + "originX": 0.5, + "originY": 1, + "text": "Next Belt", + "fixedWidth": 500, + "align": "right", + "fontFamily": "Burbank Small", + "fontSize": "26px", + "fontStyle": "bold", + "color": "#333" + }, + { + "type": "Text", + "id": "d70717d1-7680-46ce-9783-b2a5963bcbdd", + "label": "currentText", + "scope": "CLASS", + "x": -256, + "y": -42, + "originX": 0.5, + "originY": 1, + "text": "Current Belt", + "fixedWidth": 500, + "fontFamily": "Burbank Small", + "fontSize": "32px", + "fontStyle": "bold", + "color": "#333" + }, + { + "type": "Image", + "id": "429725a8-bb97-4868-9739-0025aa45eead", + "label": "bar", + "scope": "CLASS", + "texture": { + "key": "ninjaprogress", + "frame": "progress/1" + }, + "x": 46, + "y": 7, + "originX": 0.5008347245409015 + }, + { + "type": "Text", + "id": "c60c1252-f381-4260-b587-06924e6e85b7", + "label": "progressText", + "scope": "CLASS", + "x": -192, + "y": 8, + "originX": 1, + "originY": 0.5, + "visible": false, + "text": "0%", + "fixedWidth": 80, + "align": "right", + "fontFamily": "Burbank Small", + "fontSize": "28px", + "fontStyle": "bold", + "color": "#333" + }, + { + "type": "Container", + "id": "a91499ce-58e4-4159-866a-6074a3bd6bd8", + "label": "sensei", + "scope": "CLASS", + "x": 12, + "y": -14, + "visible": false, + "list": [ + { + "type": "Image", + "id": "a8b59277-06bc-450f-a0c6-408956531166", + "label": "senseiImage", + "texture": { + "key": "ninjaprogress", + "frame": "sensei" + }, + "x": 116, + "originY": 0.5023255813953489 + }, + { + "type": "Text", + "id": "57ed6934-c5fb-4f95-8746-20adfbcdfd66", + "label": "senseiText", + "y": 20, + "originX": 0.5, + "originY": 0.5, + "text": "Well done, grasshopper. You have earned your\nblack belt. Take the next step of your training\njourney and challenge Sensei to become a ninja.", + "fixedWidth": 600, + "lineSpacing": 8, + "align": "center", + "fontFamily": "Burbank Small", + "fontSize": "26px", + "color": "#333" + } + ] + }, + { + "type": "Container", + "id": "73fc1120-7bec-42f7-a3ff-c1ef70dbdf4b", + "label": "hideout", + "scope": "CLASS", + "x": -26, + "y": -6, + "visible": false, + "list": [ + { + "type": "Image", + "id": "29c6e148-233f-4cbc-959a-f4b295425d1f", + "label": "hideoutImage", + "texture": { + "key": "ninjaprogress", + "frame": "hideout" + } + }, + { + "type": "Text", + "id": "7b63e695-ade2-4079-9399-8ac8fa14d8b7", + "label": "hideoutText", + "x": 132, + "y": 10, + "originX": 0.5, + "originY": 0.5, + "text": "Congratulations, ninja! You are a wise Card-Jitsu\nmaster and you now have access to the Ninja Hideout.", + "fixedWidth": 800, + "lineSpacing": 8, + "align": "center", + "fontFamily": "Burbank Small", + "fontSize": "26px", + "color": "#333" + } + ] + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/Sensei.js b/src/scenes/games/sensei/Sensei.js new file mode 100644 index 00000000..2f920959 --- /dev/null +++ b/src/scenes/games/sensei/Sensei.js @@ -0,0 +1,154 @@ +/* START OF COMPILED CODE */ + +import GameScene from "../GameScene"; +import SenseiWidget from "./widget/SenseiWidget"; +import SenseiMenu from "./menu/SenseiMenu"; +import Button from "../../components/Button"; +import SenseiMatch from "./match/SenseiMatch"; +/* START-USER-IMPORTS */ + +import SenseiInstructions from './instructions/SenseiInstructions' +import { intro } from './config/SenseiSequences' + +/* END-USER-IMPORTS */ + +export default class Sensei extends GameScene { + + constructor() { + super("Sensei"); + + /** @type {SenseiWidget} */ + this.widget; + /** @type {SenseiMenu} */ + this.menu; + /** @type {SenseiMatch} */ + this.match; + + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + /** @returns {void} */ + _preload() { + + this.load.pack("sensei-pack", "assets/media/games/sensei/sensei-pack.json"); + this.load.pack("senseiinstructions-pack", "assets/media/games/sensei/instructions/senseiinstructions-pack.json"); + } + + /** @returns {void} */ + _create() { + + // widget + const widget = new SenseiWidget(this); + this.add.existing(widget); + widget.visible = true; + + // menu + const menu = new SenseiMenu(this, 1060, 774); + this.add.existing(menu); + + // xButton + const xButton = this.add.image(1474, 43, "main", "grey-button"); + + // x + this.add.image(1474, 41, "main", "grey-x"); + + // match + const match = new SenseiMatch(this, 1024, 424); + this.add.existing(match); + match.visible = false; + + // xButton (components) + const xButtonButton = new Button(xButton); + xButtonButton.spriteName = "grey-button"; + xButtonButton.callback = () => this.world.client.sendJoinLastRoom(); + + this.widget = widget; + this.menu = menu; + this.match = match; + + this.events.emit("scene-awake"); + } + + + /* START-USER-CODE */ + + get userHasDeck() { + return this.world.client.inventory.award.includes(821) + } + + create() { + super.create() + + this.widget.addBackgroundEvent('pointerover', this.onBackgroundOver, this) + + this.instructions = new SenseiInstructions(this) + + // Add instructions into widget + this.widget.addAt(this.instructions, this.widget.speechIndex) + + if (!this.userHasDeck) { + this.startSequence(intro) + return + } + + this.showStartMenu() + } + + onBackgroundOver() { + // Speech displayed when there is no menu should stick + if (!this.menu.visible) return + + // Speech displayed during menus other than the start menu should stick + if (!this.menu.isStartMenuActive) return + + this.widget.hideSpeech() + } + + startSequence(sequence) { + this.menu.close() + this.widget.startSequence(sequence) + } + + showMenu(menu) { + this.widget.playWait() + this.menu.show(menu) + } + + showStartMenu() { + this.menu.showStartMenu() + } + + showPreviousMenu() { + this.menu.showPreviousMenu() + } + + showMatch() { + this.menu.close() + this.hideSpeech() + this.match.show() + } + + showSpeech(text) { + this.widget.showSpeech(text) + } + + hideSpeech() { + this.widget.hideSpeech() + } + + hideInstructions() { + this.instructions.hideAll() + } + + stop() { + this.match.close() + + super.stop() + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/Sensei.scene b/src/scenes/games/sensei/Sensei.scene new file mode 100644 index 00000000..575e5c85 --- /dev/null +++ b/src/scenes/games/sensei/Sensei.scene @@ -0,0 +1,92 @@ +{ + "id": "0ac4158a-df71-4a5d-8d9f-1540ef2542cf", + "sceneType": "SCENE", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "GameScene", + "preloadMethodName": "_preload", + "preloadPackFiles": [ + "yukon/assets/media/games/sensei/sensei-pack.json", + "yukon/assets/media/games/sensei/instructions/senseiinstructions-pack.json" + ], + "createMethodName": "_create", + "sceneKey": "Sensei", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "prefabId": "fbf6af33-9518-47c9-b5a9-fd3beb3a5292", + "id": "ab620860-d6bf-4dea-bfcc-879f38ee00ab", + "unlock": [ + "visible" + ], + "label": "widget", + "scope": "CLASS", + "visible": true + }, + { + "prefabId": "717f221e-2a49-41a0-a3d4-1aabab9d9a0f", + "id": "7d7ebac3-5625-4b21-9b9c-18c356cc56f3", + "unlock": [ + "x", + "y" + ], + "label": "menu", + "scope": "CLASS", + "x": 1060, + "y": 774 + }, + { + "type": "Image", + "id": "931acc13-5748-49c2-b341-63c5e9242a42", + "label": "xButton", + "components": [ + "Button" + ], + "Button.spriteName": "grey-button", + "Button.callback": "() => this.world.client.sendJoinLastRoom()", + "texture": { + "key": "main", + "frame": "grey-button" + }, + "x": 1474, + "y": 43 + }, + { + "type": "Image", + "id": "42c44031-0283-493f-84b0-702119a7182b", + "label": "x", + "texture": { + "key": "main", + "frame": "grey-x" + }, + "x": 1474, + "y": 41 + }, + { + "prefabId": "d658d0fb-b2e2-4eee-ba26-d33156d4eee1", + "id": "a3de0ee2-1b7a-4a18-a3a3-afa1e39efcb7", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "match", + "scope": "CLASS", + "x": 1024, + "y": 424, + "visible": false + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/config/BeltColors.js b/src/scenes/games/sensei/config/BeltColors.js new file mode 100644 index 00000000..c28ac830 --- /dev/null +++ b/src/scenes/games/sensei/config/BeltColors.js @@ -0,0 +1 @@ +export default [16777215, 16776960, 16737792, 3394560, 13260, 13369344, 6684927, 6697728, 4473924] diff --git a/src/scenes/games/sensei/config/SenseiMenus.js b/src/scenes/games/sensei/config/SenseiMenus.js new file mode 100644 index 00000000..ac7a29a4 --- /dev/null +++ b/src/scenes/games/sensei/config/SenseiMenus.js @@ -0,0 +1,135 @@ +import * as sequences from './SenseiSequences' + + +export function start(menu) { + return [ + { + text: menu.getString('menu_title_competition'), + icon: 'menu/icon/belt', + + over: () => { + menu.showSpeech(menu.getString('menu_description_competition')) + }, + up: () => { + menu.showMatch() + } + }, + { + text: menu.getString('menu_title_sensei'), + icon: 'menu/icon/sensei', + + over: () => { + menu.showSpeech(menu.getString('menu_description_sensei')) + }, + up: () => { + menu.network.send('join_sensei') + } + }, + { + text: menu.getString('menu_title_instructions'), + icon: 'menu/icon/instructions', + + over: () => { + menu.showSpeech(menu.getString('menu_description_instructions')) + }, + up: () => { + menu.startSequence(sequences.instrHowToPlay) + } + } + ] +} + +export function instrWhatDoIDo(menu) { + return [ + { + text: menu.getString('help_response_whatdoido'), + + up: () => { + menu.startSequence(sequences.instrWhatDoIDo) + } + } + ] +} + +export function instrYesPlease(menu) { + return [ + { + text: menu.getString('help_response_yes'), + + up: () => { + menu.startSequence(sequences.instrHowToPlay) + } + }, + { + text: menu.getString('help_response_no', 'help_response_play'), + + up: () => { + menu.showMatch() + } + } + ] +} + +export function instrHowToWin(menu) { + return [ + { + text: menu.getString('help_response_howtowin'), + + up: () => { + menu.startSequence(sequences.instrHowToWin) + } + }, + { + text: menu.getString('help_response_cantwait', 'help_response_play'), + + up: () => { + menu.showMatch() + } + } + ] +} + +export function instrHowToNinja(menu) { + return [ + { + text: menu.getString('help_response_becomeninja'), + + up: () => { + menu.startSequence(sequences.instrHowToNinja) + } + }, + { + text: menu.getString('help_response_cantwait', 'help_response_play'), + + up: () => { + menu.showMatch() + } + } + ] +} + +export function instrCountMeIn(menu) { + return [ + { + text: menu.getString('help_response_countmein'), + + up: () => { + menu.showMatch() + } + }, + { + text: menu.getString('help_response_tellmeagain'), + + up: () => { + menu.startSequence(sequences.introCards) + } + }, + { + text: menu.getString('help_response_havetogo'), + + up: () => { + menu.world.client.sendJoinLastRoom() + } + } + ] +} diff --git a/src/scenes/games/sensei/config/SenseiSequences.js b/src/scenes/games/sensei/config/SenseiSequences.js new file mode 100644 index 00000000..add5f07d --- /dev/null +++ b/src/scenes/games/sensei/config/SenseiSequences.js @@ -0,0 +1,166 @@ +import * as menus from './SenseiMenus' + + +export function beltAward(widget) { + return [ + () => { + widget.showSpeech(widget.getString('help_award_congratulations')) + }, + () => { + widget.showSpeech(widget.getFormatString('help_award_belt_earned', widget.beltString)) + widget.showBelt() + }, + () => { + widget.leaveGame() + } + ] +} + +export function maskAward(widget) { + return [ + () => { + widget.showSpeech(widget.getString('help_defeat_sensei_intro')) + }, + () => { + widget.showSpeech(widget.getString('help_defeat_sensei_kowtows')) + }, + () => { + widget.showSpeech(widget.getString('help_defeat_sensei_gift')) + widget.showMask() + }, + () => { + widget.hideAward() + widget.showHideout() + widget.showSpeech(widget.getString('help_defeat_sensei_final')) + }, + () => { + widget.leaveGame() + } + ] +} + +export function intro(widget) { + return [ + () => { + widget.showSpeech(widget.getString('help_firsttime_welcome')) + }, + () => { + widget.startSequence(introCards) + } + ] +} + +export function introCards(widget) { + return [ + () => { + widget.showSpeech(widget.getString('help_firsttime_tobegin')) + widget.scene.instructions.showCards() + }, + () => { + widget.network.send('add_starter_deck') + + widget.scene.instructions.hideCards() + widget.scene.showMenu(menus.instrWhatDoIDo) + } + ] +} + +export function instrWhatDoIDo(widget) { + return [ + () => { + widget.showSpeech(widget.getString('help_firsttime_improve')) + widget.scene.instructions.showCompete() + }, + () => { + widget.scene.hideInstructions() + widget.showSpeech(widget.getString('help_firsttime_areyouready')) + }, + () => { + widget.scene.hideInstructions() + widget.scene.showMenu(menus.instrYesPlease) + } + ] +} + +export function instrHowToPlay(widget) { + return [ + () => { + widget.showSpeech(widget.getString('help_firsttime_pickacard')) + widget.scene.instructions.showPick() + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_water')) + widget.scene.instructions.showWater() + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_snow')) + widget.scene.instructions.showSnow() + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_fire')) + widget.scene.instructions.showFire() + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_tie')) + widget.scene.instructions.showTie() + }, + () => { + widget.hideSpeech() + widget.scene.hideInstructions() + widget.scene.showMenu(menus.instrHowToWin) + } + ] +} + +export function instrHowToWin(widget) { + return [ + () => { + widget.showSpeech(widget.getString('help_firsttime_howtowin')) + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_winsame')) + widget.scene.instructions.showWinSame() + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_windifferent')) + widget.scene.instructions.showWinDifferent() + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_ingamehelp')) + widget.scene.instructions.showHelp() + }, + () => { + widget.hideSpeech() + widget.scene.hideInstructions() + widget.scene.showMenu(menus.instrHowToNinja) + } + ] +} + +export function instrHowToNinja(widget) { + return [ + () => { + widget.showSpeech(widget.getString('help_firsttime_joking')) + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_gainexp')) + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_belts')) + widget.scene.instructions.showBelt() + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_fightme')) + widget.scene.instructions.showBlackBelt() + }, + () => { + widget.showSpeech(widget.getString('help_firsttime_ninja')) + widget.scene.instructions.showNinja() + }, + () => { + widget.hideSpeech() + widget.scene.hideInstructions() + widget.scene.showMenu(menus.instrCountMeIn) + } + ] +} diff --git a/src/scenes/games/sensei/instructions/SenseiInstructions.js b/src/scenes/games/sensei/instructions/SenseiInstructions.js new file mode 100644 index 00000000..6f4b4f3f --- /dev/null +++ b/src/scenes/games/sensei/instructions/SenseiInstructions.js @@ -0,0 +1,216 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import SenseiBubble from "./bubble/SenseiBubble"; +import SenseiBelt from "./belt/SenseiBelt"; +import SenseiCards from "./cards/SenseiCards"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class SenseiInstructions extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Sprite} */ + this.ninja; + /** @type {SenseiBubble} */ + this.bubble; + /** @type {SenseiBelt} */ + this.belt; + /** @type {Phaser.GameObjects.Sprite} */ + this.help; + /** @type {Phaser.GameObjects.Sprite} */ + this.winDifferent; + /** @type {Phaser.GameObjects.Sprite} */ + this.winSame; + /** @type {Phaser.GameObjects.Sprite} */ + this.tie; + /** @type {Phaser.GameObjects.Sprite} */ + this.fire; + /** @type {Phaser.GameObjects.Sprite} */ + this.snow; + /** @type {Phaser.GameObjects.Sprite} */ + this.water; + /** @type {Phaser.GameObjects.Sprite} */ + this.pick; + /** @type {SenseiCards} */ + this.cards; + + + // ninja + const ninja = scene.add.sprite(1025, 558, "senseiinstructions", "ninja/ninja0035"); + ninja.setOrigin(0.5006226650062267, 0.5008976660682226); + ninja.visible = false; + this.add(ninja); + + // bubble + const bubble = new SenseiBubble(scene, 1025, 558); + bubble.visible = false; + this.add(bubble); + + // belt + const belt = new SenseiBelt(scene, 979, 547); + belt.visible = false; + this.add(belt); + + // help + const help = scene.add.sprite(1150, 646, "senseiinstructions", "help/help0001"); + help.setOrigin(0.5003996802557954, 0.5); + help.visible = false; + this.add(help); + + // winDifferent + const winDifferent = scene.add.sprite(987, 1335, "senseiinstructions", "win_different/win0091"); + winDifferent.visible = false; + this.add(winDifferent); + + // winSame + const winSame = scene.add.sprite(1826, 484, "senseiinstructions", "win_same/win0090"); + winSame.setOrigin(0.5002171081198437, 0.5); + winSame.visible = false; + this.add(winSame); + + // tie + const tie = scene.add.sprite(1093, 483, "senseiinstructions", "tie/tie0040"); + tie.setOrigin(0.5006353240152478, 0.5); + tie.visible = false; + this.add(tie); + + // fire + const fire = scene.add.sprite(1057, 440, "senseiinstructions", "fire/fire0056"); + fire.setOrigin(0.5007704160246533, 0.5016835016835017); + fire.visible = false; + this.add(fire); + + // snow + const snow = scene.add.sprite(949, 441, "senseiinstructions", "snow/snow0056"); + snow.setOrigin(0.5007898894154819, 0.5016835016835017); + snow.visible = false; + this.add(snow); + + // water + const water = scene.add.sprite(1057, 440, "senseiinstructions", "water/water0056"); + water.setOrigin(0.5007704160246533, 0.5016835016835017); + water.visible = false; + this.add(water); + + // pick + const pick = scene.add.sprite(1564, 1004, "senseiinstructions", "pick/pick0001"); + pick.visible = false; + this.add(pick); + + // cards + const cards = new SenseiCards(scene, 1378, 658); + cards.visible = false; + this.add(cards); + + this.ninja = ninja; + this.bubble = bubble; + this.belt = belt; + this.help = help; + this.winDifferent = winDifferent; + this.winSame = winSame; + this.tie = tie; + this.fire = fire; + this.snow = snow; + this.water = water; + this.pick = pick; + this.cards = cards; + + /* START-USER-CTR-CODE */ + + this.hideAll() + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + showCards() { + this.hideAll() + + this.cards.show() + } + + hideCards() { + this.cards.close() + } + + showPick() { + this.showAndPlaySprite(this.pick, 'instructions/pick') + } + + showWater() { + this.showAndPlaySprite(this.water, 'instructions/water') + } + + showSnow() { + this.showAndPlaySprite(this.snow, 'instructions/snow') + } + + showFire() { + this.showAndPlaySprite(this.fire, 'instructions/fire') + } + + showTie() { + this.showAndPlaySprite(this.tie, 'instructions/tie') + } + + showWinSame() { + this.showAndPlaySprite(this.winSame, 'instructions/win_same') + } + + showWinDifferent() { + this.showAndPlaySprite(this.winDifferent, 'instructions/win_different') + } + + showHelp() { + this.showAndPlaySprite(this.help, 'instructions/help_start') + + this.help.once('animationcomplete-instructions/help_start', () => { + this.help.play('instructions/help_loop') + }) + } + + showCompete() { + this.hideAll() + + this.bubble.showCompete() + } + + showBelt() { + this.hideAll() + + this.belt.show() + } + + showBlackBelt() { + this.hideAll() + + this.bubble.showBlackBelt() + } + + showNinja() { + this.showAndPlaySprite(this.ninja, 'instructions/ninja') + } + + showAndPlaySprite(sprite, animKey) { + this.hideAll() + + sprite.visible = true + sprite.play(animKey) + } + + hideAll() { + this.each(child => { + child.stop() + child.visible = false + }) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/instructions/SenseiInstructions.scene b/src/scenes/games/sensei/instructions/SenseiInstructions.scene new file mode 100644 index 00000000..703e086f --- /dev/null +++ b/src/scenes/games/sensei/instructions/SenseiInstructions.scene @@ -0,0 +1,202 @@ +{ + "id": "7b12f529-40c2-42c2-a0a5-f84d3040a7fe", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "9c2d42b1-a753-45da-8ac2-31cf4a41cddc", + "label": "instructions", + "list": [ + { + "type": "Sprite", + "id": "26e917db-c028-470c-ba9e-317f90ba68b9", + "label": "ninja", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "ninja/ninja0035" + }, + "x": 1025, + "y": 558, + "originX": 0.5006226650062267, + "originY": 0.5008976660682226, + "visible": false + }, + { + "prefabId": "522cce2c-95b0-443c-8abd-e776fae3b36a", + "id": "d594291c-4950-4a6b-a4d9-2e444b76a38e", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "bubble", + "scope": "CLASS", + "x": 1025, + "y": 558, + "visible": false + }, + { + "prefabId": "4f8d4522-9b0f-44e6-b42b-864b442c8610", + "id": "854bd9ca-ac7f-4714-bca1-ab60f0459c73", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "belt", + "scope": "CLASS", + "x": 979, + "y": 547, + "visible": false + }, + { + "type": "Sprite", + "id": "aa86bf5a-4948-48e1-89da-ca19e1002398", + "label": "help", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "help/help0001" + }, + "x": 1150, + "y": 646, + "originX": 0.5003996802557954, + "visible": false + }, + { + "type": "Sprite", + "id": "5338c6ce-8dc9-4623-b334-53b971478d7c", + "label": "winDifferent", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "win_different/win0091" + }, + "x": 987, + "y": 1335, + "visible": false + }, + { + "type": "Sprite", + "id": "5e425442-0702-407d-9d28-a059391f8ce3", + "label": "winSame", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "win_same/win0090" + }, + "x": 1826, + "y": 484, + "originX": 0.5002171081198437, + "visible": false + }, + { + "type": "Sprite", + "id": "c89b4d82-979c-43dd-9196-62ee7c16a495", + "label": "tie", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "tie/tie0040" + }, + "x": 1093, + "y": 483, + "originX": 0.5006353240152478, + "visible": false + }, + { + "type": "Sprite", + "id": "90c0fd72-05a3-47e5-a4d6-5899099ed769", + "label": "fire", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "fire/fire0056" + }, + "x": 1057, + "y": 440, + "originX": 0.5007704160246533, + "originY": 0.5016835016835017, + "visible": false + }, + { + "type": "Sprite", + "id": "42e6ab7c-2bf1-4fd6-890c-85ffb6586851", + "label": "snow", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "snow/snow0056" + }, + "x": 949, + "y": 441, + "originX": 0.5007898894154819, + "originY": 0.5016835016835017, + "visible": false + }, + { + "type": "Sprite", + "id": "92e15995-dd48-4803-be48-7798b79c1b2b", + "label": "water", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "water/water0056" + }, + "x": 1057, + "y": 440, + "originX": 0.5007704160246533, + "originY": 0.5016835016835017, + "visible": false + }, + { + "type": "Sprite", + "id": "3339fcf5-d715-4ff5-8d81-db0b8c3a477e", + "label": "pick", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "pick/pick0001" + }, + "x": 1564, + "y": 1004, + "visible": false + }, + { + "prefabId": "222ec92d-eefc-4309-a7b6-c43572c61a60", + "id": "7702a0ab-d806-4596-be2d-7e15c4e692c1", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "cards", + "scope": "CLASS", + "x": 1378, + "y": 658, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/instructions/belt/SenseiBelt.js b/src/scenes/games/sensei/instructions/belt/SenseiBelt.js new file mode 100644 index 00000000..05f029cb --- /dev/null +++ b/src/scenes/games/sensei/instructions/belt/SenseiBelt.js @@ -0,0 +1,90 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +import SimpleButton from "../../../../components/SimpleButton"; +/* START-USER-IMPORTS */ + +import BeltColors from '../../config/BeltColors' + +/* END-USER-IMPORTS */ + +export default class SenseiBelt extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Image} */ + this.color; + + + // belt + const belt = scene.add.image(0, 0, "senseiinstructions", "belt/belt"); + belt.setOrigin(0.503030303030303, 0.5037037037037037); + this.add(belt); + + // color + const color = scene.add.image(1, -1, "senseiinstructions", "belt/color"); + color.setOrigin(0.503448275862069, 0.5); + this.add(color); + + // shadow + const shadow = scene.add.image(1, 4, "senseiinstructions", "belt/shadow"); + shadow.setOrigin(0.503448275862069, 0.5); + this.add(shadow); + + // belt (components) + const beltSimpleButton = new SimpleButton(belt); + beltSimpleButton.callback = () => this.onBeltClick(); + + this.color = color; + + /* START-USER-CTR-CODE */ + + this.current = 0 + this.tween = null + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show() { + this.current = 0 + + // Float + this.tween = this.scene.tweens.add({ + targets: this, + y: this.y + 10, + duration: 333, + repeat: -1, + yoyo: true, + ease: Phaser.Math.Easing.Quadratic.InOut + }) + + this.updateColor() + + super.show() + } + + onBeltClick() { + this.current = (this.current + 1) % BeltColors.length + + this.updateColor() + } + + updateColor() { + this.color.tint = BeltColors[this.current] + } + + stop() { + if (this.tween) { + this.tween.remove() + this.tween = null + } + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/instructions/belt/SenseiBelt.scene b/src/scenes/games/sensei/instructions/belt/SenseiBelt.scene new file mode 100644 index 00000000..340d2455 --- /dev/null +++ b/src/scenes/games/sensei/instructions/belt/SenseiBelt.scene @@ -0,0 +1,72 @@ +{ + "id": "4f8d4522-9b0f-44e6-b42b-864b442c8610", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "a003baf5-af83-437e-b5a5-b9e160ffe729", + "label": "container_1", + "list": [ + { + "type": "Image", + "id": "fa0da86e-f10c-45db-9fcc-5cc2bb7e828f", + "label": "belt", + "components": [ + "SimpleButton" + ], + "SimpleButton.callback": "() => this.onBeltClick()", + "texture": { + "key": "senseiinstructions", + "frame": "belt/belt" + }, + "originX": 0.503030303030303, + "originY": 0.5037037037037037 + }, + { + "type": "Image", + "id": "26263dde-bd9a-4b97-be6e-73708819290f", + "label": "color", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "belt/color" + }, + "x": 1, + "y": -1, + "originX": 0.503448275862069 + }, + { + "type": "Image", + "id": "3d77bfd2-99f5-4d34-bf08-b3aeccb56d78", + "label": "shadow", + "texture": { + "key": "senseiinstructions", + "frame": "belt/shadow" + }, + "x": 1, + "y": 4, + "originX": 0.503448275862069 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/instructions/bubble/SenseiBubble.js b/src/scenes/games/sensei/instructions/bubble/SenseiBubble.js new file mode 100644 index 00000000..73342bfd --- /dev/null +++ b/src/scenes/games/sensei/instructions/bubble/SenseiBubble.js @@ -0,0 +1,140 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +import SenseiBubbleWalk from "./SenseiBubbleWalk"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class SenseiBubble extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Sprite} */ + this.bubble; + /** @type {SenseiBubbleWalk} */ + this.senseiBubbleWalk2; + /** @type {SenseiBubbleWalk} */ + this.senseiBubbleWalk1; + /** @type {Phaser.GameObjects.Image} */ + this.maskImage; + /** @type {SenseiBubbleWalk[]} */ + this.walks; + + + // bubble + const bubble = scene.add.sprite(0, 0, "senseiinstructions", "bubble/bubble0030"); + bubble.setOrigin(0.5006226650062267, 0.5008976660682226); + this.add(bubble); + + // senseiBubbleWalk2 + const senseiBubbleWalk2 = new SenseiBubbleWalk(scene, 226, 11); + this.add(senseiBubbleWalk2); + + // senseiBubbleWalk1 + const senseiBubbleWalk1 = new SenseiBubbleWalk(scene, -102, 11); + senseiBubbleWalk1.scaleX = -1; + senseiBubbleWalk1.scaleY = 1; + this.add(senseiBubbleWalk1); + + // maskImage + const maskImage = scene.add.image(0, 0, "senseiinstructions", "bubble/mask"); + maskImage.setOrigin(0.5006226650062267, 0.5008976660682226); + maskImage.visible = false; + this.add(maskImage); + + // lists + const walks = [senseiBubbleWalk1, senseiBubbleWalk2]; + + this.bubble = bubble; + this.senseiBubbleWalk2 = senseiBubbleWalk2; + this.senseiBubbleWalk1 = senseiBubbleWalk1; + this.maskImage = maskImage; + this.walks = walks; + + /* START-USER-CTR-CODE */ + + this.startWalkIndex = 29 + this.endWalkIndex = 87 + + bubble.on('animationupdate', this.onBubbleAnimUpdate, this) + + this.setMask() + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show() { + super.show() + + this.bubble.play('instructions/bubble') + } + + get clientColor() { + return this.world.client.penguin.items.all.color.id + } + + showCompete() { + this.setPlayerWalk(0) + this.setOpponentWalk(6, 2) + + this.show() + } + + showBlackBelt() { + this.setPlayerWalk(9) + this.setOpponentWalk(14, 0, true) + + this.show() + } + + setPlayerWalk(rank) { + this.setWalk(this.walks[0], this.clientColor, rank) + } + + setOpponentWalk(color, rank, sensei = false) { + this.setWalk(this.walks[1], color, rank, sensei) + } + + setWalk(walk, color, rank, sensei = false) { + walk.setColor(color) + walk.setBelt(rank) + walk.setSensei(sensei) + } + + setMask() { + const matrix = this.maskImage.getWorldTransformMatrix() + + // Set correct mask position + this.maskImage.x = matrix.getX(0, 0) + this.maskImage.y = matrix.getY(0, 0) + + const mask = this.maskImage.createBitmapMask() + + this.walks.forEach(walk => walk.setMask(mask)) + } + + onBubbleAnimUpdate(_, frame) { + switch (frame.index) { + case this.startWalkIndex: + this.walks.forEach(walk => walk.show()) + break + + case this.endWalkIndex: + this.walks.forEach(walk => walk.close()) + break + } + } + + stop() { + this.bubble.stop() + this.walks.forEach(walk => walk.close()) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/instructions/bubble/SenseiBubble.scene b/src/scenes/games/sensei/instructions/bubble/SenseiBubble.scene new file mode 100644 index 00000000..98a0a535 --- /dev/null +++ b/src/scenes/games/sensei/instructions/bubble/SenseiBubble.scene @@ -0,0 +1,95 @@ +{ + "id": "522cce2c-95b0-443c-8abd-e776fae3b36a", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "ed22e9d6-0163-442d-9108-d016721a9d38", + "label": "container_1", + "list": [ + { + "type": "Sprite", + "id": "e84fd791-8652-4ec9-b010-e739f9ba3f91", + "label": "bubble", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/bubble0030" + }, + "originX": 0.5006226650062267, + "originY": 0.5008976660682226 + }, + { + "prefabId": "22a41d6c-54a1-45d7-b3ae-580a36389586", + "id": "4af4b1a6-f931-4986-9d71-401e2d976546", + "unlock": [ + "x", + "y" + ], + "label": "senseiBubbleWalk2", + "scope": "CLASS", + "x": 226, + "y": 11 + }, + { + "prefabId": "22a41d6c-54a1-45d7-b3ae-580a36389586", + "id": "1488d3e7-9e54-4d92-8641-6e0a434aec0c", + "unlock": [ + "x", + "y", + "scaleX", + "scaleY" + ], + "label": "senseiBubbleWalk1", + "scope": "CLASS", + "x": -102, + "y": 11, + "scaleX": -1, + "scaleY": 1 + }, + { + "type": "Image", + "id": "047fedb6-2c67-4b2f-9cb0-3033708b696c", + "label": "maskImage", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/mask" + }, + "originX": 0.5006226650062267, + "originY": 0.5008976660682226, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + }, + "lists": [ + { + "id": "e48b384d-d017-4550-8aa7-33ee9a1985cb", + "label": "walks", + "objectIds": [ + "1488d3e7-9e54-4d92-8641-6e0a434aec0c", + "4af4b1a6-f931-4986-9d71-401e2d976546" + ] + } + ] +} \ No newline at end of file diff --git a/src/scenes/games/sensei/instructions/bubble/SenseiBubbleWalk.js b/src/scenes/games/sensei/instructions/bubble/SenseiBubbleWalk.js new file mode 100644 index 00000000..0bf84f93 --- /dev/null +++ b/src/scenes/games/sensei/instructions/bubble/SenseiBubbleWalk.js @@ -0,0 +1,188 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +/* START-USER-IMPORTS */ + +import BeltColors from '../../config/BeltColors' + +/* END-USER-IMPORTS */ + +export default class SenseiBubbleWalk extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Sprite} */ + this.backArm; + /** @type {Phaser.GameObjects.Sprite} */ + this.body; + /** @type {Phaser.GameObjects.Sprite} */ + this.sensei; + /** @type {Phaser.GameObjects.Sprite} */ + this.beltLine; + /** @type {Phaser.GameObjects.Sprite} */ + this.belt; + /** @type {Phaser.GameObjects.Sprite} */ + this.frontArm; + /** @type {Phaser.GameObjects.Sprite[]} */ + this.colorSprites; + /** @type {Phaser.GameObjects.Sprite[]} */ + this.beltSprites; + + + // backFoot + const backFoot = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/1_instance3_1"); + this.add(backFoot); + + // frontFoot + const frontFoot = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/2_instance5_1"); + this.add(frontFoot); + + // backArmLine + const backArmLine = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/3_instance7_1"); + this.add(backArmLine); + + // backArm + const backArm = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/4_backarm_1"); + this.add(backArm); + + // bodyLine + const bodyLine = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/5_instance8_1"); + this.add(bodyLine); + + // body + const body = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/6_body_1"); + this.add(body); + + // shadow + const shadow = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/7_instance10_1"); + this.add(shadow); + + // eye + const eye = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/8_instance11_1"); + this.add(eye); + + // pupil + const pupil = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/9_instance13_1"); + this.add(pupil); + + // sensei + const sensei = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/10_sensei_1"); + this.add(sensei); + + // beak + const beak = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/11_instance18_1"); + this.add(beak); + + // beltLine + const beltLine = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/12_beltline_1"); + this.add(beltLine); + + // belt + const belt = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/13_belt_1"); + this.add(belt); + + // frontArmLine + const frontArmLine = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/14_instance22_1"); + this.add(frontArmLine); + + // frontArm + const frontArm = scene.add.sprite(0, 0, "senseiinstructions", "bubble/walk/15_frontarm_1"); + this.add(frontArm); + + // lists + const colorSprites = [body, frontArm, backArm]; + const beltSprites = [belt, beltLine]; + + this.backArm = backArm; + this.body = body; + this.sensei = sensei; + this.beltLine = beltLine; + this.belt = belt; + this.frontArm = frontArm; + this.colorSprites = colorSprites; + this.beltSprites = beltSprites; + + /* START-USER-CTR-CODE */ + + this.end = 70 + + this.createAnims() + + // Start hidden + this.close() + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + setColor(color) { + this.colorSprites.forEach(sprite => sprite.tint = this.world.getColor(color)) + } + + setBelt(rank) { + const hasBelt = rank > 0 + + this.beltSprites.forEach(sprite => sprite.visible = hasBelt) + + if (hasBelt) { + this.belt.tint = BeltColors[rank - 1] + } + } + + setSensei(sensei) { + this.sensei.visible = sensei + } + + createAnims() { + this.list.forEach(child => this.createAnim(child)) + } + + createAnim(child) { + const animKey = this.getAnimKey(child) + + const frameNames = this.scene.anims.generateFrameNames('senseiinstructions', { + prefix: `${animKey}_`, + start: 1, + end: this.end + }) + + this.scene.anims.create({ + key: animKey, + frames: frameNames, + frameRate: 24, + repeat: 0 + }) + } + + playAnim(child) { + const animKey = this.getAnimKey(child) + + child.play(animKey) + } + + getAnimKey(child) { + const frameName = child.frame.name + + // Remove frame number (_1) from frameName + return frameName.split('_').slice(0, -1).join('_') + } + + show() { + this.list.forEach(child => this.playAnim(child)) + + super.show() + } + + close() { + super.close() + + this.list.forEach(child => child.stop()) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/instructions/bubble/SenseiBubbleWalk.scene b/src/scenes/games/sensei/instructions/bubble/SenseiBubbleWalk.scene new file mode 100644 index 00000000..dd094eb5 --- /dev/null +++ b/src/scenes/games/sensei/instructions/bubble/SenseiBubbleWalk.scene @@ -0,0 +1,192 @@ +{ + "id": "22a41d6c-54a1-45d7-b3ae-580a36389586", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "86cdbc54-b5fc-4f5e-8838-6ba02ddec0ec", + "label": "container_1", + "list": [ + { + "type": "Sprite", + "id": "5d85551b-e50c-4b54-ab8a-a160d89c1115", + "label": "backFoot", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/1_instance3_1" + } + }, + { + "type": "Sprite", + "id": "e6d7478e-cf80-4fd1-a855-cd86e90aca1f", + "label": "frontFoot", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/2_instance5_1" + } + }, + { + "type": "Sprite", + "id": "ac1d2cc7-2274-4d78-a8d5-695f8c94d1af", + "label": "backArmLine", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/3_instance7_1" + } + }, + { + "type": "Sprite", + "id": "95574afd-4503-46de-adf3-cee52bccec64", + "label": "backArm", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/4_backarm_1" + } + }, + { + "type": "Sprite", + "id": "7eba80ed-9087-49e1-84c2-01880626f3d3", + "label": "bodyLine", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/5_instance8_1" + } + }, + { + "type": "Sprite", + "id": "4e1d6789-c309-4469-8fb4-21a090ad217d", + "label": "body", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/6_body_1" + } + }, + { + "type": "Sprite", + "id": "8cd82544-a3da-402a-bc39-e81b876d9dd5", + "label": "shadow", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/7_instance10_1" + } + }, + { + "type": "Sprite", + "id": "9475c700-6ed4-4d94-8fe8-a95c6943d2f3", + "label": "eye", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/8_instance11_1" + } + }, + { + "type": "Sprite", + "id": "796fb263-66db-4602-9e3b-382a7978b006", + "label": "pupil", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/9_instance13_1" + } + }, + { + "type": "Sprite", + "id": "3eb3e714-566f-4467-9b67-3d81f5d9e2d4", + "label": "sensei", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/10_sensei_1" + } + }, + { + "type": "Sprite", + "id": "9fe3e127-2e32-44f3-8f68-7f258d254035", + "label": "beak", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/11_instance18_1" + } + }, + { + "type": "Sprite", + "id": "d566321a-b1d5-4a57-9160-8348d14945dd", + "label": "beltLine", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/12_beltline_1" + } + }, + { + "type": "Sprite", + "id": "11bc2ebc-2fe3-4b7b-8d6d-2be4e6b78c71", + "label": "belt", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/13_belt_1" + } + }, + { + "type": "Sprite", + "id": "57c75665-de10-4c11-9a8d-671445622e44", + "label": "frontArmLine", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/14_instance22_1" + } + }, + { + "type": "Sprite", + "id": "46e37fd7-de04-4caa-a063-987cb236c355", + "label": "frontArm", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "bubble/walk/15_frontarm_1" + } + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + }, + "lists": [ + { + "id": "f960adb1-5d55-452f-89d3-8adcfcf1119f", + "label": "colorSprites", + "objectIds": [ + "4e1d6789-c309-4469-8fb4-21a090ad217d", + "46e37fd7-de04-4caa-a063-987cb236c355", + "95574afd-4503-46de-adf3-cee52bccec64" + ] + }, + { + "id": "0c502c58-3bf0-401b-afb4-6ef8cf3fe967", + "label": "beltSprites", + "objectIds": [ + "11bc2ebc-2fe3-4b7b-8d6d-2be4e6b78c71", + "d566321a-b1d5-4a57-9160-8348d14945dd" + ] + } + ] +} \ No newline at end of file diff --git a/src/scenes/games/sensei/instructions/cards/SenseiCards.js b/src/scenes/games/sensei/instructions/cards/SenseiCards.js new file mode 100644 index 00000000..66df06ba --- /dev/null +++ b/src/scenes/games/sensei/instructions/cards/SenseiCards.js @@ -0,0 +1,126 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class SenseiCards extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Sprite} */ + this.glow; + + + // glow + const glow = scene.add.sprite(-62, -70, "senseiinstructions", "cards/glow/glow0001"); + this.add(glow); + + // cards + const cards = scene.add.image(-317, -158, "senseiinstructions", "cards/cards"); + cards.setOrigin(0.5007874015748032, 0.5); + this.add(cards); + + this.glow = glow; + + /* START-USER-CTR-CODE */ + + // Slide in from right + this.startX = this.x + 1046 + this.endX = this.x + + // Slide out to bottom + this.startY = this.y + this.endY = this.y + 792 + + this.tween = null + + this.bounceDelay = (1 / 24) * 1000 + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show() { + this.removeTween() + + this.x = this.startX + this.y = this.startY + + this.glow.play('instructions/cards/glow') + + super.show() + + this.playShow() + } + + playShow() { + this.tween = this.scene.tweens.add({ + targets: this, + + x: { from: this.startX, to: this.endX }, + duration: 542, + + onComplete: () => this.onShowTweenComplete(), + }) + } + + onShowTweenComplete() { + // Create bounce effect at end of tween + this.scaleX = 1.035 + + // Reset scale + this.scene.time.delayedCall(this.bounceDelay, () => this.resetScale()) + } + + close() { + this.removeTween() + + this.x = this.endX + this.y = this.startY + + this.scaleY = 1.08 + + this.scene.time.delayedCall(this.bounceDelay, () => this.playClose()) + } + + playClose() { + this.resetScale() + + this.tween = this.scene.tweens.add({ + targets: this, + + y: { from: this.startY, to: this.endY }, + duration: 417 + }) + } + + stop() { + this.glow.stop() + + if (this.tween) { + this.removeTween() + } + } + + removeTween() { + if (!this.tween) { + return + } + + this.tween.remove() + this.tween = null + } + + resetScale() { + this.scaleX = 1 + this.scaleY = 1 + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/instructions/cards/SenseiCards.scene b/src/scenes/games/sensei/instructions/cards/SenseiCards.scene new file mode 100644 index 00000000..274ae82a --- /dev/null +++ b/src/scenes/games/sensei/instructions/cards/SenseiCards.scene @@ -0,0 +1,56 @@ +{ + "id": "222ec92d-eefc-4309-a7b6-c43572c61a60", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "a02827a6-649c-410a-895b-8393db17fcdd", + "label": "container_1", + "list": [ + { + "type": "Sprite", + "id": "5056498b-5368-4fda-8832-dd946f2c2564", + "label": "glow", + "scope": "CLASS", + "texture": { + "key": "senseiinstructions", + "frame": "cards/glow/glow0001" + }, + "x": -62, + "y": -70 + }, + { + "type": "Image", + "id": "741b5789-3f18-450c-9821-fcdb70ec480e", + "label": "cards", + "texture": { + "key": "senseiinstructions", + "frame": "cards/cards" + }, + "x": -317, + "y": -158, + "originX": 0.5007874015748032 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/match/SenseiMatch.js b/src/scenes/games/sensei/match/SenseiMatch.js new file mode 100644 index 00000000..1ebf439c --- /dev/null +++ b/src/scenes/games/sensei/match/SenseiMatch.js @@ -0,0 +1,153 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import DraggableContainer from "../../../components/DraggableContainer"; +import SenseiMatchItem from "./SenseiMatchItem"; +import Button from "../../../components/Button"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class SenseiMatch extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {SenseiMatchItem} */ + this.opponent; + /** @type {SenseiMatchItem} */ + this.myPlayer; + /** @type {Phaser.GameObjects.Text} */ + this.message; + /** @type {Phaser.GameObjects.Text} */ + this.time; + /** @type {Phaser.GameObjects.Image} */ + this.spinner; + + + // bg + const bg = scene.add.image(0, 0, "sensei", "match/window"); + this.add(bg); + + // opponent + const opponent = new SenseiMatchItem(scene, 0, 98); + this.add(opponent); + + // myPlayer + const myPlayer = new SenseiMatchItem(scene, 0, 46); + this.add(myPlayer); + + // message + const message = scene.add.text(0, -20, "", {}); + message.setOrigin(0.5, 0.5); + message.text = "Waiting for more players"; + message.setStyle({ "align": "center", "fixedWidth":460,"fontFamily": "Arial Narrow", "fontSize": "32px" }); + this.add(message); + + // time + const time = scene.add.text(0, -100, "", {}); + time.setOrigin(0.5, 0.5); + time.text = "10"; + time.setStyle({ "align": "center", "fixedWidth":60,"fontFamily": "Arial", "fontSize": "32px", "fontStyle": "bold" }); + this.add(time); + + // spinner + const spinner = scene.add.image(0, -100, "sensei", "match/spinner"); + spinner.setOrigin(0.5, 0.5063291139240507); + this.add(spinner); + + // xButton + const xButton = scene.add.image(234, -124, "main", "blue-button"); + this.add(xButton); + + // xIcon + const xIcon = scene.add.image(234, -126, "main", "blue-x"); + this.add(xIcon); + + // this (components) + const thisDraggableContainer = new DraggableContainer(this); + thisDraggableContainer.handle = bg; + + // xButton (components) + const xButtonButton = new Button(xButton); + xButtonButton.spriteName = "blue-button"; + xButtonButton.callback = () => this.close(); + + this.opponent = opponent; + this.myPlayer = myPlayer; + this.message = message; + this.time = time; + this.spinner = spinner; + + /* START-USER-CTR-CODE */ + + message.text = this.getString('widget_wait') + + // Spinner + scene.tweens.add({ + targets: spinner, + angle: { from: 0, to: 180 }, + duration: 900, + repeat: -1, + ease: 'Cubic' + }) + + this.originalX = this.x + this.originalY = this.y + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + addListeners() { + this.network.events.on('join_matchmaking', this.handleJoinMatchmaking, this) + this.network.events.on('tick_matchmaking', this.handleTickMatchmaking, this) + } + + removeListeners() { + this.network.events.off('join_matchmaking', this.handleJoinMatchmaking, this) + this.network.events.off('tick_matchmaking', this.handleTickMatchmaking, this) + } + + show() { + this.showWaitingElements(true) + + this.x = this.originalX + this.y = this.originalY + + this.addListeners() + this.scene.network.send('join_matchmaking') + + super.show() + } + + close() { + this.scene.network.send('leave_matchmaking') + this.removeListeners() + + super.close() + + this.scene.showPreviousMenu() + } + + handleJoinMatchmaking() { + this.myPlayer.setItem(this.world.client.penguin.username) + } + + handleTickMatchmaking(args) { + this.showWaitingElements(false) + + this.time.text = args.tick + } + + showWaitingElements(show) { + this.spinner.visible = !show + this.time.visible = !show + this.message.visible = show + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/match/SenseiMatch.scene b/src/scenes/games/sensei/match/SenseiMatch.scene new file mode 100644 index 00000000..485ac270 --- /dev/null +++ b/src/scenes/games/sensei/match/SenseiMatch.scene @@ -0,0 +1,141 @@ +{ + "id": "d658d0fb-b2e2-4eee-ba26-d33156d4eee1", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "snapWidth": 80, + "snapHeight": 79, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "e37bfe4e-e273-4274-9d00-41841d00298a", + "label": "container_1", + "components": [ + "DraggableContainer" + ], + "DraggableContainer.handle": "bg", + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "5688e8cb-f7d7-45bc-b786-59a8031f6dc7", + "label": "bg", + "texture": { + "key": "sensei", + "frame": "match/window" + } + }, + { + "prefabId": "07fe953a-6cae-4a48-aa0d-6ab406415f4e", + "id": "c80802ff-9240-44e6-9512-d6cb00e47373", + "unlock": [ + "x", + "y" + ], + "label": "opponent", + "scope": "CLASS", + "x": 0, + "y": 98 + }, + { + "prefabId": "07fe953a-6cae-4a48-aa0d-6ab406415f4e", + "id": "12bc02a8-5618-461e-83de-1a00a7412997", + "unlock": [ + "x", + "y" + ], + "label": "myPlayer", + "scope": "CLASS", + "x": 0, + "y": 46 + }, + { + "type": "Text", + "id": "7b204eaf-dbd4-42cb-8322-ce985fdd95fd", + "label": "message", + "scope": "CLASS", + "y": -20, + "originX": 0.5, + "originY": 0.5, + "text": "Waiting for more players", + "fixedWidth": 460, + "align": "center", + "fontFamily": "Arial Narrow", + "fontSize": "32px" + }, + { + "type": "Text", + "id": "150d74b5-74fe-4764-9d54-4a697e9eda43", + "label": "time", + "scope": "CLASS", + "y": -100, + "originX": 0.5, + "originY": 0.5, + "text": "10", + "fixedWidth": 60, + "align": "center", + "fontFamily": "Arial", + "fontSize": "32px", + "fontStyle": "bold" + }, + { + "type": "Image", + "id": "fd40b908-3817-45e9-9d72-e9fa95d657f1", + "label": "spinner", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "match/spinner" + }, + "y": -100, + "originY": 0.5063291139240507 + }, + { + "type": "Image", + "id": "1e74f682-47c7-48d3-b696-f422a26ef831", + "label": "xButton", + "components": [ + "Button" + ], + "Button.spriteName": "blue-button", + "Button.callback": "() => this.close()", + "texture": { + "key": "main", + "frame": "blue-button" + }, + "x": 234, + "y": -124 + }, + { + "type": "Image", + "id": "931e5701-f927-410a-9586-ec26268a6b61", + "label": "xIcon", + "texture": { + "key": "main", + "frame": "blue-x" + }, + "x": 234, + "y": -126 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/match/SenseiMatchItem.js b/src/scenes/games/sensei/match/SenseiMatchItem.js new file mode 100644 index 00000000..84989e9c --- /dev/null +++ b/src/scenes/games/sensei/match/SenseiMatchItem.js @@ -0,0 +1,82 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class SenseiMatchItem extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.icon; + /** @type {Phaser.GameObjects.Image} */ + this.spinner; + /** @type {Phaser.GameObjects.Text} */ + this.username; + + + // item + const item = scene.add.image(0, 0, "main", "buddy/item"); + this.add(item); + + // icon + const icon = scene.add.image(-137, 0, "main", "buddy/icon-player"); + icon.visible = false; + this.add(icon); + + // spinner + const spinner = scene.add.image(-137, 0, "main", "buddy/icon-load"); + this.add(spinner); + + // username + const username = scene.add.text(25, 0, "", {}); + username.setOrigin(0.5, 0.5); + username.setStyle({ "fixedWidth":270,"fontFamily": "Arial", "fontSize": "24px" }); + this.add(username); + + this.icon = icon; + this.spinner = spinner; + this.username = username; + + /* START-USER-CTR-CODE */ + + // Spinner + scene.tweens.add({ + targets: this.spinner, + angle: { from: 0, to: 180 }, + duration: 900, + repeat: -1, + ease: 'Cubic' + }) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + setItem(player) { + if (!player) { + clearItem() + return + } + + this.username.text = player + + this.spinner.visible = false + this.icon.visible = true + } + + clearItem() { + this.username.text = '' + + this.icon.visible = false + this.spinner.visible = true + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/match/SenseiMatchItem.scene b/src/scenes/games/sensei/match/SenseiMatchItem.scene new file mode 100644 index 00000000..d801a8a5 --- /dev/null +++ b/src/scenes/games/sensei/match/SenseiMatchItem.scene @@ -0,0 +1,83 @@ +{ + "id": "07fe953a-6cae-4a48-aa0d-6ab406415f4e", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "dd60dc30-073d-45d0-a9ee-dd562211f7f5", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "a26cef61-4e6e-48e6-bf95-9462fb1949c6", + "label": "item", + "components": [], + "texture": { + "key": "main", + "frame": "buddy/item" + } + }, + { + "type": "Image", + "id": "940a9878-56ab-4312-903e-18df2c2c58a0", + "label": "icon", + "scope": "CLASS", + "components": [], + "texture": { + "key": "main", + "frame": "buddy/icon-player" + }, + "x": -137, + "visible": false + }, + { + "type": "Image", + "id": "b4fdaa43-9dc9-4152-a95e-28f3de2b805e", + "label": "spinner", + "scope": "CLASS", + "components": [], + "texture": { + "key": "main", + "frame": "buddy/icon-load" + }, + "x": -137 + }, + { + "type": "Text", + "id": "f366378c-85d3-48fe-b1e9-a20d9b0e482f", + "label": "username", + "scope": "CLASS", + "components": [], + "x": 25, + "originX": 0.5, + "originY": 0.5, + "fixedWidth": 270, + "fontFamily": "Arial", + "fontSize": "24px" + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/menu/SenseiMenu.js b/src/scenes/games/sensei/menu/SenseiMenu.js new file mode 100644 index 00000000..5f9a9be8 --- /dev/null +++ b/src/scenes/games/sensei/menu/SenseiMenu.js @@ -0,0 +1,138 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import SenseiMenuItem from "./SenseiMenuItem"; +/* START-USER-IMPORTS */ + +import * as menus from '../config/SenseiMenus' + +/* END-USER-IMPORTS */ + +export default class SenseiMenu extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {NinePatchContainer} */ + this.bg; + /** @type {SenseiMenuItem[]} */ + this.items; + + + // bg + const bg = scene.add.ninePatchContainer(0, -162, 848, 323, "sensei", "menu/bg"); + bg.marginLeft = 60; + bg.marginTop = 40; + bg.marginRight = 60; + bg.marginBottom = 45; + bg.ninePatchContainerOriginY = 0; + this.add(bg); + + // senseiMenuItem4 + const senseiMenuItem4 = new SenseiMenuItem(scene, 0, 92); + senseiMenuItem4.visible = false; + this.add(senseiMenuItem4); + + // senseiMenuItem3 + const senseiMenuItem3 = new SenseiMenuItem(scene, 0, 30); + senseiMenuItem3.visible = false; + this.add(senseiMenuItem3); + + // senseiMenuItem2 + const senseiMenuItem2 = new SenseiMenuItem(scene, 0, -32); + senseiMenuItem2.visible = false; + this.add(senseiMenuItem2); + + // senseiMenuItem1 + const senseiMenuItem1 = new SenseiMenuItem(scene, 0, -94); + senseiMenuItem1.visible = false; + this.add(senseiMenuItem1); + + // lists + const items = [senseiMenuItem1, senseiMenuItem2, senseiMenuItem3, senseiMenuItem4]; + + this.bg = bg; + this.items = items; + + /* START-USER-CTR-CODE */ + + this.currentMenu + this.currentItems + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show(menu) { + this.reset() + + this.currentMenu = menu + // Pass SenseiMenu dependency + this.currentItems = this.currentMenu(this) + + this.updateMenu() + + super.show() + } + + get isStartMenuActive() { + return this.currentMenu === menus.start + } + + showStartMenu() { + this.show(menus.start) + } + + showPreviousMenu() { + if (!this.currentMenu) { + this.showStartMenu() + return + } + + // Use last menu stored in this.currentMenu + this.show(this.currentMenu) + } + + updateMenu() { + for (let i = 0; i < this.currentItems.length; i++) { + const config = this.currentItems[i] + const item = this.items[i] + + item.show(config) + } + + this.resizeMenu() + } + + resizeMenu() { + this.bg.resize(this.bg.width, (this.currentItems.length * 61) + 78) + } + + startSequence(sequence) { + this.scene.startSequence(sequence) + } + + showSpeech(text) { + this.scene.showSpeech(text) + } + + hideSpeech() { + this.scene.hideSpeech() + } + + showMatch() { + this.scene.showMatch() + } + + reset() { + for (const item of this.items) { + item.close() + } + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/menu/SenseiMenu.scene b/src/scenes/games/sensei/menu/SenseiMenu.scene new file mode 100644 index 00000000..f1c19302 --- /dev/null +++ b/src/scenes/games/sensei/menu/SenseiMenu.scene @@ -0,0 +1,114 @@ +{ + "id": "717f221e-2a49-41a0-a3d4-1aabab9d9a0f", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "cc188231-2b7e-4bcd-a7bc-6da884837ac6", + "label": "container_1", + "list": [ + { + "type": "NinePatchContainer", + "id": "907491ca-6c4a-4227-a8f0-fd5774fb38af", + "label": "bg", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "menu/bg" + }, + "y": -162, + "width": 848, + "height": 323, + "marginLeft": 60, + "marginRight": 60, + "marginTop": 40, + "marginBottom": 45, + "ninePatchContainerOriginY": 0 + }, + { + "prefabId": "09107910-1b0d-415a-80fe-5bf424b8d97a", + "id": "d7db7652-6890-4681-a0c5-b03d3dcb9aef", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "senseiMenuItem4", + "x": 0, + "y": 92, + "visible": false + }, + { + "prefabId": "09107910-1b0d-415a-80fe-5bf424b8d97a", + "id": "6030acca-d185-4087-8b80-de8730932721", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "senseiMenuItem3", + "x": 0, + "y": 30, + "visible": false + }, + { + "prefabId": "09107910-1b0d-415a-80fe-5bf424b8d97a", + "id": "5790a6f6-fa4c-4dcc-b87f-f561cf423691", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "senseiMenuItem2", + "x": 0, + "y": -32, + "visible": false + }, + { + "prefabId": "09107910-1b0d-415a-80fe-5bf424b8d97a", + "id": "fa3ec168-e4e1-4a50-8685-29a2d6e96874", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "senseiMenuItem1", + "x": 0, + "y": -94, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + }, + "lists": [ + { + "id": "916431eb-b2a5-475a-9067-6b83e8e6ed16", + "label": "items", + "objectIds": [ + "fa3ec168-e4e1-4a50-8685-29a2d6e96874", + "5790a6f6-fa4c-4dcc-b87f-f561cf423691", + "6030acca-d185-4087-8b80-de8730932721", + "d7db7652-6890-4681-a0c5-b03d3dcb9aef" + ] + } + ] +} \ No newline at end of file diff --git a/src/scenes/games/sensei/menu/SenseiMenuItem.js b/src/scenes/games/sensei/menu/SenseiMenuItem.js new file mode 100644 index 00000000..a444c9c6 --- /dev/null +++ b/src/scenes/games/sensei/menu/SenseiMenuItem.js @@ -0,0 +1,97 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Button from "../../../components/Button"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class SenseiMenuItem extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Text} */ + this.text; + /** @type {Phaser.GameObjects.Image} */ + this.icon; + + + // item + const item = scene.add.image(0, 0, "sensei", "menu/item"); + this.add(item); + + // text + const text = scene.add.text(0, 0, "", {}); + text.setOrigin(0.5, 0.5); + text.text = "This is a menu item!"; + text.setStyle({ "color": "#000", "fixedWidth":720,"fontFamily": "CCComiccrazy", "fontSize": "26px" }); + this.add(text); + + // icon + const icon = scene.add.image(-342, 0, "sensei", "menu/icon/belt"); + icon.setOrigin(0.5106382978723404, 0.5106382978723404); + icon.visible = false; + this.add(icon); + + // item (components) + const itemButton = new Button(item); + itemButton.spriteName = "menu/item"; + itemButton.hoverCallback = () => this.onOver(); + itemButton.hoverOutCallback = () => this.onOut(); + itemButton.callback = () => this.onUp(); + itemButton.activeFrame = false; + + this.text = text; + this.icon = icon; + + /* START-USER-CTR-CODE */ + + this.onOver = () => {} + this.onOut = () => {} + this.onUp = () => {} + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show(config) { + this.text.text = config.text + + this.setCallbacks(config) + + if (config.icon) { + this.showIcon(config.icon) + } else { + this.hideIcon() + } + + super.show() + } + + setCallbacks(config) { + let empty = () => {} + + this.onOver = config.over || empty + this.onOut = config.out || empty + this.onUp = config.up || empty + } + + showIcon(icon) { + this.icon.visible = true + this.icon.setFrame(icon) + + this.text.x = 50 + } + + hideIcon() { + this.icon.visible = false + + this.text.x = 0 + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/menu/SenseiMenuItem.scene b/src/scenes/games/sensei/menu/SenseiMenuItem.scene new file mode 100644 index 00000000..e7c32933 --- /dev/null +++ b/src/scenes/games/sensei/menu/SenseiMenuItem.scene @@ -0,0 +1,79 @@ +{ + "id": "09107910-1b0d-415a-80fe-5bf424b8d97a", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "8aaa5e07-e214-4a10-9b85-d7015b5bbea1", + "label": "container_1", + "components": [], + "list": [ + { + "type": "Image", + "id": "e7941825-34f8-48c0-a2b3-90bb401eb0a7", + "label": "item", + "components": [ + "Button" + ], + "Button.spriteName": "menu/item", + "Button.hoverCallback": "() => this.onOver()", + "Button.hoverOutCallback": "() => this.onOut()", + "Button.callback": "() => this.onUp()", + "Button.activeFrame": false, + "texture": { + "key": "sensei", + "frame": "menu/item" + } + }, + { + "type": "Text", + "id": "6cf0380e-497d-4d1a-b1cf-89d06a966ee5", + "label": "text", + "scope": "CLASS", + "components": [], + "originX": 0.5, + "originY": 0.5, + "text": "This is a menu item!", + "fixedWidth": 720, + "fontFamily": "CCComiccrazy", + "fontSize": "26px", + "color": "#000" + }, + { + "type": "Image", + "id": "45287d6d-9695-479a-92e0-873e03a1f6af", + "label": "icon", + "scope": "CLASS", + "components": [], + "texture": { + "key": "sensei", + "frame": "menu/icon/belt" + }, + "x": -342, + "originX": 0.5106382978723404, + "originY": 0.5106382978723404, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/widget/SenseiWidget.js b/src/scenes/games/sensei/widget/SenseiWidget.js new file mode 100644 index 00000000..1fd3f692 --- /dev/null +++ b/src/scenes/games/sensei/widget/SenseiWidget.js @@ -0,0 +1,206 @@ +export const preload = { + key: 'sensei-pack', + url: 'assets/media/games/sensei/sensei-pack.json', + loadString: ['loading', 'sensei'] +} + +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Interactive from "../../../components/Interactive"; +import SenseiSprite from "./sprite/SenseiSprite"; +import SenseiAward from "./award/SenseiAward"; +import SenseiSpeech from "./speech/SenseiSpeech"; +/* START-USER-IMPORTS */ + +import * as sequences from '../config/SenseiSequences' + +/* END-USER-IMPORTS */ + +export default class SenseiWidget extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Image} */ + this.bg; + /** @type {SenseiSprite} */ + this.senseiSprite; + /** @type {Phaser.GameObjects.Sprite} */ + this.hideout; + /** @type {SenseiAward} */ + this.award; + /** @type {SenseiSpeech} */ + this.speech; + + + // bg + const bg = scene.add.image(604, 565, "sensei", "bg"); + this.add(bg); + + // senseiSprite + const senseiSprite = new SenseiSprite(scene, 178, 332); + this.add(senseiSprite); + + // hideout + const hideout = scene.add.sprite(988, 486, "sensei", "hideout/hideout0001"); + hideout.setOrigin(0.5005599104143337, 0.5); + hideout.visible = false; + this.add(hideout); + + // award + const award = new SenseiAward(scene, 1112, 571); + award.visible = false; + this.add(award); + + // speech + const speech = new SenseiSpeech(scene, 937, 204); + speech.visible = false; + this.add(speech); + + // bg (components) + new Interactive(bg); + + this.bg = bg; + this.senseiSprite = senseiSprite; + this.hideout = hideout; + this.award = award; + this.speech = speech; + + /* START-USER-CTR-CODE */ + + this.currentSequence + this.currentSequenceIndex = 0 + + this.rankId = 1 + + this.addBackgroundEvent('pointerup', this.forwardSequence, this) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + get beltString() { + return this.getString(`belt_${this.rankId}`) + } + + get speechIndex() { + return this.getIndex(this.speech) + } + + show() { + this.hideAll() + + super.show() + + this.scene.events.emit('sensei_ready') + } + + close() { + this.currentSequence = null + this.currentSequenceIndex = 0 + + this.hideAll() + + super.close() + } + + addBackgroundEvent(event, callback, context) { + this.bg.on(event, callback, context) + } + + rankUp(rank) { + this.rankId = Phaser.Math.Clamp(rank, 1, 9) + + if (rank > 9) { + this.startSequence(sequences.maskAward) + } else { + this.startSequence(sequences.beltAward) + } + } + + startSequence(sequence) { + // Pass SenseiWidget dependency + this.currentSequence = sequence(this) + + this.currentSequenceIndex = 0 + this.updateSequence() + } + + forwardSequence() { + if (!this.currentSequence) { + return + } + + if (this.currentSequenceIndex === this.currentSequence.length - 1) { + return + } + + this.currentSequenceIndex++ + this.updateSequence() + } + + updateSequence() { + if (!this.currentSequence) { + return + } + + this.currentSequence[this.currentSequenceIndex]() + } + + showSpeech(text) { + this.speech.show(text) + this.playTalk() + } + + hideSpeech() { + this.speech.close() + this.playWait() + } + + playTalk() { + this.senseiSprite.playTalk() + } + + playWait() { + this.senseiSprite.playWait() + } + + showBelt() { + this.award.showBelt(this.rankId) + } + + showMask() { + this.award.showMask() + } + + hideAward() { + this.award.close() + } + + showHideout() { + this.hideout.visible = true + this.hideout.play('hideout') + } + + hideHideout() { + this.hideout.visible = false + } + + hideAll() { + this.hideSpeech() + this.hideAward() + this.hideHideout() + } + + leaveGame() { + this.close() + this.world.room.sendLeaveGame() + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/widget/SenseiWidget.scene b/src/scenes/games/sensei/widget/SenseiWidget.scene new file mode 100644 index 00000000..2f24c083 --- /dev/null +++ b/src/scenes/games/sensei/widget/SenseiWidget.scene @@ -0,0 +1,101 @@ +{ + "id": "fbf6af33-9518-47c9-b5a9-fd3beb3a5292", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "6c8b4abc-527b-4fb7-86e5-ce92b00f7ca6", + "label": "container_1", + "list": [ + { + "type": "Image", + "id": "06e66bb6-5a49-4833-8a26-681a8126ce3b", + "label": "bg", + "scope": "CLASS", + "components": [ + "Interactive" + ], + "texture": { + "key": "sensei", + "frame": "bg" + }, + "x": 604, + "y": 565 + }, + { + "prefabId": "05d04137-c915-4f19-ba6c-2d937cd558d7", + "id": "e7df3b1d-4174-48f4-a459-8ee32d5c0805", + "unlock": [ + "x", + "y" + ], + "label": "senseiSprite", + "scope": "CLASS", + "x": 178, + "y": 332 + }, + { + "type": "Sprite", + "id": "285d21e7-04d7-4494-a425-7cff536c0c7a", + "label": "hideout", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "hideout/hideout0001" + }, + "x": 988, + "y": 486, + "originX": 0.5005599104143337, + "visible": false + }, + { + "prefabId": "897d8990-9358-4074-882a-e64ab2e43e6d", + "id": "d7b7ee82-0eb5-4a93-9f9f-ebb2c2c4eb8d", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "award", + "scope": "CLASS", + "x": 1112, + "y": 571, + "visible": false + }, + { + "prefabId": "21b5b7fb-31dc-48aa-beea-a780ae0fe510", + "id": "536fa4b4-a12b-4d0c-8c76-00af7f45305c", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "speech", + "scope": "CLASS", + "x": 937, + "y": 204, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/widget/award/SenseiAward.js b/src/scenes/games/sensei/widget/award/SenseiAward.js new file mode 100644 index 00000000..97426ec9 --- /dev/null +++ b/src/scenes/games/sensei/widget/award/SenseiAward.js @@ -0,0 +1,105 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +/* START-USER-IMPORTS */ + +import BeltColors from '../../config/BeltColors' + +/* END-USER-IMPORTS */ + +export default class SenseiAward extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.belt; + /** @type {Phaser.GameObjects.Image} */ + this.color; + /** @type {Phaser.GameObjects.Image} */ + this.shadow; + /** @type {Phaser.GameObjects.Image} */ + this.ninja; + + + // belt + const belt = scene.add.image(0, 0, "sensei", "belt/belt"); + belt.setOrigin(0.5009784735812133, 0.5); + this.add(belt); + + // color + const color = scene.add.image(4, -1, "sensei", "belt/color"); + color.setOrigin(0.503448275862069, 0.5); + this.add(color); + + // shadow + const shadow = scene.add.image(1, 6, "sensei", "belt/shadow"); + shadow.setOrigin(0.5, 0.5014492753623189); + this.add(shadow); + + // ninja + const ninja = scene.add.image(0, 0, "sensei", "mask/mask"); + ninja.setOrigin(0.500823723228995, 0.5); + ninja.visible = false; + this.add(ninja); + + this.belt = belt; + this.color = color; + this.shadow = shadow; + this.ninja = ninja; + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + showBelt(rank) { + this.showBeltSprites(true) + this.color.tint = BeltColors[rank - 1] + + this.show() + } + + showMask() { + this.showBeltSprites(false) + this.show() + } + + show() { + super.show() + + this.addTweens() + } + + showBeltSprites(show) { + this.ninja.visible = !show + this.shadow.visible = show + this.color.visible = show + this.belt.visible = show + } + + addTweens() { + // Fade + this.scene.tweens.add({ + targets: this, + alpha: { from: 0, to: 1 }, + duration: 1450 + }) + + // Float + this.scene.tweens.add({ + targets: this, + y: this.y + 10, + duration: 333, + repeat: -1, + yoyo: true, + ease: Phaser.Math.Easing.Quadratic.InOut + }) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/widget/award/SenseiAward.scene b/src/scenes/games/sensei/widget/award/SenseiAward.scene new file mode 100644 index 00000000..7feb2d8e --- /dev/null +++ b/src/scenes/games/sensei/widget/award/SenseiAward.scene @@ -0,0 +1,83 @@ +{ + "id": "897d8990-9358-4074-882a-e64ab2e43e6d", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "4293c1e1-13e0-421c-b2c6-9861f7b3a64d", + "label": "container_2", + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "5c3eb48a-06c1-43a3-b1de-e46dd3528d27", + "label": "belt", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "belt/belt" + }, + "originX": 0.5009784735812133 + }, + { + "type": "Image", + "id": "6e2bd2fb-89af-4878-80f3-f79d68a62080", + "label": "color", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "belt/color" + }, + "x": 4, + "y": -1, + "originX": 0.503448275862069 + }, + { + "type": "Image", + "id": "562d5386-43e0-4b1c-aa6e-cfa33c8928f6", + "label": "shadow", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "belt/shadow" + }, + "x": 1, + "y": 6, + "originY": 0.5014492753623189 + }, + { + "type": "Image", + "id": "ef2c6293-d6b9-4fc4-9d07-cbcbd5d7faa7", + "label": "ninja", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "mask/mask" + }, + "originX": 0.500823723228995, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/widget/speech/SenseiSpeech.js b/src/scenes/games/sensei/widget/speech/SenseiSpeech.js new file mode 100644 index 00000000..e0068d6f --- /dev/null +++ b/src/scenes/games/sensei/widget/speech/SenseiSpeech.js @@ -0,0 +1,46 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class SenseiSpeech extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Text} */ + this.dialog; + + + // bubble + const bubble = scene.add.image(0, 0, "sensei", "bubble"); + bubble.setOrigin(0.5004574565416285, 0.5); + this.add(bubble); + + // dialog + const dialog = scene.add.text(26, -72, "", {}); + dialog.setOrigin(0.5, 0.5); + dialog.text = "This example text\nI have put it on three lines\nNot a good haiku"; + dialog.setStyle({ "align": "center", "color": "#000", "fixedWidth":1030,"fontFamily": "CCComiccrazy", "fontSize": "40px" }); + this.add(dialog); + + this.dialog = dialog; + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + show(text) { + this.dialog.text = text + + super.show() + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/widget/speech/SenseiSpeech.scene b/src/scenes/games/sensei/widget/speech/SenseiSpeech.scene new file mode 100644 index 00000000..bca75c92 --- /dev/null +++ b/src/scenes/games/sensei/widget/speech/SenseiSpeech.scene @@ -0,0 +1,60 @@ +{ + "id": "21b5b7fb-31dc-48aa-beea-a780ae0fe510", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "e5d528fa-be3b-4a85-ad3b-5d125d347631", + "label": "container_2", + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "39370fe4-3a26-44fa-b7ac-a9ed6d763109", + "label": "bubble", + "texture": { + "key": "sensei", + "frame": "bubble" + }, + "originX": 0.5004574565416285 + }, + { + "type": "Text", + "id": "9914f859-c661-4847-9b24-1a350014193a", + "label": "dialog", + "scope": "CLASS", + "x": 26, + "y": -72, + "originX": 0.5, + "originY": 0.5, + "text": "This example text\nI have put it on three lines\nNot a good haiku", + "fixedWidth": 1030, + "align": "center", + "fontFamily": "CCComiccrazy", + "fontSize": "40px", + "color": "#000" + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/games/sensei/widget/sprite/SenseiSprite.js b/src/scenes/games/sensei/widget/sprite/SenseiSprite.js new file mode 100644 index 00000000..5d90fcb3 --- /dev/null +++ b/src/scenes/games/sensei/widget/sprite/SenseiSprite.js @@ -0,0 +1,91 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class SenseiSprite extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {Phaser.GameObjects.Sprite} */ + this.base; + /** @type {Phaser.GameObjects.Sprite} */ + this.beard; + /** @type {Phaser.GameObjects.Sprite} */ + this.beak; + /** @type {Phaser.GameObjects.Sprite} */ + this.eyebrows; + /** @type {Phaser.GameObjects.Sprite} */ + this.front; + + + // base + const base = scene.add.sprite(0, 0, "sensei", "sensei/talk/base/base0001"); + base.setOrigin(0.501039501039501, 0.5); + this.add(base); + + // beard + const beard = scene.add.sprite(66, 118, "sensei", "sensei/talk/beard/beard0001"); + this.add(beard); + + // beak + const beak = scene.add.sprite(84, -111, "sensei", "sensei/talk/beak/beak0001"); + beak.setOrigin(0.5, 0.5037593984962406); + this.add(beak); + + // eyebrows + const eyebrows = scene.add.sprite(45, -148, "sensei", "sensei/talk/eyebrows/eyebrows0001"); + eyebrows.setOrigin(0.5, 0.5027624309392266); + this.add(eyebrows); + + // front + const front = scene.add.sprite(71, 182, "sensei", "sensei/talk/front/front0001"); + front.setOrigin(0.5009487666034156, 0.5); + this.add(front); + + this.base = base; + this.beard = beard; + this.beak = beak; + this.eyebrows = eyebrows; + this.front = front; + + /* START-USER-CTR-CODE */ + + this.currentAnim + + this.playWait() + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + playTalk() { + this.playAnims('talk') + } + + playWait() { + this.playAnims('wait') + } + + playAnims(key) { + if (key === this.currentAnim) { + return + } + + this.currentAnim = key + + this.base.play(`${key}/base`) + this.beak.play(`${key}/beak`) + this.beard.play(`${key}/beard`) + this.eyebrows.play(`${key}/eyebrows`) + this.front.play(`${key}/front`) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/games/sensei/widget/sprite/SenseiSprite.scene b/src/scenes/games/sensei/widget/sprite/SenseiSprite.scene new file mode 100644 index 00000000..4fe81e1b --- /dev/null +++ b/src/scenes/games/sensei/widget/sprite/SenseiSprite.scene @@ -0,0 +1,94 @@ +{ + "id": "05d04137-c915-4f19-ba6c-2d937cd558d7", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "cd072e2a-a2e4-46a5-8808-9f05596ea6bf", + "label": "container_2", + "list": [ + { + "type": "Sprite", + "id": "239209aa-cd82-49d7-bc0d-7e1526fcf9a0", + "label": "base", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "sensei/talk/base/base0001" + }, + "originX": 0.501039501039501 + }, + { + "type": "Sprite", + "id": "10bcd89a-7f3b-422c-95a3-591f6bdfd528", + "label": "beard", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "sensei/talk/beard/beard0001" + }, + "x": 66, + "y": 118 + }, + { + "type": "Sprite", + "id": "1f15b8e8-4bc2-4d8d-be15-5da03a121018", + "label": "beak", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "sensei/talk/beak/beak0001" + }, + "x": 84, + "y": -111, + "originY": 0.5037593984962406 + }, + { + "type": "Sprite", + "id": "8368fd3d-03ce-4524-b9cd-84f9b22c76b8", + "label": "eyebrows", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "sensei/talk/eyebrows/eyebrows0001" + }, + "x": 45, + "y": -148, + "originY": 0.5027624309392266 + }, + { + "type": "Sprite", + "id": "f8ddd89e-07bd-4d19-a71e-2f7c0ccb247c", + "label": "front", + "scope": "CLASS", + "texture": { + "key": "sensei", + "frame": "sensei/talk/front/front0001" + }, + "x": 71, + "y": 182, + "originX": 0.5009487666034156 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/interface/game/main/Main.js b/src/scenes/interface/game/main/Main.js index a209f91e..270f631c 100644 --- a/src/scenes/interface/game/main/Main.js +++ b/src/scenes/interface/game/main/Main.js @@ -14,6 +14,7 @@ import Moderator from '../moderator/Moderator' import PlayerCard from '../playercard/PlayerCard' import Safe from '../floating/safe/Safe' import Settings from '../settings/Settings' +import Waddle from '../waddle/Waddle' /* START OF COMPILED CODE */ @@ -23,12 +24,12 @@ export default class Main extends BaseScene { constructor() { super("Main"); - /** @type {Phaser.GameObjects.Container} */ - this.onlinePopup; /** @type {Phaser.GameObjects.Image} */ this.popup; /** @type {Phaser.GameObjects.Text} */ this.popupText; + /** @type {Phaser.GameObjects.Container} */ + this.onlinePopup; /** @type {ChatLog} */ this.chatLog; /** @type {Phaser.GameObjects.Image} */ @@ -37,12 +38,14 @@ export default class Main extends BaseScene { this.request_button; /** @type {Phaser.GameObjects.Sprite} */ this.mod_m; - /** @type {Phaser.GameObjects.Layer} */ - this.widgetLayer; + /** @type {Waddle} */ + this.waddle; /** @type {Buddy} */ this.buddy; /** @type {PlayerCard} */ this.playerCard; + /** @type {Phaser.GameObjects.Layer} */ + this.widgetLayer; /** @type {ActionsMenu} */ this.actionsMenu; /** @type {EmotesMenu} */ @@ -53,7 +56,7 @@ export default class Main extends BaseScene { this.moderator; /** @type {Settings} */ this.settings; - /** @type {Array} */ + /** @type {Array} */ this.hideOnSleep; @@ -168,6 +171,11 @@ export default class Main extends BaseScene { // widgetLayer const widgetLayer = this.add.layer(); + // waddle + const waddle = new Waddle(this, 1099, 332); + waddle.visible = false; + widgetLayer.add(waddle); + // buddy const buddy = new Buddy(this, 1140, 436); buddy.visible = false; @@ -204,7 +212,7 @@ export default class Main extends BaseScene { settings.visible = false; // lists - const hideOnSleep = [settings, moderator, playerCard, buddy]; + const hideOnSleep = [settings, moderator, playerCard, buddy, waddle]; // dock (components) new Interactive(dock); @@ -307,16 +315,17 @@ export default class Main extends BaseScene { mod_buttonSimpleButton.hoverOutCallback = () => this.onModOut(); mod_buttonSimpleButton.callback = () => this.onModClick(); - this.onlinePopup = onlinePopup; this.popup = popup; this.popupText = popupText; + this.onlinePopup = onlinePopup; this.chatLog = chatLog; this.crosshair = crosshair; this.request_button = request_button; this.mod_m = mod_m; - this.widgetLayer = widgetLayer; + this.waddle = waddle; this.buddy = buddy; this.playerCard = playerCard; + this.widgetLayer = widgetLayer; this.actionsMenu = actionsMenu; this.emotesMenu = emotesMenu; this.safe = safe; diff --git a/src/scenes/interface/game/main/Main.scene b/src/scenes/interface/game/main/Main.scene index 67ab7134..01b1f080 100644 --- a/src/scenes/interface/game/main/Main.scene +++ b/src/scenes/interface/game/main/Main.scene @@ -65,7 +65,6 @@ "type": "Image", "id": "aa9caccb-a731-4b3b-bfe5-984fe2f6d4ac", "label": "chat_icon", - "components": [], "texture": { "key": "main", "frame": "chat-icon" @@ -95,7 +94,6 @@ "type": "Image", "id": "b192506d-5e8d-4220-98d0-60ad0d1e2e65", "label": "emote_icon", - "components": [], "texture": { "key": "main", "frame": "emote-icon" @@ -125,7 +123,6 @@ "type": "Image", "id": "e48d913a-1f46-4bcc-ae4b-2bb6b5e7add7", "label": "action_icon", - "components": [], "texture": { "key": "main", "frame": "action-icon" @@ -155,7 +152,6 @@ "type": "Image", "id": "0b686bbe-3796-4b9d-b965-ee59d7380e1f", "label": "snowball_icon", - "components": [], "texture": { "key": "main", "frame": "snowball-icon" @@ -185,7 +181,6 @@ "type": "Image", "id": "9891188b-feea-49f2-8a70-4d5e85546a7c", "label": "chat_send_icon", - "components": [], "texture": { "key": "main", "frame": "chat-icon" @@ -215,7 +210,6 @@ "type": "Image", "id": "71da470c-c4ad-4f6e-9aa1-ddc2aed0743f", "label": "badge_member", - "components": [], "texture": { "key": "main", "frame": "badge-member" @@ -245,7 +239,6 @@ "type": "Image", "id": "9fe13e03-fd99-450c-81f6-cf6220c3c28c", "label": "buddies_icon", - "components": [], "texture": { "key": "main", "frame": "buddies-icon" @@ -275,7 +268,6 @@ "type": "Image", "id": "c3de3562-d313-43a0-b5c1-fa0cc197473a", "label": "igloo_icon", - "components": [], "texture": { "key": "main", "frame": "igloo-icon" @@ -305,7 +297,6 @@ "type": "Image", "id": "2dd95bb8-62eb-4d8a-916e-734bc44b3c9d", "label": "help_icon", - "components": [], "texture": { "key": "main", "frame": "help-icon" @@ -318,7 +309,6 @@ "id": "fcd23835-76eb-4b24-bcc1-920fa5429d8f", "label": "onlinePopup", "scope": "CLASS", - "components": [], "x": 1155, "y": 849, "visible": false, @@ -328,7 +318,6 @@ "id": "795c7f78-2f45-46e5-b2dd-de88c796aa68", "label": "popup", "scope": "CLASS", - "components": [], "texture": { "key": "main", "frame": "buddy-online" @@ -340,7 +329,6 @@ "id": "7cf83357-cb16-4ae2-94c0-49e37796db74", "label": "popupText", "scope": "CLASS", - "components": [], "x": -6, "originX": 0.5, "originY": 0.5, @@ -361,10 +349,8 @@ ], "label": "chatLog", "scope": "CLASS", - "components": [], "x": 760, - "y": 12, - "nestedPrefabs": [] + "y": 12 }, { "type": "Image", @@ -472,7 +458,6 @@ "id": "6dca3f2a-91a7-4ed4-8cf2-5a0ddf89d4c9", "label": "mod_m", "scope": "CLASS", - "components": [], "texture": { "key": "main", "frame": "mod/m" @@ -485,8 +470,21 @@ "id": "a205badf-674d-4f0f-bb3e-e687b24d30e9", "label": "widgetLayer", "scope": "CLASS", - "components": [], "list": [ + { + "prefabId": "032db1d9-1eac-4321-b4b3-ef359e514589", + "id": "0040eb03-91ac-4caf-8c26-67b736b50f60", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "waddle", + "scope": "CLASS", + "x": 1099, + "y": 332, + "visible": false + }, { "prefabId": "27889184-8ae4-4103-ab57-1cbad21b7401", "id": "9acd4a58-cbf9-4751-b96a-2822f121af9c", @@ -497,11 +495,9 @@ ], "label": "buddy", "scope": "CLASS", - "components": [], "x": 1140, "y": 436, - "visible": false, - "nestedPrefabs": [] + "visible": false }, { "prefabId": "aa26f680-5a55-46f1-b89f-e40211af8a8d", @@ -513,11 +509,9 @@ ], "label": "playerCard", "scope": "CLASS", - "components": [], "x": 446, "y": 436, - "visible": false, - "nestedPrefabs": [] + "visible": false } ] }, @@ -531,11 +525,9 @@ ], "label": "actionsMenu", "scope": "CLASS", - "components": [], "x": 366, "y": 864, - "visible": false, - "nestedPrefabs": [] + "visible": false }, { "prefabId": "0dee3174-7c8b-4158-b686-0fbea0d0c1f1", @@ -547,11 +539,9 @@ ], "label": "emotesMenu", "scope": "CLASS", - "components": [], "x": 306, "y": 864, - "visible": false, - "nestedPrefabs": [] + "visible": false }, { "prefabId": "847139cb-5cc3-48bc-be0b-14aabf820c56", @@ -563,11 +553,9 @@ ], "label": "safe", "scope": "CLASS", - "components": [], "x": 246, "y": 925, - "visible": false, - "nestedPrefabs": [] + "visible": false }, { "prefabId": "d44a536e-8824-4c11-8cdd-649f5629a29c", @@ -579,11 +567,9 @@ ], "label": "moderator", "scope": "CLASS", - "components": [], "x": 760, "y": 480, - "visible": false, - "nestedPrefabs": [] + "visible": false }, { "prefabId": "f2e8b538-6469-4a45-b23d-beac8cbf03a0", @@ -595,11 +581,9 @@ ], "label": "settings", "scope": "CLASS", - "components": [], "x": 760, "y": 480, - "visible": false, - "nestedPrefabs": [] + "visible": false } ], "plainObjects": [], @@ -607,7 +591,7 @@ "app": "Phaser Editor 2D - Scene Editor", "url": "https://phasereditor2d.com", "contentType": "phasereditor2d.core.scene.SceneContentType", - "version": 3 + "version": 4 }, "lists": [ { @@ -617,7 +601,8 @@ "4904443b-abe1-429f-9557-f064db674790", "7b10953c-f288-40da-8b3f-44af0dea100d", "9770a528-0c5a-4720-a6db-eabd53c787e1", - "9acd4a58-cbf9-4751-b96a-2822f121af9c" + "9acd4a58-cbf9-4751-b96a-2822f121af9c", + "0040eb03-91ac-4caf-8c26-67b736b50f60" ] } ] diff --git a/src/scenes/interface/game/playercard/inventory/Inventory.js b/src/scenes/interface/game/playercard/inventory/Inventory.js index 84e42a84..33a4cc87 100644 --- a/src/scenes/interface/game/playercard/inventory/Inventory.js +++ b/src/scenes/interface/game/playercard/inventory/Inventory.js @@ -234,6 +234,8 @@ export default class Inventory extends BaseContainer { this.pageSize = 12 this.filter = null + this.cardDeckId = 821 + this.inventoryLoader = new InventoryLoader(scene, this) this.inventory_bg.setInteractive({ pixelPerfect: true }) @@ -302,6 +304,11 @@ export default class Inventory extends BaseContainer { if (!item || !item.id || !item.active) return + if (item.id === this.cardDeckId) { + this.interface.loadWidget('NinjaProgress') + return + } + this.network.send('update_player', { item: item.id }) } diff --git a/src/scenes/interface/game/waddle/Waddle.js b/src/scenes/interface/game/waddle/Waddle.js new file mode 100644 index 00000000..0306ef78 --- /dev/null +++ b/src/scenes/interface/game/waddle/Waddle.js @@ -0,0 +1,149 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import DraggableContainer from "../../../components/DraggableContainer"; +import WaddleItem from "./waddle_item/WaddleItem"; +import Button from "../../../components/Button"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class Waddle extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Text} */ + this.text; + /** @type {WaddleItem[]} */ + this.items; + + + // bg + const bg = scene.add.image(0, -16, "main", "waddle"); + this.add(bg); + + // tab + const tab = scene.add.image(0, -190, "main", "tab-2"); + this.add(tab); + + // waddle_item_3 + const waddle_item_3 = new WaddleItem(scene, 0, 100); + this.add(waddle_item_3); + + // waddle_item_2 + const waddle_item_2 = new WaddleItem(scene, 0, 48); + this.add(waddle_item_2); + + // waddle_item_1 + const waddle_item_1 = new WaddleItem(scene, 0, -4); + this.add(waddle_item_1); + + // waddle_item + const waddle_item = new WaddleItem(scene, 0, -56); + this.add(waddle_item); + + // text + const text = scene.add.text(0, -122, "", {}); + text.setOrigin(0.5, 0.5); + text.setStyle({ "align": "center", "color": "#000000", "fixedWidth":420,"fontFamily": "Arial Narrow", "fontSize": "32px" }); + this.add(text); + + // x_button + const x_button = scene.add.image(178, -126, "main", "blue-button"); + this.add(x_button); + + // blue_x + const blue_x = scene.add.image(178, -128, "main", "blue-x"); + this.add(blue_x); + + // lists + const items = [waddle_item, waddle_item_1, waddle_item_2, waddle_item_3]; + + // this (components) + const thisDraggableContainer = new DraggableContainer(this); + thisDraggableContainer.handle = bg; + + // x_button (components) + const x_buttonButton = new Button(x_button); + x_buttonButton.spriteName = "blue-button"; + x_buttonButton.callback = () => this.close(); + + this.text = text; + this.items = items; + + /* START-USER-CTR-CODE */ + + this.activeWaddleId = null + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + get activeWaddle() { + return this.world.room.waddles[this.activeWaddleId] + } + + get activeWaddleContainer() { + return this.getWaddleContainer(this.activeWaddleId) + } + + getWaddleContainer(waddle) { + return this.world.room.getWaddle(waddle) + } + + getSeatPoint(waddle, seat) { + return this.getWaddleContainer(waddle)[`seat${seat}`] + } + + getDonePoint() { + return this.getWaddleContainer(waddle)[`done${seat}`] + } + + setText(game) { + this.text.text = this.getString(game) + } + + show(waddle, seat, game) { + this.activeWaddleId = waddle + this.enterSeat(waddle, seat) + + this.setText(game) + + this.items.map(item => item.hideItem()) + + for (let [index, username] of this.activeWaddle.entries()) { + this.items[index].setItem(username) + } + + super.show() + } + + close() { + this.network.send('leave_waddle') + + this.leaveSeat() + this.activeWaddleId = null + + super.close() + } + + updateWaddle(waddle, seat, username) { + if (waddle === this.activeWaddleId) { + this.items[seat].setItem(username) + } + } + + enterSeat(waddle, seat) { + this.world.client.sendMoveToSeat(waddle, seat, 'waddle') + } + + leaveSeat() { + this.world.client.sendLeaveSeat() + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/interface/game/waddle/Waddle.scene b/src/scenes/interface/game/waddle/Waddle.scene new file mode 100644 index 00000000..1c39bfee --- /dev/null +++ b/src/scenes/interface/game/waddle/Waddle.scene @@ -0,0 +1,155 @@ +{ + "id": "032db1d9-1eac-4321-b4b3-ef359e514589", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "729c65f6-2998-4823-97ff-2ba3f648dd9a", + "label": "container_1", + "components": [ + "DraggableContainer" + ], + "DraggableContainer.handle": "bg", + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "0cec3224-ef6f-45d5-923a-3dbff900f144", + "label": "bg", + "texture": { + "key": "main", + "frame": "waddle" + }, + "y": -16 + }, + { + "type": "Image", + "id": "d38ec65c-43c9-47d1-8bba-246ed197fe3e", + "label": "tab", + "texture": { + "key": "main", + "frame": "tab-2" + }, + "y": -190 + }, + { + "prefabId": "64de3f26-671d-4f1f-acbf-49ffc1eeaa13", + "id": "bbf90d57-ecc8-4fb3-8815-2baa1aec66a7", + "unlock": [ + "x", + "y" + ], + "label": "waddle_item_3", + "x": 0, + "y": 100 + }, + { + "prefabId": "64de3f26-671d-4f1f-acbf-49ffc1eeaa13", + "id": "3588c486-0906-4565-b511-30925e03b354", + "unlock": [ + "x", + "y" + ], + "label": "waddle_item_2", + "x": 0, + "y": 48 + }, + { + "prefabId": "64de3f26-671d-4f1f-acbf-49ffc1eeaa13", + "id": "d72de3b8-e1eb-4a3d-9f4a-438af119150a", + "unlock": [ + "x", + "y" + ], + "label": "waddle_item_1", + "x": 0, + "y": -4 + }, + { + "prefabId": "64de3f26-671d-4f1f-acbf-49ffc1eeaa13", + "id": "7fb1cdfc-e641-4100-8c14-86058fbefa78", + "unlock": [ + "x", + "y" + ], + "label": "waddle_item", + "x": 0, + "y": -56 + }, + { + "type": "Text", + "id": "635f3877-d38a-4af7-b58d-0687b7fec219", + "label": "text", + "scope": "CLASS", + "y": -122, + "originX": 0.5, + "originY": 0.5, + "fixedWidth": 420, + "align": "center", + "fontFamily": "Arial Narrow", + "fontSize": "32px", + "color": "#000000" + }, + { + "type": "Image", + "id": "0de71d0d-c87f-4d7c-b0c5-3b77c406342c", + "label": "x_button", + "components": [ + "Button" + ], + "Button.spriteName": "blue-button", + "Button.callback": "() => this.close()", + "texture": { + "key": "main", + "frame": "blue-button" + }, + "x": 178, + "y": -126 + }, + { + "type": "Image", + "id": "fd73af25-c9a4-4206-b587-e346a9db89b5", + "label": "blue_x", + "texture": { + "key": "main", + "frame": "blue-x" + }, + "x": 178, + "y": -128 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + }, + "lists": [ + { + "id": "17823bb3-1f2a-4ce2-9ec2-ca96304c0105", + "label": "items", + "objectIds": [ + "7fb1cdfc-e641-4100-8c14-86058fbefa78", + "d72de3b8-e1eb-4a3d-9f4a-438af119150a", + "3588c486-0906-4565-b511-30925e03b354", + "bbf90d57-ecc8-4fb3-8815-2baa1aec66a7" + ] + } + ] +} \ No newline at end of file diff --git a/src/scenes/interface/game/waddle/waddle_item/WaddleItem.js b/src/scenes/interface/game/waddle/waddle_item/WaddleItem.js new file mode 100644 index 00000000..e5773e38 --- /dev/null +++ b/src/scenes/interface/game/waddle/waddle_item/WaddleItem.js @@ -0,0 +1,93 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../../base/BaseContainer"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class WaddleItem extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.icon; + /** @type {Phaser.GameObjects.Text} */ + this.username; + + + // waddle_item + const waddle_item = scene.add.image(0, 0, "main", "buddy/item"); + this.add(waddle_item); + + // icon + const icon = scene.add.image(-137, 0, "main", "buddy/icon-load"); + this.add(icon); + + // username + const username = scene.add.text(25, 0, "", {}); + username.setOrigin(0.5, 0.5); + username.text = "Empty"; + username.setStyle({ "fixedWidth":270,"fontFamily": "Arial", "fontSize": "24px" }); + this.add(username); + + this.icon = icon; + this.username = username; + + /* START-USER-CTR-CODE */ + + this.id = null + + this.spinnerTween = scene.tweens.add({ + targets: this.icon, + angle: { from: 0, to: 180 }, + duration: 900, + repeat: -1, + ease: 'Cubic' + }) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + + setItem(username) { + this.show() + + this.username.text = username ? username : 'Empty' + + if (username) { + this.stopSpinner() + + let texture = username.toLowerCase() == this.world.client.penguin.username.toLowerCase() + ? 'player' + : 'none' + + this.icon.setTexture('main', `buddy/icon-${texture}`) + + } else { + this.startSpinner() + + this.icon.setTexture('main', 'buddy/icon-load') + } + } + + hideItem() { + this.close() + this.stopSpinner() + } + + startSpinner() { + this.spinnerTween.seek(0) + this.spinnerTween.resume() + } + + stopSpinner() { + this.spinnerTween.pause() + this.icon.angle = 0 + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/interface/game/waddle/waddle_item/WaddleItem.scene b/src/scenes/interface/game/waddle/waddle_item/WaddleItem.scene new file mode 100644 index 00000000..a9031aa6 --- /dev/null +++ b/src/scenes/interface/game/waddle/waddle_item/WaddleItem.scene @@ -0,0 +1,67 @@ +{ + "id": "64de3f26-671d-4f1f-acbf-49ffc1eeaa13", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "460fe828-2a5c-48b5-8e64-374780777136", + "label": "container_1", + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "13a92a5e-3ca1-4352-a27b-7613c2243d6b", + "label": "waddle_item", + "texture": { + "key": "main", + "frame": "buddy/item" + } + }, + { + "type": "Image", + "id": "93bfe9fd-2100-410e-928f-454002f9117d", + "label": "icon", + "scope": "CLASS", + "texture": { + "key": "main", + "frame": "buddy/icon-load" + }, + "x": -137 + }, + { + "type": "Text", + "id": "730363a5-60c9-4711-80a6-53256a41c9bd", + "label": "username", + "scope": "CLASS", + "x": 25, + "originX": 0.5, + "originY": 0.5, + "text": "Empty", + "fixedWidth": 270, + "fontFamily": "Arial", + "fontSize": "24px" + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/interface/instructions/ninjabelts/NinjaBelts.js b/src/scenes/interface/instructions/ninjabelts/NinjaBelts.js new file mode 100644 index 00000000..5e00bef0 --- /dev/null +++ b/src/scenes/interface/instructions/ninjabelts/NinjaBelts.js @@ -0,0 +1,51 @@ +export const preload = { + key: 'ninjabelts-pack', + url: 'assets/media/interface/instructions/ninjabelts/ninjabelts-pack.json', + loadString: ['loading', 'ninjabelts'] +} + +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Interactive from "../../../components/Interactive"; +import Button from "../../../components/Button"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class NinjaBelts extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + // block + const block = scene.add.rectangle(0, 0, 1520, 960); + block.isFilled = true; + block.fillColor = 0; + block.fillAlpha = 0.2; + this.add(block); + + // bg + const bg = scene.add.image(0, -24, "ninjabelts", "bg"); + this.add(bg); + + // close + const close = scene.add.image(216, -399, "ninjabelts", "close"); + this.add(close); + + // block (components) + new Interactive(block); + + // close (components) + const closeButton = new Button(close); + closeButton.spriteName = "close"; + closeButton.callback = () => this.close(); + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + /* START-USER-CODE */ + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/interface/instructions/ninjabelts/NinjaBelts.scene b/src/scenes/interface/instructions/ninjabelts/NinjaBelts.scene new file mode 100644 index 00000000..0d561672 --- /dev/null +++ b/src/scenes/interface/instructions/ninjabelts/NinjaBelts.scene @@ -0,0 +1,73 @@ +{ + "id": "0b35598f-c5d1-4f33-afad-43fd460f959a", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "37458a2b-3844-483f-b834-fac9d35b618b", + "label": "container_1", + "x": 760, + "y": 480, + "list": [ + { + "type": "Rectangle", + "id": "b7cfc003-3ecc-487f-8eee-a2571916ac7f", + "label": "block", + "components": [ + "Interactive" + ], + "isFilled": true, + "fillColor": "#000000", + "fillAlpha": 0.2, + "width": 1520, + "height": 960 + }, + { + "type": "Image", + "id": "19d25413-a385-4e9f-9857-51bd99aff7c4", + "label": "bg", + "texture": { + "key": "ninjabelts", + "frame": "bg" + }, + "y": -24 + }, + { + "type": "Image", + "id": "b7aac7a3-2340-4824-99cc-eae0a589dd3d", + "label": "close", + "components": [ + "Button" + ], + "Button.spriteName": "close", + "Button.callback": "() => this.close()", + "texture": { + "key": "ninjabelts", + "frame": "close" + }, + "x": 216, + "y": -399 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/interface/instructions/ninjainstructions/NinjaInstructions.js b/src/scenes/interface/instructions/ninjainstructions/NinjaInstructions.js new file mode 100644 index 00000000..8fd03b87 --- /dev/null +++ b/src/scenes/interface/instructions/ninjainstructions/NinjaInstructions.js @@ -0,0 +1,51 @@ +export const preload = { + key: 'ninjainstructions-pack', + url: 'assets/media/interface/instructions/ninjainstructions/ninjainstructions-pack.json', + loadString: ['loading', 'ninjainstructions'] +} + +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Interactive from "../../../components/Interactive"; +import Button from "../../../components/Button"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class NinjaInstructions extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + // block + const block = scene.add.rectangle(0, 0, 1520, 960); + block.isFilled = true; + block.fillColor = 0; + block.fillAlpha = 0.2; + this.add(block); + + // bg + const bg = scene.add.image(0, -24, "ninjainstructions", "bg"); + this.add(bg); + + // close + const close = scene.add.image(216, -399, "ninjainstructions", "close"); + this.add(close); + + // block (components) + new Interactive(block); + + // close (components) + const closeButton = new Button(close); + closeButton.spriteName = "close"; + closeButton.callback = () => this.close(); + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + /* START-USER-CODE */ + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/interface/instructions/ninjainstructions/NinjaInstructions.scene b/src/scenes/interface/instructions/ninjainstructions/NinjaInstructions.scene new file mode 100644 index 00000000..b459dc72 --- /dev/null +++ b/src/scenes/interface/instructions/ninjainstructions/NinjaInstructions.scene @@ -0,0 +1,73 @@ +{ + "id": "1df77fc4-8fe1-4fbe-9607-335bbd0715d1", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "90f3b620-7810-4e32-ae43-6e0cb91084d9", + "label": "container_1", + "x": 760, + "y": 480, + "list": [ + { + "type": "Rectangle", + "id": "62f29b87-a3db-4de4-8c18-c156a2b82e9b", + "label": "block", + "components": [ + "Interactive" + ], + "isFilled": true, + "fillColor": "#000000", + "fillAlpha": 0.2, + "width": 1520, + "height": 960 + }, + { + "type": "Image", + "id": "c1995031-6189-41a1-87ce-c923fe14fdfa", + "label": "bg", + "texture": { + "key": "ninjainstructions", + "frame": "bg" + }, + "y": -24 + }, + { + "type": "Image", + "id": "cabb9816-92a8-4c33-9252-32bf2511ecf5", + "label": "close", + "components": [ + "Button" + ], + "Button.spriteName": "close", + "Button.callback": "() => this.close()", + "texture": { + "key": "ninjainstructions", + "frame": "close" + }, + "x": 216, + "y": -399 + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/rooms/RoomScene.js b/src/scenes/rooms/RoomScene.js index e7a58d02..bd4a5b8d 100644 --- a/src/scenes/rooms/RoomScene.js +++ b/src/scenes/rooms/RoomScene.js @@ -21,6 +21,7 @@ export default class RoomScene extends BaseScene { this.waiting = [] this.tables + this.waddles } get client() { @@ -46,6 +47,7 @@ export default class RoomScene extends BaseScene { this.setMusic() if (this.tables) this.sendGetTables() + if (this.waddles) this.sendGetWaddles() this.interface.showInterface() } @@ -102,10 +104,18 @@ export default class RoomScene extends BaseScene { this.network.send('get_tables') } + sendGetWaddles() { + this.network.send('get_waddles') + } + getTable(id) { return this[`table${id}`] } + getWaddle(id) { + return this[`waddle${id}`] + } + setTables(tables) { this.tables = tables @@ -133,6 +143,10 @@ export default class RoomScene extends BaseScene { } } + setWaddles(waddles) { + this.waddles = waddles + } + onSnowballComplete(x, y) { // To be overridden in derived class } diff --git a/src/scenes/rooms/book/Book.js b/src/scenes/rooms/book/Book.js index 71fb0c59..37e97536 100644 --- a/src/scenes/rooms/book/Book.js +++ b/src/scenes/rooms/book/Book.js @@ -1,6 +1,8 @@ import RoomScene from '../RoomScene' -import { Button, MoveTo, ShowHint } from '@components/components' +import { Button } from '@components/components' + +import MancalaTable from '@scenes/shared_prefabs/tables/mancala/MancalaTable' /* START OF COMPILED CODE */ @@ -10,14 +12,29 @@ export default class Book extends RoomScene { constructor() { super("Book"); - /** @type {Phaser.GameObjects.Image[]} */ + /** @type {MancalaTable} */ + this.table104; + /** @type {MancalaTable} */ + this.table103; + /** @type {MancalaTable} */ + this.table102; + /** @type {MancalaTable} */ + this.table101; + /** @type {MancalaTable} */ + this.table100; + /** @type {Array} */ this.sort; /* START-USER-CTR-CODE */ this.roomTriggers = { - 'coffee': () => this.triggerRoom(110, 1120, 800) + 'coffee': () => this.triggerRoom(110, 1120, 800), + 'table100': () => this.triggerTable('mancala', 100), + 'table101': () => this.triggerTable('mancala', 101), + 'table102': () => this.triggerTable('mancala', 102), + 'table103': () => this.triggerTable('mancala', 103), + 'table104': () => this.triggerTable('mancala', 104) } this.music = '1' @@ -57,28 +74,32 @@ export default class Book extends RoomScene { const poster = this.add.image(720, 97, "book", "poster"); poster.setOrigin(0, 0); - // table - const table = this.add.image(951, 446, "book", "table"); - table.setOrigin(0.5043478260869565, 0.46); + // table104 + const table104 = new MancalaTable(this, 1208, 755); + this.add.existing(table104); + table104.visible = true; - // table_1 - const table_1 = this.add.image(652, 444, "book", "table"); - table_1.setOrigin(0.5043478260869565, 0.46); + // table103 + const table103 = new MancalaTable(this, 806, 690); + this.add.existing(table103); + table103.visible = true; - // table_2 - const table_2 = this.add.image(426, 646, "book", "table"); - table_2.setOrigin(0.5043478260869565, 0.46); + // table102 + const table102 = new MancalaTable(this, 426, 652); + this.add.existing(table102); + table102.visible = true; - // table_3 - const table_3 = this.add.image(806, 684, "book", "table"); - table_3.setOrigin(0.5043478260869565, 0.46); + // table101 + const table101 = new MancalaTable(this, 951, 453); + this.add.existing(table101); + table101.visible = true; - // table_4 - const table_4 = this.add.image(1208, 748, "book", "table"); - table_4.setOrigin(0.5043478260869565, 0.46); + // table100 + const table100 = new MancalaTable(this, 651, 450); + this.add.existing(table100); // lists - const sort = [table_4, table_3, table_2, table_1, table, chair_table, chair_front, chair_back]; + const sort = [chair_table, chair_front, chair_back, table100, table101, table102, table103, table104]; // books (components) const booksButton = new Button(books); @@ -91,51 +112,11 @@ export default class Book extends RoomScene { posterButton.activeFrame = false; posterButton.pixelPerfect = true; - // table (components) - const tableButton = new Button(table); - tableButton.spriteName = "table"; - tableButton.activeFrame = false; - tableButton.pixelPerfect = true; - new MoveTo(table); - const tableShowHint = new ShowHint(table); - tableShowHint.text = "mancala_hint"; - - // table_1 (components) - const table_1Button = new Button(table_1); - table_1Button.spriteName = "table"; - table_1Button.activeFrame = false; - table_1Button.pixelPerfect = true; - new MoveTo(table_1); - const table_1ShowHint = new ShowHint(table_1); - table_1ShowHint.text = "mancala_hint"; - - // table_2 (components) - const table_2Button = new Button(table_2); - table_2Button.spriteName = "table"; - table_2Button.activeFrame = false; - table_2Button.pixelPerfect = true; - new MoveTo(table_2); - const table_2ShowHint = new ShowHint(table_2); - table_2ShowHint.text = "mancala_hint"; - - // table_3 (components) - const table_3Button = new Button(table_3); - table_3Button.spriteName = "table"; - table_3Button.activeFrame = false; - table_3Button.pixelPerfect = true; - new MoveTo(table_3); - const table_3ShowHint = new ShowHint(table_3); - table_3ShowHint.text = "mancala_hint"; - - // table_4 (components) - const table_4Button = new Button(table_4); - table_4Button.spriteName = "table"; - table_4Button.activeFrame = false; - table_4Button.pixelPerfect = true; - new MoveTo(table_4); - const table_4ShowHint = new ShowHint(table_4); - table_4ShowHint.text = "mancala_hint"; - + this.table104 = table104; + this.table103 = table103; + this.table102 = table102; + this.table101 = table101; + this.table100 = table100; this.sort = sort; this.events.emit("scene-awake"); diff --git a/src/scenes/rooms/book/Book.scene b/src/scenes/rooms/book/Book.scene index 23adf885..797369e6 100644 --- a/src/scenes/rooms/book/Book.scene +++ b/src/scenes/rooms/book/Book.scene @@ -109,114 +109,87 @@ "originY": 0 }, { - "type": "Image", - "id": "3121adc6-b8d0-49cc-80b9-fb0f907a2521", - "label": "table", - "components": [ - "Button", - "MoveTo", - "ShowHint" + "prefabId": "a31bdfcd-9fee-4e6e-b421-7edb8b8c7008", + "id": "fd51e368-47f4-47df-a384-50368708110b", + "unlock": [ + "x", + "y", + "visible" ], - "Button.spriteName": "table", - "Button.activeFrame": false, - "Button.pixelPerfect": true, - "ShowHint.text": "mancala_hint", - "texture": { - "key": "book", - "frame": "table" - }, - "x": 951, - "y": 446, - "originX": 0.5043478260869565, - "originY": 0.46 + "label": "table104", + "scope": "CLASS", + "components": [], + "x": 1208, + "y": 755, + "visible": true, + "nestedPrefabs": [], + "list": [] }, { - "type": "Image", - "id": "7c76f0f6-08ce-42ce-95ce-ee2bf30214e8", - "label": "table_1", - "components": [ - "Button", - "MoveTo", - "ShowHint" + "prefabId": "a31bdfcd-9fee-4e6e-b421-7edb8b8c7008", + "id": "62ad80e4-03cd-46be-bc97-88dde203d0d1", + "unlock": [ + "x", + "y", + "visible" ], - "Button.spriteName": "table", - "Button.activeFrame": false, - "Button.pixelPerfect": true, - "ShowHint.text": "mancala_hint", - "texture": { - "key": "book", - "frame": "table" - }, - "x": 652, - "y": 444, - "originX": 0.5043478260869565, - "originY": 0.46 + "label": "table103", + "scope": "CLASS", + "components": [], + "x": 806, + "y": 690, + "visible": true, + "nestedPrefabs": [], + "list": [] }, { - "type": "Image", - "id": "69f50215-4fae-4002-ab73-5ae417038520", - "label": "table_2", - "components": [ - "Button", - "MoveTo", - "ShowHint" + "prefabId": "a31bdfcd-9fee-4e6e-b421-7edb8b8c7008", + "id": "026d8187-0e90-4d76-a2e4-3ab5b5463b36", + "unlock": [ + "x", + "y", + "visible" ], - "Button.spriteName": "table", - "Button.activeFrame": false, - "Button.pixelPerfect": true, - "ShowHint.text": "mancala_hint", - "texture": { - "key": "book", - "frame": "table" - }, + "label": "table102", + "scope": "CLASS", + "components": [], "x": 426, - "y": 646, - "originX": 0.5043478260869565, - "originY": 0.46 + "y": 652, + "visible": true, + "nestedPrefabs": [], + "list": [] }, { - "type": "Image", - "id": "83d3b05f-42f9-41da-afe7-f1970727b41c", - "label": "table_3", - "components": [ - "Button", - "MoveTo", - "ShowHint" + "prefabId": "a31bdfcd-9fee-4e6e-b421-7edb8b8c7008", + "id": "3c0f4d88-d38f-49e0-b90d-2389d36e4d50", + "unlock": [ + "x", + "y", + "visible" ], - "Button.spriteName": "table", - "Button.activeFrame": false, - "Button.pixelPerfect": true, - "ShowHint.text": "mancala_hint", - "texture": { - "key": "book", - "frame": "table" - }, - "x": 806, - "y": 684, - "originX": 0.5043478260869565, - "originY": 0.46 + "label": "table101", + "scope": "CLASS", + "components": [], + "x": 951, + "y": 453, + "visible": true, + "nestedPrefabs": [], + "list": [] }, { - "type": "Image", - "id": "2f6c3924-ae43-4b24-b896-637751ef5008", - "label": "table_4", - "components": [ - "Button", - "MoveTo", - "ShowHint" + "prefabId": "a31bdfcd-9fee-4e6e-b421-7edb8b8c7008", + "id": "641156f5-cc76-4144-8f1a-e4648f3ddfc7", + "unlock": [ + "x", + "y" ], - "Button.spriteName": "table", - "Button.activeFrame": false, - "Button.pixelPerfect": true, - "ShowHint.text": "mancala_hint", - "texture": { - "key": "book", - "frame": "table" - }, - "x": 1208, - "y": 748, - "originX": 0.5043478260869565, - "originY": 0.46 + "label": "table100", + "scope": "CLASS", + "components": [], + "x": 651, + "y": 450, + "nestedPrefabs": [], + "list": [] } ], "plainObjects": [], @@ -231,14 +204,14 @@ "id": "8bce6f73-b3e7-48cf-9a02-7e5412e5397d", "label": "sort", "objectIds": [ - "2f6c3924-ae43-4b24-b896-637751ef5008", - "83d3b05f-42f9-41da-afe7-f1970727b41c", - "69f50215-4fae-4002-ab73-5ae417038520", - "7c76f0f6-08ce-42ce-95ce-ee2bf30214e8", - "3121adc6-b8d0-49cc-80b9-fb0f907a2521", "c9532f84-c85e-4dc4-bae4-aaaf8557e69e", "587577af-f9ef-471a-849a-09a07bc115b1", - "3f068263-f4f5-4b66-88b0-078006583a4c" + "3f068263-f4f5-4b66-88b0-078006583a4c", + "641156f5-cc76-4144-8f1a-e4648f3ddfc7", + "3c0f4d88-d38f-49e0-b90d-2389d36e4d50", + "026d8187-0e90-4d76-a2e4-3ab5b5463b36", + "62ad80e4-03cd-46be-bc97-88dde203d0d1", + "fd51e368-47f4-47df-a384-50368708110b" ] } ] diff --git a/src/scenes/rooms/dojo/Dojo.js b/src/scenes/rooms/dojo/Dojo.js new file mode 100644 index 00000000..f22ebf20 --- /dev/null +++ b/src/scenes/rooms/dojo/Dojo.js @@ -0,0 +1,238 @@ +/* START OF COMPILED CODE */ + +import RoomScene from "../RoomScene"; +import Button from "../../components/Button"; +import MoveTo from "../../components/MoveTo"; +import Waddle203 from "./waddle/Waddle203"; +import Waddle202 from "./waddle/Waddle202"; +import Waddle201 from "./waddle/Waddle201"; +import Waddle200 from "./waddle/Waddle200"; +import Zone from "../../components/Zone"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class Dojo extends RoomScene { + + constructor() { + super("Dojo"); + + /** @type {Phaser.GameObjects.Sprite} */ + this.sensei; + /** @type {Waddle203} */ + this.waddle203; + /** @type {Waddle202} */ + this.waddle202; + /** @type {Waddle201} */ + this.waddle201; + /** @type {Waddle200} */ + this.waddle200; + /** @type {Phaser.GameObjects.Image} */ + this.cards; + /** @type {Phaser.GameObjects.Sprite} */ + this.cauldronSmoke; + + + /* START-USER-CTR-CODE */ + + this.roomTriggers = { + 'door': () => this.triggerRoom(321, 780, 640), + 'sensei': () => this.triggerGame(951), + 'table200': () => this.triggerMat(200), + 'table201': () => this.triggerMat(201), + 'table202': () => this.triggerMat(202), + 'table203': () => this.triggerMat(203) + } + + this.roomAnims = true + this.music = 21 + + this.waddles = {} + + /* END-USER-CTR-CODE */ + } + + /** @returns {void} */ + _preload() { + + this.load.pack("dojo-pack", "assets/media/rooms/dojo/dojo-pack.json"); + } + + /** @returns {void} */ + _create() { + + // bg + const bg = this.add.image(-4, -2, "dojo", "bg"); + bg.setOrigin(0, 0); + + // door + const door = this.add.image(358, 421, "dojo", "door"); + door.setOrigin(0, 0); + + // sensei + const sensei = this.add.sprite(973, 372, "dojo", "sensei/sensei0001"); + sensei.setOrigin(0, 0); + + // tree + const tree = this.add.image(1198, 451, "dojo", "tree"); + tree.setOrigin(0, 0); + + // instructionsPoster + const instructionsPoster = this.add.image(631, 375, "dojo", "instructions_poster"); + instructionsPoster.setOrigin(0, 0); + + // instructions + const instructions = this.add.image(647, 381, "dojo", "instructions"); + instructions.setOrigin(0, 0); + + // legendPoster + const legendPoster = this.add.image(512, 375, "dojo", "legend_poster"); + legendPoster.setOrigin(0, 0); + + // legend + const legend = this.add.image(534, 382, "dojo", "legend"); + legend.setOrigin(0, 0); + + // waddle203 + const waddle203 = new Waddle203(this, 1188, 813); + this.add.existing(waddle203); + + // waddle202 + const waddle202 = new Waddle202(this, 358, 813); + this.add.existing(waddle202); + + // waddle201 + const waddle201 = new Waddle201(this, 930, 706); + this.add.existing(waddle201); + + // waddle200 + const waddle200 = new Waddle200(this, 616, 706); + this.add.existing(waddle200); + + // zone + const zone = this.add.rectangle(1096, 490, 246, 217); + zone.alpha = 0.5; + zone.isFilled = true; + zone.fillColor = 65280; + + // cards + const cards = this.add.image(1342, 819, "dojo", "cards"); + cards.setOrigin(0, 0); + cards.visible = false; + + // cauldronBack + const cauldronBack = this.add.image(918, 540, "dojo", "cauldron/back"); + cauldronBack.setOrigin(0, 0); + + // cauldronSmoke + const cauldronSmoke = this.add.sprite(954, 511, "dojo", "cauldron/smoke/smoke0001"); + + // cauldronFront + const cauldronFront = this.add.image(926, 550, "dojo", "cauldron/front"); + cauldronFront.setOrigin(0, 0); + + // door (components) + const doorButton = new Button(door); + doorButton.spriteName = "door"; + doorButton.activeFrame = false; + doorButton.pixelPerfect = true; + const doorMoveTo = new MoveTo(door); + doorMoveTo.x = 400; + doorMoveTo.y = 570; + + // instructionsPoster (components) + const instructionsPosterButton = new Button(instructionsPoster); + instructionsPosterButton.spriteName = "instructions_poster"; + instructionsPosterButton.callback = () => this.interface.loadWidget('NinjaInstructions'); + instructionsPosterButton.activeFrame = false; + + // legendPoster (components) + const legendPosterButton = new Button(legendPoster); + legendPosterButton.spriteName = "legend_poster"; + legendPosterButton.callback = () => this.interface.loadWidget('NinjaBelts'); + legendPosterButton.activeFrame = false; + + // waddle203 (prefab fields) + waddle203.moveToX = 1160; + waddle203.moveToY = 750; + + // waddle202 (prefab fields) + waddle202.moveToX = 380; + waddle202.moveToY = 750; + + // waddle201 (prefab fields) + waddle201.moveToX = 920; + waddle201.moveToY = 650; + + // waddle200 (prefab fields) + waddle200.moveToX = 620; + waddle200.moveToY = 650; + + // zone (components) + const zoneZone = new Zone(zone); + zoneZone.hoverCallback = () => this.onSenseiOver(); + zoneZone.hoverOutCallback = () => this.onSenseiOut(); + const zoneMoveTo = new MoveTo(zone); + zoneMoveTo.x = 1096; + zoneMoveTo.y = 640; + + // cards (components) + const cardsButton = new Button(cards); + cardsButton.spriteName = "cards"; + cardsButton.callback = () => this.interface.loadWidget('NinjaProgress'); + cardsButton.activeFrame = false; + cardsButton.pixelPerfect = true; + + this.sensei = sensei; + this.waddle203 = waddle203; + this.waddle202 = waddle202; + this.waddle201 = waddle201; + this.waddle200 = waddle200; + this.cards = cards; + this.cauldronSmoke = cauldronSmoke; + + this.events.emit("scene-awake"); + } + + + /* START-USER-CODE */ + + get userHasDeck() { + return this.world.client.inventory.award.includes(821) + } + + create() { + super.create() + + this.cauldronSmoke.play('smoke') + + this.cards.depth = 960 + this.cards.visible = this.userHasDeck + } + + onSenseiOver() { + this.sensei.play('sensei_over') + } + + onSenseiOut() { + this.sensei.play('sensei_out') + } + + triggerMat(id) { + if (!this.userHasDeck) { + this.interface.prompt.showWindow(this.getString('starter_deck_prompt')) + return + } + + const text = this.getString('card_prompt') + + this.interface.prompt.showWindow(text, 'dual', () => { + this.network.send('join_waddle', { waddle: id }) + + this.interface.prompt.window.visible = false + }) + } + + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/rooms/dojo/Dojo.scene b/src/scenes/rooms/dojo/Dojo.scene new file mode 100644 index 00000000..71048e85 --- /dev/null +++ b/src/scenes/rooms/dojo/Dojo.scene @@ -0,0 +1,298 @@ +{ + "id": "96e2fae2-4efb-453e-b4a7-eb969252c5bd", + "sceneType": "SCENE", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "RoomScene", + "preloadMethodName": "_preload", + "preloadPackFiles": [ + "yukon/assets/media/rooms/dojo/dojo-pack.json" + ], + "createMethodName": "_create", + "sceneKey": "Dojo", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Image", + "id": "cdad28c5-a6ef-4041-b7a2-d1b67c1d0477", + "label": "bg", + "texture": { + "key": "dojo", + "frame": "bg" + }, + "x": -4, + "y": -2, + "originX": 0, + "originY": 0 + }, + { + "type": "Image", + "id": "33712c63-4115-4d75-9703-cdd091474e6f", + "label": "door", + "components": [ + "Button", + "MoveTo" + ], + "Button.spriteName": "door", + "Button.activeFrame": false, + "Button.pixelPerfect": true, + "MoveTo.x": "400", + "MoveTo.y": "570", + "texture": { + "key": "dojo", + "frame": "door" + }, + "x": 358, + "y": 421, + "originX": 0, + "originY": 0 + }, + { + "type": "Sprite", + "id": "779d8848-0d5a-4c38-93b2-1a51b4c294ed", + "label": "sensei", + "scope": "CLASS", + "texture": { + "key": "dojo", + "frame": "sensei/sensei0001" + }, + "x": 973, + "y": 372, + "originX": 0, + "originY": 0 + }, + { + "type": "Image", + "id": "11187da2-2046-47b4-8601-6631421f43ee", + "label": "tree", + "texture": { + "key": "dojo", + "frame": "tree" + }, + "x": 1198, + "y": 451, + "originX": 0, + "originY": 0 + }, + { + "type": "Image", + "id": "cd9d3eb7-a7fe-4f75-9077-53b8c1a6eae5", + "label": "instructionsPoster", + "components": [ + "Button" + ], + "Button.spriteName": "instructions_poster", + "Button.callback": "() => this.interface.loadWidget('NinjaInstructions')", + "Button.activeFrame": false, + "texture": { + "key": "dojo", + "frame": "instructions_poster" + }, + "x": 631, + "y": 375, + "originX": 0, + "originY": 0 + }, + { + "type": "Image", + "id": "88e43778-3321-4a69-98e8-eadd7d082a6c", + "label": "instructions", + "texture": { + "key": "dojo", + "frame": "instructions" + }, + "x": 647, + "y": 381, + "originX": 0, + "originY": 0 + }, + { + "type": "Image", + "id": "6532e5fe-0d2d-483d-9631-2f8abf2f93e1", + "label": "legendPoster", + "components": [ + "Button" + ], + "Button.spriteName": "legend_poster", + "Button.callback": "() => this.interface.loadWidget('NinjaBelts')", + "Button.activeFrame": false, + "texture": { + "key": "dojo", + "frame": "legend_poster" + }, + "x": 512, + "y": 375, + "originX": 0, + "originY": 0 + }, + { + "type": "Image", + "id": "89add8ea-3226-4101-914b-de9e1f6c0d4f", + "label": "legend", + "texture": { + "key": "dojo", + "frame": "legend" + }, + "x": 534, + "y": 382, + "originX": 0, + "originY": 0 + }, + { + "prefabId": "d60128ff-4079-4464-b688-dbdea3c52e20", + "id": "4ed85538-b1e1-4391-864a-12165867f2d7", + "unlock": [ + "x", + "y", + "moveToX", + "moveToY" + ], + "label": "waddle203", + "scope": "CLASS", + "moveToX": 1160, + "moveToY": 750, + "x": 1188, + "y": 813 + }, + { + "prefabId": "d6d50181-a9a9-48b9-b4a2-6096b1ad8542", + "id": "930e64d7-509f-4b66-b069-17ddd8228123", + "unlock": [ + "x", + "y", + "moveToX", + "moveToY" + ], + "label": "waddle202", + "scope": "CLASS", + "moveToX": 380, + "moveToY": 750, + "x": 358, + "y": 813 + }, + { + "prefabId": "7554bcf3-656c-48ed-97c0-e431350f8ba5", + "id": "7353dd85-f3a9-44e6-a1b5-efce0d80b611", + "unlock": [ + "x", + "y", + "moveToX", + "moveToY" + ], + "label": "waddle201", + "scope": "CLASS", + "moveToX": 920, + "moveToY": 650, + "x": 930, + "y": 706 + }, + { + "prefabId": "20915166-b810-4ea6-b9c1-62e694ee975c", + "id": "fb495e97-de4b-464b-91cc-e79480e53d2d", + "unlock": [ + "x", + "y", + "moveToX", + "moveToY" + ], + "label": "waddle200", + "scope": "CLASS", + "moveToX": 620, + "moveToY": 650, + "x": 616, + "y": 706 + }, + { + "type": "Rectangle", + "id": "ddcfe359-2530-437e-8de5-d24516fa0c13", + "label": "zone", + "components": [ + "Zone", + "MoveTo" + ], + "Zone.hoverCallback": "() => this.onSenseiOver()", + "Zone.hoverOutCallback": "() => this.onSenseiOut()", + "MoveTo.x": "1096", + "MoveTo.y": "640", + "x": 1096, + "y": 490, + "alpha": 0.5, + "isFilled": true, + "fillColor": "#00ff00", + "width": 246, + "height": 217 + }, + { + "type": "Image", + "id": "f8368dcf-c97e-4fd6-8b91-a1e62e7bd9c1", + "label": "cards", + "scope": "CLASS", + "components": [ + "Button" + ], + "Button.spriteName": "cards", + "Button.callback": "() => this.interface.loadWidget('NinjaProgress')", + "Button.activeFrame": false, + "Button.pixelPerfect": true, + "texture": { + "key": "dojo", + "frame": "cards" + }, + "x": 1342, + "y": 819, + "originX": 0, + "originY": 0, + "visible": false + }, + { + "type": "Image", + "id": "f254b723-f462-4cbf-b100-dadcf1b8e2a0", + "label": "cauldronBack", + "texture": { + "key": "dojo", + "frame": "cauldron/back" + }, + "x": 918, + "y": 540, + "originX": 0, + "originY": 0 + }, + { + "type": "Sprite", + "id": "af14ada9-4962-47b2-a360-9f49189a5894", + "label": "cauldronSmoke", + "scope": "CLASS", + "texture": { + "key": "dojo", + "frame": "cauldron/smoke/smoke0001" + }, + "x": 954, + "y": 511 + }, + { + "type": "Image", + "id": "cb465f3b-f7c4-491c-9b8b-035cccf288c1", + "label": "cauldronFront", + "texture": { + "key": "dojo", + "frame": "cauldron/front" + }, + "x": 926, + "y": 550, + "originX": 0, + "originY": 0 + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + } +} \ No newline at end of file diff --git a/src/scenes/rooms/dojo/waddle/Waddle200.js b/src/scenes/rooms/dojo/waddle/Waddle200.js new file mode 100644 index 00000000..c59ac331 --- /dev/null +++ b/src/scenes/rooms/dojo/waddle/Waddle200.js @@ -0,0 +1,93 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Button from "../../../components/Button"; +import ShowHint from "../../../components/ShowHint"; +import SeatPoint from "../../../shared_prefabs/seat/SeatPoint"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class Waddle200 extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {SeatPoint} */ + this.done1; + /** @type {SeatPoint} */ + this.done0; + /** @type {SeatPoint} */ + this.seat1; + /** @type {SeatPoint} */ + this.seat0; + /** @type {number} */ + this.moveToX = 0; + /** @type {number} */ + this.moveToY = 0; + + + // mat + const mat = scene.add.image(0, 0, "dojo", "mat/mat_2"); + mat.setOrigin(0.5018450184501845, 0.5); + this.add(mat); + + // done1 + const done1 = new SeatPoint(scene, 51, -70); + done1.visible = false; + this.add(done1); + + // done0 + const done0 = new SeatPoint(scene, -49, -70); + done0.visible = false; + this.add(done0); + + // seat1 + const seat1 = new SeatPoint(scene, 71, -15); + seat1.visible = false; + this.add(seat1); + + // seat0 + const seat0 = new SeatPoint(scene, -60, -15); + seat0.visible = false; + this.add(seat0); + + // mat (components) + const matButton = new Button(mat); + matButton.spriteName = "mat/mat_2"; + matButton.activeFrame = false; + matButton.pixelPerfect = true; + const matShowHint = new ShowHint(mat); + matShowHint.text = "card_hint"; + + // seat1 (prefab fields) + seat1.sitFrame = 3; + seat1.donePoint = done1; + + // seat0 (prefab fields) + seat0.sitFrame = 7; + seat0.donePoint = done0; + + this.done1 = done1; + this.done0 = done0; + this.seat1 = seat1; + this.seat0 = seat0; + + /* START-USER-CTR-CODE */ + + mat.on('pointerup', (pointer) => { + if (pointer.button !== 0) { + return + } + + this.scene.world.client.sendMove(this.moveToX, this.moveToY) + }) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/rooms/dojo/waddle/Waddle200.scene b/src/scenes/rooms/dojo/waddle/Waddle200.scene new file mode 100644 index 00000000..5cc71baa --- /dev/null +++ b/src/scenes/rooms/dojo/waddle/Waddle200.scene @@ -0,0 +1,136 @@ +{ + "id": "20915166-b810-4ea6-b9c1-62e694ee975c", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "92e98aa4-f6b1-4b7b-bee2-08bc6a7b7bef", + "label": "container_1", + "list": [ + { + "type": "Image", + "id": "dd831ee5-3fa1-4d8e-adf4-273bf9ac6372", + "label": "mat", + "components": [ + "Button", + "ShowHint" + ], + "Button.spriteName": "mat/mat_2", + "Button.activeFrame": false, + "Button.pixelPerfect": true, + "ShowHint.text": "card_hint", + "texture": { + "key": "dojo", + "frame": "mat/mat_2" + }, + "originX": 0.5018450184501845 + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "8f21b06e-4da5-476f-b271-43aa77e5fe8a", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "done1", + "scope": "CLASS", + "x": 51, + "y": -70, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "8792809f-6079-417f-bf2c-dc42c7f25042", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "done0", + "scope": "CLASS", + "x": -49, + "y": -70, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "b3111e02-4116-43ee-98a5-e560f362f912", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint", + "visible" + ], + "label": "seat1", + "scope": "CLASS", + "sitFrame": 3, + "donePoint": "done1", + "x": 71, + "y": -15, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "996b84da-2630-4710-9b87-35e06176a0d1", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint", + "visible" + ], + "label": "seat0", + "scope": "CLASS", + "sitFrame": 7, + "donePoint": "done0", + "x": -60, + "y": -15, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + }, + "prefabProperties": [ + { + "name": "moveToX", + "label": "moveToX", + "tooltip": "moveToX", + "defValue": 0, + "customDefinition": false, + "type": { + "id": "number" + } + }, + { + "name": "moveToY", + "label": "moveToY", + "tooltip": "moveToY", + "defValue": 0, + "customDefinition": false, + "type": { + "id": "number" + } + } + ] +} \ No newline at end of file diff --git a/src/scenes/rooms/dojo/waddle/Waddle201.js b/src/scenes/rooms/dojo/waddle/Waddle201.js new file mode 100644 index 00000000..b2d9f364 --- /dev/null +++ b/src/scenes/rooms/dojo/waddle/Waddle201.js @@ -0,0 +1,95 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Button from "../../../components/Button"; +import ShowHint from "../../../components/ShowHint"; +import SeatPoint from "../../../shared_prefabs/seat/SeatPoint"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class Waddle201 extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {SeatPoint} */ + this.done1; + /** @type {SeatPoint} */ + this.done0; + /** @type {SeatPoint} */ + this.seat1; + /** @type {SeatPoint} */ + this.seat0; + /** @type {number} */ + this.moveToX = 0; + /** @type {number} */ + this.moveToY = 0; + + + this.scaleX = -1; + + // mat + const mat = scene.add.image(0, 0, "dojo", "mat/mat_2"); + mat.setOrigin(0.5018450184501845, 0.5); + this.add(mat); + + // done1 + const done1 = new SeatPoint(scene, -49, -70); + done1.visible = false; + this.add(done1); + + // done0 + const done0 = new SeatPoint(scene, 51, -70); + done0.visible = false; + this.add(done0); + + // seat1 + const seat1 = new SeatPoint(scene, -60, -15); + seat1.visible = false; + this.add(seat1); + + // seat0 + const seat0 = new SeatPoint(scene, 71, -15); + seat0.visible = false; + this.add(seat0); + + // mat (components) + const matButton = new Button(mat); + matButton.spriteName = "mat/mat_2"; + matButton.activeFrame = false; + matButton.pixelPerfect = true; + const matShowHint = new ShowHint(mat); + matShowHint.text = "card_hint"; + + // seat1 (prefab fields) + seat1.sitFrame = 7; + seat1.donePoint = done0; + + // seat0 (prefab fields) + seat0.sitFrame = 7; + seat0.donePoint = done1; + + this.done1 = done1; + this.done0 = done0; + this.seat1 = seat1; + this.seat0 = seat0; + + /* START-USER-CTR-CODE */ + + mat.on('pointerup', (pointer) => { + if (pointer.button !== 0) { + return + } + + this.scene.world.client.sendMove(this.moveToX, this.moveToY) + }) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/rooms/dojo/waddle/Waddle201.scene b/src/scenes/rooms/dojo/waddle/Waddle201.scene new file mode 100644 index 00000000..74fdd14f --- /dev/null +++ b/src/scenes/rooms/dojo/waddle/Waddle201.scene @@ -0,0 +1,137 @@ +{ + "id": "7554bcf3-656c-48ed-97c0-e431350f8ba5", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "92e98aa4-f6b1-4b7b-bee2-08bc6a7b7bef", + "label": "container_1", + "scaleX": -1, + "list": [ + { + "type": "Image", + "id": "dd831ee5-3fa1-4d8e-adf4-273bf9ac6372", + "label": "mat", + "components": [ + "Button", + "ShowHint" + ], + "Button.spriteName": "mat/mat_2", + "Button.activeFrame": false, + "Button.pixelPerfect": true, + "ShowHint.text": "card_hint", + "texture": { + "key": "dojo", + "frame": "mat/mat_2" + }, + "originX": 0.5018450184501845 + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "c336d9d0-0e2b-4870-b1e8-2f5c9af610b1", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "done1", + "scope": "CLASS", + "x": -49, + "y": -70, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "28d94049-6730-4144-99b5-1c292edddc84", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "done0", + "scope": "CLASS", + "x": 51, + "y": -70, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "857d21c9-ecc6-4bdb-a431-92b238a712b0", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint", + "visible" + ], + "label": "seat1", + "scope": "CLASS", + "sitFrame": 7, + "donePoint": "done0", + "x": -60, + "y": -15, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "6221be4c-7fee-4007-96f7-1b1500e20dd7", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint", + "visible" + ], + "label": "seat0", + "scope": "CLASS", + "sitFrame": 7, + "donePoint": "done1", + "x": 71, + "y": -15, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + }, + "prefabProperties": [ + { + "name": "moveToX", + "label": "moveToX", + "tooltip": "moveToX", + "defValue": 0, + "customDefinition": false, + "type": { + "id": "number" + } + }, + { + "name": "moveToY", + "label": "moveToY", + "tooltip": "moveToY", + "defValue": 0, + "customDefinition": false, + "type": { + "id": "number" + } + } + ] +} \ No newline at end of file diff --git a/src/scenes/rooms/dojo/waddle/Waddle202.js b/src/scenes/rooms/dojo/waddle/Waddle202.js new file mode 100644 index 00000000..98ae59af --- /dev/null +++ b/src/scenes/rooms/dojo/waddle/Waddle202.js @@ -0,0 +1,93 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Button from "../../../components/Button"; +import ShowHint from "../../../components/ShowHint"; +import SeatPoint from "../../../shared_prefabs/seat/SeatPoint"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class Waddle202 extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {SeatPoint} */ + this.done1; + /** @type {SeatPoint} */ + this.done0; + /** @type {SeatPoint} */ + this.seat1; + /** @type {SeatPoint} */ + this.seat0; + /** @type {number} */ + this.moveToX = 0; + /** @type {number} */ + this.moveToY = 0; + + + // mat + const mat = scene.add.image(0, 0, "dojo", "mat/mat_1"); + mat.setOrigin(0.5018450184501845, 0.5); + this.add(mat); + + // done1 + const done1 = new SeatPoint(scene, 69, -78); + done1.visible = false; + this.add(done1); + + // done0 + const done0 = new SeatPoint(scene, -30, -78); + done0.visible = false; + this.add(done0); + + // seat1 + const seat1 = new SeatPoint(scene, 77, -16); + seat1.visible = false; + this.add(seat1); + + // seat0 + const seat0 = new SeatPoint(scene, -54, -16); + seat0.visible = false; + this.add(seat0); + + // mat (components) + const matButton = new Button(mat); + matButton.spriteName = "mat/mat_1"; + matButton.activeFrame = false; + matButton.pixelPerfect = true; + const matShowHint = new ShowHint(mat); + matShowHint.text = "card_hint"; + + // seat1 (prefab fields) + seat1.sitFrame = 3; + seat1.donePoint = done1; + + // seat0 (prefab fields) + seat0.sitFrame = 7; + seat0.donePoint = done0; + + this.done1 = done1; + this.done0 = done0; + this.seat1 = seat1; + this.seat0 = seat0; + + /* START-USER-CTR-CODE */ + + mat.on('pointerup', (pointer) => { + if (pointer.button !== 0) { + return + } + + this.scene.world.client.sendMove(this.moveToX, this.moveToY) + }) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/rooms/dojo/waddle/Waddle202.scene b/src/scenes/rooms/dojo/waddle/Waddle202.scene new file mode 100644 index 00000000..b892ae6a --- /dev/null +++ b/src/scenes/rooms/dojo/waddle/Waddle202.scene @@ -0,0 +1,136 @@ +{ + "id": "d6d50181-a9a9-48b9-b4a2-6096b1ad8542", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "92e98aa4-f6b1-4b7b-bee2-08bc6a7b7bef", + "label": "container_1", + "list": [ + { + "type": "Image", + "id": "dd831ee5-3fa1-4d8e-adf4-273bf9ac6372", + "label": "mat", + "components": [ + "Button", + "ShowHint" + ], + "Button.spriteName": "mat/mat_1", + "Button.activeFrame": false, + "Button.pixelPerfect": true, + "ShowHint.text": "card_hint", + "texture": { + "key": "dojo", + "frame": "mat/mat_1" + }, + "originX": 0.5018450184501845 + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "15d4098a-2e57-4056-9c9e-14a81ad3362e", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "done1", + "scope": "CLASS", + "x": 69, + "y": -78, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "dbfd168d-a0ff-4e9b-a3c1-dc79843e1c10", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "done0", + "scope": "CLASS", + "x": -30, + "y": -78, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "e2529f8b-9377-4329-81b1-8038dbd04fcd", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint", + "visible" + ], + "label": "seat1", + "scope": "CLASS", + "sitFrame": 3, + "donePoint": "done1", + "x": 77, + "y": -16, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "c5ebb9a9-0910-4792-b474-60a809e6e3ee", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint", + "visible" + ], + "label": "seat0", + "scope": "CLASS", + "sitFrame": 7, + "donePoint": "done0", + "x": -54, + "y": -16, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + }, + "prefabProperties": [ + { + "name": "moveToX", + "label": "moveToX", + "tooltip": "moveToX", + "defValue": 0, + "customDefinition": false, + "type": { + "id": "number" + } + }, + { + "name": "moveToY", + "label": "moveToY", + "tooltip": "moveToY", + "defValue": 0, + "customDefinition": false, + "type": { + "id": "number" + } + } + ] +} \ No newline at end of file diff --git a/src/scenes/rooms/dojo/waddle/Waddle203.js b/src/scenes/rooms/dojo/waddle/Waddle203.js new file mode 100644 index 00000000..68feda0e --- /dev/null +++ b/src/scenes/rooms/dojo/waddle/Waddle203.js @@ -0,0 +1,95 @@ +/* START OF COMPILED CODE */ + +import BaseContainer from "../../../base/BaseContainer"; +import Button from "../../../components/Button"; +import ShowHint from "../../../components/ShowHint"; +import SeatPoint from "../../../shared_prefabs/seat/SeatPoint"; +/* START-USER-IMPORTS */ +/* END-USER-IMPORTS */ + +export default class Waddle203 extends BaseContainer { + + constructor(scene, x, y) { + super(scene, x ?? 0, y ?? 0); + + /** @type {SeatPoint} */ + this.done1; + /** @type {SeatPoint} */ + this.done0; + /** @type {SeatPoint} */ + this.seat1; + /** @type {SeatPoint} */ + this.seat0; + /** @type {number} */ + this.moveToX = 0; + /** @type {number} */ + this.moveToY = 0; + + + this.scaleX = -1; + + // mat + const mat = scene.add.image(0, 0, "dojo", "mat/mat_1"); + mat.setOrigin(0.5018450184501845, 0.5); + this.add(mat); + + // done1 + const done1 = new SeatPoint(scene, -30, -78); + done1.visible = false; + this.add(done1); + + // done0 + const done0 = new SeatPoint(scene, 69, -78); + done0.visible = false; + this.add(done0); + + // seat1 + const seat1 = new SeatPoint(scene, -54, -16); + seat1.visible = false; + this.add(seat1); + + // seat0 + const seat0 = new SeatPoint(scene, 77, -16); + seat0.visible = false; + this.add(seat0); + + // mat (components) + const matButton = new Button(mat); + matButton.spriteName = "mat/mat_1"; + matButton.activeFrame = false; + matButton.pixelPerfect = true; + const matShowHint = new ShowHint(mat); + matShowHint.text = "card_hint"; + + // seat1 (prefab fields) + seat1.sitFrame = 3; + seat1.donePoint = done0; + + // seat0 (prefab fields) + seat0.sitFrame = 7; + seat0.donePoint = done1; + + this.done1 = done1; + this.done0 = done0; + this.seat1 = seat1; + this.seat0 = seat0; + + /* START-USER-CTR-CODE */ + + mat.on('pointerup', (pointer) => { + if (pointer.button !== 0) { + return + } + + this.scene.world.client.sendMove(this.moveToX, this.moveToY) + }) + + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/rooms/dojo/waddle/Waddle203.scene b/src/scenes/rooms/dojo/waddle/Waddle203.scene new file mode 100644 index 00000000..4f623fac --- /dev/null +++ b/src/scenes/rooms/dojo/waddle/Waddle203.scene @@ -0,0 +1,137 @@ +{ + "id": "d60128ff-4079-4464-b688-dbdea3c52e20", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "autoImport": true, + "superClassName": "BaseContainer", + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "92e98aa4-f6b1-4b7b-bee2-08bc6a7b7bef", + "label": "container_1", + "scaleX": -1, + "list": [ + { + "type": "Image", + "id": "dd831ee5-3fa1-4d8e-adf4-273bf9ac6372", + "label": "mat", + "components": [ + "Button", + "ShowHint" + ], + "Button.spriteName": "mat/mat_1", + "Button.activeFrame": false, + "Button.pixelPerfect": true, + "ShowHint.text": "card_hint", + "texture": { + "key": "dojo", + "frame": "mat/mat_1" + }, + "originX": 0.5018450184501845 + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "dbfd168d-a0ff-4e9b-a3c1-dc79843e1c10", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "done1", + "scope": "CLASS", + "x": -30, + "y": -78, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "15d4098a-2e57-4056-9c9e-14a81ad3362e", + "unlock": [ + "x", + "y", + "visible" + ], + "label": "done0", + "scope": "CLASS", + "x": 69, + "y": -78, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "c5ebb9a9-0910-4792-b474-60a809e6e3ee", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint", + "visible" + ], + "label": "seat1", + "scope": "CLASS", + "sitFrame": 3, + "donePoint": "done0", + "x": -54, + "y": -16, + "visible": false + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "e2529f8b-9377-4329-81b1-8038dbd04fcd", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint", + "visible" + ], + "label": "seat0", + "scope": "CLASS", + "sitFrame": 7, + "donePoint": "done1", + "x": 77, + "y": -16, + "visible": false + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 4 + }, + "prefabProperties": [ + { + "name": "moveToX", + "label": "moveToX", + "tooltip": "moveToX", + "defValue": 0, + "customDefinition": false, + "type": { + "id": "number" + } + }, + { + "name": "moveToY", + "label": "moveToY", + "tooltip": "moveToY", + "defValue": 0, + "customDefinition": false, + "type": { + "id": "number" + } + } + ] +} \ No newline at end of file diff --git a/src/scenes/rooms/dojoext/DojoExt.js b/src/scenes/rooms/dojoext/DojoExt.js index 3a9e3302..ef75ca28 100644 --- a/src/scenes/rooms/dojoext/DojoExt.js +++ b/src/scenes/rooms/dojoext/DojoExt.js @@ -18,7 +18,7 @@ export default class DojoExt extends RoomScene { this.roomTriggers = { 'map': () => this.interface.loadWidget('Map'), - 'dojo': null, + 'dojo': () => this.triggerRoom(320, 400, 660), 'dojohide': null } diff --git a/src/scenes/shared_prefabs/tables/mancala/MancalaTable.js b/src/scenes/shared_prefabs/tables/mancala/MancalaTable.js new file mode 100644 index 00000000..e70cff2a --- /dev/null +++ b/src/scenes/shared_prefabs/tables/mancala/MancalaTable.js @@ -0,0 +1,78 @@ +import { Button, MoveTo, ShowHint } from '@components/components' + +import SeatPoint from '@scenes/shared_prefabs/seat/SeatPoint' + + +/* START OF COMPILED CODE */ + +export default class MancalaTable extends Phaser.GameObjects.Container { + + constructor(scene, x, y) { + super(scene, x ?? 760, y ?? 480); + + /** @type {Phaser.GameObjects.Image} */ + this.game; + /** @type {SeatPoint} */ + this.seat2; + /** @type {SeatPoint} */ + this.seat1; + + + // table + const table = scene.add.image(0, 0, "book", "table/table"); + table.setOrigin(0.5043478260869565, 0.4838709677419355); + this.add(table); + + // game + const game = scene.add.image(-2, -29, "book", "table/game"); + game.setOrigin(0.5046728971962616, 0.5102040816326531); + this.add(game); + + // done2 + const done2 = new SeatPoint(scene, -8, 89); + this.add(done2); + + // done1 + const done1 = new SeatPoint(scene, -114, 47); + this.add(done1); + + // seat2 + const seat2 = new SeatPoint(scene, 73, 22); + this.add(seat2); + + // seat1 + const seat1 = new SeatPoint(scene, -66, -29); + this.add(seat1); + + // game (components) + const gameButton = new Button(game); + gameButton.spriteName = "table/game"; + gameButton.activeFrame = false; + const gameMoveTo = new MoveTo(game); + gameMoveTo.x = this.x; + gameMoveTo.y = this.y; + const gameShowHint = new ShowHint(game); + gameShowHint.text = "mancala_hint"; + + // seat2 (prefab fields) + seat2.sitFrame = 20; + seat2.donePoint = done2; + + // seat1 (prefab fields) + seat1.sitFrame = 24; + seat1.donePoint = done1; + + this.game = game; + this.seat2 = seat2; + this.seat1 = seat1; + + /* START-USER-CTR-CODE */ + /* END-USER-CTR-CODE */ + } + + + /* START-USER-CODE */ + /* END-USER-CODE */ +} + +/* END OF COMPILED CODE */ diff --git a/src/scenes/shared_prefabs/tables/mancala/MancalaTable.scene b/src/scenes/shared_prefabs/tables/mancala/MancalaTable.scene new file mode 100644 index 00000000..87b9ef19 --- /dev/null +++ b/src/scenes/shared_prefabs/tables/mancala/MancalaTable.scene @@ -0,0 +1,135 @@ +{ + "id": "a31bdfcd-9fee-4e6e-b421-7edb8b8c7008", + "sceneType": "PREFAB", + "settings": { + "compilerInsertSpaces": true, + "javaScriptInitFieldsInConstructor": true, + "exportClass": true, + "preloadMethodName": "", + "preloadPackFiles": [], + "createMethodName": "", + "borderWidth": 1520, + "borderHeight": 960 + }, + "displayList": [ + { + "type": "Container", + "id": "1ea9b4a8-891e-41b1-9e51-dc480b7d635c", + "label": "container_1", + "components": [], + "x": 760, + "y": 480, + "list": [ + { + "type": "Image", + "id": "1be28fd3-9b42-4599-84e2-c2a1f87246a2", + "label": "table", + "components": [], + "texture": { + "key": "book", + "frame": "table/table" + }, + "originX": 0.5043478260869565, + "originY": 0.4838709677419355 + }, + { + "type": "Image", + "id": "e5ab1cc4-03c9-4f3f-af98-c434b0b7d459", + "label": "game", + "scope": "CLASS", + "components": [ + "Button", + "MoveTo", + "ShowHint" + ], + "Button.spriteName": "table/game", + "Button.activeFrame": false, + "MoveTo.x": "this.x", + "MoveTo.y": "this.y", + "ShowHint.text": "mancala_hint", + "texture": { + "key": "book", + "frame": "table/game" + }, + "x": -2, + "y": -29, + "originX": 0.5046728971962616, + "originY": 0.5102040816326531 + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "6912ed84-8287-4eb7-9cb7-18e74c7e37a8", + "unlock": [ + "x", + "y" + ], + "label": "done2", + "components": [], + "x": -8, + "y": 89, + "nestedPrefabs": [], + "list": [] + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "6bd50828-cf73-4817-ac81-da6521228aa6", + "unlock": [ + "x", + "y" + ], + "label": "done1", + "components": [], + "x": -114, + "y": 47, + "nestedPrefabs": [], + "list": [] + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "1977c67d-f603-4e04-aca6-72a5efe07015", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint" + ], + "label": "seat2", + "scope": "CLASS", + "sitFrame": 20, + "donePoint": "done2", + "components": [], + "x": 73, + "y": 22, + "nestedPrefabs": [], + "list": [] + }, + { + "prefabId": "3d402c83-0ef8-4993-bf56-3e076074ec9e", + "id": "2134e9a9-d340-4e4d-a453-d487de816890", + "unlock": [ + "x", + "y", + "sitFrame", + "donePoint" + ], + "label": "seat1", + "scope": "CLASS", + "sitFrame": 24, + "donePoint": "done1", + "components": [], + "x": -66, + "y": -29, + "nestedPrefabs": [], + "list": [] + } + ] + } + ], + "plainObjects": [], + "meta": { + "app": "Phaser Editor 2D - Scene Editor", + "url": "https://phasereditor2d.com", + "contentType": "phasereditor2d.core.scene.SceneContentType", + "version": 3 + } +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index a4122eae..7517b6ef 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -24,8 +24,14 @@ let config = { }, devServer: { static: { - directory: path.join(__dirname), - publicPath: '/' + directory: path.resolve(__dirname), + publicPath: '/', + watch: { + ignored: [ + path.resolve(__dirname, '.git'), + path.resolve(__dirname, 'node_modules') + ] + } }, devMiddleware: { writeToDisk: true