API: Allow ns.read to read .msg and .lit files (#2455)

This commit is contained in:
catloversg
2026-01-26 11:32:44 +07:00
committed by GitHub
parent 2edad3ed37
commit 5f519991a6
3 changed files with 28 additions and 5 deletions

View File

@@ -109,6 +109,9 @@ import { compile } from "./NetscriptJSEvaluator";
import { Script } from "./Script/Script";
import { NetscriptFormat } from "./NetscriptFunctions/Format";
import { FragmentTypeEnum } from "./CotMG/FragmentType";
import { renderToStaticMarkup } from "react-dom/server";
import { Literatures } from "./Literature/Literatures";
import { Messages } from "./Message/MessageHelpers";
export const enums: NSEnums = {
CityName,
@@ -1083,8 +1086,23 @@ export const ns: InternalAPI<NSFull> = {
},
read: (ctx) => (_filename) => {
const path = helpers.filePath(ctx, "filename", _filename);
if (!hasScriptExtension(path) && !hasTextExtension(path)) return "";
const server = ctx.workerScript.getServer();
const isLiterature = path.endsWith(".lit");
const isMessage = path.endsWith(".msg");
if (isLiterature || isMessage) {
if (!server.messages.includes(path as LiteratureName | MessageFilename)) {
helpers.log(ctx, () => `${path} does not exist on ${server.hostname}.`);
return "";
}
return isLiterature
? renderToStaticMarkup(Literatures[path as LiteratureName].text)
: Messages[path as MessageFilename].msg;
}
if (!hasScriptExtension(path) && !hasTextExtension(path)) {
helpers.log(ctx, () => `${path} does not exist on ${server.hostname}.`);
return "";
}
return server.getContentFile(path)?.content ?? "";
},
getFileMetadata: (ctx) => (_filename) => {

View File

@@ -7862,10 +7862,13 @@ export interface NS {
* @remarks
* RAM cost: 0 GB
*
* This function is used to read data from a text file (.txt, .json, .css) or script (.js, .jsx, .ts, .tsx).
* This function is used to read data from a text file (.txt, .json, .css), a script (.js, .jsx, .ts, .tsx), a
* literature file (.lit), or a message (.msg).
*
* This function will return the data in the specified file.
* If the file does not exist, an empty string will be returned.
* This function will return the data in the specified file. If the file does not exist, an empty string will be
* returned.
*
* With literature files, the returned data is a raw HTML string.
*
* @param filename - Name of the file to be read.
* @returns Data in the specified text file.