0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 09:10:43 -05:00

Moved Program statics into their own class to reduce circular dep errors from 19 to 2

Fixed various ILogger warnings
This commit is contained in:
Chomp 2025-01-06 10:34:21 +00:00
parent dd5d1373fb
commit b5936286bd
18 changed files with 141 additions and 131 deletions

View File

@ -1,23 +1,11 @@
import { ErrorHandler } from "@spt/ErrorHandler";
import { Container } from "@spt/di/Container";
import buildInfo from "@spt/entry/build.json" assert { type: "json" };
import type { PreSptModLoader } from "@spt/loaders/PreSptModLoader";
import { EntryType } from "@spt/models/enums/EntryType";
import { App } from "@spt/utils/App";
import { Watermark } from "@spt/utils/Watermark";
import { container } from "tsyringe";
export class Program {
private static _ENTRY_TYPE: EntryType;
private static _DEBUG: boolean;
private static _COMPILED: boolean;
private static _MODS: boolean;
private static _SPT_VERSION: string;
private static _COMMIT: string;
private static _BUILD_TIME: number;
private errorHandler: ErrorHandler;
constructor() {
@ -44,58 +32,4 @@ export class Program {
this.errorHandler.handleCriticalError(err instanceof Error ? err : new Error(String(err)));
}
}
public static initialize(): void {
Program._ENTRY_TYPE = buildInfo.entryType as EntryType;
Program._SPT_VERSION = buildInfo.sptVersion ?? "";
Program._COMMIT = buildInfo.commit ?? "";
Program._BUILD_TIME = buildInfo.buildTime ?? 0;
switch (Program._ENTRY_TYPE) {
case EntryType.RELEASE:
Program._DEBUG = false;
Program._COMPILED = true;
Program._MODS = true;
break;
case EntryType.BLEEDING_EDGE:
Program._DEBUG = true;
Program._COMPILED = true;
Program._MODS = false;
break;
case EntryType.DEBUG:
case EntryType.BLEEDING_EDGE_MODS:
Program._DEBUG = true;
Program._COMPILED = true;
Program._MODS = true;
break;
default: // EntryType.LOCAL
Program._DEBUG = true;
Program._COMPILED = false;
Program._MODS = true;
break;
}
}
// Public Static Getters
public static get ENTRY_TYPE(): EntryType {
return Program._ENTRY_TYPE;
}
public static get DEBUG(): boolean {
return Program._DEBUG;
}
public static get COMPILED(): boolean {
return Program._COMPILED;
}
public static get MODS(): boolean {
return Program._MODS;
}
public static get SPT_VERSION(): string {
return Program._SPT_VERSION;
}
public static get COMMIT(): string {
return Program._COMMIT;
}
public static get BUILD_TIME(): number {
return Program._BUILD_TIME;
}
}

View File

@ -0,0 +1,69 @@
import buildInfo from "@spt/entry/build.json" assert { type: "json" };
import { EntryType } from "./models/enums/EntryType";
// biome-ignore lint/complexity/noStaticOnlyClass:
export class ProgramStatics {
private static _ENTRY_TYPE: EntryType;
private static _DEBUG: boolean;
private static _COMPILED: boolean;
private static _MODS: boolean;
private static _SPT_VERSION: string;
private static _COMMIT: string;
private static _BUILD_TIME: number;
public static initialize(): void {
ProgramStatics._ENTRY_TYPE = buildInfo.entryType as EntryType;
ProgramStatics._SPT_VERSION = buildInfo.sptVersion ?? "";
ProgramStatics._COMMIT = buildInfo.commit ?? "";
ProgramStatics._BUILD_TIME = buildInfo.buildTime ?? 0;
switch (ProgramStatics._ENTRY_TYPE) {
case EntryType.RELEASE:
ProgramStatics._DEBUG = false;
ProgramStatics._COMPILED = true;
ProgramStatics._MODS = true;
break;
case EntryType.BLEEDING_EDGE:
ProgramStatics._DEBUG = true;
ProgramStatics._COMPILED = true;
ProgramStatics._MODS = false;
break;
case EntryType.DEBUG:
case EntryType.BLEEDING_EDGE_MODS:
ProgramStatics._DEBUG = true;
ProgramStatics._COMPILED = true;
ProgramStatics._MODS = true;
break;
default: // EntryType.LOCAL
ProgramStatics._DEBUG = true;
ProgramStatics._COMPILED = false;
ProgramStatics._MODS = true;
break;
}
}
// Public Static Getters
public static get ENTRY_TYPE(): EntryType {
return ProgramStatics._ENTRY_TYPE;
}
public static get DEBUG(): boolean {
return ProgramStatics._DEBUG;
}
public static get COMPILED(): boolean {
return ProgramStatics._COMPILED;
}
public static get MODS(): boolean {
return ProgramStatics._MODS;
}
public static get SPT_VERSION(): string {
return ProgramStatics._SPT_VERSION;
}
public static get COMMIT(): string {
return ProgramStatics._COMMIT;
}
public static get BUILD_TIME(): number {
return ProgramStatics._BUILD_TIME;
}
}

