UNPKG

kratos-core

Version:

kratos-core is an open-source, elegant and battery-included Minecraft Launcher API module written in TypeScript in order to be the based of KratosLauncher

1 lines 4.66 kB
"use strict";var __awaiter=function(e,t,a,s){return new(a||(a=Promise))(function(r,n){function i(e){try{h(s.next(e))}catch(e){n(e)}}function o(e){try{h(s.throw(e))}catch(e){n(e)}}function h(e){var t;e.done?r(e.value):((t=e.value)instanceof a?t:new a(function(e){e(t)})).then(i,o)}h((s=s.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AssetMetadataManager=exports.AssetIndexManager=exports.VersionPackageManager=exports.VersionPackageInfoManager=exports.VersionManager=exports.fetchVersionManifest=exports.getManifestUrl=void 0;const node_fetch_1=require("node-fetch"),path_1=require("path"),path=require("path");function getManifestUrl(){return"https://piston-meta.mojang.com/mc/game/version_manifest_v2.json"}exports.getManifestUrl=getManifestUrl,exports.fetchVersionManifest=function(){return __awaiter(this,void 0,void 0,function*(){let e=yield(yield(0,node_fetch_1.default)(getManifestUrl(),{method:"get"})).json();return new VersionManager(e)})};class VersionManager{getSearchMap(){if(void 0===this.mapGameVersion){this.mapGameVersion=new Map;for(let e=0;e<this.manifest.versions.length;e++){let t=this.manifest.versions[e];this.mapGameVersion.set(t.id,t)}}return this.mapGameVersion}getPackageInfo(e){let t=this.getSearchMap().get(e);if(void 0===t)throw Error("Invalid or not found package info with version "+e);return t}getLatestReleasePackageInfo(){let e=this.manifest.latest.release,t=this.getPackageInfo(e);return new VersionPackageInfoManager(t)}getPackageInfoAsManager(e){let t=this.getPackageInfo(e);return new VersionPackageInfoManager(t)}getRawManifest(){return this.manifest}getAllPackagesInfo(){let e=[];for(let t of this.getSearchMap().values())e.push(t);return e}getVersions(){let e=[];for(let t of this.getSearchMap().keys())e.push(t);return e}constructor(e){this.manifest=e}}exports.VersionManager=VersionManager;class VersionPackageInfoManager{isUnsupported(){return 0===this.packageInfo.complianceLevel}fetchPackage(){return __awaiter(this,void 0,void 0,function*(){return new VersionPackageManager((yield(yield(0,node_fetch_1.default)(this.packageInfo.url,{method:"get"})).json()))})}getPackageInfo(){return this.packageInfo}getId(){return this.packageInfo.id}getPackageType(){return this.packageInfo.type}constructor(e){this.packageInfo=e}}exports.VersionPackageInfoManager=VersionPackageInfoManager;class VersionPackageManager{getVersionPackage(){return this.versionPackage}buildLibrariesMap(){for(let e of(this.librariesMap=new Map,["linux","osx","windows"].forEach(e=>{this.librariesMap.set(e,[])}),this.librariesMap.set("none",[]),this.versionPackage.libraries)){if(!e.rules||0===e.rules.length){this.librariesMap.get("none").push(e);continue}for(let t of e.rules){let a=t.os.name,s=t.action;"allow"===s&&this.librariesMap.get(a).push(e)}}}getLibrariesMap(){return void 0!==this.versionPackage&&this.buildLibrariesMap(),this.librariesMap}getLibraries(e){let t=[],a=this.versionPackage.libraries;for(let s of a){if(void 0===s.rules){t.push(s);continue}let a=!0;for(let t of s.rules)if("disallow"===t.action){if(void 0===t.os){a=!1;continue}if(void 0===t.os.name&&void 0===t.os.version)throw console.log(t,s),Error("Unexpected library rule case");if(void 0===e){a=!1;continue}a=t.os.name!==e.platform}else void 0!==t.os&&void 0!==e&&t.os.name!==e.platform&&(a=!1);if(a){t.push(s);continue}}return t}getAssetIndexReference(){return this.versionPackage.assetIndex}isUnsupported(){return 0===this.versionPackage.complianceLevel}fetchAssetIndex(){return __awaiter(this,void 0,void 0,function*(){return(yield(0,node_fetch_1.default)(this.versionPackage.assetIndex.url)).json()})}constructor(e){this.versionPackage=e}}exports.VersionPackageManager=VersionPackageManager,exports.AssetIndexManager=class{getResourceUrl(){return"https://resources.download.minecraft.net/"}getAssetIndex(){return this.assetIndex}getObjects(){return this.assetIndex.objects}buildAssetDownloadUrl(e){let t=new URL(this.getResourceUrl());return t.pathname=e.hash.slice(0,2)+path_1.sep+e.hash,t}buildPathSuffix(e){return""+(e.hash.slice(0,2)+path_1.sep+e.hash)}constructor(e){this.assetIndex=e}},exports.AssetMetadataManager=class{buildPathSuffix(){return path.join(this.assetMetadata.hash.slice(0,2),this.assetMetadata.hash)}buildAssetDownloadUrl(){let e=new URL(this.getResourceUrl());return e.pathname=this.assetMetadata.hash.slice(0,2)+path_1.sep+this.assetMetadata.hash,e}getResourceUrl(){return"https://resources.download.minecraft.net/"}getHash(){return this.assetMetadata.hash}getSize(){return this.assetMetadata.size}constructor(e){if(void 0===e)throw Error("Invalid asset metadata");this.assetMetadata=e}};