diff --git a/package-lock.json b/package-lock.json index 5a130c4..b55f0e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "izitoast": "^1.4.0", "minecraft-launcher-core": "^3.16.11", "msmc": "^3.0.6", - "vue": "^2.6.14" + "vue": "^3.2.30" }, "devDependencies": { "@electron-forge/cli": "^6.0.0-beta.63", @@ -29,6 +29,17 @@ "electron": "^17.0.0" } }, + "node_modules/@babel/parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@electron-forge/async-ora": { "version": "6.0.0-beta.63", "resolved": "https://registry.npmjs.org/@electron-forge/async-ora/-/async-ora-6.0.0-beta.63.tgz", @@ -981,6 +992,108 @@ "@types/node": "*" } }, + "node_modules/@vue/compiler-core": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.30.tgz", + "integrity": "sha512-64fq1KfcR+k3Vlw+IsBM2VhV5B+2IP3YxvKU8LWCDLrkmlXtbf2eMK6+0IwX5KP41D0f1gzryIiXR7P8cB9O5Q==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.30", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.30.tgz", + "integrity": "sha512-t7arHz2SXLCXlF2fdGDFVbhENbGMez254Z5edUqb//6WXJU1lC7GvSkUE7i5x8WSjgfqt60i0V8zdmk16rvLdw==", + "dependencies": { + "@vue/compiler-core": "3.2.30", + "@vue/shared": "3.2.30" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.30.tgz", + "integrity": "sha512-P/5YpILtcQY92z72gxhkyOUPHVskEzhSrvYi91Xcr+csOxaDaYU5OqOxCzZKcf3Og70Tat404vO1OHrwprN90A==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.30", + "@vue/compiler-dom": "3.2.30", + "@vue/compiler-ssr": "3.2.30", + "@vue/reactivity-transform": "3.2.30", + "@vue/shared": "3.2.30", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.30.tgz", + "integrity": "sha512-OUh3MwAu/PsD7VN3UOdBbTkltkrUCNouSht47+CMRzpUR5+ta7+xyMAVHeq8wg4YZenWaJimbR5TL35Ka4Vk6g==", + "dependencies": { + "@vue/compiler-dom": "3.2.30", + "@vue/shared": "3.2.30" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.30.tgz", + "integrity": "sha512-qlNKbkRn2JiGxVUEdoXbLAy+vcuHUCcq+YH2uXWz0BNMvXY2plmz+oqsw+694llwmYLkke5lbdYF4DIupisIkg==", + "dependencies": { + "@vue/shared": "3.2.30" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.30.tgz", + "integrity": "sha512-Le5XzCJyK3qTjoTnvQG/Ehu8fYjayauMNFyMaEnwFlm/avDofpuibpS9u+/6AgzsGnVWN+i0Jgf25bJd9DIwMw==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.30", + "@vue/shared": "3.2.30", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.30.tgz", + "integrity": "sha512-RTi7xH0Ht/6wfbo2WFBMJTEiyWFTqGhrksJm8lz6E+auO6lXZ6Eq3gPNfLt47GDWCm4xyrv+rs5R4UbarPEQ1Q==", + "dependencies": { + "@vue/reactivity": "3.2.30", + "@vue/shared": "3.2.30" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.30.tgz", + "integrity": "sha512-a3+jrncDvEFQmB+v9k0VyT4/Y3XO6OAueCroXXY4yLyr6PJeyxljweV5TzvW0rvVzH9sZO0QAvG76Lo+6C92Qw==", + "dependencies": { + "@vue/runtime-core": "3.2.30", + "@vue/shared": "3.2.30", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.30.tgz", + "integrity": "sha512-pzb8J/w+JdZVOtuKFlirGqrs4GP60FXGDJySw3WV2pCetuFstaacDrnymEeSo3ohAD+Qjv7zAG+Y7OvkdxQxmQ==", + "dependencies": { + "@vue/compiler-ssr": "3.2.30", + "@vue/shared": "3.2.30" + }, + "peerDependencies": { + "vue": "3.2.30" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.30.tgz", + "integrity": "sha512-B3HouBtUxcfu2w2d+VhdLcVBXKYYhXiFMAfQ+hoe8NUhKkPRkWDIqhpuehCZxVQ3S2dN1P1WfKGlxGC+pfmxGg==" + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1827,6 +1940,11 @@ "node": ">= 10" } }, + "node_modules/csstype": { + "version": "2.6.19", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + }, "node_modules/cuint": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", @@ -2661,6 +2779,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "node_modules/execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -4154,6 +4277,14 @@ "node": ">= 6" } }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, "node_modules/make-fetch-happen": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", @@ -4579,6 +4710,17 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -5109,6 +5251,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -5247,6 +5394,23 @@ "node": ">=6" } }, + "node_modules/postcss": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", + "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", + "dependencies": { + "nanoid": "^3.2.0", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, "node_modules/prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -5844,7 +6008,14 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", "engines": { "node": ">=0.10.0" } @@ -5859,6 +6030,11 @@ "source-map": "^0.6.0" } }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -6464,9 +6640,16 @@ } }, "node_modules/vue": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", - "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.30.tgz", + "integrity": "sha512-ZmTFWVJUX2XADkuOB8GcLTuxnBLogjJBTNVrM7WsTnjqRQ+VR8bLNrvNsbn8vj/LaP5+0WFAPrpngOYE2x+e+Q==", + "dependencies": { + "@vue/compiler-dom": "3.2.30", + "@vue/compiler-sfc": "3.2.30", + "@vue/runtime-dom": "3.2.30", + "@vue/server-renderer": "3.2.30", + "@vue/shared": "3.2.30" + } }, "node_modules/wcwidth": { "version": "1.0.1", @@ -6767,6 +6950,11 @@ } }, "dependencies": { + "@babel/parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==" + }, "@electron-forge/async-ora": { "version": "6.0.0-beta.63", "resolved": "https://registry.npmjs.org/@electron-forge/async-ora/-/async-ora-6.0.0-beta.63.tgz", @@ -7520,6 +7708,105 @@ "@types/node": "*" } }, + "@vue/compiler-core": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.30.tgz", + "integrity": "sha512-64fq1KfcR+k3Vlw+IsBM2VhV5B+2IP3YxvKU8LWCDLrkmlXtbf2eMK6+0IwX5KP41D0f1gzryIiXR7P8cB9O5Q==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.30", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.30.tgz", + "integrity": "sha512-t7arHz2SXLCXlF2fdGDFVbhENbGMez254Z5edUqb//6WXJU1lC7GvSkUE7i5x8WSjgfqt60i0V8zdmk16rvLdw==", + "requires": { + "@vue/compiler-core": "3.2.30", + "@vue/shared": "3.2.30" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.30.tgz", + "integrity": "sha512-P/5YpILtcQY92z72gxhkyOUPHVskEzhSrvYi91Xcr+csOxaDaYU5OqOxCzZKcf3Og70Tat404vO1OHrwprN90A==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.30", + "@vue/compiler-dom": "3.2.30", + "@vue/compiler-ssr": "3.2.30", + "@vue/reactivity-transform": "3.2.30", + "@vue/shared": "3.2.30", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-ssr": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.30.tgz", + "integrity": "sha512-OUh3MwAu/PsD7VN3UOdBbTkltkrUCNouSht47+CMRzpUR5+ta7+xyMAVHeq8wg4YZenWaJimbR5TL35Ka4Vk6g==", + "requires": { + "@vue/compiler-dom": "3.2.30", + "@vue/shared": "3.2.30" + } + }, + "@vue/reactivity": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.30.tgz", + "integrity": "sha512-qlNKbkRn2JiGxVUEdoXbLAy+vcuHUCcq+YH2uXWz0BNMvXY2plmz+oqsw+694llwmYLkke5lbdYF4DIupisIkg==", + "requires": { + "@vue/shared": "3.2.30" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.30.tgz", + "integrity": "sha512-Le5XzCJyK3qTjoTnvQG/Ehu8fYjayauMNFyMaEnwFlm/avDofpuibpS9u+/6AgzsGnVWN+i0Jgf25bJd9DIwMw==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.30", + "@vue/shared": "3.2.30", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.30.tgz", + "integrity": "sha512-RTi7xH0Ht/6wfbo2WFBMJTEiyWFTqGhrksJm8lz6E+auO6lXZ6Eq3gPNfLt47GDWCm4xyrv+rs5R4UbarPEQ1Q==", + "requires": { + "@vue/reactivity": "3.2.30", + "@vue/shared": "3.2.30" + } + }, + "@vue/runtime-dom": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.30.tgz", + "integrity": "sha512-a3+jrncDvEFQmB+v9k0VyT4/Y3XO6OAueCroXXY4yLyr6PJeyxljweV5TzvW0rvVzH9sZO0QAvG76Lo+6C92Qw==", + "requires": { + "@vue/runtime-core": "3.2.30", + "@vue/shared": "3.2.30", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.30.tgz", + "integrity": "sha512-pzb8J/w+JdZVOtuKFlirGqrs4GP60FXGDJySw3WV2pCetuFstaacDrnymEeSo3ohAD+Qjv7zAG+Y7OvkdxQxmQ==", + "requires": { + "@vue/compiler-ssr": "3.2.30", + "@vue/shared": "3.2.30" + } + }, + "@vue/shared": { + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.30.tgz", + "integrity": "sha512-B3HouBtUxcfu2w2d+VhdLcVBXKYYhXiFMAfQ+hoe8NUhKkPRkWDIqhpuehCZxVQ3S2dN1P1WfKGlxGC+pfmxGg==" + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -8155,6 +8442,11 @@ } } }, + "csstype": { + "version": "2.6.19", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + }, "cuint": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", @@ -8815,6 +9107,11 @@ "dev": true, "optional": true }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -9977,6 +10274,14 @@ } } }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "make-fetch-happen": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", @@ -10305,6 +10610,11 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==" + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -10701,6 +11011,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -10799,6 +11114,16 @@ "xmlbuilder": "^9.0.7" } }, + "postcss": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", + "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", + "requires": { + "nanoid": "^3.2.0", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -11249,8 +11574,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "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", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "source-map-support": { "version": "0.5.20", @@ -11262,6 +11591,11 @@ "source-map": "^0.6.0" } }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -11764,9 +12098,16 @@ } }, "vue": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", - "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" + "version": "3.2.30", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.30.tgz", + "integrity": "sha512-ZmTFWVJUX2XADkuOB8GcLTuxnBLogjJBTNVrM7WsTnjqRQ+VR8bLNrvNsbn8vj/LaP5+0WFAPrpngOYE2x+e+Q==", + "requires": { + "@vue/compiler-dom": "3.2.30", + "@vue/compiler-sfc": "3.2.30", + "@vue/runtime-dom": "3.2.30", + "@vue/server-renderer": "3.2.30", + "@vue/shared": "3.2.30" + } }, "wcwidth": { "version": "1.0.1", diff --git a/package.json b/package.json index 70942f3..ec50a23 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "izitoast": "^1.4.0", "minecraft-launcher-core": "^3.16.11", "msmc": "^3.0.6", - "vue": "^2.6.14" + "vue": "^3.2.30" }, "config": { "forge": "./config.forge.js" diff --git a/src/client/assets/js/index.js b/src/client/assets/js/index.js index 4fd6d4d..9aca749 100644 --- a/src/client/assets/js/index.js +++ b/src/client/assets/js/index.js @@ -1,30 +1,33 @@ const os = require('os') const totalMem = os.totalmem() / (1.049 * Math.pow(10, 6)) -let app = new vue({ - el: "#vue", - data: { - minMemValue: localStorage.getItem("minMem") != null ? localStorage.getItem("minMem") : 1024 , - maxMemValue: localStorage.getItem("maxMem") != null ? localStorage.getItem("maxMem") : 2048, - memStep: 128, - memMax: totalMem, - invalidateButtonText: "Supprimer et retélécharger les bibliothèques", - invalidateButtonDisabled: false, - displayFullscreen: "none", - nick: "Chargement", - launchBtnText: "Selectionnez un chapitre", - launchBtnDisable: true, - launchBtnHidden: false, - loadingMessageHidden: true, - loadingMessageText: "Téléchargement de Minecraft en cours...", - fullprogressbarHidden: true, - progressbarWidth: 0, - sidebarContent: "

