4
0
mirror of https://github.com/AltarikMC/Launcher synced 2024-11-22 06:19:50 +01:00

Merge pull request #101 from AltarikMC/dependabot/npm_and_yarn/vue-3.2.30

Bump vue from 2.6.14 to 3.2.30
This commit is contained in:
Quentin Legot 2022-02-18 21:27:40 +01:00 committed by GitHub
commit 9e8dc0249f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 506 additions and 161 deletions

361
package-lock.json generated
View File

@ -21,7 +21,7 @@
"izitoast": "^1.4.0", "izitoast": "^1.4.0",
"minecraft-launcher-core": "^3.16.11", "minecraft-launcher-core": "^3.16.11",
"msmc": "^3.0.6", "msmc": "^3.0.6",
"vue": "^2.6.14" "vue": "^3.2.30"
}, },
"devDependencies": { "devDependencies": {
"@electron-forge/cli": "^6.0.0-beta.63", "@electron-forge/cli": "^6.0.0-beta.63",
@ -29,6 +29,17 @@
"electron": "^17.0.0" "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": { "node_modules/@electron-forge/async-ora": {
"version": "6.0.0-beta.63", "version": "6.0.0-beta.63",
"resolved": "https://registry.npmjs.org/@electron-forge/async-ora/-/async-ora-6.0.0-beta.63.tgz", "resolved": "https://registry.npmjs.org/@electron-forge/async-ora/-/async-ora-6.0.0-beta.63.tgz",
@ -981,6 +992,108 @@
"@types/node": "*" "@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": { "node_modules/abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@ -1827,6 +1940,11 @@
"node": ">= 10" "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": { "node_modules/cuint": {
"version": "0.2.2", "version": "0.2.2",
"resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
@ -2661,6 +2779,11 @@
"url": "https://github.com/sponsors/sindresorhus" "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": { "node_modules/execa": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
@ -4154,6 +4277,14 @@
"node": ">= 6" "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": { "node_modules/make-fetch-happen": {
"version": "9.1.0", "version": "9.1.0",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
@ -4579,6 +4710,17 @@
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true "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": { "node_modules/negotiator": {
"version": "0.6.2", "version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "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", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" "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": { "node_modules/picomatch": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@ -5247,6 +5394,23 @@
"node": ">=6" "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": { "node_modules/prepend-http": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
@ -5844,7 +6008,14 @@
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "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": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
@ -5859,6 +6030,11 @@
"source-map": "^0.6.0" "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": { "node_modules/spdx-correct": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
@ -6464,9 +6640,16 @@
} }
}, },
"node_modules/vue": { "node_modules/vue": {
"version": "2.6.14", "version": "3.2.30",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.30.tgz",
"integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" "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": { "node_modules/wcwidth": {
"version": "1.0.1", "version": "1.0.1",
@ -6767,6 +6950,11 @@
} }
}, },
"dependencies": { "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": { "@electron-forge/async-ora": {
"version": "6.0.0-beta.63", "version": "6.0.0-beta.63",
"resolved": "https://registry.npmjs.org/@electron-forge/async-ora/-/async-ora-6.0.0-beta.63.tgz", "resolved": "https://registry.npmjs.org/@electron-forge/async-ora/-/async-ora-6.0.0-beta.63.tgz",
@ -7520,6 +7708,105 @@
"@types/node": "*" "@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": { "abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "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": { "cuint": {
"version": "0.2.2", "version": "0.2.2",
"resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
@ -8815,6 +9107,11 @@
"dev": true, "dev": true,
"optional": 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": { "execa": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "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": { "make-fetch-happen": {
"version": "9.1.0", "version": "9.1.0",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
@ -10305,6 +10610,11 @@
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true "dev": true
}, },
"nanoid": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
"integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA=="
},
"negotiator": { "negotiator": {
"version": "0.6.2", "version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "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", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" "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": { "picomatch": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@ -10799,6 +11114,16 @@
"xmlbuilder": "^9.0.7" "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": { "prepend-http": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
@ -11249,8 +11574,12 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
"dev": true },
"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": { "source-map-support": {
"version": "0.5.20", "version": "0.5.20",
@ -11262,6 +11591,11 @@
"source-map": "^0.6.0" "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": { "spdx-correct": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
@ -11764,9 +12098,16 @@
} }
}, },
"vue": { "vue": {
"version": "2.6.14", "version": "3.2.30",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.30.tgz",
"integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" "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": { "wcwidth": {
"version": "1.0.1", "version": "1.0.1",

View File

@ -41,7 +41,7 @@
"izitoast": "^1.4.0", "izitoast": "^1.4.0",
"minecraft-launcher-core": "^3.16.11", "minecraft-launcher-core": "^3.16.11",
"msmc": "^3.0.6", "msmc": "^3.0.6",
"vue": "^2.6.14" "vue": "^3.2.30"
}, },
"config": { "config": {
"forge": "./config.forge.js" "forge": "./config.forge.js"

View File

@ -1,9 +1,9 @@
const os = require('os') const os = require('os')
const totalMem = os.totalmem() / (1.049 * Math.pow(10, 6)) const totalMem = os.totalmem() / (1.049 * Math.pow(10, 6))
let app = new vue({ app = vue.createApp({
el: "#vue", data() {
data: { return {
minMemValue: localStorage.getItem("minMem") != null ? localStorage.getItem("minMem") : 1024 , minMemValue: localStorage.getItem("minMem") != null ? localStorage.getItem("minMem") : 1024 ,
maxMemValue: localStorage.getItem("maxMem") != null ? localStorage.getItem("maxMem") : 2048, maxMemValue: localStorage.getItem("maxMem") != null ? localStorage.getItem("maxMem") : 2048,
memStep: 128, memStep: 128,
@ -20,11 +20,14 @@ let app = new vue({
fullprogressbarHidden: true, fullprogressbarHidden: true,
progressbarWidth: 0, progressbarWidth: 0,
sidebarContent: "<hr><p>Chargement en cours</p>", sidebarContent: "<hr><p>Chargement en cours</p>",
notificationTitle: "", modsInformations: [],
notificationMessage: "" modsInformationsLoaded: true,
selectedChapter: -1,
gameLaunching: false
}
}, },
mounted: function () { mounted () {
this.demandModsInformations()
iziToast.settings({ iziToast.settings({
close: false, close: false,
closeOnClick: true, closeOnClick: true,
@ -34,131 +37,130 @@ let app = new vue({
}) })
}, },
methods: { methods: {
invalidateData: function () { invalidateData () {
this.invalidateButtonDisabled = true this.invalidateButtonDisabled = true
this.invalidateButtonText = "Opération en cours" this.invalidateButtonText = "Opération en cours"
this.notificationTitle = "Opération en cours" this.showInfo("Opération en cours", "Suppression des données du jeu en cours")
this.notificationMessage = "Suppression des données du jeu en cours"
this.showInfo()
ipcRenderer.send('invalidateData') ipcRenderer.send('invalidateData')
}, },
launchBtnClick: function () { launchBtnClick () {
this.launchBtnHidden = true this.launchBtnHidden = true
this.fullprogressbarHidden = false this.fullprogressbarHidden = false
app.loadingMessageHidden = false this.loadingMessageHidden = false
if(Number(this.minMemValue) <= Number(this.maxMemValue)){ if(Number(this.minMemValue) <= Number(this.maxMemValue)){
ipcRenderer.send('launch', { ipcRenderer.send('launch', {
minMem: this.minMemValue + "M", minMem: this.minMemValue + "M",
maxMem: this.maxMemValue + "M", maxMem: this.maxMemValue + "M",
chapter: selectedChapter chapter: this.selectedChapter
}) })
app.launchBtnDisable = true this.launchBtnDisable = true
localStorage.setItem("minMem", this.minMemValue) localStorage.setItem("minMem", this.minMemValue)
localStorage.setItem("maxMem", this.maxMemValue) localStorage.setItem("maxMem", this.maxMemValue)
gameLaunching = true this.gameLaunching = true
} else{ } else {
app.notificationTitle = "Erreur de lancement" this.showError("Erreur de lancement", "La mémoire minimale doit être inférieure ou égale à la mémoire maximale.")
app.notificationMessage = "La mémoire minimale doit être inférieure ou égale à la mémoire maximale."
this.showError()
} }
}, },
disconnectBtn: function () { changeSelectedChapter(index) {
this.selectedChapter = parseInt(index)
root.launchBtnText = "JOUER"
root.launchBtnDisable = false
},
disconnectBtn () {
ipcRenderer.send('disconnect') ipcRenderer.send('disconnect')
}, },
options: function () { options () {
if(!gameLaunching) if(!this.gameLaunching)
this.displayFullscreen = "block" this.displayFullscreen = "block"
}, },
discord: () => shell.openExternal("https://discord.gg/b923tMhmRE"), discord() {
web: () => shell.openExternal("https://altarik.fr"), shell.openExternal("https://discord.gg/b923tMhmRE") }
closeFullscreen: function () { ,
web() {
shell.openExternal("https://altarik.fr")
},
closeFullscreen () {
this.displayFullscreen = "none" this.displayFullscreen = "none"
}, },
demandModsInformations: function () { updateModsInformations(content) {
ipcRenderer.send('demandModsInformations') this.modsInformations = content
}, },
showInfo: function () { getModsInformations() {
return this.modsInformations
},
showInfo(title, body) {
iziToast.info({ iziToast.info({
title: this.notificationTitle, title: title,
message: this.notificationMessage, message: body,
color: 'blue'
}) })
}, },
showError: function() { showError(title, body) {
iziToast.show({ iziToast.error({
title: this.notificationTitle, title: title,
message: this.notificationMessage, message: body,
color: 'red' color: 'red',
}) })
}, },
showWarning: function() { showWarning(title, body) {
iziToast.warning({ iziToast.warning({
title: this.notificationTitle, title: title,
message: this.notificationMessage, message: body,
color: 'yellow'
}) })
}, },
showSuccess: function () { showSuccess(title, body) {
iziToast.success({ iziToast.success({
title: this.notificationTitle, title: title,
message: this.notificationMessage, message: body,
color: 'green'
}) })
},
isSelected(index) {
return this.selectedChapter === index
} }
} }
}) })
let gameLaunching = false
let selectedChapter = -1; let root = app.mount("#vue")
ipcRenderer.on("nick", (_, args) => app.nick = args.name)
ipcRenderer.on("invalidated", () => { ipcRenderer.on("invalidated", () => {
app.invalidateButtonDisabled = false root.invalidateButtonDisabled = false
app.invalidateButtonText = "Supprimer et retélécharger les bibliothèques" root.invalidateButtonText = "Supprimer et retélécharger les bibliothèques"
app.notificationTitle = "Opération terminée" root.showSuccess("Opération terminée", "Les données du jeu ont été supprimé avec succès")
app.notificationMessage = "Les données du jeu ont été supprimé avec succès"
app.showSuccess()
}) })
ipcRenderer.on("progress", (e, args) => { ipcRenderer.on("progress", (e, args) => {
app.progressbarWidth = (args.task / Math.max(args.total, args.task)) * 100 root.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.loadingMessageText = "Téléchargement de " + args.type + ": " + args.task + " sur " + Math.max(args.total, args.task)
}) })
ipcRenderer.on("close", (_e, _args) => { ipcRenderer.on("close", (_e, _args) => {
app.launchBtnHidden = false root.launchBtnHidden = false
app.fullprogressbarHidden = true root.fullprogressbarHidden = true
app.loadingMessageHidden = true root.loadingMessageHidden = true
app.loadingMessageText = "Chargement de Minecraft en cours..." root.loadingMessageText = "Chargement de Minecraft en cours..."
app.progressbarWidth = 0 root.progressbarWidth = 0
app.launchBtnDisable = false root.launchBtnDisable = false
gameLaunching = false root.gameLaunching = false
}) })
ipcRenderer.on('launch', (_e, _args) => { ipcRenderer.on('launch', (_e, _args) => {
app.fullprogressbarHidden = true root.fullprogressbarHidden = true
app.loadingMessageHidden = true root.loadingMessageHidden = true
}) })
ipcRenderer.on("modsInformations", (e, args) => { setInterval(() => {
console.log(args) ipcRenderer.send("pageReady")
}, 500)
ipcRenderer.on("modsInformations", (_e, args) => {
if(args === null) { if(args === null) {
app.sidebarContent = "<hr><p>Une erreur est survenue lors de la récupération des informations, vérifiez votre connexion internet puis cliquez sur réessayez</p>" root.modsInformationsLoaded = false
+ "<button onclick=\"app.demandModsInformations()\">Réessayer</button>"
} else { } else {
let element = "" root.modsInformationsLoaded = true
for(const i in args) {
element += `<hr><div data-chapter="${i}" onclick="changeSelectedChapter(this)"><h3>${args[i].title}</h3><p>${args[i].description}</p></div>`
}
app.sidebarContent = element
} }
root.updateModsInformations(args)
}) })
function changeSelectedChapter(element) { ipcRenderer.on("nick", (_e, args) => root.nick = args.name)
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
}

View File

@ -1,16 +1,16 @@
// const {default: iziToast } = require('izitoast') // const {default: iziToast } = require('izitoast')
let app = new vue({
el: "#vue", app = vue.createApp({
data: { data() {
return {
login: "Connexion", login: "Connexion",
email: "Email", email: "Email",
password: "Mot de passe", password: "Mot de passe",
send_credentials: "Se connecter", send_credentials: "Se connecter",
microsoft_button: "Connexion avec un compte Microsoft", microsoft_button: "Connexion avec un compte Microsoft",
notificationTitle: "", }
notificationMessage: ""
}, },
mounted: function () { mounted() {
iziToast.settings({ iziToast.settings({
close: false, close: false,
closeOnClick: true, closeOnClick: true,
@ -20,7 +20,7 @@ let app = new vue({
}) })
}, },
methods: { methods: {
formSubmit: function (e) { formSubmit (e) {
e.preventDefault() e.preventDefault()
if(!microsoftButton.disabled) { if(!microsoftButton.disabled) {
form.disabled = true form.disabled = true
@ -30,13 +30,12 @@ let app = new vue({
pass: password.value pass: password.value
}) })
}else{ }else{
this.notificationTitle = "Erreur de connexion" this.showWarning("Erreur de connexion", "Veuillez entrer des identifiants")
this.notificationMessage = "Veuillez entrer des identifiants" form.disabled = false
this.showWarning()
} }
} }
}, },
microsoftButton: function (e) { microsoftButton(e) {
e.preventDefault() e.preventDefault()
if(!form.disabled) { if(!form.disabled) {
microsoftButton.disabled = true microsoftButton.disabled = true
@ -44,44 +43,47 @@ let app = new vue({
ipcRenderer.send("microsoft-login") ipcRenderer.send("microsoft-login")
} }
}, },
showInfo: function () { showInfo(title, body) {
iziToast.info({ iziToast.info({
title: this.notificationTitle, title: title,
message: this.notificationMessage, message: body,
color: 'blue' color: 'blue'
}) })
}, },
showError: function() { showError(title, body) {
iziToast.show({ iziToast.error({
title: this.notificationTitle, title: title,
message: this.notificationMessage, message: body,
color: 'red' color: 'red',
}) })
}, },
showWarning: function() { showWarning(title, body) {
iziToast.warning({ iziToast.warning({
title: this.notificationTitle, title: title,
message: this.notificationMessage, message: body,
color: 'yellow' color: 'yellow'
}) })
}, },
showSuccess: function () { showSuccess(title, body) {
iziToast.success({ iziToast.success({
title: this.notificationTitle, title: title,
message: this.notificationMessage, message: body,
color: 'green' color: 'green'
}) })
} }
} }
}); });
app.mount("#vue");
// theirs const are declared after vue cause vue modify them when declaring new vue instance // theirs const are declared after vue cause vue modify them when declaring new vue instance
const form = document.querySelector('#login-form') const form = document.querySelector('#login-form')
const user = document.querySelector('#nickname') const user = document.querySelector('#nickname')
const password = document.querySelector('#password') const password = document.querySelector('#password')
const microsoftButton = document.querySelector("#microsoft-button") const microsoftButton = document.querySelector("#microsoft-button")
ipcRenderer.on("loginError", () => { ipcRenderer.on("loginError", () => {
form.disabled = false form.disabled = false
microsoftButton.disabled = false microsoftButton.disabled = false

View File

@ -1,7 +1,7 @@
'use strict'; 'use strict';
const { ipcRenderer, shell } = require('electron'); const { ipcRenderer } = require('electron');
const vue = require('vue/dist/vue.common.prod') const vue = require('vue/dist/vue.cjs.js')
let app;
window.addEventListener("DOMContentLoaded", () => { window.addEventListener("DOMContentLoaded", () => {
const minimizeButton = document.getElementById("minimize-btn") const minimizeButton = document.getElementById("minimize-btn")
const closeButton = document.getElementById("close-btn") const closeButton = document.getElementById("close-btn")
@ -16,15 +16,15 @@ ipcRenderer.on('notification', (_e, args) => {
app.notificationMessage = args.body app.notificationMessage = args.body
switch(args.class) { switch(args.class) {
case "success": case "success":
app.showSuccess() app._component.methods.showSuccess(args.title, args.body)
break; break;
case "warning": case "warning":
app.showWarning() app._component.methods.showWarning(args.title, args.body)
break; break;
case "error": case "error":
app.showError() app._component.methods.showError(args.title, args.body)
break; break;
case "info":default: case "info":default:
app.showInfo() app._component.methods.showInfo(args.title, args.body)
} }
}) })

View File

@ -38,7 +38,14 @@
<div id="content"> <div id="content">
<div id="sidebar"> <div id="sidebar">
<h2>Chapitres</h2> <h2>Chapitres</h2>
<div id="sidebar-content" v-html="sidebarContent"></div> <div id="sidebar-content" @change="modsInformations">
<div v-if="modsInformationsLoaded === false">Une erreur est survenue lors de la récupération des informations, vérifiez votre connexion internet puis cliquez sur réessayez</div>
<div v-for="(item, index) in modsInformations" v-else-if="modsInformations.length !== 0" v-on:click="changeSelectedChapter(index)" :class="{ selected: isSelected(index) }">
<h3>{{ item.title }}</h3>
<p>{{ item.description}}</p>
</div>
<div v-else>Chargement en cours</div>
</div>
</div> </div>
<div id="media"> <div id="media">
<div @click="options" title="Paramètres"> <div @click="options" title="Paramètres">

View File

@ -24,7 +24,7 @@ function createWindow () {
}, },
frame: false frame: false
}) })
Menu.setApplicationMenu(null) //Menu.setApplicationMenu(null)
win.loadFile('src/client/login.html').then(() => { win.loadFile('src/client/login.html').then(() => {
require('./updater.js').configUpdater(app, autoUpdater, dialog, logger, showNotification) require('./updater.js').configUpdater(app, autoUpdater, dialog, logger, showNotification)
}) })
@ -86,10 +86,7 @@ ipcMain.on("disconnect", () => {
}) })
ipcMain.on("pageReady", (event) => {
ipcMain.on("demandModsInformations", (e) => { event.sender.send("nick", { name: minecraft.auth.name })
minecraft.getModsInformations(e) minecraft.getModsInformations(event)
}) })

View File

@ -30,9 +30,7 @@ class Minecraft {
if(isDev || password.trim() !== "") { if(isDev || password.trim() !== "") {
this.auth = Authenticator.getAuth(username, password) this.auth = Authenticator.getAuth(username, password)
this.auth.then(v => { this.auth.then(v => {
win.loadFile('src/client/index.html').then(() => { win.loadFile('src/client/index.html')
event.sender.send("nick", { name: v.name })
})
}).catch(() => { }).catch(() => {
event.sender.send("loginError") event.sender.send("loginError")
logger.error("[MJ login] User haven't purchase the game") logger.error("[MJ login] User haven't purchase the game")
@ -64,9 +62,7 @@ class Minecraft {
} else { } else {
if(!msmc.isDemoUser(result)) { if(!msmc.isDemoUser(result)) {
this.auth = msmc.getMCLC().getAuth(result) this.auth = msmc.getMCLC().getAuth(result)
win.loadFile('src/client/index.html').then(() => { win.loadFile('src/client/index.html')
event.sender.send("nick", { name: this.auth.name })
})
} else { } else {
event.sender.send("loginError") event.sender.send("loginError")
logger.error("[MS login] User haven't purchase the game") logger.error("[MS login] User haven't purchase the game")