Fixes Linting Issues

- Reorders imports
- Removes unnecessary `else` control statements
- Simplifies some logic
- Converts key access to dot notation
- Converts Array.forEach loops to for...of loops
This commit is contained in:
Refringe 2024-02-02 15:00:12 -05:00
parent 90492f3aa2
commit 69a1723646
No known key found for this signature in database
GPG Key ID: 64E03E5F892C6F9E
22 changed files with 95 additions and 103 deletions

View File

@ -157,7 +157,7 @@ export class DataCallbacks
if (result === undefined) if (result === undefined)
{ {
result = tables.locales.menu["en"]; result = tables.locales.menu.en;
} }
return this.httpResponse.getBody(result); return this.httpResponse.getBody(result);

View File

@ -792,7 +792,7 @@ export class QuestController
for (const itemHandover of handoverQuestRequest.items) for (const itemHandover of handoverQuestRequest.items)
{ {
const matchingItemInProfile = pmcData.Inventory.items.find((item) => item._id === itemHandover.id); const matchingItemInProfile = pmcData.Inventory.items.find((item) => item._id === itemHandover.id);
if (!matchingItemInProfile || !handoverRequirements.target.includes(matchingItemInProfile._tpl)) if (!(matchingItemInProfile && handoverRequirements.target.includes(matchingItemInProfile._tpl)))
{ {
// Item handed in by player doesnt match what was requested // Item handed in by player doesnt match what was requested
return this.showQuestItemHandoverMatchError( return this.showQuestItemHandoverMatchError(

View File

@ -366,20 +366,18 @@ export class RagfairController
return { avg: (min + max) / 2, min: min, max: max }; return { avg: (min + max) / 2, min: min, max: max };
} }
// No offers listed, get price from live ragfair price list prices.json // No offers listed, get price from live ragfair price list prices.json
else const templatesDb = this.databaseServer.getTables().templates;
let tplPrice = templatesDb.prices[getPriceRequest.templateId];
if (!tplPrice)
{ {
const templatesDb = this.databaseServer.getTables().templates; // No flea price, get handbook price
tplPrice = this.handbookHelper.getTemplatePrice(getPriceRequest.templateId);
let tplPrice = templatesDb.prices[getPriceRequest.templateId];
if (!tplPrice)
{
// No flea price, get handbook price
tplPrice = this.handbookHelper.getTemplatePrice(getPriceRequest.templateId);
}
return { avg: tplPrice, min: tplPrice, max: tplPrice };
} }
return { avg: tplPrice, min: tplPrice, max: tplPrice };
} }
/** /**

View File

@ -226,6 +226,7 @@ import { RepairService } from "@spt-aki/services/RepairService";
import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService";
import { TraderAssortService } from "@spt-aki/services/TraderAssortService"; import { TraderAssortService } from "@spt-aki/services/TraderAssortService";
import { TraderPurchasePersisterService } from "@spt-aki/services/TraderPurchasePersisterService"; import { TraderPurchasePersisterService } from "@spt-aki/services/TraderPurchasePersisterService";
import { TraderServicesService } from "@spt-aki/services/TraderServicesService";
import { CustomItemService } from "@spt-aki/services/mod/CustomItemService"; import { CustomItemService } from "@spt-aki/services/mod/CustomItemService";
import { DynamicRouterModService } from "@spt-aki/services/mod/dynamicRouter/DynamicRouterModService"; import { DynamicRouterModService } from "@spt-aki/services/mod/dynamicRouter/DynamicRouterModService";
import { HttpListenerModService } from "@spt-aki/services/mod/httpListener/HttpListenerModService"; import { HttpListenerModService } from "@spt-aki/services/mod/httpListener/HttpListenerModService";
@ -250,7 +251,6 @@ import { VFS } from "@spt-aki/utils/VFS";
import { Watermark, WatermarkLocale } from "@spt-aki/utils/Watermark"; import { Watermark, WatermarkLocale } from "@spt-aki/utils/Watermark";
import { WinstonMainLogger } from "@spt-aki/utils/logging/WinstonMainLogger"; import { WinstonMainLogger } from "@spt-aki/utils/logging/WinstonMainLogger";
import { WinstonRequestLogger } from "@spt-aki/utils/logging/WinstonRequestLogger"; import { WinstonRequestLogger } from "@spt-aki/utils/logging/WinstonRequestLogger";
import { TraderServicesService } from "@spt-aki/services/TraderServicesService";
/** /**
* Handle the registration of classes to be used by the Dependency Injection code * Handle the registration of classes to be used by the Dependency Injection code

View File

@ -31,10 +31,7 @@ export class Router
{ {
return this.getInternalHandledRoutes().filter((r) => r.dynamic).some((r) => url.includes(r.route)); return this.getInternalHandledRoutes().filter((r) => r.dynamic).some((r) => url.includes(r.route));
} }
else return this.getInternalHandledRoutes().filter((r) => !r.dynamic).some((r) => r.route === url);
{
return this.getInternalHandledRoutes().filter((r) => !r.dynamic).some((r) => r.route === url);
}
} }
} }

View File

@ -895,7 +895,7 @@ export class BotEquipmentModGenerator
} }
// Some mod combos will never work, make sure this isnt the case // Some mod combos will never work, make sure this isnt the case
if (!chosenModResult.incompatible && !this.weaponModComboIsIncompatible(weapon, chosenTpl)) if (!(chosenModResult.incompatible || this.weaponModComboIsIncompatible(weapon, chosenTpl)))
{ {
// Success // Success
chosenModResult.found = true; chosenModResult.found = true;

View File

@ -311,9 +311,10 @@ export class LocationGenerator
// Create probability array with all possible container ids in this group and their relataive probability of spawning // Create probability array with all possible container ids in this group and their relataive probability of spawning
const containerDistribution = new ProbabilityObjectArray<string>(this.mathUtil, this.jsonUtil); const containerDistribution = new ProbabilityObjectArray<string>(this.mathUtil, this.jsonUtil);
containerIds.forEach((x) => for (const x of containerIds)
containerDistribution.push(new ProbabilityObject(x, containerData.containerIdsWithProbability[x])) {
); containerDistribution.push(new ProbabilityObject(x, containerData.containerIdsWithProbability[x]));
}
chosenContainerIds.push(...containerDistribution.draw(containerData.chosenCount)); chosenContainerIds.push(...containerDistribution.draw(containerData.chosenCount));

View File

@ -69,8 +69,9 @@ export class ExternalInventoryMagGen implements IInventoryMagGen
// No containers to fit magazines, stop trying // No containers to fit magazines, stop trying
break; break;
} }
// No space for magazine and we haven't reached desired magazine count // No space for magazine and we haven't reached desired magazine count
else if (fitsIntoInventory === ItemAddedResult.NO_SPACE && i < randomizedMagazineCount) if (fitsIntoInventory === ItemAddedResult.NO_SPACE && i < randomizedMagazineCount)
{ {
// Prevent infinite loop by only allowing 5 attempts at fitting a magazine into inventory // Prevent infinite loop by only allowing 5 attempts at fitting a magazine into inventory
if (fitAttempts > 5) if (fitAttempts > 5)
@ -141,7 +142,7 @@ export class ExternalInventoryMagGen implements IInventoryMagGen
} }
/** /**
* Get a random compatible external magazine for a weapon, excluses internal magazines from possible pool * Get a random compatible external magazine for a weapon, exclude internal magazines from possible pool
* @param weaponTpl Weapon to get mag for * @param weaponTpl Weapon to get mag for
* @returns tpl of magazine * @returns tpl of magazine
*/ */

View File

@ -85,11 +85,13 @@ export class AssortHelper
status: [QuestStatus.Started, QuestStatus.AvailableForFinish, QuestStatus.Success], status: [QuestStatus.Started, QuestStatus.AvailableForFinish, QuestStatus.Success],
}; };
} }
else if (assortId in mergedQuestAssorts.success)
if (assortId in mergedQuestAssorts.success)
{ {
return { questId: mergedQuestAssorts.success[assortId], status: [QuestStatus.Success] }; return { questId: mergedQuestAssorts.success[assortId], status: [QuestStatus.Success] };
} }
else if (assortId in mergedQuestAssorts.fail)
if (assortId in mergedQuestAssorts.fail)
{ {
return { questId: mergedQuestAssorts.fail[assortId], status: [QuestStatus.Fail] }; return { questId: mergedQuestAssorts.fail[assortId], status: [QuestStatus.Fail] };
} }

