@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
248 lines (246 loc) • 8.8 kB
JavaScript
"use strict";
// src/electron/preload.ts
var import_electron = require("electron");
var _allowedExtensions = [
"js",
"ts",
"mjs",
"json",
"md",
"png",
"jpg",
"jpeg",
"lang",
"fsb",
"map",
"ogg",
"flac",
"hdr",
"psd",
"env",
"gif",
"wav",
"tga",
"env",
"mjs",
"wlist",
"brarchive",
"nbt",
"webm",
"svg",
"otf",
"ttf",
"bin",
"obj",
"pdn",
"zip",
"py",
"h",
"fontdata",
"properties",
"cartobackup",
"mctbackup",
"",
"mcstructure",
"mcworld",
"mcproject",
"map",
"js.map",
"mctemplate",
"material",
"vertex",
"md",
"geometry",
"fragment",
"mcfunction",
"mcaddon",
"mcpack",
"html",
"dat",
"dat_old",
"txt",
"ldb",
"log",
"in",
"cmake"
];
var _allowedExecutableExtensions = ["mcstructure", "mcworld", "mctemplate", "mcaddon"];
function _getTypeFromName(name) {
const nameW = name.trim().toLowerCase();
const lastBackslash = nameW.lastIndexOf("\\");
const lastSlash = nameW.lastIndexOf("/");
const lastPeriod = nameW.lastIndexOf(".");
if (lastPeriod < 0 || lastPeriod < lastSlash || lastPeriod < lastBackslash) {
return "";
}
return nameW.substring(lastPeriod + 1, nameW.length);
}
function _canonicalizePathForValidation(path) {
if ((path[0] !== "<" || path[5] !== ">") && !path.startsWith("<pt_")) {
throw new Error("PLD: Unsupported canon path: " + path);
}
if (path.startsWith("<EDUP>") || path.startsWith("<EDUR>") || path.startsWith("<BDRK>") || path.startsWith("<BDPV>") || path.startsWith("<MCPE>") || path.startsWith("<DOCP>")) {
path = path.substring(6);
} else if (path.startsWith("<pt_")) {
const endGreater = path.indexOf(">", 4);
if (endGreater > 4) {
path = path.substring(endGreater + 1);
}
} else {
throw new Error("PLD: Unsupported canon path A: " + path);
}
return path;
}
function _validateFolderPath(path) {
path = _canonicalizePathForValidation(path);
if (path.indexOf("..") >= 0 || path.indexOf("\\\\") >= 0 || path.indexOf("//") >= 0) {
throw new Error("Unsupported path combinations: " + path);
}
if (path.lastIndexOf(":") >= 2) {
throw new Error("Unsupported drive location: " + path);
}
}
function _validateDoubleFolderPath(path) {
const pathArr = path.split("|");
if (pathArr.length !== 2) {
throw new Error("Unsupported double folder path: " + path);
}
_validateFolderPath(pathArr[0]);
_validateFolderPath(pathArr[1]);
}
function _validateFilePath(path) {
_validateFolderPath(path);
const extension = _getTypeFromName(path);
if (!_allowedExtensions.includes(extension)) {
throw new Error("PLD: Unsupported file type: " + path);
}
}
function _validateExecutableFilePath(path) {
_validateFolderPath(path);
const extension = _getTypeFromName(path);
if (!_allowedExecutableExtensions.includes(extension)) {
throw new Error("PLD: Unsupported executable file type: " + path);
}
}
var _agentChannels = [
"agent:start",
"agent:stop",
"agent:createSession",
"agent:send",
"agent:abort",
"agent:destroySession",
"agent:getAuthStatus",
"agent:listModels",
"agent:updateContext"
];
import_electron.contextBridge.exposeInMainWorld("api", {
// Direct invoke for Agent channels (cleaner API)
invoke: (channel, data) => {
if (_agentChannels.includes(channel)) {
return import_electron.ipcRenderer.invoke(channel, data);
}
throw new Error("PLD: Invalid invoke channel: " + channel);
},
send: (channel, commandName, data) => {
const validChannels = ["appweb"];
if (validChannels.includes(channel)) {
const pipe = commandName.indexOf("|");
let position = -1;
if (pipe >= 0) {
position = parseInt(commandName.substring(pipe + 1, commandName.length));
commandName = commandName.substring(0, pipe);
}
switch (commandName) {
case "asyncopenFolder":
import_electron.ipcRenderer.invoke("asyncselectDirectory", position + "|" + data);
return;
case "asyncconvertFile":
return import_electron.ipcRenderer.invoke("asyncconvertFile", position + "|" + data);
case "asyncstartWebSocketServer":
return import_electron.ipcRenderer.invoke("asyncstartWebSocketServer", position + "|" + data);
case "asyncstopWebSocketServer":
return import_electron.ipcRenderer.invoke("asyncstopWebSocketServer", position + "|" + data);
case "asyncstartDedicatedServer":
return import_electron.ipcRenderer.invoke("asyncstartDedicatedServer", position + "|" + data);
case "asyncstopDedicatedServer":
return import_electron.ipcRenderer.invoke("asyncstopDedicatedServer", position + "|" + data);
case "asyncdedicatedServerCommand":
return import_electron.ipcRenderer.invoke("asyncdedicatedServerCommand", position + "|" + data);
case "asyncwebSocketCommand":
return import_electron.ipcRenderer.invoke("asyncwebSocketCommand", position + "|" + data);
case "asyncshellOpenPath":
_validateExecutableFilePath(data);
return import_electron.ipcRenderer.invoke("asyncshellOpenPath", position + "|" + data);
case "asyncshellOpenFolderInExplorer":
return import_electron.ipcRenderer.invoke("asyncshellOpenFolderInExplorer", position + "|" + data);
case "asyncminecraftShell":
return import_electron.ipcRenderer.invoke("asyncminecraftShell", position + "|" + data);
case "asyncshellRecycleItem":
_validateFilePath(data);
return import_electron.ipcRenderer.invoke("asyncshellRecycleItem", position + "|" + data);
case "asyncreloadMct":
return import_electron.ipcRenderer.invoke("asyncreloadMct", position + "|" + data);
case "asyncgetDedicatedServerProjectDir":
return import_electron.ipcRenderer.invoke("asyncgetDedicatedServerProjectDir", position + "|" + data);
case "asyncgetDedicatedServerStatus":
return import_electron.ipcRenderer.invoke("asyncgetDedicatedServerStatus", position + "|" + data);
case "asyncgetDedicatedServerWorldDir":
return import_electron.ipcRenderer.invoke("asyncgetDedicatedServerWorldDir", position + "|" + data);
case "asyncgetMinecraftGameProjectDeployDir":
return import_electron.ipcRenderer.invoke("asyncgetMinecraftGameProjectDeployDir", position + "|" + data);
case "asyncgetMinecraftGameWorldDeployDir":
return import_electron.ipcRenderer.invoke("asyncgetMinecraftGameWorldDeployDir", position + "|" + data);
case "asyncwindowClose":
case "asynclogToConsole":
case "asyncwindowRestore":
case "asyncwindowMinimize":
case "asyncwindowMove":
case "asyncwindowMaximize":
case "asyncwindowUpdate":
case "asyncwindowLeftSide":
case "asyncwindowRightSide":
case "asyncupdateIAgree":
case "asyncgetWindowState":
case "asyncgetPlatform":
case "asyncgetDirname":
case "asyncgetContentSources":
case "asynccontentSourceLogin":
return import_electron.ipcRenderer.invoke(commandName, position + "|" + data);
case "getIsDev":
return import_electron.ipcRenderer.invoke("getIsDev", data);
case "asyncfsRenameFolder":
_validateDoubleFolderPath(data);
return import_electron.ipcRenderer.invoke(commandName, position + "|" + data);
case "asyncfsDeleteFolder":
_validateFolderPath(data);
return import_electron.ipcRenderer.invoke(commandName, position + "|" + data);
case "asyncfsExists":
case "bsyncfsReadFile":
case "asyncfsReadUtf8File":
_validateFilePath(data);
return import_electron.ipcRenderer.invoke(commandName, position + "|" + data);
case "asyncfsFolderExists":
case "asyncfsRootStorageExists":
case "asyncfsMkdir":
case "asyncfsReaddir":
case "asyncfsStat":
_validateFolderPath(data);
return import_electron.ipcRenderer.invoke(commandName, position + "|" + data);
case "asyncfsWriteFile":
case "asyncfsWriteUtf8File":
const writeFilePath = data.path;
_validateFilePath(writeFilePath);
return import_electron.ipcRenderer.invoke(commandName, position + "|" + data.path + "|" + data.content);
default:
throw new Error("PLD: Unknown command: " + commandName);
}
}
},
receive: (channel, func) => {
const validChannels = ["appsvc", "agent:event", "error:fatal"];
if (validChannels.includes(channel)) {
import_electron.ipcRenderer.on(channel, (_event, ...args) => func(...args));
}
}
});
//# sourceMappingURL=preload.js.map