Valens-AIO/types/loaders/PreAkiModLoader.d.ts

77 lines
3.7 KiB
TypeScript
Raw Normal View History

2022-07-30 00:35:54 -04:00
import { DependencyContainer } from "tsyringe";
import { ICoreConfig } from "../models/spt/config/ICoreConfig";
import { IModLoader } from "../models/spt/mod/IModLoader";
import { IPackageJsonData } from "../models/spt/mod/IPackageJsonData";
import { ILogger } from "../models/spt/utils/ILogger";
import { ConfigServer } from "../servers/ConfigServer";
2022-12-25 18:45:37 -05:00
import { LocalisationService } from "../services/LocalisationService";
2022-07-30 00:35:54 -04:00
import { ModCompilerService } from "../services/ModCompilerService";
import { JsonUtil } from "../utils/JsonUtil";
import { VFS } from "../utils/VFS";
import { BundleLoader } from "./BundleLoader";
2023-02-12 23:21:14 -05:00
import { ModTypeCheck } from "./ModTypeCheck";
2022-07-30 00:35:54 -04:00
export declare class PreAkiModLoader implements IModLoader {
protected logger: ILogger;
protected vfs: VFS;
protected jsonUtil: JsonUtil;
protected modCompilerService: ModCompilerService;
protected bundleLoader: BundleLoader;
2022-12-25 18:45:37 -05:00
protected localisationService: LocalisationService;
2022-07-30 00:35:54 -04:00
protected configServer: ConfigServer;
2023-02-12 23:21:14 -05:00
protected modTypeCheck: ModTypeCheck;
2022-07-30 00:35:54 -04:00
protected static container: DependencyContainer;
protected readonly basepath = "user/mods/";
2023-01-15 00:21:22 -05:00
protected readonly modOrderPath = "user/mods/order.json";
protected order: Record<string, number>;
2023-02-12 23:21:14 -05:00
protected imported: Record<string, IPackageJsonData>;
2022-07-30 00:35:54 -04:00
protected akiConfig: ICoreConfig;
2023-02-12 23:21:14 -05:00
constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, modCompilerService: ModCompilerService, bundleLoader: BundleLoader, localisationService: LocalisationService, configServer: ConfigServer, modTypeCheck: ModTypeCheck);
2022-07-30 00:35:54 -04:00
load(container: DependencyContainer): Promise<void>;
/**
* Returns a list of mods with preserved load order
* @returns Array of mod names in load order
*/
getImportedModsNames(): string[];
2023-02-12 23:21:14 -05:00
getImportedModDetails(): Record<string, IPackageJsonData>;
2022-07-30 00:35:54 -04:00
getModPath(mod: string): string;
protected importMods(): Promise<void>;
/**
* Check for duplciate mods loaded, show error if duplicate mod found
* @param modPackageData dictionary of mod package.json data
*/
protected checkForDuplicateMods(modPackageData: Record<string, IPackageJsonData>): void;
/**
* Check for and return duplicate strings inside an array
* @param stringArray Array to check for duplicates
* @returns string array of duplicates, empty if none found
*/
protected getDuplicates(stringArray: string[]): string[];
2022-07-30 00:35:54 -04:00
/**
2022-12-25 18:45:37 -05:00
* Get an array of mods with errors that prevent them from working with SPT
* @param mods mods to validate
* @returns Mod names as array
2022-07-30 00:35:54 -04:00
*/
protected getBrokenMods(mods: string[]): string[];
/**
* Get packageJson data for mods
* @param mods mods to get packageJson for
* @returns dictionary <modName - package.json>
*/
protected getModsPackageData(mods: string[]): Record<string, IPackageJsonData>;
protected isModCombatibleWithAki(mod: IPackageJsonData): boolean;
2023-02-12 23:21:14 -05:00
protected executeMods(container: DependencyContainer): Promise<void>;
2022-07-30 00:35:54 -04:00
sortModsLoadOrder(): string[];
protected addMod(mod: string): Promise<void>;
protected areModDependenciesFulfilled(pkg: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean;
protected isModCompatible(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean;
2022-12-25 18:45:37 -05:00
/**
* Validate a mod passes a number of checks
* @param modName name of mod in /mods/ to validate
* @returns true if valid
*/
protected validMod(modName: string): boolean;
2022-07-30 00:35:54 -04:00
protected getLoadOrderRecursive(mod: string, result: Record<string, string>, visited: Record<string, string>): void;
2023-02-12 23:21:14 -05:00
protected getLoadOrder(mods: Record<string, IPackageJsonData>): Record<string, string>;
2022-07-30 00:35:54 -04:00
getContainer(): DependencyContainer;
}