View File

@ -555,10 +555,10 @@ export class InRaidHelper
&& this.itemHelper.itemIsInsideContainer(x, "SecuredContainer", postRaidProfile.Inventory.items)); && this.itemHelper.itemIsInsideContainer(x, "SecuredContainer", postRaidProfile.Inventory.items));
}); });
itemsToRemovePropertyFrom.forEach((item) => for (const item of itemsToRemovePropertyFrom)
{ {
delete item.upd.SpawnedInSession; delete item.upd.SpawnedInSession;
}); }
return postRaidProfile; return postRaidProfile;
} }
@ -601,11 +601,11 @@ export class InRaidHelper
{ {
// Get inventory item ids to remove from players profile // Get inventory item ids to remove from players profile
const itemIdsToDeleteFromProfile = this.getInventoryItemsLostOnDeath(pmcData).map((x) => x._id); const itemIdsToDeleteFromProfile = this.getInventoryItemsLostOnDeath(pmcData).map((x) => x._id);
itemIdsToDeleteFromProfile.forEach((x) => for (const x of itemIdsToDeleteFromProfile)
{ {
// Items inside containers are handed as part of function // Items inside containers are handled as part of function
this.inventoryHelper.removeItem(pmcData, x, sessionID); this.inventoryHelper.removeItem(pmcData, x, sessionID);
}); }
// Remove contents of fast panel // Remove contents of fast panel
pmcData.Inventory.fastPanel = {}; pmcData.Inventory.fastPanel = {};

View File

@ -146,12 +146,11 @@ export class PreAkiModLoader implements IModLoader
const modOrder = this.vfs.readFile(this.modOrderPath, { encoding: "utf8" }); const modOrder = this.vfs.readFile(this.modOrderPath, { encoding: "utf8" });
try try
{ {
this.jsonUtil.deserialize<any>(modOrder, this.modOrderPath).order.forEach( const modOrderArray = this.jsonUtil.deserialize<any>(modOrder, this.modOrderPath).order;
(mod: string, index: number) => for (const [index, mod] of modOrderArray.entries())
{ {
this.order[mod] = index; this.order[mod] = index;
}, }
);
} }
catch (error) catch (error)
{ {
@ -215,11 +214,10 @@ export class PreAkiModLoader implements IModLoader
validMods.sort((prev, next) => this.sortMods(prev, next, missingFromOrderJSON)); validMods.sort((prev, next) => this.sortMods(prev, next, missingFromOrderJSON));
// log the missing mods from order.json // log the missing mods from order.json
Object.keys(missingFromOrderJSON).forEach(( for (const missingMod of Object.keys(missingFromOrderJSON))
missingMod, {
) => (this.logger.debug( this.logger.debug(this.localisationService.getText("modloader-mod_order_missing_from_json", missingMod));
this.localisationService.getText("modloader-mod_order_missing_from_json", missingMod), }
)));
// add mods // add mods
for (const mod of validMods) for (const mod of validMods)
@ -250,7 +248,8 @@ export class PreAkiModLoader implements IModLoader
return 1; return 1;
} }
else if (nextindex === undefined)
if (nextindex === undefined)
{ {
missingFromOrderJSON[next] = true; missingFromOrderJSON[next] = true;
@ -436,10 +435,8 @@ export class PreAkiModLoader implements IModLoader
{ {
return this.jsonUtil.deserialize(this.vfs.readFile(loadOrderPath), loadOrderPath); return this.jsonUtil.deserialize(this.vfs.readFile(loadOrderPath), loadOrderPath);
} }
else
{ return this.modLoadOrder.getLoadOrder();
return this.modLoadOrder.getLoadOrder();
}
} }
/** /**
@ -737,9 +734,7 @@ export class PreAkiModLoader implements IModLoader
{ {
return PreAkiModLoader.container; return PreAkiModLoader.container;
} }
else
{ throw new Error(this.localisationService.getText("modloader-dependency_container_not_initalized"));
throw new Error(this.localisationService.getText("modloader-dependency_container_not_initalized"));
}
} }
} }

View File

@ -1,9 +1,7 @@
// biome-ignore lint/suspicious/noEmptyInterface: <explanation>
export interface IAcceptFriendRequestData extends IBaseFriendRequest export interface IAcceptFriendRequestData extends IBaseFriendRequest
{ {
} }
// biome-ignore lint/suspicious/noEmptyInterface: <explanation>
export interface ICancelFriendRequestData extends IBaseFriendRequest export interface ICancelFriendRequestData extends IBaseFriendRequest
{ {
} }

View File

@ -1,14 +1,14 @@
import { QteActivityType } from "@spt-aki/models/enums/hideout/QteActivityType";
import { QteEffectType } from "@spt-aki/models/enums/hideout/QteEffectType";
import { QteType } from "@spt-aki/models/enums/hideout/QteType";
import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas";
import { RequirementType } from "@spt-aki/models/enums/hideout/RequirementType";
import { SkillTypes } from "@spt-aki/models/enums/SkillTypes";
import { Traders } from "@spt-aki/models/enums/Traders";
import { Effect } from "@spt-aki/models/eft/health/Effect"; import { Effect } from "@spt-aki/models/eft/health/Effect";
import { BodyPart } from "@spt-aki/models/eft/health/IOffraidHealRequestData"; import { BodyPart } from "@spt-aki/models/eft/health/IOffraidHealRequestData";
import { QteRewardType } from "@spt-aki/models/enums/hideout/QteRewardType"; import { HideoutAreas } from "@spt-aki/models/enums/HideoutAreas";
import { SkillTypes } from "@spt-aki/models/enums/SkillTypes";
import { Traders } from "@spt-aki/models/enums/Traders";
import { QteActivityType } from "@spt-aki/models/enums/hideout/QteActivityType";
import { QteEffectType } from "@spt-aki/models/enums/hideout/QteEffectType";
import { QteResultType } from "@spt-aki/models/enums/hideout/QteResultType"; import { QteResultType } from "@spt-aki/models/enums/hideout/QteResultType";
import { QteRewardType } from "@spt-aki/models/enums/hideout/QteRewardType";
import { QteType } from "@spt-aki/models/enums/hideout/QteType";
import { RequirementType } from "@spt-aki/models/enums/hideout/RequirementType";
export interface IQteData export interface IQteData
{ {

View File

@ -1,6 +1,6 @@
export enum ModSpawn export enum ModSpawn
{ {
DEFAULT_MOD, DEFAULT_MOD = 0,
SPAWN, SPAWN = 1,
SKIP, SKIP = 2,
} }

View File

@ -2,14 +2,14 @@ import { inject, injectAll, injectable } from "tsyringe";
import { SaveLoadRouter } from "@spt-aki/di/Router"; import { SaveLoadRouter } from "@spt-aki/di/Router";
import { IAkiProfile, Info } from "@spt-aki/models/eft/profile/IAkiProfile"; import { IAkiProfile, Info } from "@spt-aki/models/eft/profile/IAkiProfile";
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
import { JsonUtil } from "@spt-aki/utils/JsonUtil"; import { JsonUtil } from "@spt-aki/utils/JsonUtil";
import { VFS } from "@spt-aki/utils/VFS"; import { VFS } from "@spt-aki/utils/VFS";
import { ConfigServer } from "./ConfigServer"; import { ConfigServer } from "./ConfigServer";
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig";
@injectable() @injectable()
export class SaveServer export class SaveServer

View File

@ -3,6 +3,7 @@ import { inject, injectable } from "tsyringe";
import WebSocket from "ws"; import WebSocket from "ws";
import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper"; import { HttpServerHelper } from "@spt-aki/helpers/HttpServerHelper";
import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper";
import { INotification, NotificationType } from "@spt-aki/models/eft/notifier/INotifier"; import { INotification, NotificationType } from "@spt-aki/models/eft/notifier/INotifier";
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes"; import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig";
@ -11,7 +12,6 @@ import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { JsonUtil } from "@spt-aki/utils/JsonUtil"; import { JsonUtil } from "@spt-aki/utils/JsonUtil";
import { RandomUtil } from "@spt-aki/utils/RandomUtil"; import { RandomUtil } from "@spt-aki/utils/RandomUtil";
import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper";
@injectable() @injectable()
export class WebSocketServer export class WebSocketServer

View File

@ -1379,7 +1379,7 @@ export class ProfileFixerService
for (let i = 0; i < profileQuests.length; i++) for (let i = 0; i < profileQuests.length; i++)
{ {
if (!quests[profileQuests[i].qid] && !repeatableQuests.find((x) => x._id == profileQuests[i].qid)) if (!(quests[profileQuests[i].qid] || repeatableQuests.find((x) => x._id === profileQuests[i].qid)))
{ {
profileQuests.splice(i, 1); profileQuests.splice(i, 1);
this.logger.success("Successfully removed orphaned quest that doesnt exist in our quest data"); this.logger.success("Successfully removed orphaned quest that doesnt exist in our quest data");

View File

@ -34,7 +34,7 @@ export class RagfairCategoriesService
const isTraderOffer = offer.user.memberType === MemberCategory.TRADER; const isTraderOffer = offer.user.memberType === MemberCategory.TRADER;
// Not level 15 and offer is from player, skip // Not level 15 and offer is from player, skip
if (!fleaUnlocked && !isTraderOffer) if (!(fleaUnlocked || isTraderOffer))
{ {
return false; return false;
} }

View File

@ -274,7 +274,8 @@ export class RagfairPriceService implements OnLoad
{ {
return priceRanges.preset; return priceRanges.preset;
} }
else if (isPack)
if (isPack)
{ {
return priceRanges.pack; return priceRanges.pack;
} }
@ -283,7 +284,7 @@ export class RagfairPriceService implements OnLoad
} }
/** /**
* Check to see if an items price is below its handbook price and adjust accoring to values set to config/ragfair.json * Check to see if an items price is below its handbook price and adjust according to values set to config/ragfair.json
* @param itemPrice price of item * @param itemPrice price of item
* @param itemTpl item template Id being checked * @param itemTpl item template Id being checked
* @returns adjusted price value in roubles * @returns adjusted price value in roubles

View File

@ -211,11 +211,9 @@ export class RepairService
this.repairConfig.maxIntellectGainPerRepair.kit, this.repairConfig.maxIntellectGainPerRepair.kit,
); );
} }
else
{ // Trader repair - Not as accurate as kit, needs data from live
// Trader repair - Not as accurate as kit, needs data from live return Math.min(repairDetails.repairAmount / 10, this.repairConfig.maxIntellectGainPerRepair.trader);
return Math.min(repairDetails.repairAmount / 10, this.repairConfig.maxIntellectGainPerRepair.trader);
}
} }
/** /**
@ -351,14 +349,12 @@ export class RepairService
return durabilityPointCostArmor * armorBonus * destructability * armorClassMultiplier; return durabilityPointCostArmor * armorBonus * destructability * armorClassMultiplier;
} }
else
{
const repairWeaponBonus = this.getBonusMultiplierValue(BonusType.REPAIR_WEAPON_BONUS, pmcData) - 1;
const repairPointMultiplier = 1.0 - repairWeaponBonus - intellectPointReduction;
const durabilityPointCostGuns = globals.config.RepairSettings.durabilityPointCostGuns;
return durabilityPointCostGuns * repairPointMultiplier; const repairWeaponBonus = this.getBonusMultiplierValue(BonusType.REPAIR_WEAPON_BONUS, pmcData) - 1;
} const repairPointMultiplier = 1.0 - repairWeaponBonus - intellectPointReduction;
const durabilityPointCostGuns = globals.config.RepairSettings.durabilityPointCostGuns;
return durabilityPointCostGuns * repairPointMultiplier;
} }
/** /**
@ -540,30 +536,34 @@ export class RepairService
* @param itemTemplate Item to check for skill * @param itemTemplate Item to check for skill
* @returns Skill name * @returns Skill name
*/ */
protected getItemSkillType(itemTemplate: ITemplateItem): SkillTypes protected getItemSkillType(itemTemplate: ITemplateItem): SkillTypes | undefined
{ {
if ( const isArmorRelated = this.itemHelper.isOfBaseclasses(itemTemplate._id, [
this.itemHelper.isOfBaseclasses(itemTemplate._id, [ BaseClasses.ARMOR,
BaseClasses.ARMOR, BaseClasses.VEST,
BaseClasses.VEST, BaseClasses.HEADWEAR,
BaseClasses.HEADWEAR, ]);
])
) if (isArmorRelated)
{ {
if (itemTemplate._props.ArmorType === "Light") const armorType = itemTemplate._props.ArmorType;
if (armorType === "Light")
{ {
return SkillTypes.LIGHT_VESTS; return SkillTypes.LIGHT_VESTS;
} }
else if (itemTemplate._props.ArmorType === "Heavy")
if (armorType === "Heavy")
{ {
return SkillTypes.HEAVY_VESTS; return SkillTypes.HEAVY_VESTS;
} }
} }
else if (this.itemHelper.isOfBaseclass(itemTemplate._id, BaseClasses.WEAPON))
if (this.itemHelper.isOfBaseclass(itemTemplate._id, BaseClasses.WEAPON))
{ {
return SkillTypes.WEAPON_TREATMENT; return SkillTypes.WEAPON_TREATMENT;
} }
else if (this.itemHelper.isOfBaseclass(itemTemplate._id, BaseClasses.KNIFE))
if (this.itemHelper.isOfBaseclass(itemTemplate._id, BaseClasses.KNIFE))
{ {
return SkillTypes.MELEE; return SkillTypes.MELEE;
} }

View File

@ -18,7 +18,7 @@ export class HttpFileUtil
|| this.httpServerHelper.getMimeText("txt"); || this.httpServerHelper.getMimeText("txt");
const fileStream = fs.createReadStream(file); const fileStream = fs.createReadStream(file);
fileStream.on("open", function() fileStream.on("open", () =>
{ {
resp.setHeader("Content-Type", type); resp.setHeader("Content-Type", type);
fileStream.pipe(resp); fileStream.pipe(resp);

View File

@ -86,18 +86,17 @@ export class MathUtil
{ {
return y[y.length - 1]; return y[y.length - 1];
} }
else if (xp < x[0])
if (xp < x[0])
{ {
return y[0]; return y[0];
} }
else
for (let i = 0; i < x.length - 1; i++)
{ {
for (let i = 0; i < x.length - 1; i++) if (xp >= x[i] && xp <= x[i + 1])
{ {
if (xp >= x[i] && xp <= x[i + 1]) return y[i] + (xp - x[i]) * (y[i + 1] - y[i]) / (x[i + 1] - x[i]);
{
return y[i] + (xp - x[i]) * (y[i + 1] - y[i]) / (x[i + 1] - x[i]);
}
} }
} }
} }