Merge pull request #3145 from ApamNapat/made_useless_concats_ilegal

Turned on no-useless-concat lint and fixed it in code
This commit is contained in:
hydroflame 2022-03-16 16:58:45 -04:00 committed by GitHub
commit b00cf1f347
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 26 additions and 29 deletions

@ -253,7 +253,7 @@ module.exports = {
"no-use-before-define": ["off"], "no-use-before-define": ["off"],
"no-useless-call": ["off"], "no-useless-call": ["off"],
"no-useless-computed-key": ["error"], "no-useless-computed-key": ["error"],
"no-useless-concat": ["off"], "no-useless-concat": ["error"],
"no-useless-constructor": ["error"], "no-useless-constructor": ["error"],
"no-useless-escape": ["off"], "no-useless-escape": ["off"],
"no-useless-rename": [ "no-useless-rename": [

@ -148,7 +148,7 @@ function initAugmentations(): void {
name: AugmentationNames.HemoRecirculator, name: AugmentationNames.HemoRecirculator,
moneyCost: 4.5e7, moneyCost: 4.5e7,
repCost: 1e4, repCost: 1e4,
info: "A heart implant that greatly increases the body's ability to effectively use and pump " + "blood.", info: "A heart implant that greatly increases the body's ability to effectively use and pump blood.",
strength_mult: 1.08, strength_mult: 1.08,
defense_mult: 1.08, defense_mult: 1.08,
agility_mult: 1.08, agility_mult: 1.08,
@ -430,7 +430,7 @@ function initAugmentations(): void {
repCost: 1.125e6, repCost: 1.125e6,
moneyCost: 4.25e9, moneyCost: 4.25e9,
info: info:
"Graphene is grafted and fused into the skeletal structure, " + "enhancing bone density and tensile strength.", "Graphene is grafted and fused into the skeletal structure, enhancing bone density and tensile strength.",
strength_mult: 1.7, strength_mult: 1.7,
defense_mult: 1.7, defense_mult: 1.7,
}); });
@ -1085,7 +1085,7 @@ function initAugmentations(): void {
name: AugmentationNames.FocusWire, name: AugmentationNames.FocusWire,
repCost: 7.5e4, repCost: 7.5e4,
moneyCost: 9e8, moneyCost: 9e8,
info: "A cranial implant that stops procrastination by blocking specific neural pathways " + "in the brain.", info: "A cranial implant that stops procrastination by blocking specific neural pathways in the brain.",
hacking_exp_mult: 1.05, hacking_exp_mult: 1.05,
strength_exp_mult: 1.05, strength_exp_mult: 1.05,
defense_exp_mult: 1.05, defense_exp_mult: 1.05,
@ -1486,7 +1486,7 @@ function initAugmentations(): void {
name: AugmentationNames.SmartSonar, name: AugmentationNames.SmartSonar,
repCost: 2.25e4, repCost: 2.25e4,
moneyCost: 7.5e7, moneyCost: 7.5e7,
info: "A cochlear implant that helps the player detect and locate enemies " + "using sound propagation.", info: "A cochlear implant that helps the player detect and locate enemies using sound propagation.",
dexterity_mult: 1.1, dexterity_mult: 1.1,
dexterity_exp_mult: 1.15, dexterity_exp_mult: 1.15,
crime_money_mult: 1.25, crime_money_mult: 1.25,
@ -2015,7 +2015,7 @@ function initAugmentations(): void {
repCost: 6.25e4, repCost: 6.25e4,
moneyCost: 2.75e8, moneyCost: 2.75e8,
info: info:
"Cybernetic arms created from plasteel and carbon fibers that completely replace " + "the user's organic arms.", "Cybernetic arms created from plasteel and carbon fibers that completely replace the user's organic arms.",
strength_mult: 1.3, strength_mult: 1.3,
dexterity_mult: 1.3, dexterity_mult: 1.3,
}); });

