mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-21 08:42:53 +02:00
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { GetServer } from "../../Server/AllServers";
|
|
import { editor, Uri } from "monaco-editor";
|
|
import { OpenScript } from "./OpenScript";
|
|
import { getFileType, FileType } from "../../utils/ScriptTransformer";
|
|
import { throwIfReachable } from "../../utils/helpers/throwIfReachable";
|
|
|
|
function getServerCode(scripts: OpenScript[], index: number): string | null {
|
|
const openScript = scripts[index];
|
|
const server = GetServer(openScript.hostname);
|
|
if (server === null) {
|
|
return null;
|
|
}
|
|
const data = server.getContentFile(openScript.path)?.content ?? null;
|
|
return data;
|
|
}
|
|
|
|
function isUnsavedFile(scripts: OpenScript[], index: number): boolean {
|
|
const openScript = scripts[index];
|
|
const serverData = getServerCode(scripts, index);
|
|
if (serverData === null) {
|
|
return true;
|
|
}
|
|
return serverData !== openScript.code;
|
|
}
|
|
|
|
function reorder(list: unknown[], startIndex: number, endIndex: number): void {
|
|
const [removed] = list.splice(startIndex, 1);
|
|
list.splice(endIndex, 0, removed);
|
|
}
|
|
|
|
function makeModel(hostname: string, filename: string, code: string): editor.ITextModel {
|
|
const uri = Uri.from({
|
|
scheme: "memory",
|
|
path: `${hostname}/${filename}`,
|
|
});
|
|
// If there is a model with this URI and it's not disposed, return it.
|
|
const model = editor.getModel(uri);
|
|
if (model && !model.isDisposed()) {
|
|
return model;
|
|
}
|
|
let language;
|
|
const fileType = getFileType(filename);
|
|
switch (fileType) {
|
|
case FileType.PLAINTEXT:
|
|
language = "plaintext";
|
|
break;
|
|
case FileType.JSON:
|
|
language = "json";
|
|
break;
|
|
case FileType.JS:
|
|
case FileType.JSX:
|
|
language = "javascript";
|
|
break;
|
|
case FileType.TS:
|
|
case FileType.TSX:
|
|
language = "typescript";
|
|
break;
|
|
case FileType.NS1:
|
|
language = "javascript";
|
|
break;
|
|
default:
|
|
throwIfReachable(fileType);
|
|
}
|
|
return editor.createModel(code, language, uri);
|
|
}
|
|
|
|
export { getServerCode, isUnsavedFile, reorder, makeModel };
|