View File

@ -1,4 +1,4 @@
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { ClientLogController } from "@spt/controllers/ClientLogController";
import { ModLoadOrder } from "@spt/loaders/ModLoadOrder";
import { INullResponseData } from "@spt/models/eft/httpResponse/INullResponseData";
@ -36,7 +36,7 @@ export class ClientLogCallbacks {
public releaseNotes(): string {
const data: IRelease = this.configServer.getConfig<ICoreConfig>(ConfigTypes.CORE).release;
data.betaDisclaimerText = Program.MODS
data.betaDisclaimerText = ProgramStatics.MODS
? this.localisationService.getText("release-beta-disclaimer-mods-enabled")
: this.localisationService.getText("release-beta-disclaimer");
@ -50,8 +50,9 @@ export class ClientLogCallbacks {
data.releaseSummaryText = this.localisationService.getText("release-summary");
data.isBeta =
Program.ENTRY_TYPE === EntryType.BLEEDING_EDGE || Program.ENTRY_TYPE === EntryType.BLEEDING_EDGE_MODS;
data.isModdable = Program.MODS;
ProgramStatics.ENTRY_TYPE === EntryType.BLEEDING_EDGE ||
ProgramStatics.ENTRY_TYPE === EntryType.BLEEDING_EDGE_MODS;
data.isModdable = ProgramStatics.MODS;
data.isModded = this.modLoadOrder.getLoadOrder().length > 0;
return this.httpResponse.noBody(data);

View File

@ -1,9 +1,9 @@
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { OnLoad } from "@spt/di/OnLoad";
import { PostSptModLoader } from "@spt/loaders/PostSptModLoader";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { LocalisationService } from "@spt/services/LocalisationService";
import { HttpFileUtil } from "@spt/utils/HttpFileUtil";
@ -26,7 +26,7 @@ export class ModCallbacks implements OnLoad {
}
public async onLoad(): Promise<void> {
if (Program.MODS) {
if (ProgramStatics.MODS) {
await this.postSptModLoader.load();
}
}

View File

@ -1,4 +1,4 @@
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { ApplicationContext } from "@spt/context/ApplicationContext";
import { ContextVariableType } from "@spt/context/ContextVariableType";
import { HideoutHelper } from "@spt/helpers/HideoutHelper";
@ -567,9 +567,11 @@ export class GameController {
protected logProfileDetails(fullProfile: ISptProfile): void {
this.logger.debug(`Profile made with: ${fullProfile.spt.version}`);
this.logger.debug(`Server version: ${Program.SPT_VERSION || this.coreConfig.sptVersion} ${Program.COMMIT}`);
this.logger.debug(`Debug enabled: ${Program.DEBUG}`);
this.logger.debug(`Mods enabled: ${Program.MODS}`);
this.logger.debug(
`Server version: ${ProgramStatics.SPT_VERSION || this.coreConfig.sptVersion} ${ProgramStatics.COMMIT}`,
);
this.logger.debug(`Debug enabled: ${ProgramStatics.DEBUG}`);
this.logger.debug(`Mods enabled: ${ProgramStatics.MODS}`);
}
public getSurvey(sessionId: string): ISurveyResponseData {

View File

@ -1,7 +1,8 @@
import "reflect-metadata";
import "source-map-support/register";
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
Program.initialize();
ProgramStatics.initialize();
const program = new Program();
program.start();

View File

@ -1,11 +1,11 @@
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { OnLoad } from "@spt/di/OnLoad";
import { BundleLoader } from "@spt/loaders/BundleLoader";
import { ModTypeCheck } from "@spt/loaders/ModTypeCheck";
import { PreSptModLoader } from "@spt/loaders/PreSptModLoader";
import { IPostDBLoadMod } from "@spt/models/external/IPostDBLoadMod";
import { IPostDBLoadModAsync } from "@spt/models/external/IPostDBLoadModAsync";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { LocalisationService } from "@spt/services/LocalisationService";
import { DependencyContainer, inject, injectable } from "tsyringe";
@ -22,7 +22,7 @@ export class PostDBModLoader implements OnLoad {
) {}
public async onLoad(): Promise<void> {
if (Program.MODS) {
if (ProgramStatics.MODS) {
this.container = this.preSptModLoader.getContainer();
await this.executeModsAsync();
this.addBundles();

View File

@ -1,10 +1,10 @@
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { ModTypeCheck } from "@spt/loaders/ModTypeCheck";
import { PreSptModLoader } from "@spt/loaders/PreSptModLoader";
import { IPostSptLoadMod } from "@spt/models/external/IPostSptLoadMod";
import { IPostSptLoadModAsync } from "@spt/models/external/IPostSptLoadModAsync";
import { IModLoader } from "@spt/models/spt/mod/IModLoader";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { LocalisationService } from "@spt/services/LocalisationService";
import { DependencyContainer, inject, injectable } from "tsyringe";
@ -24,7 +24,7 @@ export class PostSptModLoader implements IModLoader {
}
public async load(): Promise<void> {
if (Program.MODS) {
if (ProgramStatics.MODS) {
this.container = this.preSptModLoader.getContainer();
await this.executeModsAsync();
}

View File

@ -1,7 +1,7 @@
import { execSync } from "node:child_process";
import os from "node:os";
import path from "node:path";
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { ModLoadOrder } from "@spt/loaders/ModLoadOrder";
import { ModTypeCheck } from "@spt/loaders/ModTypeCheck";
import { IModDetails } from "@spt/models/eft/profile/ISptProfile";
@ -11,7 +11,7 @@ import { IPreSptLoadModAsync } from "@spt/models/external/IPreSptLoadModAsync";
import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig";
import { IModLoader } from "@spt/models/spt/mod/IModLoader";
import { IPackageJsonData } from "@spt/models/spt/mod/IPackageJsonData";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { LocalisationService } from "@spt/services/LocalisationService";
import { ModCompilerService } from "@spt/services/ModCompilerService";
@ -50,7 +50,7 @@ export class PreSptModLoader implements IModLoader {
}
public async load(container: DependencyContainer): Promise<void> {
if (Program.MODS) {
if (ProgramStatics.MODS) {
this.container = container;
await this.importModsAsync();
await this.executeModsAsync();
@ -286,7 +286,7 @@ export class PreSptModLoader implements IModLoader {
* @returns True if compatible
*/
protected isModCombatibleWithSpt(mod: IPackageJsonData): boolean {
const sptVersion = Program.SPT_VERSION || this.sptConfig.sptVersion;
const sptVersion = ProgramStatics.SPT_VERSION || this.sptConfig.sptVersion;
const modName = `${mod.author}-${mod.name}`;
// Error and prevent loading If no sptVersion property exists
@ -397,7 +397,7 @@ export class PreSptModLoader implements IModLoader {
const typeScriptFiles = this.vfs.getFilesOfType(`${modPath}src`, ".ts");
if (typeScriptFiles.length > 0) {
if (Program.COMPILED) {
if (ProgramStatics.COMPILED) {
// compile ts into js if ts files exist and the program is compiled
await this.modCompilerService.compileMod(mod, modPath, typeScriptFiles);
} else {
@ -456,7 +456,10 @@ export class PreSptModLoader implements IModLoader {
this.localisationService.getText("modloader-installing_external_dependencies_disabled", {
name: pkg.name,
author: pkg.author,
configPath: path.join(Program.COMPILED ? "SPT_Data/Server/configs" : "assets/configs", "core.json"),
configPath: path.join(
ProgramStatics.COMPILED ? "SPT_Data/Server/configs" : "assets/configs",
"core.json",
),
configOption: "autoInstallModDependencies",
}),
);
@ -478,7 +481,7 @@ export class PreSptModLoader implements IModLoader {
const pnpmPath = path.join(
process.cwd(),
Program.COMPILED ? "SPT_Data/Server/@pnpm/exe" : "node_modules/@pnpm/exe",
ProgramStatics.COMPILED ? "SPT_Data/Server/@pnpm/exe" : "node_modules/@pnpm/exe",
os.platform() === "win32" ? "pnpm.exe" : "pnpm",
);

View File

@ -1,6 +1,6 @@
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { JsonUtil } from "@spt/utils/JsonUtil";
import { VFS } from "@spt/utils/VFS";
import { inject, injectable } from "tsyringe";
@ -34,7 +34,7 @@ export class ConfigServer {
this.logger.debug("Importing configs...");
// Get all filepaths
const filepath = Program.COMPILED ? "SPT_Data/Server/configs/" : "./assets/configs/";
const filepath = ProgramStatics.COMPILED ? "SPT_Data/Server/configs/" : "./assets/configs/";
const files = this.vfs.getFiles(filepath);
// Add file content to result
@ -60,7 +60,7 @@ export class ConfigServer {
}
}
this.logger.info(`Commit hash: ${Program.COMMIT || "DEBUG"}`);
this.logger.info(`Build date: ${Program.BUILD_TIME || "DEBUG"}`);
this.logger.info(`Commit hash: ${ProgramStatics.COMMIT || "DEBUG"}`);
this.logger.info(`Build date: ${ProgramStatics.BUILD_TIME || "DEBUG"}`);
}
}

View File

@ -1,5 +1,5 @@
import http, { IncomingMessage } from "node:http";
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { HttpServerHelper } from "@spt/helpers/HttpServerHelper";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { IWebSocketConnectionHandler } from "@spt/servers/ws/IWebSocketConnectionHandler";
@ -49,7 +49,7 @@ export class WebSocketServer {
return this.localisationService.getRandomTextThatMatchesPartialKey("server_start_meme_");
}
return Program.COMPILED
return ProgramStatics.COMPILED
? `${this.localisationService.getText("server_start_success")}!`
: this.localisationService.getText("server_start_success");
}

View File

@ -1,10 +1,10 @@
import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from "node:http";
import util from "node:util";
import zlib from "node:zlib";
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { Serializer } from "@spt/di/Serializer";
import { EntryType } from "@spt/models/enums/EntryType";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { HttpRouter } from "@spt/routers/HttpRouter";
import { IHttpListener } from "@spt/servers/http/IHttpListener";
import { LocalisationService } from "@spt/services/LocalisationService";
@ -134,7 +134,7 @@ export class SptHttpListener implements IHttpListener {
*/
protected logRequest(req: IncomingMessage, output: string): void {
//
if (Program.ENTRY_TYPE !== EntryType.RELEASE) {
if (ProgramStatics.ENTRY_TYPE !== EntryType.RELEASE) {
const log = new Response(req.method, output);
this.requestsLogger.info(`RESPONSE=${this.jsonUtil.serialize(log)}`);
}
@ -142,7 +142,7 @@ export class SptHttpListener implements IHttpListener {
public async getResponse(sessionID: string, req: IncomingMessage, body: Buffer | undefined): Promise<string> {
const info = this.getBodyInfo(body, req.url);
if (Program.ENTRY_TYPE !== EntryType.RELEASE) {
if (ProgramStatics.ENTRY_TYPE !== EntryType.RELEASE) {
// Parse quest info into object
const data = typeof info === "object" ? info : this.jsonUtil.deserialize(info);

View File

@ -1,6 +1,6 @@
import path from "node:path";
import { Program } from "@spt/Program";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ProgramStatics } from "@spt/ProgramStatics";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { LocaleService } from "@spt/services/LocaleService";
import { RandomUtil } from "@spt/utils/RandomUtil";
@ -22,7 +22,7 @@ export class LocalisationService {
) {
const localeFileDirectory = path.join(
process.cwd(),
Program.COMPILED ? "SPT_Data/Server/database/locales/server" : "./assets/database/locales/server",
ProgramStatics.COMPILED ? "SPT_Data/Server/database/locales/server" : "./assets/database/locales/server",
);
this.i18n = new I18n({
locales: this.localeService.getServerSupportedLocales(),

View File

@ -2,7 +2,7 @@ import fs from "node:fs";
import path from "node:path";
import { inject, injectable } from "tsyringe";
import { ScriptTarget, ModuleKind, ModuleResolutionKind, transpileModule, CompilerOptions } from "typescript";
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { ModHashCacheService } from "@spt/services/cache/ModHashCacheService";
import { VFS } from "@spt/utils/VFS";
@ -95,7 +95,7 @@ export class ModCompilerService
const text = fs.readFileSync(filePath).toString();
let replacedText: string;
if (Program.COMPILED) {
if (ProgramStatics.COMPILED) {
replacedText = text.replace(/(@spt)/g, `${baseDir}/obj`);
for (const dependency of this.serverDependencies)
{

View File

@ -1,10 +1,10 @@
import os from "node:os";
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { OnLoad } from "@spt/di/OnLoad";
import { OnUpdate } from "@spt/di/OnUpdate";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { HttpServer } from "@spt/servers/HttpServer";
import { DatabaseService } from "@spt/services/DatabaseService";
@ -41,14 +41,14 @@ export class App {
this.logger.debug(`RAM: ${(os.totalmem() / 1024 / 1024 / 1024).toFixed(2)}GB`);
this.logger.debug(`PATH: ${this.encodingUtil.toBase64(process.argv[0])}`);
this.logger.debug(`PATH: ${this.encodingUtil.toBase64(process.execPath)}`);
this.logger.debug(`Server: ${Program.SPT_VERSION || this.coreConfig.sptVersion}`);
this.logger.debug(`Server: ${ProgramStatics.SPT_VERSION || this.coreConfig.sptVersion}`);
if (Program.BUILD_TIME) {
this.logger.debug(`Date: ${Program.BUILD_TIME}`);
if (ProgramStatics.BUILD_TIME) {
this.logger.debug(`Date: ${ProgramStatics.BUILD_TIME}`);
}
if (Program.COMMIT) {
this.logger.debug(`Commit: ${Program.COMMIT}`);
if (ProgramStatics.COMMIT) {
this.logger.debug(`Commit: ${ProgramStatics.COMMIT}`);
}
for (const onLoad of this.onLoadComponents) {

View File

@ -1,9 +1,9 @@
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { OnLoad } from "@spt/di/OnLoad";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig";
import { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { ImageRouter } from "@spt/routers/ImageRouter";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
@ -42,13 +42,13 @@ export class DatabaseImporter implements OnLoad {
* @returns path to data
*/
public getSptDataPath(): string {
return Program.COMPILED ? "SPT_Data/Server/" : "./assets/";
return ProgramStatics.COMPILED ? "SPT_Data/Server/" : "./assets/";
}
public async onLoad(): Promise<void> {
this.filepath = this.getSptDataPath();
if (Program.COMPILED) {
if (ProgramStatics.COMPILED) {
try {
// Reading the dynamic SHA1 file
const file = "checks.dat";
@ -105,7 +105,7 @@ export class DatabaseImporter implements OnLoad {
protected onReadValidate(fileWithPath: string, data: string): void {
// Validate files
if (Program.COMPILED && this.hashedFile && !this.validateFile(fileWithPath, data)) {
if (ProgramStatics.COMPILED && this.hashedFile && !this.validateFile(fileWithPath, data)) {
this.valid = VaildationResult.FAILED;
}
}

View File

@ -1,4 +1,4 @@
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { ICoreConfig } from "@spt/models/spt/config/ICoreConfig";
import { LogTextColor } from "@spt/models/spt/logging/LogTextColor";
@ -79,10 +79,10 @@ export class Watermark {
this.text = [this.versionLabel];
this.text = [...this.text, ...description];
if (Program.DEBUG) {
if (ProgramStatics.DEBUG) {
this.text = this.text.concat([...warning]);
}
if (!Program.MODS) {
if (!ProgramStatics.MODS) {
this.text = this.text.concat([...modding]);
}
@ -105,8 +105,8 @@ export class Watermark {
* @returns string
*/
public getVersionTag(withEftVersion = false): string {
const sptVersion = Program.SPT_VERSION || this.sptConfig.sptVersion;
const versionTag = Program.DEBUG
const sptVersion = ProgramStatics.SPT_VERSION || this.sptConfig.sptVersion;
const versionTag = ProgramStatics.DEBUG
? `${sptVersion} - ${this.localisationService.getText("bleeding_edge_build")}`
: sptVersion;
@ -124,10 +124,10 @@ export class Watermark {
* @returns string
*/
public getInGameVersionLabel(): string {
const sptVersion = Program.SPT_VERSION || this.sptConfig.sptVersion;
const versionTag = Program.DEBUG
? `${sptVersion} - BLEEDINGEDGE ${Program.COMMIT?.slice(0, 6) ?? ""}`
: `${sptVersion} - ${Program.COMMIT?.slice(0, 6) ?? ""}`;
const sptVersion = ProgramStatics.SPT_VERSION || this.sptConfig.sptVersion;
const versionTag = ProgramStatics.DEBUG
? `${sptVersion} - BLEEDINGEDGE ${ProgramStatics.COMMIT?.slice(0, 6) ?? ""}`
: `${sptVersion} - ${ProgramStatics.COMMIT?.slice(0, 6) ?? ""}`;
return `${this.sptConfig.projectName} ${versionTag}`;
}
@ -139,7 +139,7 @@ export class Watermark {
/** Reset console cursor to top */
protected resetCursor(): void {
if (!Program.COMPILED) {
if (!ProgramStatics.COMPILED) {
process.stdout.write("\u001B[2J\u001B[0;0f");
}
}

View File

@ -2,7 +2,7 @@ import crypto from "node:crypto";
import fs from "node:fs";
import path from "node:path";
import { promisify } from "node:util";
import { Program } from "@spt/Program";
import { ProgramStatics } from "@spt/ProgramStatics";
import { IDaum } from "@spt/models/eft/itemEvent/IItemEventRouterRequest";
import { LogBackgroundColor } from "@spt/models/spt/logging/LogBackgroundColor";
import { LogTextColor } from "@spt/models/spt/logging/LogTextColor";
@ -38,7 +38,7 @@ export abstract class AbstractWinstonLogger implements ILogger {
constructor(protected asyncQueue: IAsyncQueue) {
this.filePath = path.join(this.getFilePath(), this.getFileName());
this.writeFilePromisify = promisify(fs.writeFile);
this.showDebugInConsole = Program.DEBUG;
this.showDebugInConsole = ProgramStatics.DEBUG;
if (!fs.existsSync(this.getFilePath())) {
fs.mkdirSync(this.getFilePath(), { recursive: true });
}