diff --git a/.eslintignore b/.eslintignore index c616d0ee..5262488b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,4 +3,6 @@ node_modules # don't lint build output (make sure it's set to your correct build folder name) dist index.html -.eslintrc.cjs \ No newline at end of file +.eslintrc.cjs + +src/GameScene.ts \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2559464d..c27ea30c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2195 +1,8 @@ { "name": "phaser3-typescript-vite-template", "version": "0.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "phaser3-typescript-vite-template", - "version": "0.0.0", - "dependencies": { - "phaser": "^3.55.2" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.40.0", - "@typescript-eslint/parser": "^5.40.0", - "eslint": "^8.25.0", - "typescript": "^4.6.4", - "vite": "^3.1.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.11.tgz", - "integrity": "sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.11.tgz", - "integrity": "sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", - "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.0.tgz", - "integrity": "sha512-FIBZgS3DVJgqPwJzvZTuH4HNsZhHMa9SjxTKAZTlMsPw/UzpEjcf9f4dfgDJEHjK+HboUJo123Eshl6niwEm/Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.40.0", - "@typescript-eslint/type-utils": "5.40.0", - "@typescript-eslint/utils": "5.40.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.0.tgz", - "integrity": "sha512-Ah5gqyX2ySkiuYeOIDg7ap51/b63QgWZA7w6AHtFrag7aH0lRQPbLzUjk0c9o5/KZ6JRkTTDKShL4AUrQa6/hw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.40.0", - "@typescript-eslint/types": "5.40.0", - "@typescript-eslint/typescript-estree": "5.40.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.0.tgz", - "integrity": "sha512-d3nPmjUeZtEWRvyReMI4I1MwPGC63E8pDoHy0BnrYjnJgilBD3hv7XOiETKLY/zTwI7kCnBDf2vWTRUVpYw0Uw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.40.0", - "@typescript-eslint/visitor-keys": "5.40.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.0.tgz", - "integrity": "sha512-nfuSdKEZY2TpnPz5covjJqav+g5qeBqwSHKBvz7Vm1SAfy93SwKk/JeSTymruDGItTwNijSsno5LhOHRS1pcfw==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.40.0", - "@typescript-eslint/utils": "5.40.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.0.tgz", - "integrity": "sha512-V1KdQRTXsYpf1Y1fXCeZ+uhjW48Niiw0VGt4V8yzuaDTU8Z1Xl7yQDyQNqyAFcVhpYXIVCEuxSIWTsLDpHgTbw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.0.tgz", - "integrity": "sha512-b0GYlDj8TLTOqwX7EGbw2gL5EXS2CPEWhF9nGJiGmEcmlpNBjyHsTwbqpyIEPVpl6br4UcBOYlcI2FJVtJkYhg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.40.0", - "@typescript-eslint/visitor-keys": "5.40.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.0.tgz", - "integrity": "sha512-MO0y3T5BQ5+tkkuYZJBjePewsY+cQnfkYeRqS6tPh28niiIwPnQ1t59CSRcs1ZwJJNOdWw7rv9pF8aP58IMihA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.40.0", - "@typescript-eslint/types": "5.40.0", - "@typescript-eslint/typescript-estree": "5.40.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.0.tgz", - "integrity": "sha512-ijJ+6yig+x9XplEpG2K6FUdJeQGGj/15U3S56W9IqXKJqleuD7zJ2AX/miLezwxpd7ZxDAqO87zWufKg+RPZyQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.40.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "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==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "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/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/esbuild": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.11.tgz", - "integrity": "sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.11", - "@esbuild/linux-loong64": "0.15.11", - "esbuild-android-64": "0.15.11", - "esbuild-android-arm64": "0.15.11", - "esbuild-darwin-64": "0.15.11", - "esbuild-darwin-arm64": "0.15.11", - "esbuild-freebsd-64": "0.15.11", - "esbuild-freebsd-arm64": "0.15.11", - "esbuild-linux-32": "0.15.11", - "esbuild-linux-64": "0.15.11", - "esbuild-linux-arm": "0.15.11", - "esbuild-linux-arm64": "0.15.11", - "esbuild-linux-mips64le": "0.15.11", - "esbuild-linux-ppc64le": "0.15.11", - "esbuild-linux-riscv64": "0.15.11", - "esbuild-linux-s390x": "0.15.11", - "esbuild-netbsd-64": "0.15.11", - "esbuild-openbsd-64": "0.15.11", - "esbuild-sunos-64": "0.15.11", - "esbuild-windows-32": "0.15.11", - "esbuild-windows-64": "0.15.11", - "esbuild-windows-arm64": "0.15.11" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.11.tgz", - "integrity": "sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.11.tgz", - "integrity": "sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.11.tgz", - "integrity": "sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.11.tgz", - "integrity": "sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.11.tgz", - "integrity": "sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.11.tgz", - "integrity": "sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.11.tgz", - "integrity": "sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.11.tgz", - "integrity": "sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.11.tgz", - "integrity": "sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.11.tgz", - "integrity": "sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.11.tgz", - "integrity": "sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.11.tgz", - "integrity": "sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.11.tgz", - "integrity": "sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.11.tgz", - "integrity": "sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.11.tgz", - "integrity": "sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.11.tgz", - "integrity": "sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.11.tgz", - "integrity": "sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.11.tgz", - "integrity": "sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.11.tgz", - "integrity": "sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.11.tgz", - "integrity": "sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/module-importer": "^1.0.1", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "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" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "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", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "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==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "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/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/phaser": { - "version": "3.55.2", - "resolved": "https://registry.npmjs.org/phaser/-/phaser-3.55.2.tgz", - "integrity": "sha512-amKXsbb2Ht29dGPKvt1edq3yGGYKtq8373GpJYGKPNPnneYY6MtVTOgjHDuZwtmUyK4v86FugkT3hzW/N4tjxQ==", - "dependencies": { - "eventemitter3": "^4.0.7", - "path": "^0.12.7" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/vite": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz", - "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.16", - "resolve": "^1.22.1", - "rollup": "~2.78.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, "dependencies": { "@esbuild/android-arm": { "version": "0.15.11", @@ -2383,8 +196,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv": { "version": "6.12.6", @@ -2416,8 +228,7 @@ "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "array-union": { "version": "2.1.0", @@ -2425,6 +236,18 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2481,6 +304,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2531,6 +366,12 @@ "esutils": "^2.0.2" } }, + "email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true + }, "esbuild": { "version": "0.15.11", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.11.tgz", @@ -2926,6 +767,23 @@ "flat-cache": "^3.0.4" } }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true + }, + "filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2935,6 +793,17 @@ "to-regex-range": "^5.0.1" } }, + "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==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2961,6 +830,17 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2980,6 +860,45 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "gh-pages": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-5.0.0.tgz", + "integrity": "sha512-Nqp1SjkPIB94Xw/3yYNTUL+G2dxlhjvv1zeN/4kMC1jfViTEqhtVz/Ba1zSXHuvXCN9ADNS1dN4r5/J/nZWEQQ==", + "dev": true, + "requires": { + "async": "^3.2.4", + "commander": "^2.18.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3026,12 +945,30 @@ "slash": "^3.0.0" } }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, "grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3130,7 +1067,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "requires": { "argparse": "^2.0.1" } @@ -3147,6 +1083,15 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3181,6 +1126,23 @@ "yallist": "^4.0.0" } }, + "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==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3206,6 +1168,11 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3224,6 +1191,17 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3265,6 +1243,17 @@ "p-limit": "^3.0.2" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3322,6 +1311,25 @@ "path": "^0.12.7" } }, + "phaser3-rex-plugins": { + "version": "1.1.79", + "resolved": "https://registry.npmjs.org/phaser3-rex-plugins/-/phaser3-rex-plugins-1.1.79.tgz", + "integrity": "sha512-eYTX1HJiFRuqiF4j79ZnfIJIBN2LtB0XbdYaEKiBiRh7GG7quUPmCeOBUwXq7BnV61ovt+uNgVrl2JBMfgRH2A==", + "requires": { + "eventemitter3": "^3.1.2", + "handlebars": "^4.7.7", + "js-yaml": "^4.1.0", + "papaparse": "^5.3.2", + "webfontloader": "^1.6.28" + }, + "dependencies": { + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + } + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -3334,6 +1342,75 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, "postcss": { "version": "8.4.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", @@ -3454,6 +1531,11 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -3475,6 +1557,23 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3505,6 +1604,23 @@ "is-number": "^7.0.0" } }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -3541,6 +1657,18 @@ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "optional": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3571,6 +1699,11 @@ "rollup": "~2.78.0" } }, + "webfontloader": { + "version": "1.6.28", + "resolved": "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz", + "integrity": "sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ==" + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3586,6 +1719,11 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index b017cb51..9bd48619 100644 --- a/package.json +++ b/package.json @@ -3,19 +3,24 @@ "private": true, "version": "0.0.0", "type": "module", + "homepage": "https://meganenglert.github.io/build-a-bird-MVP/", "scripts": { "start": "vite", "build": "tsc && vite build", + "predeploy": "npm run build", + "deploy": "gh-pages -d dist", "preview": "vite preview" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.40.0", "@typescript-eslint/parser": "^5.40.0", "eslint": "^8.25.0", + "gh-pages": "^5.0.0", "typescript": "^4.6.4", "vite": "^3.1.0" }, "dependencies": { - "phaser": "^3.55.2" + "phaser": "^3.55.2", + "phaser3-rex-plugins": "^1.1.79" } } diff --git a/public/.DS_Store b/public/.DS_Store new file mode 100644 index 00000000..2ce90d5e Binary files /dev/null and b/public/.DS_Store differ diff --git a/public/assets/.DS_Store b/public/assets/.DS_Store new file mode 100644 index 00000000..9d81e233 Binary files /dev/null and b/public/assets/.DS_Store differ diff --git a/public/assets/Colorwheel.png b/public/assets/Colorwheel.png new file mode 100644 index 00000000..21b589f7 Binary files /dev/null and b/public/assets/Colorwheel.png differ diff --git a/public/assets/backButton.png b/public/assets/backButton.png new file mode 100644 index 00000000..77a3ba09 Binary files /dev/null and b/public/assets/backButton.png differ diff --git a/public/assets/background.png b/public/assets/background.png new file mode 100644 index 00000000..1169986f Binary files /dev/null and b/public/assets/background.png differ diff --git a/public/assets/blueHat.png b/public/assets/blueHat.png new file mode 100644 index 00000000..51086e00 Binary files /dev/null and b/public/assets/blueHat.png differ diff --git a/public/assets/collectionBG.jpg b/public/assets/collectionBG.jpg new file mode 100644 index 00000000..ce4d1239 Binary files /dev/null and b/public/assets/collectionBG.jpg differ diff --git a/public/assets/collectionButton.gif b/public/assets/collectionButton.gif new file mode 100644 index 00000000..53d3cdb8 Binary files /dev/null and b/public/assets/collectionButton.gif differ diff --git a/public/assets/colors/blue.png b/public/assets/colors/blue.png new file mode 100644 index 00000000..95131ef1 Binary files /dev/null and b/public/assets/colors/blue.png differ diff --git a/public/assets/colors/green.png b/public/assets/colors/green.png new file mode 100644 index 00000000..018083e0 Binary files /dev/null and b/public/assets/colors/green.png differ diff --git a/public/assets/colors/purple.png b/public/assets/colors/purple.png new file mode 100644 index 00000000..88b5b970 Binary files /dev/null and b/public/assets/colors/purple.png differ diff --git a/public/assets/colors/red.png b/public/assets/colors/red.png new file mode 100644 index 00000000..e13718a3 Binary files /dev/null and b/public/assets/colors/red.png differ diff --git a/public/assets/customname-save.png b/public/assets/customname-save.png new file mode 100644 index 00000000..e5baa05f Binary files /dev/null and b/public/assets/customname-save.png differ diff --git a/public/assets/customname.png b/public/assets/customname.png new file mode 100644 index 00000000..6cdd903f Binary files /dev/null and b/public/assets/customname.png differ diff --git a/public/assets/easy.png b/public/assets/easy.png new file mode 100644 index 00000000..9e49c1de Binary files /dev/null and b/public/assets/easy.png differ diff --git a/public/assets/greenHat.png b/public/assets/greenHat.png new file mode 100644 index 00000000..1ab3ebaa Binary files /dev/null and b/public/assets/greenHat.png differ diff --git a/public/assets/hard.png b/public/assets/hard.png new file mode 100644 index 00000000..dffcb4cc Binary files /dev/null and b/public/assets/hard.png differ diff --git a/public/assets/hats.png b/public/assets/hats.png new file mode 100644 index 00000000..fcc678f8 Binary files /dev/null and b/public/assets/hats.png differ diff --git a/public/assets/hats/beanie.png b/public/assets/hats/beanie.png new file mode 100644 index 00000000..c367a013 Binary files /dev/null and b/public/assets/hats/beanie.png differ diff --git a/public/assets/hats/bucket-hat.png b/public/assets/hats/bucket-hat.png new file mode 100644 index 00000000..02ccfcc4 Binary files /dev/null and b/public/assets/hats/bucket-hat.png differ diff --git a/public/assets/hats/sunhat.png b/public/assets/hats/sunhat.png new file mode 100644 index 00000000..6860ee28 Binary files /dev/null and b/public/assets/hats/sunhat.png differ diff --git a/public/assets/hats/visor.png b/public/assets/hats/visor.png new file mode 100644 index 00000000..1efd6ba5 Binary files /dev/null and b/public/assets/hats/visor.png differ diff --git a/public/assets/mute.png b/public/assets/mute.png new file mode 100644 index 00000000..1df68fd8 Binary files /dev/null and b/public/assets/mute.png differ diff --git a/public/assets/nene-colors/blue.png b/public/assets/nene-colors/blue.png new file mode 100644 index 00000000..d41d1334 Binary files /dev/null and b/public/assets/nene-colors/blue.png differ diff --git a/public/assets/nene-colors/green.png b/public/assets/nene-colors/green.png new file mode 100644 index 00000000..391b378e Binary files /dev/null and b/public/assets/nene-colors/green.png differ diff --git a/public/assets/nene-colors/purple.png b/public/assets/nene-colors/purple.png new file mode 100644 index 00000000..f821fbc6 Binary files /dev/null and b/public/assets/nene-colors/purple.png differ diff --git a/public/assets/nene-colors/red.png b/public/assets/nene-colors/red.png new file mode 100644 index 00000000..4062d566 Binary files /dev/null and b/public/assets/nene-colors/red.png differ diff --git a/public/assets/nene-hats/beanie.png b/public/assets/nene-hats/beanie.png new file mode 100644 index 00000000..f58cca7e Binary files /dev/null and b/public/assets/nene-hats/beanie.png differ diff --git a/public/assets/nene-hats/bucket-hat.png b/public/assets/nene-hats/bucket-hat.png new file mode 100644 index 00000000..c1200d3b Binary files /dev/null and b/public/assets/nene-hats/bucket-hat.png differ diff --git a/public/assets/nene-hats/sunhat.png b/public/assets/nene-hats/sunhat.png new file mode 100644 index 00000000..f58396e1 Binary files /dev/null and b/public/assets/nene-hats/sunhat.png differ diff --git a/public/assets/nene-hats/visor.png b/public/assets/nene-hats/visor.png new file mode 100644 index 00000000..f75b3aa7 Binary files /dev/null and b/public/assets/nene-hats/visor.png differ diff --git a/public/assets/nene.png b/public/assets/nene.png new file mode 100644 index 00000000..f6673403 Binary files /dev/null and b/public/assets/nene.png differ diff --git a/public/assets/neneBlueHat.png b/public/assets/neneBlueHat.png new file mode 100644 index 00000000..d8e1e585 Binary files /dev/null and b/public/assets/neneBlueHat.png differ diff --git a/public/assets/neneGreenHat.png b/public/assets/neneGreenHat.png new file mode 100644 index 00000000..36086cfe Binary files /dev/null and b/public/assets/neneGreenHat.png differ diff --git a/public/assets/neneTitle.png b/public/assets/neneTitle.png new file mode 100644 index 00000000..9f866eac Binary files /dev/null and b/public/assets/neneTitle.png differ diff --git a/public/assets/pink.png b/public/assets/pink.png new file mode 100644 index 00000000..909efb47 Binary files /dev/null and b/public/assets/pink.png differ diff --git a/public/assets/pinkNene.png b/public/assets/pinkNene.png new file mode 100644 index 00000000..466cc66c Binary files /dev/null and b/public/assets/pinkNene.png differ diff --git a/public/assets/pinkNeneBlueHat.png b/public/assets/pinkNeneBlueHat.png new file mode 100644 index 00000000..12aae190 Binary files /dev/null and b/public/assets/pinkNeneBlueHat.png differ diff --git a/public/assets/pinkNeneGreenHat.png b/public/assets/pinkNeneGreenHat.png new file mode 100644 index 00000000..aec9e578 Binary files /dev/null and b/public/assets/pinkNeneGreenHat.png differ diff --git a/public/assets/popup.png b/public/assets/popup.png new file mode 100644 index 00000000..5f56d8fc Binary files /dev/null and b/public/assets/popup.png differ diff --git a/public/assets/reset.png b/public/assets/reset.png new file mode 100644 index 00000000..402c741a Binary files /dev/null and b/public/assets/reset.png differ diff --git a/public/assets/saveButton.png b/public/assets/saveButton.png new file mode 100644 index 00000000..b89d0e88 Binary files /dev/null and b/public/assets/saveButton.png differ diff --git a/public/assets/startButton.png b/public/assets/startButton.png new file mode 100644 index 00000000..ca153d64 Binary files /dev/null and b/public/assets/startButton.png differ diff --git a/public/assets/title.png b/public/assets/title.png new file mode 100644 index 00000000..05b06317 Binary files /dev/null and b/public/assets/title.png differ diff --git a/public/assets/titleScene.jpg b/public/assets/titleScene.jpg new file mode 100644 index 00000000..aa3fd4e9 Binary files /dev/null and b/public/assets/titleScene.jpg differ diff --git a/public/assets/unmute.png b/public/assets/unmute.png new file mode 100644 index 00000000..ad8ede6c Binary files /dev/null and b/public/assets/unmute.png differ diff --git a/public/assets/yellow.png b/public/assets/yellow.png new file mode 100644 index 00000000..8d57ddee Binary files /dev/null and b/public/assets/yellow.png differ diff --git a/public/assets/yellowNene.png b/public/assets/yellowNene.png new file mode 100644 index 00000000..c7eee118 Binary files /dev/null and b/public/assets/yellowNene.png differ diff --git a/public/assets/yellowNeneBlueHat.png b/public/assets/yellowNeneBlueHat.png new file mode 100644 index 00000000..4b2d5826 Binary files /dev/null and b/public/assets/yellowNeneBlueHat.png differ diff --git a/public/assets/yellowNeneGreenHat.png b/public/assets/yellowNeneGreenHat.png new file mode 100644 index 00000000..ad2df31d Binary files /dev/null and b/public/assets/yellowNeneGreenHat.png differ diff --git a/src/CollectionScene.ts b/src/CollectionScene.ts new file mode 100644 index 00000000..eed37e88 --- /dev/null +++ b/src/CollectionScene.ts @@ -0,0 +1,115 @@ +import Phaser from 'phaser' +import eventsCenter from './EventsCenter' + +export default class collectionScene extends Phaser.Scene { + private backButton!: Phaser.GameObjects.Image; + collectionBG!: Phaser.GameObjects.Image; + public nenesCollected: Record; + private colors: Array; + private hats: Array; + private neneImages: Phaser.GameObjects.Group; + private neneText: Phaser.GameObjects.Group; + + constructor(){ + super({key: 'collectionScene'}); + this.nenesCollected = {"":"vanilla nene"}; + this.colors = ["red","green","blue","purple"]; + this.hats = ["sunhat", "beanie","bucket-hat", "visor"]; + this.neneImages = new Phaser.GameObjects.Group(this); + this.neneText = new Phaser.GameObjects.Group(this); + } + + preload() { + //Preloads the collection background image + this.load.image("collectionBG", "assets/collectionBG.jpg"); + this.load.image("backButton", "assets/backButton.png"); + } + + create(){ + eventsCenter.on('update-nenes', this.updateNenes, this); + //Displays the yellow background for the Collection Scene + this.collectionBG=this.add.image(450, 300, "collectionBG"); + this.collectionBG.ignoreDestroy = true; + + //Displays the back button + //When the back button is clicked, it returns to the Game Scene + this.backButton=this.add.image(70, 530, "backButton") + .setInteractive(); + this.backButton.ignoreDestroy = true; + + this.backButton.on("pointerover",() =>{ + this.backButton.setAlpha(1); + }); + this.backButton.on("pointerout", ()=>{ + this.backButton.setAlpha(0.7); + }); + this.backButton.on('pointerdown', ()=>this.goToGameScene()); + this.add.text(375,20,"Collection",{ font: '36px Courier', color: '#000000', align: 'center'}); + + //Displays the names of the nenes + this.loadInNenes(); + } + + public updateNenes(currentNenes: Record) { + console.log(currentNenes); + this.nenesCollected = currentNenes; + this.loadInNenes(); + } + + //Function that displays the names of the nenes + /*private displayNames(userNames: Array) { + for(let i = 0; i { + console.log(desc); + [x, y] = this.increment(x, y); + let foundColor = false; + this.colors.forEach( (color) => { + if (desc.includes(color)) { + foundColor = true; + this.neneImages.add(this.add.image(x,y, "nene-" + color).setScale(0.75)); + + } + }); + if (!foundColor) { + this.neneImages.add(this.add.image(x,y,"nene").setScale(0.75)); + } + this.hats.forEach( (hat) => { + if (desc.includes(hat)) { + foundColor = true; + this.neneImages.add(this.add.image(x,y, "nene-"+hat).setScale(0.75)); + } + }); + this.neneText.add(this.add.text(x-50, y+100, this.nenesCollected[desc], { font: '16px Courier', color: '#000000' })); + } + + ); + + } + + private increment(x: number, y:number) { + x = x + 170; + if (x > 700) { + x = 160; + y = y+250; + } + return [x,y]; + } + +} diff --git a/src/End.ts b/src/End.ts new file mode 100644 index 00000000..ada7c3f5 --- /dev/null +++ b/src/End.ts @@ -0,0 +1,55 @@ +import Phaser from 'phaser' + +export default class End extends Phaser.Scene { + private backButton!: Phaser.GameObjects.Image; + collectionBG!: Phaser.GameObjects.Image; + + constructor(){ + super({key: 'End'}); + } + + preload() { + //Preloads the collection background image + this.load.image("collectionBG", "assets/collectionBG.jpg"); + this.load.image("Pink", "assets/pink.png"); + } + + create(){ + //Displays the yellow background for the Collection Scene + + + //Displays the back button + //When the back button is clicked, it returns to the Game Scene + this.collectionBG=this.add.image(450, 300, "collectionBG"); + this.backButton=this.add.image(300, 530, "Pink").setInteractive(); + + this.backButton.on("pointerover",() =>{ + this.backButton.setAlpha(1); + }); + this.backButton.on("pointerout", ()=>{ + this.backButton.setAlpha(0.7); + }); + this.backButton.on('pointerdown', ()=>this.goToTitleScene()); + this.add.text(300,300,"YOU WIN!",{fontSize: '64px',"color":"#0000000"}) + } + + //Function that handles changing the scene to the Game Scene + private goToTitleScene(){ + // const array = ["CollectionScene","GameScene", "titleScene", "End"] + //array.forEach( + // (scene) => { + // this.registry.destroy(scene) + //this.events.off(scene) + //this.scene.restart(scene) + // } + //) + //this.registry.destroy() + //this.events.off("End") + //this.scene.restart() + this.scene.stop('End').launch('titleScene') + + + + } + +} \ No newline at end of file diff --git a/src/EventsCenter.ts b/src/EventsCenter.ts new file mode 100644 index 00000000..b5294bd8 --- /dev/null +++ b/src/EventsCenter.ts @@ -0,0 +1,5 @@ +import Phaser from 'phaser'; + +const eventsCenter = new Phaser.Events.EventEmitter(); + +export default eventsCenter; \ No newline at end of file diff --git a/src/GameScene.ts b/src/GameScene.ts new file mode 100644 index 00000000..830f2de5 --- /dev/null +++ b/src/GameScene.ts @@ -0,0 +1,181 @@ +import Phaser from "phaser"; +import Shop from "./components/Shop"; +import Tutorial from "./components/Tutorial"; +import Questions from "./components/Questions"; +import DisplayArea from "./components/DisplayArea"; +import DragAndDrop from "./components/DragAndDrop"; +import eventsCenter from "./EventsCenter"; + + +export default class GameScene extends Phaser.Scene { + private background?: Phaser.GameObjects.Image; + + private collectionButton!: Phaser.GameObjects.Image; + private saveButton!: Phaser.GameObjects.Image; + + //Rachel + public coins: number; + public totalnene: number; + + public coinTracker: Record; + //Rachel End + + // Holds coin management system + // Populates left side of screen with different purchasables + public shop?: Shop; + + // Pop up with game instructions + // Not for MVP but probably some hints will go in here too + //private tutorial?: Tutorial; + + // Question pop ups + // Also processes question data and displays + private questions?: Questions; + + // Where the different objects are displayed / stacked + //private displayArea?: DisplayArea; + + // Drag and drop components + // The "machine" or whatever we're calling it + // Where the attribute values go + public dragAndDrop?: DragAndDrop; + + colors: Array; + hats: Array; + + rexUI: any; + textObj: any; + userText: Phaser.GameObjects.Text | undefined; + + constructor() { + super("GameScene"); + this.colors = ["blue", "green", "purple", "red"]; + this.coins = 0; + this.coinTracker = {"":"vanilla nene"}; + this.totalnene = 1; + this.hats = ["beanie", "bucket-hat", "sunhat", "visor"]; + + } + + preload() { + //this.load.setBaseURL('https://labs.phaser.io') + this.load.image("bg", "assets/background.png"); + this.load.image("color", "assets/Colorwheel.png"); + this.load.image("hats", "assets/hats.png"); + + this.load.image("popup", "assets/popup.png"); + + this.loadAttribute("colors", this.colors); + this.loadAttribute("hats", this.hats); + this.load.image("reset", "assets/reset.png"); + this.load.image("nene", "assets/nene.png"); + + //Mycah + //Preloads the collection button image + this.load.image("collectionButton", "assets/collectionButton.gif"); + + //Preloads the save button image + this.load.image("saveButton", "assets/saveButton.png"); + this.scene.run("collectionScene"); + this.scene.setVisible(false, "collectionScene"); + this.load.image("custom-name", "assets/customname.png"); + this.load.image("custom-save", "assets/customname-save.png"); + } + + create(difficulty: Array) { + this.background = this.add.image(450, 300, "bg"); + this.background.displayHeight = 600; + this.background.displayWidth = 900; + + // CREATES THE SHOP OBJECT & initializes values & SHOWS + + // CREATES THE SHOP OBJECT & initializes values & SHOWS + new DisplayArea(this); + + // CREATES THE SHOP OBJECT & initializes values & SHOWS + this.dragAndDrop = new DragAndDrop(this, difficulty); + + // CREATES THE SHOP OBJECT & initializes values & SHOWS + //new Questions(this); + new Questions(this) + + // CREATES THE SHOP OBJECT & initializes values & SHOWS + new Tutorial(this); + + this.shop = new Shop(this); + + //Displays the collection button + //When the collection button is clicked, it goes to the Collection Scene + this.collectionButton = this.add + .image(850, 70, "collectionButton") + .setInteractive(); + this.collectionButton.on("pointerover", () => { + this.collectionButton.setAlpha(1); + }); + this.collectionButton.on("pointerout", () => { + this.collectionButton.setAlpha(0.7); + }); + this.collectionButton.on("pointerdown", () => this.goToCollectionScene()); + + this.add.image(750, 550, "custom-name").setScale(1.25); + this.saveButton = this.add.image(775,550,"custom-save").setScale(1).setInteractive(); + //Takes the user's text input + this.userText = this.add.text(640, 540, "Set custom name", { + font: "18px Courier", + color: "#FFFFFF", + }); + this.userText.setInteractive().on("pointerdown", () => { + this.rexUI.edit(this.userText); + }); + const editor = this.rexUI.edit(this.userText); + + //Displays the save button + //When the save button is clicked, it saves the name of the nene + //this.saveButton = this.add.image(750, 60, "saveButton").setInteractive(); + this.saveButton.on("pointerover", () => { + this.saveButton.setAlpha(1); + }); + this.saveButton.on("pointerout", () => { + this.saveButton.setAlpha(0.9); + }); + this.saveButton.on("pointerdown", () => this.saveMyObject(editor.text)); + } + saveMyObject(elem: string) { + this.coinTracker[this.dragAndDrop?.generateDisplayString() || ""] = (elem as string); + eventsCenter.emit("update-nenes", this.coinTracker); + //this.add.text(100, 100, "new name " + elem); + this.dragAndDrop?.updateText(elem as string); + } + + private loadAttribute(attributeName: string, attributeValues: Array) { + attributeValues.forEach( + (value: string) => ( + this.load.image( + "nene-" + value, + "assets/nene-" + attributeName + "/" + value + ".png" + ), + this.load.image(value, "assets/" + attributeName + "/" + value + ".png") + ) + ); + } + + //Function that handles changing the scene to the Collection Scene + private goToCollectionScene() { + this.scene.sleep() + + } + private goToEndScene() { + this.scene.stop("GameScene").stop("collectionScene").launch("End") + + } + + update() { + if (this.totalnene == 25) { + this.totalnene = 1; + this.coins = 0; + this.coinTracker = {"":"vanilla nene"}; + eventsCenter.emit("update-nenes",this.coinTracker) + this.goToEndScene(); + } + } +} diff --git a/src/HelloWorldScene.ts b/src/HelloWorldScene.ts deleted file mode 100644 index 83c5d317..00000000 --- a/src/HelloWorldScene.ts +++ /dev/null @@ -1,35 +0,0 @@ -import Phaser from 'phaser' - -export default class HelloWorldScene extends Phaser.Scene { - constructor() { - super('hello-world') - } - - preload() { - this.load.setBaseURL('https://labs.phaser.io') - - this.load.image('sky', 'assets/skies/space3.png') - this.load.image('logo', 'assets/sprites/phaser3-logo.png') - this.load.image('red', 'assets/particles/red.png') - } - - create() { - this.add.image(400, 300, 'sky') - - const particles = this.add.particles('red') - - const emitter = particles.createEmitter({ - speed: 100, - scale: { start: 1, end: 0 }, - blendMode: 'ADD', - }) - - const logo = this.physics.add.image(400, 100, 'logo') - - logo.setVelocity(100, 200) - logo.setBounce(1, 1) - logo.setCollideWorldBounds(true) - - emitter.startFollow(logo) - } -} diff --git a/src/components/00-README.md b/src/components/00-README.md new file mode 100644 index 00000000..92df9891 --- /dev/null +++ b/src/components/00-README.md @@ -0,0 +1,6 @@ +# Steps for adding a new component + +1. Create a TS file in the components folder that contains the class definition exported. *e.g. Shop.ts* + +2. In GameScene.ts (or whatever its superclass is), import your new class. *e.g. `import Shop from "./components/Shop"`* + diff --git a/src/components/DisplayArea.ts b/src/components/DisplayArea.ts new file mode 100644 index 00000000..53fc87d7 --- /dev/null +++ b/src/components/DisplayArea.ts @@ -0,0 +1,33 @@ +import Phaser from 'phaser' + +export default class DisplayArea extends Phaser.GameObjects.Container{ + + //private color?: string + //private nene?: Phaser.GameObjects.GameObject; + //variables here + //e.g. private coins: number + constructor(scene: Phaser.Scene) { //don't touch + super(scene) //Don't touch + //X and Y coords + this.x= 750 + this.y= 300 + + //set class variables + //this.coins = 0; + + //needs sizing and placement figured out + //add different images/text the same way you would with create() + + //e.g. this.add(this.scene.add.text(100,100, "example text", {fontSize: '28px'})) + //this.nene = this.scene.add.image(750, 300, "nene") + + + this.scene.add.existing(this); //Don't touch + } + + //methods down here + public earnCoin() { + return 0 + } + +} \ No newline at end of file diff --git a/src/components/DragAndDrop.ts b/src/components/DragAndDrop.ts new file mode 100644 index 00000000..17dbdde3 --- /dev/null +++ b/src/components/DragAndDrop.ts @@ -0,0 +1,252 @@ +import Phaser from "phaser"; +import eventsCenter from "../EventsCenter"; +import GameScene from "../GameScene" +import Questions from './Questions' +//import Shop from "./Shop"; + +export default class DragAndDrop extends Phaser.GameObjects.Container { + + //COLORS V2 START -------------------------------------------- + public dragColors: Record; + public dragHats: Record; + private nene: Phaser.GameObjects.GameObject; + public text: Phaser.GameObjects.Text; + private currentAttributes: Record; + private hat?: Phaser.GameObjects.GameObject; + private resetButton: Phaser.GameObjects.GameObject; + public gothats: boolean; + public gotcolors: boolean; + private totalnenetext: Phaser.GameObjects.Text; + private questions: Questions + private difficulty: Array + + //COLORS V2 END ---------------------------------------------- + + constructor(scene: GameScene, difficulty: Array) { + + super(scene); + + this.text = this.scene.add.text(650,450, "nene = new Nene();", {"align":"left","color":"0x000000","fixedWidth":250}); + this.nene = this.scene.physics.add.image(750, 300, "nene").setInteractive(); + this.resetButton = this.scene.physics.add.image(750, 100, "reset").setInteractive(); + + this.totalnenetext = this.scene.add.text(670,160, `Total Nenes Found: ${(this.scene as GameScene).totalnene}`,{"color":"0x000000"}) + this.currentAttributes = {}; + this.dragColors = {}; + this.dragHats = {}; + this.gothats = false; + this.questions = new Questions(scene); + this.difficulty = difficulty; + this.gotcolors = false; + this.displayValueOptions((this.scene as GameScene).colors, this.dragColors); + this.displayValueOptions2((this.scene as GameScene).hats, this.dragHats); + console.log(this.dragColors) + console.log("BRUH") + + this.setUpButton(); + this.setUpDrag(); + this.setUpCollisions(); + //COLORS V2 END --------------------------------------------------------------- + } + + private displayValueOptions(attributeNames: Array, dragItems: Record) { + let y_pos = 100; + //const x_pos = Math.random() * 300 + 300; + attributeNames.forEach((attribute) => + (dragItems[attribute] = this.scene.physics.add.image(350, y_pos, attribute).setInteractive(), + this.scene.input.setDraggable(dragItems[attribute]), + y_pos += 125) + ); + if (this.gotcolors ==false){ + dragItems["red"].setVisible(false) + dragItems["purple"].setVisible(false) + } + } + private displayValueOptions2(attributeNames: Array, dragItems: Record) { + let y_pos = 100; + //const x_pos = Math.random() * 300 + 300; + attributeNames.forEach((attribute) => + (dragItems[attribute] = this.scene.physics.add.image(500, y_pos, attribute).setInteractive(), + this.scene.input.setDraggable(dragItems[attribute]), + y_pos += 125) + ); + if(this.gothats == false){ + dragItems["sunhat"].setVisible(false) + dragItems["visor"].setVisible(false) + } + } + + private setUpDrag () { + this.scene.input.on( + "dragstart", + function ( + _pointer: any, + gameObject: { setTint: (arg0: number) => void } + ) { + gameObject.setTint(0xE0E0E0); + } + ); + + this.scene.input.on( + "drag", + function ( + _pointer: any, + gameObject: { x: any; y: any }, + dragX: any, + dragY: any + ) { + gameObject.x = dragX; + gameObject.y = dragY; + } + ); + + this.scene.input.on( + "dragend", + function (_pointer: any, gameObject: { clearTint: () => void }) { + gameObject.clearTint(); + } + ); + } + + private setUpCollisions() { + this.scene.physics.add.overlap(this.nene, Object.values(this.dragColors), undefined); + this.scene.physics.add.overlap(this.nene, Object.values(this.dragHats), undefined); + + Object.values(this.dragColors).forEach( (dragColor) => ( + this.scene.physics.add.collider( + this.nene, + dragColor, + this.handleColorCollision, + undefined, + this + ) + )); + + Object.values(this.dragHats).forEach( (dragHat) => ( + this.scene.physics.add.collider( + this.nene, + dragHat, + this.handleHatCollision, + undefined, + this + ) + )); + } + +private handleColorCollision( + nene: Phaser.GameObjects.GameObject, + dragColor: Phaser.GameObjects.GameObject) { + const myNene = nene as Phaser.Physics.Arcade.Image; + myNene.disableBody(true, true); + if (Object.keys(this.currentAttributes).includes("color")) { + const color = this.currentAttributes["color"]; + const coords = this.generateCoords() as Array; + this.dragColors[color] = this.scene.physics.add.image(coords[0], coords[1], color).setInteractive(), + this.scene.input.setDraggable(this.dragColors[color]); + } + const myColor = dragColor as Phaser.Physics.Arcade.Image; + myColor.disableBody(true, true); + const newColor = (dragColor as Phaser.GameObjects.Image).texture.key; + this.nene = this.scene.physics.add.image(750, 300, "nene-" + newColor).setInteractive(); + this.currentAttributes["color"] = (dragColor as Phaser.GameObjects.Image).texture.key; + this.text = this.text.setText("nene = new Nene(\n\t" + this.generateDisplayString() + "\n);"); + this.updateText(); + this.setUpCollisions(); + + + } + + private handleHatCollision( + nene: Phaser.GameObjects.GameObject, + dragHat: Phaser.GameObjects.GameObject) { + console.log(nene); + if (Object.keys(this.currentAttributes).includes("hat")) { + const hat = this.currentAttributes["hat"]; + const coords = this.generateCoords() as Array; + (this.hat as Phaser.Physics.Arcade.Image).disableBody(true,true); + this.dragHats[hat] = this.scene.physics.add.image(coords[0], coords[1], hat).setInteractive(), + this.scene.input.setDraggable(this.dragHats[hat]) + } + const myHat = dragHat as Phaser.Physics.Arcade.Image; + myHat.disableBody(true, true); + const newHat = (dragHat as Phaser.GameObjects.Image).texture.key; + this.hat = this.scene.physics.add.image(750, 300, "nene-" + newHat).setInteractive(); + this.currentAttributes["hat"] = (dragHat as Phaser.GameObjects.Image).texture.key; + this.updateText(); + this.setUpCollisions(); + + } + + public updateText(name?: string) { + const newText = this.generateDisplayString(); + if (!name) { + name = "nene"; + } + if (newText ==="") { + this.text = this.text.setText(name + " = new Nene();"); + } + else { + this.text = this.text.setText(name + " = new Nene(\n\t" + newText + "\n);"); + } + + + // Checks if nene is new for coins + if(!Object.keys((this.scene as GameScene).coinTracker).includes(newText)){ + (this.scene as GameScene).coinTracker[newText] = newText; + (this.scene as GameScene).coins++; + (this.scene as GameScene).shop?.scoreText.setText(`Coins: ${(this.scene as GameScene).coins}`); + eventsCenter.emit("update-nenes", (this.scene as GameScene).coinTracker); + (this.scene as GameScene).totalnene = (this.scene as GameScene).totalnene +1; + this.totalnenetext = this.totalnenetext.setText(`Total Nenes Found: ${(this.scene as GameScene).totalnene}`) + if ((this.scene as GameScene).totalnene % 5 == 0 && this.difficulty[0]==="true"){ + this.questions.generatePopUp(); + } + if ((this.scene as GameScene).totalnene == 25) { + this.scene.scene.stop().launch("End"); + } + // TODO trigger question pop up + } + + } + + private generateCoords() { + return [Math.random() * 300 + 250, Math.random() * 400 + 100]; + } + + public generateDisplayString() { + const lines: Array = []; + Object.keys(this.currentAttributes).sort().forEach( + (key) => lines.push( "\"" + this.currentAttributes[key] + "\",") + ); + if (lines){ + const str = lines.join("\n\t"); + return str.substring(0, str.length-1) + } + return ""; + } + + private setUpButton() { + this.resetButton.setInteractive().on('pointerdown', (() => { + this.text.destroy(); + this.text = this.scene.add.text(650,450, "nene = new Nene();", {"align":"left","color":"0x000000","fixedWidth":250}); + this.nene.destroy(); + this.hat?.destroy(); + this.nene = this.scene.physics.add.image(750, 300, "nene").setInteractive(); + this.currentAttributes = {}; + Object.values(this.dragColors).forEach((color) => color.destroy()); + Object.values(this.dragHats).forEach((hat) => hat.destroy()); + this.displayValueOptions((this.scene as GameScene).colors, this.dragColors); + this.displayValueOptions2((this.scene as GameScene).hats, this.dragHats); + this.setUpDrag(); + this.setUpCollisions(); + + })); + + } + public SetcolorsGot(){ + this.gotcolors=true; + } + public SethatsGot(){ + this.gothats=true; + } +} diff --git a/src/components/Questions.ts b/src/components/Questions.ts new file mode 100644 index 00000000..db9690fd --- /dev/null +++ b/src/components/Questions.ts @@ -0,0 +1,144 @@ +import Phaser from "phaser"; +import GameScene from "../GameScene"; +import quizJson from "../components/quiz.json"; +export default class Questions extends Phaser.GameObjects.Container { + //Rachel + private popupBG?: Phaser.GameObjects.Image; + private container: Phaser.GameObjects.Container | undefined; + private quiztext: Phaser.GameObjects.Text | undefined; + private choices1?: Phaser.GameObjects.Text; + private choices2?: Phaser.GameObjects.Text; + private choices3?: Phaser.GameObjects.Text; + private choices4?: Phaser.GameObjects.Text; + private index?: number; + + //Rachel End + + constructor(scene: GameScene) { + //don't touch + super(scene); //Don't touch + this.scene.add.existing(this); //Don't touch + } + + generatePopUp() { + this.index = Math.floor(Math.random() * 20); + this.popupBG = this.scene.physics.add.image(100, 50, "popup").setOrigin(0); + this.quiztext = this.scene.add + .text(150, 100, quizJson[this.index].question, { + align: "center", + wordWrap: { width: 500, useAdvancedWrap: true }, + }) + .setColor("#000000"); + this.choices1 = this.scene.add + .text(150, 200, quizJson[this.index].choices[0], { + align: "left", + wordWrap: { width: 200, useAdvancedWrap: true }, + }) + .setColor("#000000") + .setInteractive() + .on("pointerover", () => this.choices1?.setColor("#fff000")) + .on("pointerout", () => this.choices1?.setColor("#000000")) + .on("pointerup", () => this.container?.destroy()); + this.choices2 = this.scene.add + .text(500, 200, quizJson[this.index].choices[1], { + align: "right", + wordWrap: { width: 200, useAdvancedWrap: true }, + }) + .setColor("#000000") + .setInteractive() + .on("pointerover", () => this.choices2?.setColor("#fff000")) + .on("pointerout", () => this.choices2?.setColor("#000000")) + .on("pointerup", () => this.container?.destroy()); + if (quizJson[this.index].choices[0] == "True") { + this.container = this.scene.add.container(32, 70, [ + this.popupBG, + this.quiztext, + this.choices1, + this.choices2, + ]); + for (let i = 0; i < 2; i++) { + if ( + quizJson[this.index].choices[i] == quizJson[this.index].expected && + i % 2 == 0 + ) { + this.choices1.on( + "pointerup", + () => this.addCoins(), + this.container?.destroy + ); + } else { + this.choices2.on( + "pointerup", + () => this.addCoins(), + this.container?.destroy + ); + } + } + } else { + this.choices3 = this.scene.add + .text(150, 350, quizJson[this.index].choices[2], { + align: "left", + wordWrap: { width: 200, useAdvancedWrap: true }, + }) + .setColor("#000000") + .setInteractive() + .on("pointerover", () => this.choices3?.setColor("#fff000")) + .on("pointerout", () => this.choices3?.setColor("#000000")) + .on("pointerup", () => this.container?.destroy()); + this.choices4 = this.scene.add + .text(500, 350, quizJson[this.index].choices[3], { + align: "right", + wordWrap: { width: 200, useAdvancedWrap: true }, + }) + .setColor("#000000") + .setInteractive() + .on("pointerover", () => this.choices4?.setColor("#fff000")) + .on("pointerout", () => this.choices4?.setColor("#000000")) + .on("pointerup", () => this.container?.destroy()); + this.container = this.scene.add.container(32, 70, [ + this.popupBG, + this.quiztext, + this.choices1, + this.choices2, + this.choices3, + this.choices4, + ]); + for (let i = 0; i < 4; i++) { + if (quizJson[this.index].choices[i] == quizJson[this.index].expected) { + if (i == 0) { + this.choices1.on( + "pointerup", + () => this.addCoins(), + this.container?.destroy + ); + } else if (i == 1) { + this.choices2.on( + "pointerup", + () => this.addCoins(), + this.container?.destroy + ); + } else if (i == 2) { + this.choices3.on( + "pointerup", + () => this.addCoins(), + this.container?.destroy + ); + } else if (i == 3) { + this.choices4.on( + "pointerup", + () => this.addCoins(), + this.container?.destroy + ); + } + } + } + } + } + + private addCoins() { + (this.scene as GameScene).coins += 2; + (this.scene as GameScene).shop?.scoreText.setText( + `Coins: ${(this.scene as GameScene).coins}` + ); + } +} diff --git a/src/components/Shop.ts b/src/components/Shop.ts new file mode 100644 index 00000000..76509fdf --- /dev/null +++ b/src/components/Shop.ts @@ -0,0 +1,97 @@ +import Phaser from "phaser"; +import GameScene from "../GameScene"; +import DragAndDrop from "./DragAndDrop"; + +export default class Shop extends Phaser.GameObjects.Container { + private color: Phaser.GameObjects.Image; + private hats: Phaser.GameObjects.Image; + public scoreText: Phaser.GameObjects.Text; + + constructor(scene: Phaser.Scene) { + super(scene); + + this.add( + this.scene.add.text(40, 240, "Additional Colors", { + fontSize: "18px", + color: "#FFFFFF", + }) + ); + this.add( + this.scene.add.text(45, 415, "Additional Hats", { + fontSize: "18px", + color: "#FFFFFF", + }) + ); + this.add( + this.scene.add.text(80, 260, "4 Coins", { + fontSize: "18px", + color: "#FFFFFF", + }) + ); + this.add( + this.scene.add.text(80, 440, "6 Coins", { + fontSize: "18px", + color: "#FFFFFF", + }) + ); + this.scoreText = this.scene.add.text( + 20, + 550, + `Coins: ${(this.scene as GameScene).coins}`, + { fontSize: "32px", color: "#FFFFFF" } + ); + this.color = this.scene.add.image(125, 175, "color"); + this.color.setScale(0.25); + this.hats = this.scene.add.image(125, 350, "hats"); + this.hats.setScale(0.25); + this.color.setInteractive(); + this.hats.setInteractive(); + this.color.on("pointerup", () => { + if ((this.scene as GameScene).coins >= 4) { + (this.scene as GameScene).coins = (this.scene as GameScene).coins - 4; + this.scoreText.setText(`Coins: ${(this.scene as GameScene).coins}`); + this.color.removeInteractive(); + + (this.scene as GameScene).dragAndDrop?.dragColors["red"].setVisible( + true + ); + + (this.scene as GameScene).dragAndDrop?.dragColors["purple"].setVisible( + true + ); + (this.scene as GameScene).dragAndDrop?.SetcolorsGot(); + this.add( + this.scene.add.text(65, 175, "SOLD OUT!", { + fontSize: "24px", + color: "#FFFFFF", + }) + ); + } + }); + this.hats.on("pointerup", () => { + if ((this.scene as GameScene).coins >= 6) { + (this.scene as GameScene).coins = (this.scene as GameScene).coins - 6; + this.scoreText.setText(`Coins: ${(this.scene as GameScene).coins}`); + this.hats.removeInteractive(); + (this.scene as GameScene).dragAndDrop?.dragHats["sunhat"].setVisible(true); + (this.scene as GameScene).dragAndDrop?.dragHats["visor"].setVisible( + true + ); + (this.scene as GameScene).dragAndDrop?.SethatsGot(); + this.add( + this.scene.add.text(65, 340, "SOLD OUT!", { + fontSize: "24px", + color: "#ff0303", + }) + ); + } + }); + + //last lines here + this.scene.add.existing(this); + } + + earnCoin() { + console.log((this.scene as GameScene).coins); + } +} diff --git a/src/components/Tutorial.ts b/src/components/Tutorial.ts new file mode 100644 index 00000000..5cdf4595 --- /dev/null +++ b/src/components/Tutorial.ts @@ -0,0 +1,14 @@ +import Phaser from 'phaser' + +export default class Tutorial extends Phaser.GameObjects.Container{ + + constructor(scene: Phaser.Scene) { + super(scene) + + this.scene.add.existing(this); + } + + public earnCoin() { + return 0 + } +} \ No newline at end of file diff --git a/src/components/quiz.json b/src/components/quiz.json new file mode 100644 index 00000000..88ce302f --- /dev/null +++ b/src/components/quiz.json @@ -0,0 +1,83 @@ +[ + { + "question": "An object is an instance of a class.", + "choices": ["True", "False"], + "expected": "True" + }, { + "question":"A class is an instance of an object.", + "choices": ["True", "False"], + "expected": "False" + }, { + "question":"How are objects created?", + "choices": ["By calling constructors with or without parameters.", "By listing or grouping similar types of data values.", "By repeating the same process over and over until a condition is met.", "By manipulating different operands"], + "expected": "By calling constructors with or without parameters." + }, { + "question":"How are classes different from objects?", + "choices": ["Classes are the blueprint for declaring and creating objects, while objects are an instance of a class.", "Objects are the blueprint for declaring and creating objects, while classes are an instance of a class.", "Objects are strings, while classes are booleans.", "Objects are booleans, while classes are strings."], + "expected": "Classes are the blueprint for declaring and creating objects, while objects are an instance of a class." + }, { + "question":"A class is the blueprint for declaring and creating objects.", + "choices": ["True", "False"], + "expected": "True" + }, { + "question":"An object is the blueprint for declaring and creating classes.", + "choices": ["True", "False"], + "expected": "False" + }, { + "question":"What is the blueprint for declaring and creating objects?", + "choices": ["A class", "An object", "A type", "A variable"], + "expected": "A class" + }, { + "question":"Which of the following is not part of a class?", + "choices": ["Motherboard", "variable declarations", "Constructors", "Methods"], + "expected": "Motherboard" + }, { + "question":"Subclasses inherit all the fields and public methods of its super class.", + "choices": ["True", "False"], + "expected": "True" + }, { + "question":"Based on the game, what is Nene?", + "choices": ["A class", "A string", "A variable", "An attribute"], + "expected": "A class" + }, { + "question":"Which line shows the constructor for the class Nene?\npublic class Nene{\nprivate class Nene{\nprivate String name;\npublicNene() {this.name = \"Jerry\";}\nprivate void jump(){};\n}", + "choices": ["Line 1", "Line 2", "Line 3", "Line 4"], + "expected": "Line 3" + }, { + "question":"Which constructor takes in 2 parameters?", + "choices": ["Nene();", "Nene(\"blue\");", "Nene(\"beanie\", \"pink\");", "Nene(\"sandals\", \"sunhat\", \"purple\");"], + "expected": "Nene(\"beanie\", \"pink\");" + }, { + "question":"What is the name of this class?\npublic class Nene {\n\tprivate String color;\n\tpublic Nene(){\n\t\tthis.color = “pink”;\n\t}\n\tprivate void jump(){};\n}", + "choices": ["Nene", "Color", "Pink", "Jump"], + "expected": "Nene" + }, { + "question":"What is an attribute?", + "choices": ["A changeable property or characteristic of some component of a program that can be set to different values.", "A list or group of similar types of data values that are grouped.", "An unexpected condition encountered during the execution of a program.", "A sequence of instructions that repeat the same process over and over until a condition is met."], + "expected": "A changeable property or characteristic of some component of a program that can be set to different values." + }, { + "question":"Based on the game, which of the following is an example of an attribute value of the class Nene?", + "choices": ["\"blue\"", "bucket", "sand", "ocean"], + "expected": "\"blue\"" + }, { + "question":"A keyword used to initialize an object", + "choices": ["old", "clone", "method", "new"], + "expected": "new" + }, { + "question":"An abstract class cannot have a constructor.", + "choices": ["True", "False"], + "expected": "False" + }, { + "question":"What are classes made up of?", + "choices": ["Methods", "Mainframes", "Modules", "Magic"], + "expected": "Methods" + }, { + "question":"What is overloading?", + "choices": ["Creating multiple methods or constructors with the same name but different number or types of parameters.", "Lists or groups of similar types of data values that are grouped.", "A statement that describes a variable, function or any other identifier.", "A sequence of instructions that repeat the same process over and over until a condition is met."], + "expected": "Creating multiple methods or constructors with the same name but different number or types of parameters." + }, { + "question":"Another name for actions?", + "choices": ["Methods", "Work", "Steps", "Moves"], + "expected": "Methods" + } +] \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index ca62e093..cb55abd9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,19 +1,37 @@ import Phaser from 'phaser' +import collectionScene from './CollectionScene' -import HelloWorldScene from './HelloWorldScene' +import GameScene from './GameScene' +import titleScene from './titleScene' +import RexUIPlugin from 'phaser3-rex-plugins/templates/ui/ui-plugin' +import End from './End' const config: Phaser.Types.Core.GameConfig = { type: Phaser.AUTO, parent: 'app', - width: 800, + width: 900, height: 600, physics: { default: 'arcade', arcade: { - gravity: { y: 200 }, + gravity: {}, }, }, - scene: [HelloWorldScene], -} -export default new Phaser.Game(config) + scene: [titleScene,collectionScene,GameScene,End], + dom: { + createContainer: true + }, + plugins: { + scene: [ + { + key: 'rexUI', + plugin: RexUIPlugin, + mapping: 'rexUI' + } + ] + } + +} +const game = new Phaser.Game(config) +export default game \ No newline at end of file diff --git a/src/titleScene.ts b/src/titleScene.ts new file mode 100644 index 00000000..68f9f2b8 --- /dev/null +++ b/src/titleScene.ts @@ -0,0 +1,122 @@ +import Phaser from 'phaser' + +export default class titleScene extends Phaser.Scene { + startButton!: Phaser.GameObjects.Image; + easyButton!:Phaser.GameObjects.Image; + hardButton!:Phaser.GameObjects.Image; + cursorKeys!: Phaser.Types.Input.Keyboard.CursorKeys; + spacebar!: Phaser.Input.Keyboard.Key; + music!: Phaser.Sound.BaseSound; + cursors!: Phaser.Types.Input.Keyboard.CursorKeys + titleText?: Phaser.GameObjects.Text + declare add: any; + declare input: any; + declare scale: any; + public difficulty!: Array; + nene: any; + mute: any; + + + constructor() { + super({ key: 'titleScene' }); + this.difficulty=[]; + } + preload() + { + this.load.image('titleScreen','assets/titleScene.jpg') + //Loads Title words + this.load.image('title','assets/title.png') + this.load.image('titleStart','assets/startButton.png') + this.load.image('easyButton','assets/easy.png') + this.load.image('hardButton','assets/hard.png') + this.load.image('bigNene','assets/neneTitle.png') + //this.load.audio('summerFun','assets/summerFun.mp3') + this.load.image('mute','assets/pink.png') + + + } + + create(){ + //load in music + /*this.music = this.sound.add("summerFun", { loop: true }); + this.music.play() */ + + //background + this.add.image(400,300,'titleScreen'); + + + + + this.cursorKeys = this.input.keyboard.createCursorKeys(); + //Title Words + this.add.image(430,100,'title'); + //Add NeNe + this.add.image(430,400,'bigNene'); + + + //Easy difficulty selection + this.easyButton=this.add.image(195,470,'easyButton') + this.easyButton.setVisible(false) + this.easyButton.setAlpha(.7); + this.easyButton.setInteractive(); + this.easyButton.on("pointerover",() =>{ + this.easyButton.setAlpha(1); + }); + this.easyButton.on("pointerout", ()=>{ + this.easyButton.setAlpha(.7); + }); + this.easyButton.on("pointerup",()=>{ + this.titleText?.setVisible(false) + this.easyButton?.setVisible(false) + this.scene.stop('titleScene').launch('GameScene'); + }) + + //Hard difficulty selection + this.hardButton=this.add.image(748,470,'hardButton') + this.hardButton.setVisible(false) + this.hardButton.setAlpha(.7); + this.hardButton.setInteractive(); + this.hardButton.on("pointerover",() =>{ + this.hardButton.setAlpha(1); + }); + this.hardButton.on("pointerout", ()=>{ + this.hardButton.setAlpha(.7); + }); + this.hardButton.on("pointerup",()=>{ + this.titleText?.setVisible(false) + this.hardButton?.setVisible(false) + this.difficulty.push("true"); + console.log(this.difficulty[0]) + this.scene.stop('titleScene').launch('GameScene',this.difficulty); + }) + + + + + //Mute + this.mute=this.add.image(195,470,'mute') + this.easyButton.on("pointerup",()=>{ + this.music.stop + }) + + + + //create startButton + this.startButton = this.add.image(430, 470, 'titleStart'); + this.startButton.setTint(0xffffff) + this.startButton.setAlpha(.7); + this.startButton.setInteractive(); + this.startButton.on("pointerover",() =>{ + this.startButton.setAlpha(1); + }); + this.startButton.on("pointerout", ()=>{ + this.startButton.setAlpha(.7); + }); + this.startButton.on("pointerup",()=>{ + + this.startButton?.setVisible(false) + this.easyButton?.setVisible(true) + this.hardButton?.setVisible(true) + }) + } +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index a6ae7205..4a507b6f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,4 +4,5 @@ export default defineConfig({ plugins: [], server: { host: '0.0.0.0', port: 8000 }, clearScreen: false, + base: "/build-a-bird-MVP/" })