UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

248 lines (246 loc) 9.96 kB
"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var _LocalUtilities_productNameSeed, _LocalUtilities_basePathAdjust; Object.defineProperty(exports, "__esModule", { value: true }); const os = require("os"); const crypto = require("crypto"); const NodeStorage_1 = require("./NodeStorage"); const Log_1 = require("../core/Log"); class LocalUtilities { constructor() { _LocalUtilities_productNameSeed.set(this, "mctools"); _LocalUtilities_basePathAdjust.set(this, undefined); } get basePathAdjust() { return __classPrivateFieldGet(this, _LocalUtilities_basePathAdjust, "f"); } set basePathAdjust(pathAdjust) { __classPrivateFieldSet(this, _LocalUtilities_basePathAdjust, pathAdjust, "f"); } get isWindows() { return os.platform() === "win32"; } get productNameSeed() { return __classPrivateFieldGet(this, _LocalUtilities_productNameSeed, "f"); } setProductNameSeed(newSeed) { __classPrivateFieldSet(this, _LocalUtilities_productNameSeed, newSeed, "f"); } get userDataPath() { return os.homedir(); } get localAppDataPath() { if (this.isWindows) { return (this.userDataPath + NodeStorage_1.default.platformFolderDelimiter + "AppData" + NodeStorage_1.default.platformFolderDelimiter + "Local" + NodeStorage_1.default.platformFolderDelimiter); } else { return this.userDataPath; } } get localServerLogPath() { if (this.isWindows) { return (this.userDataPath + NodeStorage_1.default.platformFolderDelimiter + "AppData" + NodeStorage_1.default.platformFolderDelimiter + "Roaming" + NodeStorage_1.default.platformFolderDelimiter + "logs" + NodeStorage_1.default.platformFolderDelimiter); } else { return "." + NodeStorage_1.default.platformFolderDelimiter; } } get minecraftPath() { return (this.localAppDataPath + "Packages" + NodeStorage_1.default.platformFolderDelimiter + "Microsoft.MinecraftUWP_8wekyb3d8bbwe" + NodeStorage_1.default.platformFolderDelimiter + "LocalState" + NodeStorage_1.default.platformFolderDelimiter + "games" + NodeStorage_1.default.platformFolderDelimiter + "com.mojang" + NodeStorage_1.default.platformFolderDelimiter); } get minecraftPreviewPath() { return (this.localAppDataPath + "Packages" + NodeStorage_1.default.platformFolderDelimiter + "Microsoft.MinecraftWindowsBeta_8wekyb3d8bbwe" + NodeStorage_1.default.platformFolderDelimiter + "LocalState" + NodeStorage_1.default.platformFolderDelimiter + "games" + NodeStorage_1.default.platformFolderDelimiter + "com.mojang" + NodeStorage_1.default.platformFolderDelimiter); } get testWorkingPath() { let path = this.localAppDataPath; path = NodeStorage_1.default.ensureEndsWithDelimiter(path) + (this.isWindows ? "" : ".") + __classPrivateFieldGet(this, _LocalUtilities_productNameSeed, "f") + "_test" + NodeStorage_1.default.platformFolderDelimiter; return path; } get cliWorkingPath() { let path = this.localAppDataPath; path = NodeStorage_1.default.ensureEndsWithDelimiter(path) + (this.isWindows ? "" : ".") + __classPrivateFieldGet(this, _LocalUtilities_productNameSeed, "f") + "_cli" + NodeStorage_1.default.platformFolderDelimiter; return path; } get serverWorkingPath() { let path = this.localAppDataPath; path = NodeStorage_1.default.ensureEndsWithDelimiter(path) + (this.isWindows ? "" : ".") + __classPrivateFieldGet(this, _LocalUtilities_productNameSeed, "f") + "_server" + NodeStorage_1.default.platformFolderDelimiter; return path; } get worldsWorkingPath() { let path = this.localAppDataPath; path = NodeStorage_1.default.ensureEndsWithDelimiter(path) + (this.isWindows ? "" : ".") + __classPrivateFieldGet(this, _LocalUtilities_productNameSeed, "f") + "_worlds" + NodeStorage_1.default.platformFolderDelimiter; return path; } get serversPath() { let path = this.serverWorkingPath; path = NodeStorage_1.default.ensureEndsWithDelimiter(path) + "servers" + NodeStorage_1.default.platformFolderDelimiter; return path; } get sourceServersPath() { let path = this.serverWorkingPath; path = NodeStorage_1.default.ensureEndsWithDelimiter(path) + "serverSources" + NodeStorage_1.default.platformFolderDelimiter; return path; } get packCachePath() { let path = this.serverWorkingPath; path = NodeStorage_1.default.ensureEndsWithDelimiter(path) + "packCache" + NodeStorage_1.default.platformFolderDelimiter; return path; } get envPrefsPath() { let path = this.serverWorkingPath; path = NodeStorage_1.default.ensureEndsWithDelimiter(path) + "envprefs" + NodeStorage_1.default.platformFolderDelimiter; return path; } generateCryptoRandomNumber(toVal) { Log_1.default.assert(toVal === 2 || toVal === 4 || toVal === 8 || toVal === 16 || toVal === 32 || toVal === 64 || toVal === 256); return new Uint32Array(crypto.randomBytes(1))[0] % toVal; } validateFolderPath(path) { // banned character combos if (path.indexOf("..") >= 0 || path.indexOf("\\\\") >= 0 || path.indexOf("//") >= 0) { throw new Error("Unsupported path combinations: " + path); } if (path.lastIndexOf(":") >= 3) { throw new Error("Unsupported drive location: " + path); } const count = this.countChar(path, "\\") + this.countChar(path, "/"); if (count < 3) { throw new Error("Unsupported base path: " + path); } } countChar(source, find) { let count = 0; let index = source.indexOf(find); while (index >= 0) { count++; index = source.indexOf(find, index + find.length); } return count; } ensureStartsWithSlash(pathSegment) { if (!pathSegment.startsWith("/")) { pathSegment = "/" + pathSegment; } return pathSegment; } ensureEndsWithSlash(pathSegment) { if (!pathSegment.endsWith("/")) { pathSegment += "/"; } return pathSegment; } ensureStartsWithBackSlash(pathSegment) { if (!pathSegment.startsWith("\\")) { pathSegment = "\\" + pathSegment; } return pathSegment; } ensureEndsWithBackSlash(pathSegment) { if (!pathSegment.endsWith("\\")) { pathSegment += "\\"; } return pathSegment; } getFullPath(path) { let fullPath = __dirname; const lastSlash = Math.max(fullPath.lastIndexOf("\\", fullPath.length - 2), fullPath.lastIndexOf("/", fullPath.length - 2)); if (lastSlash >= 0) { fullPath = fullPath.substring(0, lastSlash + 1); } if (__classPrivateFieldGet(this, _LocalUtilities_basePathAdjust, "f")) { fullPath += __classPrivateFieldGet(this, _LocalUtilities_basePathAdjust, "f"); } if (this.isWindows) { fullPath += path.replace(/\//g, "\\"); } else { fullPath += path.replace(/\\/g, NodeStorage_1.default.platformFolderDelimiter); } return fullPath; } async createStorage(path) { const fullPath = this.getFullPath(path); return new NodeStorage_1.default(fullPath, ""); } async readJsonFile(path) { const fs = require("fs"); const fullPath = this.getFullPath(path); const rawData = fs.readFileSync(fullPath); if (!rawData) { return null; } const jsonData = JSON.parse(rawData); return jsonData; } async processConversion(conversionSettings) { console.log("Converting!"); return true; } } exports.default = LocalUtilities; _LocalUtilities_productNameSeed = new WeakMap(), _LocalUtilities_basePathAdjust = new WeakMap(); //# sourceMappingURL=../maps/local/LocalUtilities.js.map