Chargement en cours

", - notificationTitle: "", - notificationMessage: "" +app = vue.createApp({ + data() { + return { + minMemValue: localStorage.getItem("minMem") != null ? localStorage.getItem("minMem") : 1024 , + maxMemValue: localStorage.getItem("maxMem") != null ? localStorage.getItem("maxMem") : 2048, + memStep: 128, + memMax: totalMem, + invalidateButtonText: "Supprimer et retélécharger les bibliothèques", + invalidateButtonDisabled: false, + displayFullscreen: "none", + nick: "Chargement", + launchBtnText: "Selectionnez un chapitre", + launchBtnDisable: true, + launchBtnHidden: false, + loadingMessageHidden: true, + loadingMessageText: "Téléchargement de Minecraft en cours...", + fullprogressbarHidden: true, + progressbarWidth: 0, + sidebarContent: "

Chargement en cours

", + modsInformations: [], + modsInformationsLoaded: true, + selectedChapter: -1, + gameLaunching: false + } + }, - mounted: function () { - this.demandModsInformations() + mounted () { iziToast.settings({ close: false, closeOnClick: true, @@ -34,131 +37,130 @@ let app = new vue({ }) }, methods: { - invalidateData: function () { + invalidateData () { this.invalidateButtonDisabled = true this.invalidateButtonText = "Opération en cours" - this.notificationTitle = "Opération en cours" - this.notificationMessage = "Suppression des données du jeu en cours" - this.showInfo() + this.showInfo("Opération en cours", "Suppression des données du jeu en cours") ipcRenderer.send('invalidateData') }, - launchBtnClick: function () { + launchBtnClick () { this.launchBtnHidden = true this.fullprogressbarHidden = false - app.loadingMessageHidden = false + this.loadingMessageHidden = false if(Number(this.minMemValue) <= Number(this.maxMemValue)){ ipcRenderer.send('launch', { minMem: this.minMemValue + "M", maxMem: this.maxMemValue + "M", - chapter: selectedChapter + chapter: this.selectedChapter }) - app.launchBtnDisable = true + this.launchBtnDisable = true localStorage.setItem("minMem", this.minMemValue) localStorage.setItem("maxMem", this.maxMemValue) - gameLaunching = true - } else{ - app.notificationTitle = "Erreur de lancement" - app.notificationMessage = "La mémoire minimale doit être inférieure ou égale à la mémoire maximale." - this.showError() + this.gameLaunching = true + } else { + this.showError("Erreur de lancement", "La mémoire minimale doit être inférieure ou égale à la mémoire maximale.") } }, - disconnectBtn: function () { + changeSelectedChapter(index) { + this.selectedChapter = parseInt(index) + root.launchBtnText = "JOUER" + root.launchBtnDisable = false + }, + disconnectBtn () { ipcRenderer.send('disconnect') }, - options: function () { - if(!gameLaunching) + options () { + if(!this.gameLaunching) this.displayFullscreen = "block" }, - discord: () => shell.openExternal("https://discord.gg/b923tMhmRE"), - web: () => shell.openExternal("https://altarik.fr"), - closeFullscreen: function () { + discord() { + shell.openExternal("https://discord.gg/b923tMhmRE") } + , + web() { + shell.openExternal("https://altarik.fr") + }, + closeFullscreen () { this.displayFullscreen = "none" }, - demandModsInformations: function () { - ipcRenderer.send('demandModsInformations') + updateModsInformations(content) { + this.modsInformations = content }, - showInfo: function () { + getModsInformations() { + return this.modsInformations + }, + showInfo(title, body) { iziToast.info({ - title: this.notificationTitle, - message: this.notificationMessage, + title: title, + message: body, + color: 'blue' }) }, - showError: function() { - iziToast.show({ - title: this.notificationTitle, - message: this.notificationMessage, - color: 'red' - + showError(title, body) { + iziToast.error({ + title: title, + message: body, + color: 'red', }) }, - showWarning: function() { + showWarning(title, body) { iziToast.warning({ - title: this.notificationTitle, - message: this.notificationMessage, + title: title, + message: body, + color: 'yellow' }) }, - showSuccess: function () { + showSuccess(title, body) { iziToast.success({ - title: this.notificationTitle, - message: this.notificationMessage, + title: title, + message: body, + color: 'green' }) + }, + isSelected(index) { + return this.selectedChapter === index } } }) -let gameLaunching = false -let selectedChapter = -1; - -ipcRenderer.on("nick", (_, args) => app.nick = args.name) +let root = app.mount("#vue") ipcRenderer.on("invalidated", () => { - app.invalidateButtonDisabled = false - app.invalidateButtonText = "Supprimer et retélécharger les bibliothèques" - app.notificationTitle = "Opération terminée" - app.notificationMessage = "Les données du jeu ont été supprimé avec succès" - app.showSuccess() + root.invalidateButtonDisabled = false + root.invalidateButtonText = "Supprimer et retélécharger les bibliothèques" + root.showSuccess("Opération terminée", "Les données du jeu ont été supprimé avec succès") }) ipcRenderer.on("progress", (e, args) => { - app.progressbarWidth = (args.task / Math.max(args.total, args.task)) * 100 - app.loadingMessageText = "Téléchargement de " + args.type + ": " + args.task + " sur " + Math.max(args.total, args.task) + root.progressbarWidth = (args.task / Math.max(args.total, args.task)) * 100 + root.loadingMessageText = "Téléchargement de " + args.type + ": " + args.task + " sur " + Math.max(args.total, args.task) }) ipcRenderer.on("close", (_e, _args) => { - app.launchBtnHidden = false - app.fullprogressbarHidden = true - app.loadingMessageHidden = true - app.loadingMessageText = "Chargement de Minecraft en cours..." - app.progressbarWidth = 0 - app.launchBtnDisable = false - gameLaunching = false + root.launchBtnHidden = false + root.fullprogressbarHidden = true + root.loadingMessageHidden = true + root.loadingMessageText = "Chargement de Minecraft en cours..." + root.progressbarWidth = 0 + root.launchBtnDisable = false + root.gameLaunching = false }) ipcRenderer.on('launch', (_e, _args) => { - app.fullprogressbarHidden = true - app.loadingMessageHidden = true + root.fullprogressbarHidden = true + root.loadingMessageHidden = true }) -ipcRenderer.on("modsInformations", (e, args) => { - console.log(args) +setInterval(() => { + ipcRenderer.send("pageReady") +}, 500) + +ipcRenderer.on("modsInformations", (_e, args) => { if(args === null) { - app.sidebarContent = "