@ -135,7 +135,7 @@ export class Action implements IAction {
if (this.decays.hasOwnProperty(decay)) { if (this.decays.hasOwnProperty(decay)) {
if (this.decays[decay] > 1) { if (this.decays[decay] > 1) {
throw new Error( throw new Error(
"Invalid decays when constructing " + "Action " + this.name + ". " + "Decay value cannot be greater than 1", `Invalid decays when constructing Action ${this.name}. Decay value cannot be greater than 1`,
); );
} }
} }

@ -8,7 +8,7 @@ export const Skills: IMap<Skill> = {};
Skills[SkillNames.BladesIntuition] = new Skill({ Skills[SkillNames.BladesIntuition] = new Skill({
name: SkillNames.BladesIntuition, name: SkillNames.BladesIntuition,
desc: desc:
"Each level of this skill increases your success chance " + "for all Contracts, Operations, and BlackOps by 3%", "Each level of this skill increases your success chance for all Contracts, Operations, and BlackOps by 3%",
baseCost: 3, baseCost: 3,
costInc: 2.1, costInc: 2.1,
successChanceAll: 3, successChanceAll: 3,
@ -33,14 +33,14 @@ export const Skills: IMap<Skill> = {};
}); });
Skills[SkillNames.DigitalObserver] = new Skill({ Skills[SkillNames.DigitalObserver] = new Skill({
name: SkillNames.DigitalObserver, name: SkillNames.DigitalObserver,
desc: "Each level of this skill increases your success chance in " + "all Operations and BlackOps by 4%", desc: "Each level of this skill increases your success chance in all Operations and BlackOps by 4%",
baseCost: 2, baseCost: 2,
costInc: 2.1, costInc: 2.1,
successChanceOperation: 4, successChanceOperation: 4,
}); });
Skills[SkillNames.Tracer] = new Skill({ Skills[SkillNames.Tracer] = new Skill({
name: SkillNames.Tracer, name: SkillNames.Tracer,
desc: "Each level of this skill increases your success chance in " + "all Contracts by 4%", desc: "Each level of this skill increases your success chance in all Contracts by 4%",
baseCost: 2, baseCost: 2,
costInc: 2.1, costInc: 2.1,
successChanceContract: 4, successChanceContract: 4,
@ -67,7 +67,7 @@ export const Skills: IMap<Skill> = {};
}); });
Skills[SkillNames.EvasiveSystem] = new Skill({ Skills[SkillNames.EvasiveSystem] = new Skill({
name: SkillNames.EvasiveSystem, name: SkillNames.EvasiveSystem,
desc: "Each level of this skill increases your effective " + "dexterity and agility for Bladeburner actions by 4%", desc: "Each level of this skill increases your effective dexterity and agility for Bladeburner actions by 4%",
baseCost: 2, baseCost: 2,
costInc: 2.1, costInc: 2.1,
effDex: 4, effDex: 4,

@ -106,7 +106,7 @@ export const researchMetadata: IConstructorParams[] = [
{ {
name: "JoyWire", name: "JoyWire",
cost: 20e3, cost: 20e3,
desc: "A brain implant which is installed in employees, increasing their " + "maximum happiness by 10.", desc: "A brain implant which is installed in employees, increasing their maximum happiness by 10.",
}, },
{ {
name: "Market-TA.I", name: "Market-TA.I",
@ -160,7 +160,7 @@ export const researchMetadata: IConstructorParams[] = [
{ {
name: "sudo.Assist", name: "sudo.Assist",
cost: 15e3, cost: 15e3,
desc: "Develop a virtual assistant AI to handle and manage administrative " + "issues for your corporation.", desc: "Develop a virtual assistant AI to handle and manage administrative issues for your corporation.",
}, },
{ {
name: "uPgrade: Capacity.I", name: "uPgrade: Capacity.I",

@ -117,8 +117,7 @@ export function purchaseAugmentation(aug: Augmentation, fac: Faction, sing = fal
const factionInfo = fac.getInfo(); const factionInfo = fac.getInfo();
const hasPrereqs = hasAugmentationPrereqs(aug); const hasPrereqs = hasAugmentationPrereqs(aug);
if (!hasPrereqs) { if (!hasPrereqs) {
const txt = const txt = `You must first purchase or install ${aug.prereqs.join(",")} before you can purchase this one.`;
"You must first purchase or install " + aug.prereqs.join(",") + " before you can " + "purchase this one.";
if (sing) { if (sing) {
return txt; return txt;
} else { } else {

@ -28,7 +28,7 @@ type IProps = {
}; };
// Info text for all options on the UI // Info text for all options on the UI
const gangInfo = "Create and manage a gang for this Faction. Gangs will earn you money and " + "faction reputation"; const gangInfo = "Create and manage a gang for this Faction. Gangs will earn you money and faction reputation";
const hackingContractsInfo = const hackingContractsInfo =
"Complete hacking contracts for your faction. " + "Complete hacking contracts for your faction. " +
"Your effectiveness, which determines how much " + "Your effectiveness, which determines how much " +

@ -375,7 +375,7 @@ function processNetscript1Imports(code: string, workerScript: WorkerScript): any
}); });
//Now we have to generate the code that would create the namespace //Now we have to generate the code that would create the namespace
generatedCode += "var " + namespace + ";\n" + "(function (namespace) {\n"; generatedCode += `var ${namespace};\n(function (namespace) {\n`;
//Add the function declarations //Add the function declarations
fnDeclarations.forEach((fn: any) => { fnDeclarations.forEach((fn: any) => {
@ -390,7 +390,7 @@ function processNetscript1Imports(code: string, workerScript: WorkerScript): any
}); });
//Finish //Finish
generatedCode += "})(" + namespace + " || " + "(" + namespace + " = {}));\n"; generatedCode += `})(${namespace} || (" + namespace + " = {}));\n`;
} else { } else {
//import {...} from script //import {...} from script

@ -1313,9 +1313,7 @@ export function createProgramWork(this: IPlayer, numCycles: number): boolean {
export function finishCreateProgramWork(this: IPlayer, cancelled: boolean): string { export function finishCreateProgramWork(this: IPlayer, cancelled: boolean): string {
const programName = this.createProgramName; const programName = this.createProgramName;
if (cancelled === false) { if (cancelled === false) {
dialogBoxCreate( dialogBoxCreate(`You've finished creating ${programName}!<br>The new program can be found on your home computer.`);
"You've finished creating " + programName + "!<br>" + "The new program can be found on your home computer.",
);
this.getHomeComputer().programs.push(programName); this.getHomeComputer().programs.push(programName);
} else { } else {

@ -39,7 +39,7 @@ function giveSourceFile(bitNodeNumber: number): void {
if (alreadyOwned && ownedSourceFile) { if (alreadyOwned && ownedSourceFile) {
if (ownedSourceFile.lvl >= 3 && ownedSourceFile.n !== 12) { if (ownedSourceFile.lvl >= 3 && ownedSourceFile.n !== 12) {
dialogBoxCreate( dialogBoxCreate(
"The Source-File for the BitNode you just destroyed, " + sourceFile.name + ", " + "is already at max level!", `The Source-File for the BitNode you just destroyed, ${sourceFile.name}, is already at max level!`,
); );
} else { } else {
++ownedSourceFile.lvl; ++ownedSourceFile.lvl;

@ -526,7 +526,7 @@ export function Root(props: IProps): React.ReactElement {
const textFile = new TextFile(scriptToSave.fileName, scriptToSave.code); const textFile = new TextFile(scriptToSave.fileName, scriptToSave.code);
server.textFiles.push(textFile); server.textFiles.push(textFile);
} else { } else {
dialogBoxCreate("Invalid filename. Must be either a script (.script, .js, or .ns) or " + " or text file (.txt)"); dialogBoxCreate("Invalid filename. Must be either a script (.script, .js, or .ns) or a text file (.txt)");
return; return;
} }
@ -610,7 +610,7 @@ export function Root(props: IProps): React.ReactElement {
const textFile = new TextFile(currentScript.fileName, currentScript.code); const textFile = new TextFile(currentScript.fileName, currentScript.code);
server.textFiles.push(textFile); server.textFiles.push(textFile);
} else { } else {
dialogBoxCreate("Invalid filename. Must be either a script (.script, .js, or .ns) or " + " or text file (.txt)"); dialogBoxCreate("Invalid filename. Must be either a script (.script, .js, or .ns) or a text file (.txt)");
return; return;
} }

@ -117,7 +117,7 @@ export function buyStock(
const resultTxt = const resultTxt =
`Bought ${numeralWrapper.formatShares(shares)} shares of ${stock.symbol} for ${numeralWrapper.formatMoney( `Bought ${numeralWrapper.formatShares(shares)} shares of ${stock.symbol} for ${numeralWrapper.formatMoney(
totalPrice, totalPrice,
)}. ` + `Paid ${numeralWrapper.formatMoney(CONSTANTS.StockMarketCommission)} in commission fees.`; )}. Paid ${numeralWrapper.formatMoney(CONSTANTS.StockMarketCommission)} in commission fees.`;
workerScript.log("stock.buy", () => resultTxt); workerScript.log("stock.buy", () => resultTxt);
} else if (opts.suppressDialog !== true) { } else if (opts.suppressDialog !== true) {
dialogBoxCreate( dialogBoxCreate(

@ -640,7 +640,7 @@ export const codingContractTypesMetadata: ICodingContractTypeMetadata[] = [
"of the path, you may only move to adjacent numbers in the row below.", "of the path, you may only move to adjacent numbers in the row below.",
"The triangle is represented as a 2D array of numbers:\n\n", "The triangle is represented as a 2D array of numbers:\n\n",
`${triangle}\n\n`, `${triangle}\n\n`,
"Example: If you are given the following triangle:\n\n" + "[\n", "Example: If you are given the following triangle:\n\n[\n",
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[2],\n", "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[2],\n",
"&nbsp;&nbsp;&nbsp;&nbsp;[3,4],\n", "&nbsp;&nbsp;&nbsp;&nbsp;[3,4],\n",
"&nbsp;&nbsp;&nbsp;[6,5,7],\n", "&nbsp;&nbsp;&nbsp;[6,5,7],\n",

@ -94,9 +94,9 @@ export function v1APIBreak(): void {
if (s.length === 0) continue; if (s.length === 0) continue;
txt += `// Detected change ${change[0]}, reason: ${change[1]}` + "\n"; txt += `// Detected change ${change[0]}, reason: ${change[1]}\n`;
for (const fl of s) { for (const fl of s) {
txt += `${fl.file}:${fl.line}` + "\n"; txt += `${fl.file}:${fl.line}\n`;
} }
} }
} }

@ -59,7 +59,7 @@ async function main(version, versionNumber, changelog) {
join('\n').replaceAll('`', '\\`'); join('\n').replaceAll('`', '\\`');
modifiedConstants = modifiedConstants. modifiedConstants = modifiedConstants.
replace(/(^\s*?LatestUpdate:\s`\n)(.*)`,$/ms, `$1${paddedChangelog}\n` + "`,"); replace(/(^\s*?LatestUpdate:\s`\n)(.*)`,$/ms, `$1${paddedChangelog}\n\`,`);
} }
await fs.writeFile(appPaths.constants, modifiedConstants); await fs.writeFile(appPaths.constants, modifiedConstants);
console.log(`Modified ${appPaths.constants}`); console.log(`Modified ${appPaths.constants}`);