From ce7c6c04db6482b7f2f26627205eb50e6ebb25e3 Mon Sep 17 00:00:00 2001 From: yupix Date: 2023年7月29日 16:07:15 +0900 Subject: [PATCH 1/8] fix: not working fullscreen option --- src/Minecraft/Minecraft-Arguments.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Minecraft/Minecraft-Arguments.ts b/src/Minecraft/Minecraft-Arguments.ts index 36a41e67..00ae0cd9 100755 --- a/src/Minecraft/Minecraft-Arguments.ts +++ b/src/Minecraft/Minecraft-Arguments.ts @@ -58,11 +58,13 @@ export default class MinecraftArguments { } if (this.options.screen) { - if (this.options.screen.width !== null && this.options.screen.height !== null) { + if (this.options.screen.width !== null && this.options.screen.height !== null && !this.options.screen.fullscreen) { game.push('--width') game.push(this.options.screen.width) game.push('--height') game.push(this.options.screen.height) + } else { + game.push('--fullscreen') } } From 6ea228fd91ff77589416c033794708fd1a6055aa Mon Sep 17 00:00:00 2001 From: yupix Date: 2023年7月29日 16:08:18 +0900 Subject: [PATCH 2/8] =?UTF-8?q?feat:=20=E5=9E=8B=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor: あんまりよくない変数の使い方してるので修正 --- src/@types/minecraft.d.ts | 16 +++++ src/Minecraft/Minecraft-Java.ts | 112 ++++++++++++++++++++++++++------ 2 files changed, 109 insertions(+), 19 deletions(-) create mode 100644 src/@types/minecraft.d.ts diff --git a/src/@types/minecraft.d.ts b/src/@types/minecraft.d.ts new file mode 100644 index 00000000..2f0201aa --- /dev/null +++ b/src/@types/minecraft.d.ts @@ -0,0 +1,16 @@ +interface IMinecraftVersionManifest { + files: IMinecraftVersionManifestFile[] +} + +interface IMinecraftVersionManifestFile { + executable?: boolean; + downloads: { + raw: { + sha1: string; + size: number; + url: string; + } + } + type: string; +} + diff --git a/src/Minecraft/Minecraft-Java.ts b/src/Minecraft/Minecraft-Java.ts index 8af5e865..05507e1e 100755 --- a/src/Minecraft/Minecraft-Java.ts +++ b/src/Minecraft/Minecraft-Java.ts @@ -7,47 +7,121 @@ import os from 'os'; import nodeFetch from 'node-fetch'; import path from 'path'; +interface IFile { + path: string; + executable: boolean; + sha1: string; + size: number; + url: string; + type: string; +} + +interface IJavaOptions { + path: string; +} + +export interface IJavaVersionJson { + gamecore: IGamecore; + linux: IGamecore; + "linux-i386": IGamecore; + "mac-os": IGamecore; + "mac-os-arm64": IGamecore; + "windows-arm64": IGamecore; + "windows-x64": IGamecore; + "windows-x86": IGamecore; +} + +export interface IGamecore { + "java-runtime-alpha": IJavaRuntimeAlpha[]; + "java-runtime-beta": IJavaRuntimeAlpha[]; + "java-runtime-gamma": IJavaRuntimeAlpha[]; + "jre-legacy": IJavaRuntimeAlpha[]; + "minecraft-java-exe": IJavaRuntimeAlpha[]; +} + +export interface IJavaRuntimeAlpha { + availability: IAvailability; + manifest: IManifest; + version: IVersion; +} + +export interface IAvailability { + group: number; + progress: number; +} + +export interface IManifest { + sha1: string; + size: number; + url: string; +} + +export interface IVersion { + name: string; + released: Date; +} + + export default class java { - options: any; - constructor(options: any) { + options: IJavaOptions; + constructor(options: IJavaOptions) { this.options = options; } async GetJsonJava(jsonversion: any) { - let version: any; - let files: any = []; - let javaVersionsJson = await nodeFetch("https://launchermeta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json").then(res => res.json()) + let version: string; + let files: IFile[] = []; + let javaVersionsJson: IJavaVersionJson = await nodeFetch("https://launchermeta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json").then(res => res.json()) + let minecraftJavaManifest: [string, IMinecraftVersionManifestFile][] // indexの0にあたる場所にはファイルの形式が入ってる - if (!jsonversion.javaVersion) jsonversion = "jre-legacy" + + + if (!jsonversion.javaVersion) { + if (os.platform() == "win32") { + let arch = { x64: "windows-x64", ia32: "windows-x86" } + version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` + minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) + } else if (os.platform() == "darwin") { + let arch = { x64: "mac-os", arm64: "mac-os-arm64" } + version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` + minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) + } else if (os.platform() == "linux") { + let arch = { x64: "linux", ia32: "linux-i386" } + version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` + minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) + } else return console.log("OS not supported"); + } else jsonversion = jsonversion.javaVersion.component if (os.platform() == "win32") { let arch = { x64: "windows-x64", ia32: "windows-x86" } version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - javaVersionsJson = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) + minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) } else if (os.platform() == "darwin") { let arch = { x64: "mac-os", arm64: "mac-os-arm64" } version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - javaVersionsJson = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) + minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) } else if (os.platform() == "linux") { let arch = { x64: "linux", ia32: "linux-i386" } version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - javaVersionsJson = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) + minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) } else return console.log("OS not supported"); - let java = javaVersionsJson.find(file => file[0].endsWith(process.platform == "win32" ? "bin/javaw.exe" : "bin/java"))[0]; + let java = minecraftJavaManifest.find(file => file[0].endsWith(process.platform == "win32" ? "bin/javaw.exe" : "bin/java"))[0]; let toDelete = java.replace(process.platform == "win32" ? "bin/javaw.exe" : "bin/java", ""); - for (let [path, info] of javaVersionsJson) { + for (let [path, info] of minecraftJavaManifest) { if (info.type == "directory") continue; - if (!info.downloads) continue; - let file: any = {}; - file.path = `runtime/${version}/${path.replace(toDelete, "")}`; - file.executable = info.executable; - file.sha1 = info.downloads.raw.sha1; - file.size = info.downloads.raw.size; - file.url = info.downloads.raw.url; - file.type = "Java"; + if (!info.downloads) continue; // IMinecraftVersionManifestFile + let file: IFile = { + path: `runtime/${version}/${path.replace(toDelete, "")}`, + executable: info.executable, + sha1: info.downloads.raw.sha1, + size: info.downloads.raw.size, + url: info.downloads.raw.url, + type: "Java", + }; + files.push(file); } return { From 49f71c17661bb9fb6e099bf8c1bc56a6c93e978a Mon Sep 17 00:00:00 2001 From: yupix Date: 2023年7月29日 16:21:58 +0900 Subject: [PATCH 3/8] =?UTF-8?q?refactor:=20=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=81=AE=E6=9C=80=E9=81=A9=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Minecraft/Minecraft-Java.ts | 46 ++++++++++----------------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/src/Minecraft/Minecraft-Java.ts b/src/Minecraft/Minecraft-Java.ts index 05507e1e..d60d5ca3 100755 --- a/src/Minecraft/Minecraft-Java.ts +++ b/src/Minecraft/Minecraft-Java.ts @@ -72,40 +72,20 @@ export default class java { let version: string; let files: IFile[] = []; let javaVersionsJson: IJavaVersionJson = await nodeFetch("https://launchermeta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json").then(res => res.json()) - let minecraftJavaManifest: [string, IMinecraftVersionManifestFile][] // indexの0にあたる場所にはファイルの形式が入ってる - - - - if (!jsonversion.javaVersion) { - if (os.platform() == "win32") { - let arch = { x64: "windows-x64", ia32: "windows-x86" } - version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) - } else if (os.platform() == "darwin") { - let arch = { x64: "mac-os", arm64: "mac-os-arm64" } - version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) - } else if (os.platform() == "linux") { - let arch = { x64: "linux", ia32: "linux-i386" } - version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) - } else return console.log("OS not supported"); + let minecraftJavaManifest: [string, IMinecraftVersionManifestFile][] // indexの0にあたる場所にはファイルの形式が入ってる + + const platformArchitecture = { + win32: { x64: "windows-x64", ia32: "windows-x86" }, + darwin: { x64: "mac-os", arm64: "mac-os-arm64" }, + linux: { x64: "linux", ia32: "linux-i386" } } - else jsonversion = jsonversion.javaVersion.component - - if (os.platform() == "win32") { - let arch = { x64: "windows-x64", ia32: "windows-x86" } - version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) - } else if (os.platform() == "darwin") { - let arch = { x64: "mac-os", arm64: "mac-os-arm64" } - version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) - } else if (os.platform() == "linux") { - let arch = { x64: "linux", ia32: "linux-i386" } - version = `jre-${javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].version.name}` - minecraftJavaManifest = Object.entries((await nodeFetch(javaVersionsJson[`${arch[os.arch()]}`][jsonversion][0].manifest.url).then(res => res.json())).files) - } else return console.log("OS not supported"); + jsonversion = jsonversion.javaVersion ? 'jre-legacy' : jsonversion.javaVersion.component + const platform = os.platform(); + const useArchitecture = platformArchitecture[platform]; + if (Object.keys(platformArchitecture).includes(platform) === false) return console.log("OS not supported"); + + let url = javaVersionsJson[useArchitecture][jsonversion][0].manifest.url + minecraftJavaManifest = Object.entries((await nodeFetch(url).then(res => res.json())).files) let java = minecraftJavaManifest.find(file => file[0].endsWith(process.platform == "win32" ? "bin/javaw.exe" : "bin/java"))[0]; let toDelete = java.replace(process.platform == "win32" ? "bin/javaw.exe" : "bin/java", ""); From 95b6444838cfc72f371679851cef9d066bfed531 Mon Sep 17 00:00:00 2001 From: yupix Date: 2023年7月29日 16:35:00 +0900 Subject: [PATCH 4/8] =?UTF-8?q?refactor:=20=E5=9E=8B=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: sousuke0422 --- src/Minecraft/Minecraft-Json.ts | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/Minecraft/Minecraft-Json.ts b/src/Minecraft/Minecraft-Json.ts index 4a72d381..60523cbf 100755 --- a/src/Minecraft/Minecraft-Json.ts +++ b/src/Minecraft/Minecraft-Json.ts @@ -4,18 +4,37 @@ */ import nodeFetch from 'node-fetch'; +import { ILauncherOptions } from '../Launch'; + +interface IJsonVersion { + id: string + type: 'release' | 'snapshot' + url: string + time: string + sha1: string + complianceLevel: number +} + +export interface IVersionJson { + latest: { + release: string + snapshot: string + } + versions: IJsonVersion[] + +} export default class Json { - options: any; + options: ILauncherOptions; - constructor(options: any) { + constructor(options: ILauncherOptions) { this.options = options; } async GetInfoVersion() { let version: string = this.options.version; - let data: any = await nodeFetch(`https://launchermeta.mojang.com/mc/game/version_manifest_v2.json?_t=${new Date().toISOString()}`); - data = await data.json(); + const res = await nodeFetch(`https://launchermeta.mojang.com/mc/game/version_manifest_v2.json?_t=${new Date().toISOString()}`); + const data: IVersionJson = await res.json(); if (version == 'latest_release' || version == 'r' || version == 'lr') { version = data.latest.release; @@ -24,7 +43,7 @@ export default class Json { version = data.latest.snapshot; } - data = data.versions.find(v => v.id === version); + const InfoVersion = data.versions.find(v => v.id === version); if (!data) return { error: true, @@ -32,8 +51,8 @@ export default class Json { }; return { - InfoVersion: data, - json: await nodeFetch(data.url).then(res => res.json()), + InfoVersion, + json: data, version: version }; } From b4b5ffab3dc09d9b0ec70044bb8e75b9e217cad0 Mon Sep 17 00:00:00 2001 From: yupix Date: 2023年7月29日 16:36:43 +0900 Subject: [PATCH 5/8] =?UTF-8?q?fix:=20version=E5=A4=89=E6=95=B0=E3=82=92?= =?UTF-8?q?=E8=AA=A4=E3=81=A3=E3=81=A6=E5=89=8A=E9=99=A4=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Minecraft/Minecraft-Java.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Minecraft/Minecraft-Java.ts b/src/Minecraft/Minecraft-Java.ts index d60d5ca3..63b6f58a 100755 --- a/src/Minecraft/Minecraft-Java.ts +++ b/src/Minecraft/Minecraft-Java.ts @@ -69,10 +69,8 @@ export default class java { } async GetJsonJava(jsonversion: any) { - let version: string; let files: IFile[] = []; let javaVersionsJson: IJavaVersionJson = await nodeFetch("https://launchermeta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json").then(res => res.json()) - let minecraftJavaManifest: [string, IMinecraftVersionManifestFile][] // indexの0にあたる場所にはファイルの形式が入ってる const platformArchitecture = { win32: { x64: "windows-x64", ia32: "windows-x86" }, @@ -84,11 +82,13 @@ export default class java { const useArchitecture = platformArchitecture[platform]; if (Object.keys(platformArchitecture).includes(platform) === false) return console.log("OS not supported"); - let url = javaVersionsJson[useArchitecture][jsonversion][0].manifest.url - minecraftJavaManifest = Object.entries((await nodeFetch(url).then(res => res.json())).files) + const url = javaVersionsJson[useArchitecture][jsonversion][0].manifest.url + const minecraftJavaManifest = Object.entries((await nodeFetch(url).then(res => res.json())).files) + + const version = `jre-${javaVersionsJson[platform][jsonversion][0].version.name}` - let java = minecraftJavaManifest.find(file => file[0].endsWith(process.platform == "win32" ? "bin/javaw.exe" : "bin/java"))[0]; - let toDelete = java.replace(process.platform == "win32" ? "bin/javaw.exe" : "bin/java", ""); + let java = minecraftJavaManifest.find(file => file[0].endsWith(platform == "win32" ? "bin/javaw.exe" : "bin/java"))[0]; + let toDelete = java.replace(platform == "win32" ? "bin/javaw.exe" : "bin/java", ""); for (let [path, info] of minecraftJavaManifest) { if (info.type == "directory") continue; From b4eb1fc359ce0a30c37ae7fb54ff2a51ec15aa1a Mon Sep 17 00:00:00 2001 From: yupix Date: 2023年7月29日 17:19:08 +0900 Subject: [PATCH 6/8] chore: update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 08dc1a24..a056fa41 100755 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ files .Minecraft test/*.json webfiles/instances/* +account.json From 918c1e63998ad604c3fce9ab59666d5cace2d3e7 Mon Sep 17 00:00:00 2001 From: yupix Date: 2023年7月29日 19:16:07 +0900 Subject: [PATCH 7/8] =?UTF-8?q?refactor:=20=E5=9E=8B=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: sousuke0422 --- .vscode/settings.json | 5 +- src/@types/minecraft.d.ts | 102 +++++++++++++++++++++++++++ src/@types/profile.d.ts | 16 +++++ src/Authenticator/Microsoft.ts | 48 +++++-------- src/Launch.ts | 85 ++++++++++++++++------ src/Minecraft/Minecraft-Arguments.ts | 9 +-- src/Minecraft/Minecraft-Assets.ts | 23 ++++-- src/Minecraft/Minecraft-Bundle.ts | 30 ++++++-- src/Minecraft/Minecraft-Java.ts | 18 ++--- src/Minecraft/Minecraft-Json.ts | 32 ++------- src/Minecraft/Minecraft-Libraries.ts | 25 ++++--- src/Minecraft/Minecraft-Loader.ts | 7 +- src/StatusServer/status.ts | 2 +- src/utils/Downloader.ts | 12 ++-- 14 files changed, 286 insertions(+), 128 deletions(-) create mode 100644 src/@types/profile.d.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index e2d4b7c0..3943aad6 100755 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,6 @@ { "files.exclude": { - "**/build": true, - "**/node_modules": true, - "**/package-lock.json": true + "**/build": false, + "**/node_modules": true } } \ No newline at end of file diff --git a/src/@types/minecraft.d.ts b/src/@types/minecraft.d.ts index 2f0201aa..ceaccdab 100644 --- a/src/@types/minecraft.d.ts +++ b/src/@types/minecraft.d.ts @@ -1,7 +1,28 @@ +type TLibrary = ({ + sha1: string + size: number + path: string + type: 'Native' | 'Libraries', + url: string +} | { + path: string + type: 'CFILE' + content: string +}) + interface IMinecraftVersionManifest { files: IMinecraftVersionManifestFile[] } +interface IFile { + path: string; + executable: boolean; + sha1: string; + size: number; + url: string; + type: string; +} + interface IMinecraftVersionManifestFile { executable?: boolean; downloads: { @@ -14,3 +35,84 @@ interface IMinecraftVersionManifestFile { type: string; } +interface IVersionManifestData { + id: string + type: 'release' | 'snapshot' + url: string + time: string + releaseTime: string + sha1: string + complianceLevel: number +} + +interface IVersionManifest { + latest: { + release: string + snapshot: string + } + versions: IVersionManifestData[] +} + +interface ILibrarieFile { + path: string + sha1: string + size: number + url: string +} + +interface IAssetIndex { + id: string + sha1: string + size: number + totalSize: number + url: string +} + +interface IVersionData { + id: string + name?: string + type?: string + arguments: { + game: string[] + jvm: string[] + } + client?: { + argument: string + file: ILibrarieFile + } + assetIndex: IAssetIndex + assets: string + complianceLevel: number + downloads: { + [key: string]: { + sha1: string + size: number + url: string + } + } + javaVersion: { + component: string, majorVersion: number + } + libraries: { + natives?: { + linux: string + osx: string + windows: string + } + downloads?: { + artifact?: ILibrarieFile + classifiers?: { + [key: string]: ILibrarieFile + } + }, + extract?: { + exclude: string[] + } + name: string + rules?: {action: string, os?: {name: string}}[] + }[] +} + +interface IversionAndNativesListData extends IVersionData { + nativesList: boolean +} \ No newline at end of file diff --git a/src/@types/profile.d.ts b/src/@types/profile.d.ts new file mode 100644 index 00000000..f3d1cdc3 --- /dev/null +++ b/src/@types/profile.d.ts @@ -0,0 +1,16 @@ +interface ISkin {id: string, state: "ACTIVE" | "INACTIVE", url:string, textureKey: string, variant: "SLIM" | "CLASSIC"} + +interface ICustomSkin extends ISkin {base64?: string} + +interface ICape {id: string, state: "ACTIVE" | "INACTIVE", url:string, alias: string} + +interface ICustomCape extends ICape {base64?: string} + +interface IProfile { + id: string; + name: string; + skins?: ISkin[] + capes?: ICape[] + demo?: boolean + profileActions?: object +} \ No newline at end of file diff --git a/src/Authenticator/Microsoft.ts b/src/Authenticator/Microsoft.ts index d5a14e31..7e8f9bd2 100755 --- a/src/Authenticator/Microsoft.ts +++ b/src/Authenticator/Microsoft.ts @@ -6,6 +6,9 @@ import nodeFetch from 'node-fetch'; import crypto from 'crypto'; +function instanceOfProfile(object: any): object is IProfile { + return 'id' in object; +} export default class Microsoft { client_id: string; @@ -64,13 +67,13 @@ export default class Microsoft { }, body: `grant_type=refresh_token&client_id=${this.client_id}&refresh_token=${acc.refresh_token}` }).then(res => res.json()).catch(err => { return { error: err } });; - if (oauth2.error) { - oauth2.errorType = "oauth2"; - return oauth2 - }; + if (oauth2.error) throw new Error("oauth2 error while refreshing the account.") if (timeStamp < (acc?.meta?.access_token_expires_in - 7200)) { let profile = await this.getProfile(acc) + + if (!instanceOfProfile(profile)) throw new Error("Error while refreshing the account.") + acc.refresh_token = oauth2.refresh_token acc.profile = { skins: profile.skins, @@ -96,10 +99,7 @@ export default class Microsoft { }), headers: { "Content-Type": "application/json", Accept: "application/json" }, }).then(res => res.json()).catch(err => { return { error: err } });; - if (xbl.error) { - xbl.errorType = "xbl"; - return xbl - } + if (xbl.error) throw new Error("Error while getting the xbl.") let xsts = await nodeFetch("https://xsts.auth.xboxlive.com/xsts/authorize", { method: "POST", @@ -115,10 +115,7 @@ export default class Microsoft { TokenType: "JWT" }) }).then(res => res.json()); - if (xsts.error) { - xsts.errorType = "xsts"; - return xsts - } + if (xsts.error) throw new Error("Error while getting the xsts.") let xboxAccount = await nodeFetch("https://xsts.auth.xboxlive.com/xsts/authorize", { method: "POST", @@ -134,10 +131,7 @@ export default class Microsoft { TokenType: "JWT" }) }).then(res => res.json()).catch(err => { return { error: err } }); - if (xsts.error) { - xsts.errorType = "xboxAccount"; - return xsts - } + if (xsts.error) throw new Error("Error while getting the xboxAccount.") let mcLogin = await nodeFetch("https://api.minecraftservices.com/authentication/login_with_xbox", { method: "POST", @@ -146,16 +140,10 @@ export default class Microsoft { }, body: JSON.stringify({ "identityToken": `XBL3.0 x=${xbl.DisplayClaims.xui[0].uhs};${xsts.Token}` }) }).then(res => res.json()).catch(err => { return { error: err } }); - if (mcLogin.error) { - mcLogin.errorType = "mcLogin"; - return mcLogin - } + if (mcLogin.error) throw new Error("Error while getting the mcLogin.") let profile = await this.getProfile(mcLogin); - if (profile.error) { - profile.errorType = "profile"; - return profile - } + if (!instanceOfProfile(profile)) throw new Error("Error while getting the profile.") return { access_token: mcLogin.access_token, @@ -168,7 +156,7 @@ export default class Microsoft { xuid: xboxAccount.DisplayClaims.xui[0].xid, type: "Xbox", access_token_expires_in: mcLogin.expires_in + Math.floor(Date.now() / 1000), - demo: profile.error ? true : false + demo: profile.demo ? true : false }, profile: { skins: profile.skins, @@ -178,16 +166,16 @@ export default class Microsoft { } async getProfile(mcLogin: any) { - let profile = await nodeFetch("https://api.minecraftservices.com/minecraft/profile", { + let profile: IProfile | { error: any } = await nodeFetch("https://api.minecraftservices.com/minecraft/profile", { method: "GET", headers: { 'Authorization': `Bearer ${mcLogin.access_token}` } - }).then(res => res.json()).catch(err => { return { error: err } });; - if (profile.error) return profile + }).then(res => res.json() as Promise).catch((err) => { return { error: err } }); + if (!instanceOfProfile(profile)) return profile; - let skins = profile.skins; - let capes = profile.capes; + let skins: ICustomSkin[] = profile.skins; + let capes: ICustomCape[] = profile.capes; for (let skin of skins) { skin.base64 = `data:image/png;base64,${await getBass64(skin.url)}` diff --git a/src/Launch.ts b/src/Launch.ts index 5c4d8848..50616435 100755 --- a/src/Launch.ts +++ b/src/Launch.ts @@ -22,9 +22,48 @@ import { isold } from './utils/Index.js'; import Downloader from './utils/Downloader.js'; +export interface IAuth { + [key: string]: Partial +} + +export interface ILoader { + type: 'forge' + build: 'latest' | string + enable: boolean +} + +export interface IScreen { + width: number | null + height: number | null + fullscreen: boolean +} + +export interface IMemory { + min: number | string + max: number | string +} + +export interface ILauncherOptions { + url: string | null + authenticator: IAuth //fixme + timeout: number + path: string + version: 'latest_release' | 'latest_snapshot' | string + instance: string //fixme + detached: boolean + downloadFileMultiple: number + loader: ILoader + verify: boolean + ignored: Partial[] + JVM_ARGS: Partial[] + GAME_ARGS: Partial[] + javaPath: Partial + screen: IScreen + memory: IMemory +} export default class Launch { - options: any; + options: ILauncherOptions; on: any; emit: any; @@ -33,7 +72,7 @@ export default class Launch { this.emit = EventEmitter.prototype.emit; } - async Launch(opt: any) { + async Launch(opt: ILauncherOptions) { this.options = { url: opt?.url || null, authenticator: opt?.authenticator || null, @@ -72,22 +111,21 @@ export default class Launch { if (!this.options.authenticator) return this.emit("error", { error: "Authenticator not found" }); if (this.options.downloadFileMultiple < 1) this.options.downloadFileMultiple = 1 if (this.options.downloadFileMultiple> 20) this.options.downloadFileMultiple = 20 - if (!this.options.loader.enable) this.options.loader = false; + if (!this.options.loader.enable) this.options.loader.enable = false; this.start(); } async start() { - let data: any = await this.DownloadGame(); - if (data.error) return this.emit('error', data); + let data = await this.DownloadGame(); let { minecraftJson, minecraftLoader, minecraftVersion, minecraftJava } = data; - let minecraftArguments: any = await new argumentsMinecraft(this.options).GetArguments(minecraftJson, minecraftLoader); - if (minecraftArguments.error) return this.emit('error', minecraftArguments); + let minecraftArguments = await new argumentsMinecraft(this.options).GetArguments(minecraftJson, minecraftLoader); + // if (minecraftArguments.error) return this.emit('error', minecraftArguments); - let loaderArguments: any = await new loaderMinecraft(this.options).GetArguments(minecraftLoader, minecraftVersion); - if (loaderArguments.error) return this.emit('error', loaderArguments); + let loaderArguments = await new loaderMinecraft(this.options).GetArguments(minecraftLoader, minecraftVersion); + // if (loaderArguments.error) return this.emit('error', loaderArguments); - let Arguments: any = [ + let Arguments = [ ...minecraftArguments.jvm, ...loaderArguments.jvm, ...minecraftArguments.classpath, @@ -95,7 +133,7 @@ export default class Launch { ...minecraftArguments.game ] - let java: any = this.options.javaPath ? this.options.javaPath : minecraftJava.path; + let java = this.options.javaPath ? this.options.javaPath : minecraftJava.path; let logs = this.options.instance ? `${this.options.path}/instances/${this.options.instance}` : this.options.path; if (!fs.existsSync(logs)) fs.mkdirSync(logs, { recursive: true }); @@ -110,18 +148,16 @@ export default class Launch { async DownloadGame() { let InfoVersion = await new jsonMinecraft(this.options).GetInfoVersion(); let loaderJson: any = null; - if (InfoVersion.error) return InfoVersion let { json, version } = InfoVersion; let libraries = new librariesMinecraft(this.options) + let gameLibraries = await libraries.Getlibraries(json); + let gameAssetsOther = await libraries.GetAssetsOthers(this.options.url); + let gameAssets = await new assetsMinecraft(this.options).GetAssets(json); + let gameJava = this.options.javaPath ? { files: [], path: '' } as {files: IFile[], path: string} : await new javaMinecraft(this.options).GetJsonJava(json); - let gameLibraries: any = await libraries.Getlibraries(json); - let gameAssetsOther: any = await libraries.GetAssetsOthers(this.options.url); - let gameAssets: any = await new assetsMinecraft(this.options).GetAssets(json); - let gameJava: any = this.options.javaPath ? { files: [] } : await new javaMinecraft(this.options).GetJsonJava(json); - - let bundle: any = [...gameLibraries, ...gameAssetsOther, ...gameAssets, ...gameJava.files] - let filesList: any = await new bundleMinecraft(this.options).checkBundle(bundle); + let bundle = [...gameLibraries, ...gameAssetsOther, ...gameAssets, ...gameJava.files] + let filesList = await new bundleMinecraft(this.options).checkBundle(bundle); if (filesList.length> 0) { let downloader = new Downloader(); @@ -175,13 +211,16 @@ export default class Launch { if (this.options.verify) await libraries.checkFiles(bundle); let natives = await libraries.natives(bundle); - if (natives.length === 0) json.nativesList = false; - else json.nativesList = true; - if (isold(json)) new assetsMinecraft(this.options).copyAssets(json); + let new_json: IversionAndNativesListData = { + ...json, + nativesList: natives.length === 0 ? false : true + } + + if (isold(new_json)) new assetsMinecraft(this.options).copyAssets(new_json); return { - minecraftJson: json, + minecraftJson: new_json, minecraftLoader: loaderJson, minecraftVersion: version, minecraftJava: gameJava diff --git a/src/Minecraft/Minecraft-Arguments.ts b/src/Minecraft/Minecraft-Arguments.ts index 00ae0cd9..0a5a608d 100755 --- a/src/Minecraft/Minecraft-Arguments.ts +++ b/src/Minecraft/Minecraft-Arguments.ts @@ -3,14 +3,15 @@ * @license CC-BY-NC 4.0 - https://creativecommons.org/licenses/by-nc/4.0/ */ +import { IAuth, ILauncherOptions } from '../Launch.js'; import { getPathLibraries, isold } from '../utils/Index.js'; let MojangLib = { win32: "windows", darwin: "osx", linux: "linux" }; export default class MinecraftArguments { - options: any; - authenticator: any; - constructor(options: any) { + options: ILauncherOptions; + authenticator: IAuth; + constructor(options: ILauncherOptions) { this.options = options; this.authenticator = options.authenticator; } @@ -106,7 +107,7 @@ export default class MinecraftArguments { } async GetClassPath(json: any, loaderJson: any) { - let classPath: any = [] + let classPath: string[] = [] let libraries: any = json.libraries; if (loaderJson?.libraries) libraries = loaderJson.libraries.concat(libraries); diff --git a/src/Minecraft/Minecraft-Assets.ts b/src/Minecraft/Minecraft-Assets.ts index 7d47d8ed..6a76f1b9 100755 --- a/src/Minecraft/Minecraft-Assets.ts +++ b/src/Minecraft/Minecraft-Assets.ts @@ -5,18 +5,29 @@ import nodeFetch from 'node-fetch'; import fs from 'fs'; +import { ILauncherOptions } from '../Launch'; export default class MinecraftAssets { - assetIndex: any; - options: any; - constructor(options: any) { + assetIndex: IAssetIndex; + options: ILauncherOptions; + constructor(options: ILauncherOptions) { this.options = options; } - async GetAssets(json: any) { + async GetAssets(json: IVersionData) { this.assetIndex = json.assetIndex; - let assets = []; + let assets: ({ + sha1: string, + size: number, + path: string, + type: "Assets", + url: string, + }|{ + type: "CFILE", + path: string, + content: string + })[] = []; let data = await nodeFetch(this.assetIndex.url).then(res => res.json()); assets.push({ @@ -39,7 +50,7 @@ export default class MinecraftAssets { return assets } - copyAssets(json: any) { + copyAssets(json: IVersionData) { let legacyDirectory = `${this.options.path}/resources`; let pathAssets = `${this.options.path}/assets/indexes/${json.assets}.json`; if (!fs.existsSync(pathAssets)) return; diff --git a/src/Minecraft/Minecraft-Bundle.ts b/src/Minecraft/Minecraft-Bundle.ts index ad047eb3..f0181f7f 100755 --- a/src/Minecraft/Minecraft-Bundle.ts +++ b/src/Minecraft/Minecraft-Bundle.ts @@ -6,22 +6,42 @@ import fs from 'fs'; import path from 'path'; import crypto from 'crypto'; +import { ILauncherOptions } from '../Launch'; + +type TBundle = { + path: string; + type: "CFILE"; + content: string; +} | { + sha1?: string; + size?: number; + type: string; + path: string; + url: string; +} + +function isCFILE(file: TBundle): file is { path: string; type: "CFILE"; content: string; } { + if (file.type !== "CFILE") return false + return true +} export default class MinecraftBundle { - options: any; - constructor(options: any) { + options: ILauncherOptions; + constructor(options: ILauncherOptions) { this.options = options; } - async checkBundle(bundle: any) { - let todownload = []; + async checkBundle(bundle: ({folder?:string} & TBundle)[]) { + let todownload: ({ + folder?: string; + } & TBundle)[] = []; for (let file of bundle) { if (!file.path) continue; file.path = path.resolve(this.options.path, file.path).replace(/\\/g, "/"); file.folder = file.path.split("/").slice(0, -1).join("/"); - if (file.type == "CFILE") { + if (isCFILE(file)) { if (!fs.existsSync(file.folder)) fs.mkdirSync(file.folder, { recursive: true, mode: 0o777 }); fs.writeFileSync(file.path, file.content, { encoding: "utf8", mode: 0o755 }); continue; diff --git a/src/Minecraft/Minecraft-Java.ts b/src/Minecraft/Minecraft-Java.ts index 63b6f58a..978c08fb 100755 --- a/src/Minecraft/Minecraft-Java.ts +++ b/src/Minecraft/Minecraft-Java.ts @@ -7,14 +7,7 @@ import os from 'os'; import nodeFetch from 'node-fetch'; import path from 'path'; -interface IFile { - path: string; - executable: boolean; - sha1: string; - size: number; - url: string; - type: string; -} + interface IJavaOptions { path: string; @@ -77,15 +70,14 @@ export default class java { darwin: { x64: "mac-os", arm64: "mac-os-arm64" }, linux: { x64: "linux", ia32: "linux-i386" } } - jsonversion = jsonversion.javaVersion ? 'jre-legacy' : jsonversion.javaVersion.component + jsonversion = jsonversion.javaVersion ? jsonversion.javaVersion.component : 'jre-legacy' const platform = os.platform(); - const useArchitecture = platformArchitecture[platform]; - if (Object.keys(platformArchitecture).includes(platform) === false) return console.log("OS not supported"); - + const useArchitecture = platformArchitecture[platform][os.arch()]; + if (Object.keys(platformArchitecture).includes(platform) === false) throw new Error("OS not supported"); const url = javaVersionsJson[useArchitecture][jsonversion][0].manifest.url const minecraftJavaManifest = Object.entries((await nodeFetch(url).then(res => res.json())).files) - const version = `jre-${javaVersionsJson[platform][jsonversion][0].version.name}` + const version = `jre-${javaVersionsJson[useArchitecture][jsonversion][0].version.name}` let java = minecraftJavaManifest.find(file => file[0].endsWith(platform == "win32" ? "bin/javaw.exe" : "bin/java"))[0]; let toDelete = java.replace(platform == "win32" ? "bin/javaw.exe" : "bin/java", ""); diff --git a/src/Minecraft/Minecraft-Json.ts b/src/Minecraft/Minecraft-Json.ts index 60523cbf..c58e091e 100755 --- a/src/Minecraft/Minecraft-Json.ts +++ b/src/Minecraft/Minecraft-Json.ts @@ -6,23 +6,6 @@ import nodeFetch from 'node-fetch'; import { ILauncherOptions } from '../Launch'; -interface IJsonVersion { - id: string - type: 'release' | 'snapshot' - url: string - time: string - sha1: string - complianceLevel: number -} - -export interface IVersionJson { - latest: { - release: string - snapshot: string - } - versions: IJsonVersion[] - -} export default class Json { options: ILauncherOptions; @@ -34,7 +17,7 @@ export default class Json { async GetInfoVersion() { let version: string = this.options.version; const res = await nodeFetch(`https://launchermeta.mojang.com/mc/game/version_manifest_v2.json?_t=${new Date().toISOString()}`); - const data: IVersionJson = await res.json(); + let data: IVersionManifest = await res.json(); if (version == 'latest_release' || version == 'r' || version == 'lr') { version = data.latest.release; @@ -43,16 +26,15 @@ export default class Json { version = data.latest.snapshot; } - const InfoVersion = data.versions.find(v => v.id === version); + let InfoVersion = data.versions.find(v => v.id === version); - if (!data) return { - error: true, - message: `Minecraft ${version} is not found.` - }; + if (!data) { + throw new Error('Minecraft version not found.'); + } return { - InfoVersion, - json: data, + InfoVersion: data, + json: await nodeFetch(InfoVersion.url).then(res => res.json() as Promise), version: version }; } diff --git a/src/Minecraft/Minecraft-Libraries.ts b/src/Minecraft/Minecraft-Libraries.ts index 5ca38b0f..56c94f99 100755 --- a/src/Minecraft/Minecraft-Libraries.ts +++ b/src/Minecraft/Minecraft-Libraries.ts @@ -7,24 +7,25 @@ import os from 'os'; import fs from 'fs'; import AdmZip from 'adm-zip'; import nodeFetch from 'node-fetch'; +import { ILauncherOptions } from '../Launch'; let MojangLib = { win32: "windows", darwin: "osx", linux: "linux" }; let Arch = { x32: "32", x64: "64", arm: "32", arm64: "64" }; export default class Libraries { - json: any; - options: any; - constructor(options: any) { + json: IVersionData; + options: ILauncherOptions; + constructor(options: ILauncherOptions) { this.options = options; } - async Getlibraries(json: any) { + async Getlibraries(json: IVersionData) { this.json = json; - let libraries = []; + let libraries: TLibrary[] = []; for (let lib of this.json.libraries) { - let artifact: any; - let type = "Libraries"; + let artifact: ILibrarieFile; + let type: "Native" | "Libraries" = "Libraries"; if (lib.natives) { let classifiers = lib.downloads.classifiers; @@ -66,11 +67,17 @@ export default class Libraries { return libraries; } - async GetAssetsOthers(url: any) { + async GetAssetsOthers(url: string) { if (!url) return []; let data = await nodeFetch(url).then(res => res.json()); - let assets = []; + let assets: { + sha1?: string + size?: number + type: string + path: string + url: string + }[] = []; for (let asset of data) { if (!asset.path) continue let path = asset.path; diff --git a/src/Minecraft/Minecraft-Loader.ts b/src/Minecraft/Minecraft-Loader.ts index 4141872c..c7f8fc2d 100755 --- a/src/Minecraft/Minecraft-Loader.ts +++ b/src/Minecraft/Minecraft-Loader.ts @@ -4,20 +4,21 @@ */ import { EventEmitter } from 'events'; +import { ILauncherOptions } from '../Launch'; const loaderDownloader = require('minecraft-loader'); export default class MinecraftLoader { - options: any; + options: ILauncherOptions; on: any; emit: any; - constructor(options: any) { + constructor(options: ILauncherOptions) { this.options = options; this.on = EventEmitter.prototype.on; this.emit = EventEmitter.prototype.emit; } - async GetLoader(version: any, javaPath: any) { + async GetLoader(version: string, javaPath: string) { let loader = new loaderDownloader({ path: `${this.options.path}/loader/${this.options.loader.type}`, timeout: this.options.timeout, diff --git a/src/StatusServer/status.ts b/src/StatusServer/status.ts index d7dadf3b..ff934d1c 100755 --- a/src/StatusServer/status.ts +++ b/src/StatusServer/status.ts @@ -6,7 +6,7 @@ import net from 'net' import createBuffer from './buffer.js'; -function ping(server: any, port: any, callback: any, timeout: any, protocol: any = '') { +function ping(server: string, port: number, callback: any, timeout: number, protocol: string = '') { let start: any = new Date(); let socket = net.connect({ port: port, diff --git a/src/utils/Downloader.ts b/src/utils/Downloader.ts index 0f352fe1..4ee2d6b7 100755 --- a/src/utils/Downloader.ts +++ b/src/utils/Downloader.ts @@ -7,11 +7,11 @@ import fs from 'fs'; import nodeFetch from 'node-fetch'; import { EventEmitter } from 'events'; -interface downloadOptions { - url: string, +export interface downloadOptions { + url?: string, path: string, - length: number, - folder: string + folder?: string + type?: string } export default class download { @@ -23,7 +23,7 @@ export default class download { this.emit = EventEmitter.prototype.emit; } - async downloadFileMultiple(files: downloadOptions, size: number, limit: number = 1, timeout: number = 10000) { + async downloadFileMultiple(files: downloadOptions[], size: number, limit: number = 1, timeout: number = 10000) { if (limit> files.length) limit = files.length; let completed = 0; let downloaded = 0; @@ -53,7 +53,7 @@ export default class download { let file = files[queued]; queued++; - if (!fs.existsSync(file.foler)) fs.mkdirSync(file.folder, { recursive: true, mode: 0o777 }); + if (!fs.existsSync(file.folder)) fs.mkdirSync(file.folder, { recursive: true, mode: 0o777 }); const writer: any = fs.createWriteStream(file.path, { flags: 'w', mode: 0o777 }); try { From fa89740b224bd6ee1690167a9ed2b0e164c2200e Mon Sep 17 00:00:00 2001 From: yupix Date: 2024年3月31日 01:56:35 +0900 Subject: [PATCH 8/8] =?UTF-8?q?chore:=20=E9=81=8E=E5=8E=BB=E3=81=AB?= =?UTF-8?q?=E3=82=B3=E3=83=9F=E3=83=83=E3=83=88=E3=81=97=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=82=82=E3=81=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 410 ---------------------------------------------- package.json | 3 +- pnpm-lock.yaml | 292 +++++++++++++++++++++++++++++++++ test/index.js | 9 +- 4 files changed, 299 insertions(+), 415 deletions(-) delete mode 100755 package-lock.json create mode 100644 pnpm-lock.yaml diff --git a/package-lock.json b/package-lock.json deleted file mode 100755 index a7062999..00000000 --- a/package-lock.json +++ /dev/null @@ -1,410 +0,0 @@ -{ - "name": "minecraft-java-core", - "version": "3.5.7", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "minecraft-java-core", - "version": "3.5.7", - "license": "CCANC", - "dependencies": { - "adm-zip": "^0.5.9", - "minecraft-loader": "^1.3.0", - "node-fetch": "^2.6.9", - "prompt": "^1.2.1", - "tslib": "^2.4.1" - }, - "devDependencies": { - "@types/node": "^18.11.13", - "@types/node-fetch": "^2.6.2", - "rimraf": "^3.0.2", - "typescript": "^4.9.4" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@types/node": { - "version": "18.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", - "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "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/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", - "engines": { - "node": "> 0.1.90" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "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/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/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.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minecraft-loader": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/minecraft-loader/-/minecraft-loader-1.3.0.tgz", - "integrity": "sha512-r+tXeGBb8CyIVfpLTL1fdG7GQv0yfzygktYk3BVWMYNFLhd3nGBxN/HCR5Lo53iir8m9P/2X9S2jGJ74BDqbHQ==", - "dependencies": { - "adm-zip": "^0.5.10", - "node-fetch": "^2.6.9" - } - }, - "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/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x ||>=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": 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/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/prompt": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.3.0.tgz", - "integrity": "sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg==", - "dependencies": { - "@colors/colors": "1.5.0", - "async": "3.2.3", - "read": "1.0.x", - "revalidator": "0.1.x", - "winston": "2.x" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==", - "engines": { - "node": ">= 0.4.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/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "engines": { - "node": "*" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/winston": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.7.tgz", - "integrity": "sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==", - "dependencies": { - "async": "^2.6.4", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/winston/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "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 - } - } -} diff --git a/package.json b/package.json index a68e30da..4f48a92c 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,8 @@ { - "name": "minecraft-java-core", + "name": "@akarinext/minecraft-java-core", "version": "3.5.7", "types": "./build/Index.d.ts", + "private": false, "exports": { ".": { "import": "./build/Index.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..1b3d573c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,292 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + adm-zip: + specifier: ^0.5.9 + version: 0.5.9 + minecraft-loader: + specifier: ^1.3.0 + version: 1.3.0 + node-fetch: + specifier: ^2.6.9 + version: 2.6.9 + prompt: + specifier: ^1.2.1 + version: 1.2.1 + tslib: + specifier: ^2.4.1 + version: 2.4.1 + +devDependencies: + '@types/node': + specifier: ^18.11.13 + version: 18.11.13 + '@types/node-fetch': + specifier: ^2.6.2 + version: 2.6.2 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + typescript: + specifier: ^4.9.4 + version: 4.9.4 + +packages: + + /@types/node-fetch@2.6.2: + resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} + dependencies: + '@types/node': 18.11.13 + form-data: 3.0.1 + dev: true + + /@types/node@18.11.13: + resolution: {integrity: sha512-IASpMGVcWpUsx5xBOrxMj7Bl8lqfuTY7FKAnPmu5cHkfQVWF8GulWS1jbRqA934qZL35xh5xN/+Xe/i26Bod4w==} + dev: true + + /adm-zip@0.5.10: + resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} + engines: {node: '>=6.0'} + dev: false + + /adm-zip@0.5.9: + resolution: {integrity: sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==} + engines: {node: '>=6.0'} + dev: false + + /async@0.9.2: + resolution: {integrity: sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==} + dev: false + + /async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} + dev: false + + /colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cycle@1.0.3: + resolution: {integrity: sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==} + engines: {node: '>=0.4.0'} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + dev: false + + /form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /minecraft-loader@1.3.0: + resolution: {integrity: sha512-r+tXeGBb8CyIVfpLTL1fdG7GQv0yfzygktYk3BVWMYNFLhd3nGBxN/HCR5Lo53iir8m9P/2X9S2jGJ74BDqbHQ==} + dependencies: + adm-zip: 0.5.10 + node-fetch: 2.6.9 + transitivePeerDependencies: + - encoding + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: false + + /node-fetch@2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + engines: {node: 4.x ||>=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /prompt@1.2.1: + resolution: {integrity: sha512-B4+2QeNDn5Cdp4kK2iOwV8qvrWpiPKlZKI9ZKkPl0C9KgeMW6DyWWqhqHiFq9vZf6zTniv+rYalK0ZlgktSwiw==} + engines: {node: '>= 0.6.6'} + dependencies: + async: 0.9.2 + colors: 1.4.0 + read: 1.0.7 + revalidator: 0.1.8 + winston: 2.4.7 + dev: false + + /read@1.0.7: + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} + engines: {node: '>=0.8'} + dependencies: + mute-stream: 0.0.8 + dev: false + + /revalidator@0.1.8: + resolution: {integrity: sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==} + engines: {node: '>= 0.4.0'} + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /tslib@2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: false + + /typescript@4.9.4: + resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /winston@2.4.7: + resolution: {integrity: sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==} + engines: {node: '>= 0.10.0'} + dependencies: + async: 2.6.4 + colors: 1.0.3 + cycle: 1.0.3 + eyes: 0.1.8 + isstream: 0.1.2 + stack-trace: 0.0.10 + dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true diff --git a/test/index.js b/test/index.js index 84e123f6..a2375f95 100755 --- a/test/index.js +++ b/test/index.js @@ -27,7 +27,7 @@ let mc timeout: 10000, path: './.Minecraft', instance: 'Hypixel', - version: '1.20.1', + version: '1.7.10', detached: false, downloadFileMultiple: 30, @@ -56,8 +56,9 @@ let mc javaPath: null, screen: { - width: 1600, - height: 900 + //width: 1600, + //height: 900 + //fullscreen: true }, memory: { @@ -73,7 +74,7 @@ let mc }); launch.on('progress', (progress, size, element) => { - console.log(`Downloading ${element} ${Math.round((progress / size) * 100)}%`); + // console.log(`Downloading ${element} ${Math.round((progress / size) * 100)}%`); }); launch.on('check', (progress, size, element) => {

AltStyle によって変換されたページ (->オリジナル) /