Une erreur est survenue lors de la récupération des informations, vérifiez votre connexion internet puis cliquez sur réessayez

" - + "" + root.modsInformationsLoaded = false } else { - let element = "" - for(const i in args) { - element += `

${args[i].title}

${args[i].description}

` - } - app.sidebarContent = element + root.modsInformationsLoaded = true } + root.updateModsInformations(args) }) -function changeSelectedChapter(element) { - selectedChapter = Number(element.dataset.chapter) - document.querySelectorAll("#sidebar-content > div").forEach((v) => { - v.classList.remove("selected") - }) - element.classList.add("selected") - app.launchBtnText = "JOUER" - app.launchBtnDisable = false -} +ipcRenderer.on("nick", (_e, args) => root.nick = args.name) \ No newline at end of file diff --git a/src/client/assets/js/login.js b/src/client/assets/js/login.js index cce4bb5..9c185b8 100644 --- a/src/client/assets/js/login.js +++ b/src/client/assets/js/login.js @@ -1,16 +1,16 @@ // const {default: iziToast } = require('izitoast') -let app = new vue({ - el: "#vue", - data: { - login: "Connexion", - email: "Email", - password: "Mot de passe", - send_credentials: "Se connecter", - microsoft_button: "Connexion avec un compte Microsoft", - notificationTitle: "", - notificationMessage: "" + +app = vue.createApp({ + data() { + return { + login: "Connexion", + email: "Email", + password: "Mot de passe", + send_credentials: "Se connecter", + microsoft_button: "Connexion avec un compte Microsoft", + } }, - mounted: function () { + mounted() { iziToast.settings({ close: false, closeOnClick: true, @@ -20,7 +20,7 @@ let app = new vue({ }) }, methods: { - formSubmit: function (e) { + formSubmit (e) { e.preventDefault() if(!microsoftButton.disabled) { form.disabled = true @@ -30,13 +30,12 @@ let app = new vue({ pass: password.value }) }else{ - this.notificationTitle = "Erreur de connexion" - this.notificationMessage = "Veuillez entrer des identifiants" - this.showWarning() + this.showWarning("Erreur de connexion", "Veuillez entrer des identifiants") + form.disabled = false } } }, - microsoftButton: function (e) { + microsoftButton(e) { e.preventDefault() if(!form.disabled) { microsoftButton.disabled = true @@ -44,44 +43,47 @@ let app = new vue({ ipcRenderer.send("microsoft-login") } }, - showInfo: function () { + showInfo(title, body) { iziToast.info({ - title: this.notificationTitle, - message: this.notificationMessage, + title: title, + message: body, color: 'blue' }) }, - showError: function() { - iziToast.show({ - title: this.notificationTitle, - message: this.notificationMessage, - color: 'red' - + showError(title, body) { + iziToast.error({ + title: title, + message: body, + color: 'red', }) }, - showWarning: function() { + showWarning(title, body) { iziToast.warning({ - title: this.notificationTitle, - message: this.notificationMessage, + title: title, + message: body, color: 'yellow' }) }, - showSuccess: function () { + showSuccess(title, body) { iziToast.success({ - title: this.notificationTitle, - message: this.notificationMessage, + title: title, + message: body, color: 'green' }) } } }); +app.mount("#vue"); + // theirs const are declared after vue cause vue modify them when declaring new vue instance const form = document.querySelector('#login-form') const user = document.querySelector('#nickname') const password = document.querySelector('#password') const microsoftButton = document.querySelector("#microsoft-button") + + ipcRenderer.on("loginError", () => { form.disabled = false microsoftButton.disabled = false diff --git a/src/client/assets/js/preload.js b/src/client/assets/js/preload.js index 822e5aa..76c5a59 100644 --- a/src/client/assets/js/preload.js +++ b/src/client/assets/js/preload.js @@ -1,7 +1,7 @@ 'use strict'; -const { ipcRenderer, shell } = require('electron'); -const vue = require('vue/dist/vue.common.prod') - +const { ipcRenderer } = require('electron'); +const vue = require('vue/dist/vue.cjs.js') +let app; window.addEventListener("DOMContentLoaded", () => { const minimizeButton = document.getElementById("minimize-btn") const closeButton = document.getElementById("close-btn") @@ -16,15 +16,15 @@ ipcRenderer.on('notification', (_e, args) => { app.notificationMessage = args.body switch(args.class) { case "success": - app.showSuccess() + app._component.methods.showSuccess(args.title, args.body) break; case "warning": - app.showWarning() + app._component.methods.showWarning(args.title, args.body) break; case "error": - app.showError() + app._component.methods.showError(args.title, args.body) break; case "info":default: - app.showInfo() + app._component.methods.showInfo(args.title, args.body) } }) diff --git a/src/client/index.html b/src/client/index.html index 28469d2..f1aede7 100644 --- a/src/client/index.html +++ b/src/client/index.html @@ -38,7 +38,14 @@
diff --git a/src/server/main.js b/src/server/main.js index 2cf9f0f..5c73576 100644 --- a/src/server/main.js +++ b/src/server/main.js @@ -24,7 +24,7 @@ function createWindow () { }, frame: false }) - Menu.setApplicationMenu(null) + //Menu.setApplicationMenu(null) win.loadFile('src/client/login.html').then(() => { require('./updater.js').configUpdater(app, autoUpdater, dialog, logger, showNotification) }) @@ -86,10 +86,7 @@ ipcMain.on("disconnect", () => { }) - -ipcMain.on("demandModsInformations", (e) => { - minecraft.getModsInformations(e) -}) - - - +ipcMain.on("pageReady", (event) => { + event.sender.send("nick", { name: minecraft.auth.name }) + minecraft.getModsInformations(event) +}) \ No newline at end of file diff --git a/src/server/minecraft.js b/src/server/minecraft.js index 8d8d28a..e61379b 100644 --- a/src/server/minecraft.js +++ b/src/server/minecraft.js @@ -30,9 +30,7 @@ class Minecraft { if(isDev || password.trim() !== "") { this.auth = Authenticator.getAuth(username, password) this.auth.then(v => { - win.loadFile('src/client/index.html').then(() => { - event.sender.send("nick", { name: v.name }) - }) + win.loadFile('src/client/index.html') }).catch(() => { event.sender.send("loginError") logger.error("[MJ login] User haven't purchase the game") @@ -64,9 +62,7 @@ class Minecraft { } else { if(!msmc.isDemoUser(result)) { this.auth = msmc.getMCLC().getAuth(result) - win.loadFile('src/client/index.html').then(() => { - event.sender.send("nick", { name: this.auth.name }) - }) + win.loadFile('src/client/index.html') } else { event.sender.send("loginError") logger.error("[MS login] User haven't purchase the game")