Adds Biome - Removes ESLint & Prettier (!383)

Boogidy, boogidy, boogidy. Let's go racing! 🏎️

Removes the over-complicated and super-slow setup we had with ESLint & Prettier in favour of Biome. The largest change with the formatting is moving from Allman braces to 1TBS braces. Other than that, it's *pretty much* the same. Ah, and that Biome runs formatting and linting on the entire project about x10 faster than the old system ran formatting on one file. Seriously, the guy who came up with that last solution should be fired. :runs:

I've kept all of the formatting and linting commands the same as before, with the main mamma-jamma being: `npm run format`, which applies formatting and linting changes to the entire project.

Formatting-on-save works (quickly!) by (1) ensuring that you're working within the VSC workspace (as you should be), and (2) have the recommended Biome VSC extension installed. The link to the Biome extension is in the README.

This limits our options on code formatting going forward; Biome, like prettier, is very opinionated with very few formatting options available. But I see this as a good thing. I'd rather spend my time arguing about which gun in Tarkov is the best, rather than coding brace styles...

...It's the TOZ, and it always will be. Don't DM me.

Co-authored-by: chomp <chomp@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT/Server/pulls/383
Co-authored-by: Refringe <me@refringe.com>
Co-committed-by: Refringe <me@refringe.com>

# Conflicts:
#	project/src/callbacks/GameCallbacks.ts
#	project/src/callbacks/MatchCallbacks.ts
#	project/src/routers/static/GameStaticRouter.ts

Resolved by Refringe
This commit is contained in:
Refringe 2024-07-22 21:15:57 +00:00
parent 6613d997cc
commit afda0d5255
No known key found for this signature in database
72 changed files with 109 additions and 346 deletions

View File

@ -33,9 +33,7 @@ There are a number of VSC extensions that we recommended for this project. VSC w
- [EditorConfig](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) - Editor Settings Synchronization
- [Vitest](https://marketplace.visualstudio.com/items?itemName=vitest.explorer) - Debugging Tests
- [SPT ID Highlighter](https://marketplace.visualstudio.com/items?itemName=refringe.spt-id-highlighter) - Converts IDs to Names
- [Format Code Action](https://marketplace.visualstudio.com/items?itemName=rohit-gohri.format-code-action) - Custom Format-on-save Actions
- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) - Code Formatting
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - Linting for Coding Issues & Naming Conventions
- [Biome](https://marketplace.visualstudio.com/items?itemName=biomejs.biome) - Automatic Formatting & Code Standards Linting
### Initial Setup
@ -54,13 +52,13 @@ To prepare the project for development you will need to:
The following commands are available after the initial setup. Run them with `npm run <command>`.
| Command | Description |
| -------------------- | ----------------------------------------------------------------------------- |
| -------------------- | ------------------------------------------------------------------------- |
| `check:circular` | Check for circular dependencies in the project. |
| `lint` | Check the project for coding standards and post-Prettier formatting issues. |
| `lint:fix` | Automatically fix coding standard issues and post-Prettier formatting issues. |
| `style` | Check the project for coding standards and post-Prettier formatting issues. |
| `style:fix` | Automatically fix coding standard issues and post-Prettier formatting issues. |
| `format` | Run Prettier and then ESLint Stylistic to fix code formatting. |
| `lint` | Check the project for coding standards issues using Biome. |
| `lint:fix` | Automatically fix coding standards issues using Biome. |
| `style` | Check the project for formatting issues using Biome. |
| `style:fix` | Automatically fix formatting issues using Biome. |
| `format` | Automatically fix all coding standards and formatting issues using Biome. |
| `test` | Run all tests. |
| `test:watch` | Run tests in watch mode. Tests will re-run when files are changed. |
| `test:coverage` | Run tests and generate a coverage report. |
@ -91,9 +89,9 @@ We're really excited that you're interested in contributing! Before submitting y
- **master**
The default branch used for the latest stable release. This branch is protected and typically is only merges with release branches.
- **3.9.0-DEV**
- **3.9.4-DEV**
Development for the next minor release of SPT. Minor releases target the latest version of EFT. Late in the minor release cycle the EFT version is frozen for stability to prepare for release. Larger changes to the project structure may be included in minor releases.
- **3.8.4-DEV**
- **3.10.0-DEV**
Development for the next hotfix release of SPT. Hotfix releases include bug fixes and minor features that do not effect the coding structure of the project. Special care is taken to not break server mod stability. These always target the same version of EFT as the last minor release.
### Pull Request Guidelines
@ -111,7 +109,7 @@ We're really excited that you're interested in contributing! Before submitting y
### Style Guide
We use a combination of Prettier and ESLint Stylistic to enforce a consistent code style. Please run `npm run format` before submitting your changes. This is made easier by using the recommended VSC extensions to automatically format your code whenever you save a file.
We use Biome to enforce a consistent code style. Please run `npm run format` before submitting any changes. This is made easier by opening the VSC workspace and installing the recommended VSC extensions; this will ensure that your code is automatically formatted whenever you save a file.
### Tests

View File

@ -1,15 +0,0 @@
# Exclude these folders from linting
node_modules/
out/
obj/
build/
types/
user/mods/
# Exclude these filetypes from linting
*.json
*.png
*.ico
*.jpg
*.txt
*.exe

View File

@ -1,118 +0,0 @@
{
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:@stylistic/recommended-extends",
"plugin:import/recommended",
"plugin:import/typescript",
"prettier"
],
"plugins": ["@typescript-eslint", "@stylistic", "import", "unused-imports", "switch-allman"],
"settings": {
"import/resolver": {
"typescript": {
"project": "tsconfig.json"
},
"node": {
"extensions": [".ts", ".mjs"]
}
}
},
"rules": {
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-dynamic-delete": "off",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-empty-interface": "off",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/explicit-module-boundary-types": [
"error",
{
"allowArgumentsExplicitlyTypedAsAny": true
}
],
"@typescript-eslint/naming-convention": [
"error",
{
"selector": "default",
"format": ["camelCase"],
"leadingUnderscore": "allow"
},
{
"selector": "typeLike",
"format": ["PascalCase"]
},
{
"selector": "objectLiteralProperty",
"format": ["PascalCase", "camelCase", "snake_case"],
"leadingUnderscore": "allow"
},
{
"selector": "typeProperty",
"format": ["PascalCase", "camelCase"],
"leadingUnderscore": "allow"
},
{
"selector": "enumMember",
"format": ["UPPER_CASE"]
},
{
"selector": "property",
"modifiers": ["readonly", "static"],
"format": ["UPPER_CASE"]
}
],
"@stylistic/indent": ["error", 4, { "MemberExpression": 1, "SwitchCase": 1 }],
"@stylistic/brace-style": ["error", "allman", { "allowSingleLine": false }],
"@stylistic/semi": ["error", "always"],
"@stylistic/quotes": ["error", "double", { "avoidEscape": true }],
"@stylistic/operator-linebreak": ["error", "before"],
"@stylistic/arrow-parens": ["error", "always"],
"@stylistic/max-len": [
"warn",
{
"code": 121, // +1 to prevent conflicts with Prettier rule.
"tabWidth": 4,
"ignoreComments": true,
"ignoreTrailingComments": true,
"ignoreUrls": true,
"ignoreStrings": true,
"ignoreTemplateLiterals": true,
"ignoreRegExpLiterals": true
}
],
"@stylistic/multiline-ternary": ["error", "always-multiline"],
"import/order": [
"error",
{
"groups": ["builtin", "external", "internal", "parent", "sibling", "index"],
"pathGroups": [
{
"pattern": "tsyringe",
"group": "builtin",
"position": "before"
}
],
"newlines-between": "never",
"alphabetize": {
"order": "asc",
"caseInsensitive": true
}
}
],
"unused-imports/no-unused-imports-ts": "error",
"switch-allman/case-allman": "error"
},
"overrides": [
{
"files": ["src/di/**/*.ts"],
"rules": {
"@typescript-eslint/no-extraneous-class": "off"
}
},
{
"files": ["src/loaders/**/*.ts"],
"rules": {
"@typescript-eslint/no-var-requires": "off"
}
}
]
}

View File

@ -1,10 +0,0 @@
**/.git
**/.pkg-cache
**/.vscode
**/build
**/node_modules
**/types
**/tests/__cache__
**/tests/__coverage__
.editorconfig
src/services/ModCompilerService.ts

View File

@ -1,3 +0,0 @@
{
"quoteProps": "consistent"
}

View File

@ -1,26 +1,25 @@
{
"folders": [
{
"path": ".",
},
"path": "."
}
],
"settings": {
"window.title": "SPT Server",
"editor.formatOnSave": false, // We use an extension to format on save.
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": ["source.formatDocument", "source.fixAll.eslint"],
"eslint.debug": false,
"eslint.experimental.useFlatConfig": false,
"editor.formatOnSave": true,
"editor.defaultFormatter": "biomejs.biome",
"editor.codeActionsOnSave": {
"source.organizeImports.biome": "explicit",
"quickfix.biome": "explicit"
}
},
"extensions": {
"recommendations": [
"EditorConfig.EditorConfig", // EditorConfig file format support.
"EditorConfig.EditorConfig", // EditorConfig file support.
"vitest.explorer", // ViTest test runner.
"refringe.spt-id-highlighter", // Highly SPT IDs.
"rohit-gohri.format-code-action", // Custom format on save actions.
"esbenp.prettier-vscode", // Prettier code formatter.
"dbaeumer.vscode-eslint", // ESLint code linter and formatter.
],
"refringe.spt-id-highlighter", // SPT ID information of hover.
"biomejs.biome" // Biome code formatting, linting, and refactoring.
]
},
"launch": {
"version": "0.2.0",
@ -35,7 +34,7 @@
"runtimeArgs": ["run", "run:debug"],
"outFiles": ["!**/node_modules/**"],
"cwd": "${workspaceFolder}",
"outputCapture": "std",
"outputCapture": "std"
},
{
"name": "Run Vitest Tests",
@ -45,8 +44,8 @@
"request": "launch",
"runtimeArgs": ["run", "test"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
},
],
},
"internalConsoleOptions": "neverOpen"
}
]
}
}

61
project/biome.jsonc Normal file
View File

@ -0,0 +1,61 @@
{
"$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
"organizeImports": {
"enabled": true
},
"files": {
"ignore": [
".editorconfig",
".git/*",
".pkg-cache/*",
".vscode/*",
"build/*",
"node_modules/*",
"obj/*",
"out/*",
"src/services/ModCompilerService.ts",
"tests/__cache__/*",
"tests/__coverage__/*",
"types/*",
"user/mods/*"
]
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"style": {
"useImportType": "off"
}
}
},
"formatter": {
"enabled": true,
"formatWithErrors": false,
"ignore": [],
"attributePosition": "auto",
"indentStyle": "space",
"indentWidth": 4,
"lineWidth": 120,
"lineEnding": "lf"
},
"javascript": {
"formatter": {
"arrowParentheses": "always",
"bracketSameLine": false,
"bracketSpacing": true,
"jsxQuoteStyle": "double",
"quoteProperties": "asNeeded",
"semicolons": "always",
"trailingCommas": "all"
},
"parser": {
"unsafeParameterDecoratorsEnabled": true
}
},
"json": {
"formatter": {
"trailingCommas": "none"
}
}
}

View File

@ -9,7 +9,6 @@ import download from "gulp-download";
import { exec } from "gulp-execa";
import rename from "gulp-rename";
import minimist from "minimist";
// eslint-disable-next-line @typescript-eslint/naming-convention
import * as ResEdit from "resedit";
import manifest from "./package.json" assert { type: "json" };

View File

@ -12,11 +12,11 @@
},
"scripts": {
"check:circular": "madge --circular --ts-config tsconfig.json --extensions ts ./src/",
"lint": "eslint src",
"lint:fix": "eslint src --fix",
"style": "prettier src --check",
"style:fix": "prettier src --write",
"format": "npm run style:fix && npm run lint:fix",
"lint": "npx @biomejs/biome lint ./",
"lint:fix": "npx @biomejs/biome lint --write ./",
"style": "npx @biomejs/biome format ./",
"style:fix": "npx @biomejs/biome format --write ./",
"format": "npx @biomejs/biome check --write ./",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
@ -53,9 +53,8 @@
"ws": "~8.17"
},
"devDependencies": {
"@eslint/js": "~9.2",
"@biomejs/biome": "1.8.3",
"@pnpm/exe": "8.15.4",
"@stylistic/eslint-plugin": "~1.8",
"@swc/cli": "~0.3",
"@swc/core": "~1.4",
"@types/i18n": "~0.13",
@ -63,20 +62,11 @@
"@types/proper-lockfile": "~4.1",
"@types/semver": "~7.5",
"@types/ws": "~8.5",
"@typescript-eslint/eslint-plugin": "~7.11",
"@typescript-eslint/parser": "~7.11",
"@vitest/coverage-istanbul": "~1.6",
"@vitest/ui": "~1.6",
"@yao-pkg/pkg": "5.11.5",
"@yao-pkg/pkg-fetch": "3.5.9",
"cross-env": "~7.0",
"eslint": "~8.57",
"eslint-config-prettier": "~9.1",
"eslint-import-resolver-typescript": "~3.6",
"eslint-plugin-import": "~2.29",
"eslint-plugin-prettier": "~5.1",
"eslint-plugin-switch-allman": "~1.0",
"eslint-plugin-unused-imports": "~3.2",
"fs-extra": "~11.2",
"gulp": "~4.0",
"gulp-decompress": "~3.0",
@ -85,14 +75,11 @@
"gulp-rename": "~2.0",
"madge": "~6.1",
"minimist": "~1.2",
"prettier": "~3.3",
"resedit": "~2.0",
"ts-node-dev": "~2.0",
"tsconfig-paths": "~4.2",
"tslint-config-prettier": "~1.18",
"typedoc": "~0.25",
"typemoq": "~2.1",
"typescript-eslint": "~7.11",
"vitest": "~1.6"
},
"targets": {

View File

@ -20,7 +20,6 @@ export class AchievementCallbacks
/**
* Handle client/achievement/list
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getAchievements(
url: string,
info: IEmptyRequestData,
@ -33,7 +32,6 @@ export class AchievementCallbacks
/**
* Handle client/achievement/statistic
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public statistic(
url: string,
info: IEmptyRequestData,

View File

@ -21,7 +21,6 @@ export class BuildsCallbacks
/**
* Handle client/builds/list
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getBuilds(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IUserBuilds>
{
return this.httpResponse.getBody(this.buildController.getUserBuilds(sessionID));
@ -30,7 +29,6 @@ export class BuildsCallbacks
/**
* Handle client/builds/magazine/save
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public createMagazineTemplate(url: string, request: ISetMagazineRequest, sessionID: string): INullResponseData
{
this.buildController.createMagazineTemplate(sessionID, request);
@ -41,7 +39,6 @@ export class BuildsCallbacks
/**
* Handle client/builds/weapon/save
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public setWeapon(url: string, info: IPresetBuildActionRequestData, sessionID: string): INullResponseData
{
this.buildController.saveWeaponBuild(sessionID, info);
@ -52,7 +49,6 @@ export class BuildsCallbacks
/**
* Handle client/builds/equipment/save
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public setEquipment(url: string, info: IPresetBuildActionRequestData, sessionID: string): INullResponseData
{
this.buildController.saveEquipmentBuild(sessionID, info);
@ -63,7 +59,6 @@ export class BuildsCallbacks
/**
* Handle client/builds/delete
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public deleteBuild(url: string, info: IRemoveBuildRequestData, sessionID: string): INullResponseData
{
this.buildController.removeBuild(sessionID, info);

View File

@ -222,11 +222,9 @@ export class DataCallbacks
supplyNextTime: this.traderHelper.getNextUpdateTimestamp(traderId),
prices: handbookPrices,
currencyCourses: {
/* eslint-disable @typescript-eslint/naming-convention */
"5449016a4bdc2d6f028b456f": handbookPrices[Money.ROUBLES],
"569668774bdc2da2298b4568": handbookPrices[Money.EUROS],
"5696686a4bdc2da3298b456a": handbookPrices[Money.DOLLARS],
/* eslint-enable @typescript-eslint/naming-convention */
},
};

View File

@ -40,7 +40,6 @@ import { TimeUtil } from "@spt/utils/TimeUtil";
@injectable()
export class DialogueCallbacks implements OnUpdate
{
// eslint-disable-next-line @typescript-eslint/no-unused-vars
constructor(
@inject("HashUtil") protected hashUtil: HashUtil,
@inject("TimeUtil") protected timeUtil: TimeUtil,
@ -66,7 +65,6 @@ export class DialogueCallbacks implements OnUpdate
* Handle client/chatServer/list
* @returns IChatServer[]
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getChatServerList(
url: string,
info: IGetChatServerListRequestData,
@ -171,7 +169,6 @@ export class DialogueCallbacks implements OnUpdate
}
/** Handle client/friend/request/list/outbox */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public listOutbox(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any[]>
{
return this.httpResponse.getBody([]);
@ -180,7 +177,6 @@ export class DialogueCallbacks implements OnUpdate
/**
* Handle client/friend/request/list/inbox
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public listInbox(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any[]>
{
return this.httpResponse.getBody([]);
@ -189,7 +185,6 @@ export class DialogueCallbacks implements OnUpdate
/**
* Handle client/friend/request/send
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public sendFriendRequest(
url: string,
request: IFriendRequestData,
@ -202,7 +197,6 @@ export class DialogueCallbacks implements OnUpdate
/**
* Handle client/friend/request/accept-all
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public acceptAllFriendRequests(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
@ -211,7 +205,6 @@ export class DialogueCallbacks implements OnUpdate
/**
* Handle client/friend/request/accept
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public acceptFriendRequest(
url: string,
request: IAcceptFriendRequestData,
@ -224,7 +217,6 @@ export class DialogueCallbacks implements OnUpdate
/**
* Handle client/friend/request/decline
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public declineFriendRequest(
url: string,
request: IDeclineFriendRequestData,
@ -237,7 +229,6 @@ export class DialogueCallbacks implements OnUpdate
/**
* Handle client/friend/request/cancel
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public cancelFriendRequest(
url: string,
request: ICancelFriendRequestData,
@ -248,33 +239,28 @@ export class DialogueCallbacks implements OnUpdate
}
/** Handle client/friend/delete */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public deleteFriend(url: string, request: IDeleteFriendRequest, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
}
/** Handle client/friend/ignore/set */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public ignoreFriend(url: string, request: IUIDRequestData, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
}
/** Handle client/friend/ignore/remove */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public unIgnoreFriend(url: string, request: IUIDRequestData, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public clearMail(url: string, request: IClearMailMessageRequest, sessionID: string): IGetBodyResponseData<any[]>
{
return this.httpResponse.emptyArrayResponse();
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public removeMail(url: string, request: IRemoveMailMessageRequest, sessionID: string): IGetBodyResponseData<any[]>
{
return this.httpResponse.emptyArrayResponse();
@ -308,7 +294,6 @@ export class DialogueCallbacks implements OnUpdate
throw new Error("Method not implemented.");
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public async onUpdate(timeSinceLastRun: number): Promise<boolean>
{
this.dialogueController.update();

View File

@ -172,7 +172,6 @@ export class GameCallbacks implements OnLoad
* Handle singleplayer/settings/getRaidTime
* @returns string
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse
{
return this.httpResponse.noBody(this.gameController.getRaidTime(sessionID, request));

View File

@ -33,21 +33,18 @@ export class MatchCallbacks
{}
/** Handle client/match/updatePing */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public updatePing(url: string, info: IUpdatePingRequestData, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
}
// Handle client/match/exit
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public exitMatch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
}
/** Handle client/match/group/exit_from_menu */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public exitToMenu(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
@ -62,20 +59,17 @@ export class MatchCallbacks
return this.httpResponse.getBody({ squad: [] });
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public startGroupSearch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public stopGroupSearch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData
{
return this.httpResponse.nullResponse();
}
/** Handle client/match/group/invite/send */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public sendGroupInvite(
url: string,
info: IMatchGroupInviteSendRequest,
@ -86,7 +80,6 @@ export class MatchCallbacks
}
/** Handle client/match/group/invite/accept */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public acceptGroupInvite(
url: string,
info: IRequestIdRequest,
@ -94,28 +87,24 @@ export class MatchCallbacks
): IGetBodyResponseData<IGroupCharacter[]>
{
const result = [];
// eslint-disable-next-line strict-null-checks/all
result.push({});
return this.httpResponse.getBody(result);
}
/** Handle client/match/group/invite/decline */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public declineGroupInvite(url: string, info: IRequestIdRequest, sessionId: string): IGetBodyResponseData<boolean>
{
return this.httpResponse.getBody(true);
}
/** Handle client/match/group/invite/cancel */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public cancelGroupInvite(url: string, info: IRequestIdRequest, sessionID: string): IGetBodyResponseData<boolean>
{
return this.httpResponse.getBody(true);
}
/** Handle client/match/group/transfer */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public transferGroup(
url: string,
info: IMatchGroupTransferRequest,
@ -126,7 +115,6 @@ export class MatchCallbacks
}
/** Handle client/match/group/invite/cancel-all */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public cancelAllGroupInvite(
url: string,
info: IEmptyRequestData,
@ -137,14 +125,12 @@ export class MatchCallbacks
}
/** @deprecated - not called on raid start/end or game start/exit */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public putMetrics(url: string, info: IPutMetricsRequestData, sessionId: string): INullResponseData
{
return this.httpResponse.nullResponse();
}
// Handle client/match/available
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData<boolean>
{
const output = this.matchController.getEnabled();
@ -163,7 +149,6 @@ export class MatchCallbacks
}
/** Handle client/getMetricsConfig */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getMetrics(url: string, info: any, sessionID: string): IGetBodyResponseData<string>
{
return this.httpResponse.getBody(this.jsonUtil.serialize(this.databaseService.getMatch().metrics));
@ -174,7 +159,6 @@ export class MatchCallbacks
* Handle client/match/group/status
* @returns
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getGroupStatus(
url: string,
info: IMatchGroupStatusRequest,
@ -185,7 +169,6 @@ export class MatchCallbacks
}
/** Handle client/match/group/delete */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public deleteGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<boolean>
{
this.matchController.deleteGroup(info);
@ -193,14 +176,12 @@ export class MatchCallbacks
}
// Handle client/match/group/leave
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<boolean>
{
return this.httpResponse.getBody(true);
}
/** Handle client/match/group/player/remove */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public removePlayerFromGroup(
url: string,
info: IMatchGroupPlayerRemoveRequest,

View File

@ -26,7 +26,6 @@ export class NotifierCallbacks
* until we actually have something to send because otherwise we'd spam the client
* and the client would abort the connection due to spam.
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public sendNotification(sessionID: string, req: any, resp: any, data: any): void
{
const splittedUrl = req.url.split("/");
@ -45,7 +44,6 @@ export class NotifierCallbacks
/** Handle push/notifier/get */
/** Handle push/notifier/getwebsocket */
// TODO: removed from client?
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getNotifier(url: string, info: any, sessionID: string): IGetBodyResponseData<any[]>
{
return this.httpResponse.emptyArrayResponse();
@ -65,7 +63,6 @@ export class NotifierCallbacks
* Handle client/game/profile/select
* @returns ISelectProfileResponse
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public selectProfile(
url: string,
info: IUIDRequestData,
@ -75,7 +72,6 @@ export class NotifierCallbacks
return this.httpResponse.getBody({ status: "ok" });
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public notify(url: string, info: any, sessionID: string): string
{
return "NOTIFY";

View File

@ -70,7 +70,6 @@ export class DialogueController
* Handle client/friend/list
* @returns IGetFriendListDataResponse
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getFriendList(sessionID: string): IGetFriendListDataResponse
{
// Force a fake friend called SPT into friend list
@ -379,7 +378,6 @@ export class DialogueController
}
/** client/mail/msg/send */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public sendMessage(sessionId: string, request: ISendMessageRequest): string
{
this.mailSendService.sendPlayerMessageToNpc(sessionId, request.dialogId, request.text);

View File

@ -172,13 +172,10 @@ export class HealthController
const payMoneyRequest: IProcessBuyTradeRequestData = {
Action: healthTreatmentRequest.Action,
tid: Traders.THERAPIST,
// eslint-disable-next-line @typescript-eslint/naming-convention
scheme_items: healthTreatmentRequest.items,
type: "",
// eslint-disable-next-line @typescript-eslint/naming-convention
item_id: "",
count: 0,
// eslint-disable-next-line @typescript-eslint/naming-convention
scheme_id: 0,
};
@ -230,7 +227,6 @@ export class HealthController
* @param info Request data
* @param sessionID
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public applyWorkoutChanges(pmcData: IPmcData, info: IWorkoutData, sessionId: string): void
{
// https://dev.sp-tarkov.com/SPT/Server/issues/2674

View File

@ -1150,7 +1150,6 @@ export class HideoutController
* @param sessionId Session id
* @returns IQteData array
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getQteList(sessionId: string): IQteData[]
{
return this.databaseService.getHideout().qte;
@ -1163,7 +1162,6 @@ export class HideoutController
* @param pmcData Profile to adjust
* @param request QTE result object
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public handleQTEEventOutcome(
sessionId: string,
pmcData: IPmcData,

View File

@ -75,7 +75,6 @@ export class MatchController
}
/** Handle match/group/start_game */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public joinMatch(info: IMatchGroupStartGameRequest, sessionId: string): IProfileStatusResponse
{
const output: IProfileStatusResponse = { maxPveCountExceeded: false, profiles: [] };
@ -93,7 +92,6 @@ export class MatchController
raidMode: "Online",
mode: "deathmatch",
shortId: undefined,
// eslint-disable-next-line @typescript-eslint/naming-convention
additional_info: undefined,
});
@ -101,7 +99,6 @@ export class MatchController
}
/** Handle client/match/group/status */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getGroupStatus(info: IMatchGroupStatusRequest): IMatchGroupStatusResponse
{
return { players: [], maxPveCountExceeded: false };

View File

@ -665,7 +665,6 @@ export class QuestController
startTime: 0,
status: QuestStatus.AvailableAfter,
statusTimers: {
// eslint-disable-next-line @typescript-eslint/naming-convention
9: this.timeUtil.getTimestamp(),
},
availableAfter: availableAfterTimestamp,

View File

@ -212,12 +212,9 @@ export class TradeController
Action: "TradingConfirm",
type: "buy_from_ragfair",
tid: "ragfair",
// eslint-disable-next-line @typescript-eslint/naming-convention
item_id: fleaOffer._id, // Store ragfair offerId in buyRequestData.item_id
count: requestOffer.count,
// eslint-disable-next-line @typescript-eslint/naming-convention
scheme_id: 0,
// eslint-disable-next-line @typescript-eslint/naming-convention
scheme_items: requestOffer.items,
};

View File

@ -366,7 +366,6 @@ export class BotLootGenerator
{
// surv12
this.addLootFromPool(
// eslint-disable-next-line @typescript-eslint/naming-convention
{ "5d02797c86f774203f38e30a": 1 },
[EquipmentSlots.SECURED_CONTAINER],
1,
@ -379,7 +378,6 @@ export class BotLootGenerator
// AFAK
this.addLootFromPool(
// eslint-disable-next-line @typescript-eslint/naming-convention
{ "60098ad7c2240c0fe85c570a": 1 },
[EquipmentSlots.SECURED_CONTAINER],
10,

View File

@ -478,7 +478,6 @@ export class BotWeaponGenerator
// Define min/max of how many grenades bot will have
const ubglMinMax: GenerationData = {
// eslint-disable-next-line @typescript-eslint/naming-convention
weights: { 1: 1, 2: 1 },
whitelist: {},
};

View File

@ -29,7 +29,6 @@ export class ExternalInventoryMagGen implements IInventoryMagGen
return 99;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
canHandleInventoryMagGen(inventoryMagGen: InventoryMagGen): boolean
{
return true; // Fallback, if code reaches here it means no other implementation can handle this type of magazine

View File

@ -56,7 +56,6 @@ export class HttpServerHelper
public sendTextJson(resp: any, output: any): void
{
// eslint-disable-next-line @typescript-eslint/naming-convention
resp.writeHead(200, "OK", { "Content-Type": this.mime.json });
resp.end(output);
}

View File

@ -1266,7 +1266,6 @@ export class InventoryHelper
}
}
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace InventoryHelper
{
export interface InventoryItemHash

View File

@ -1922,7 +1922,6 @@ export class ItemHelper
}
}
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace ItemHelper
{
export interface ItemSize

View File

@ -52,7 +52,6 @@ export class PostDBModLoader implements OnLoad
this.preSptModLoader.getImportedModDetails()[modName].main
}`;
const modpath = `${process.cwd()}/${filepath}`;
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mod = require(modpath);
if (this.modTypeCheck.isPostDBLoadAsync(mod.mod))

View File

@ -44,7 +44,6 @@ export class PostSptModLoader implements IModLoader
this.preSptModLoader.getImportedModDetails()[modName].main
}`;
const modpath = `${process.cwd()}/${filepath}`;
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mod = require(modpath);
if (this.modTypeCheck.isPostSptLoadAsync(mod.mod))

View File

@ -382,7 +382,6 @@ export class PreSptModLoader implements IModLoader
// Import class
const modFilePath = `${process.cwd()}/${filepath}`;
// eslint-disable-next-line @typescript-eslint/no-var-requires
const requiredMod = require(modFilePath);
if (!this.modTypeCheck.isPostV3Compatible(requiredMod.mod))

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { Ixyz } from "@spt/models/eft/common/Ixyz";
import { Item } from "@spt/models/eft/common/tables/IItem";

View File

@ -1,7 +1,6 @@
import { MinMax } from "@spt/models/common/MinMax";
import { Ixyz } from "@spt/models/eft/common/Ixyz";
/* eslint-disable @typescript-eslint/naming-convention */
export interface ILocationBase
{
AccessKeys: string[]

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
export interface IBotCore
{
SAVAGE_KILL_DIST: number

View File

@ -49,7 +49,6 @@ export interface EquipmentChances
TacticalVest: number
}
/* eslint-disable @typescript-eslint/naming-convention */
export interface ModsChances
{
mod_charge: number

View File

@ -3,7 +3,6 @@ import { Dialogue, IUserBuilds } from "@spt/models/eft/profile/ISptProfile";
export interface IProfileTemplates
{
/* eslint-disable @typescript-eslint/naming-convention */
"Standard": IProfileSides
"Left Behind": IProfileSides
"Prepare To Escape": IProfileSides
@ -13,7 +12,6 @@ export interface IProfileTemplates
"SPT Developer": IProfileSides
"SPT Easy start": IProfileSides
"SPT Zero to hero": IProfileSides
/* eslint-enable @typescript-eslint/naming-convention */
}
export interface IProfileSides

View File

@ -295,9 +295,7 @@ export interface Props
foodUseTime?: number
foodEffectType?: string
StimulatorBuffs?: string
// eslint-disable-next-line @typescript-eslint/naming-convention
effects_health?: IHealthEffect[] | Record<string, Record<string, number>>
// eslint-disable-next-line @typescript-eslint/naming-convention
effects_damage?: Record<string, IEffectDamageProps>
MaximumNumberOfUsage?: number
knifeHitDelay?: number
@ -473,7 +471,6 @@ export interface Slot
_id: string
_parent: string
_props: SlotProps
// eslint-disable-next-line @typescript-eslint/naming-convention
_max_count?: number
_required?: boolean
_mergeSlotWithChildren?: boolean
@ -502,7 +499,6 @@ export interface StackSlot
_name?: string
_id: string
_parent: string
// eslint-disable-next-line @typescript-eslint/naming-convention
_max_count: number
_props: StackSlotProps
_proto: string

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { Item } from "@spt/models/eft/common/tables/IItem";
import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide";
import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel";

View File

@ -1,5 +1,4 @@
export interface IDeleteFriendRequest
{
// eslint-disable-next-line @typescript-eslint/naming-convention
friend_id: string
}

View File

@ -8,7 +8,6 @@ export interface IGameConfigResponse
activeProfileId: string
backend: Backend
useProtobuf: boolean
// eslint-disable-next-line @typescript-eslint/naming-convention
utc_time: number
/** Total in game time */
totalInGame: number

View File

@ -1,6 +1,5 @@
export interface IGameKeepAliveResponse
{
msg: string
// eslint-disable-next-line @typescript-eslint/naming-convention
utc_time: number
}

View File

@ -1,5 +1,4 @@
export interface IGameStartResponse
{
// eslint-disable-next-line @typescript-eslint/naming-convention
utc_time: number
}

View File

@ -9,6 +9,5 @@ export interface AddItem
{
count: number
sptIsPreset?: boolean
// eslint-disable-next-line @typescript-eslint/naming-convention
item_id: string
}

View File

@ -11,6 +11,5 @@ export interface ISessionStatus
raidMode?: string
mode?: string
shortId?: string
// eslint-disable-next-line @typescript-eslint/naming-convention
additional_info?: any[]
}

View File

@ -1,7 +1,6 @@
export interface INotifierChannel
{
server: string
// eslint-disable-next-line @typescript-eslint/naming-convention
channel_id: string
url: string
notifierServer: string

View File

@ -17,6 +17,5 @@ export interface ProfileData
raidMode?: string
mode?: string
shortId?: string
// eslint-disable-next-line @typescript-eslint/naming-convention
additional_info?: any[]
}

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { IProcessBaseTradeRequestData } from "@spt/models/eft/trade/IProcessBaseTradeRequestData";
export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestData

View File

@ -13,6 +13,5 @@ export interface Item
{
id: string
count: number
// eslint-disable-next-line @typescript-eslint/naming-convention
scheme_id: number
}

View File

@ -15,14 +15,10 @@ export interface IWeather
pressure: number
temp: number
fog: number
// eslint-disable-next-line @typescript-eslint/naming-convention
rain_intensity: number
rain: number
// eslint-disable-next-line @typescript-eslint/naming-convention
wind_gustiness: number
// eslint-disable-next-line @typescript-eslint/naming-convention
wind_direction: WindDirection
// eslint-disable-next-line @typescript-eslint/naming-convention
wind_speed: number
cloud: number
time: string

View File

@ -15,6 +15,5 @@ export interface IWsUserConfirmed extends IWsNotificationEvent
raidMode: RaidMode
mode: string
shortId: string
// eslint-disable-next-line @typescript-eslint/naming-convention
additional_info: any[]
}

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
export enum QuestStatus
{
Locked = 0,

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { IncomingMessage, ServerResponse } from "node:http";
import { injectable } from "tsyringe";
import { HttpMethods } from "@spt/servers/http/HttpMethods";

View File

@ -92,9 +92,7 @@ export interface LootMultiplier
{
bigmap: number
develop: number
// eslint-disable-next-line @typescript-eslint/naming-convention
factory4_day: number
// eslint-disable-next-line @typescript-eslint/naming-convention
factory4_night: number
interchange: number
laboratory: number

View File

@ -4,8 +4,6 @@ import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader";
export interface ICreateFenceAssortsResult
{
sptItems: Item[][]
// eslint-disable-next-line @typescript-eslint/naming-convention
barter_scheme: Record<string, IBarterScheme[][]>
// eslint-disable-next-line @typescript-eslint/naming-convention
loyal_level_items: Record<string, number>
}

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { ILocation } from "@spt/models/eft/common/ILocation";
import { ILocationsBase } from "@spt/models/eft/common/tables/ILocationsBase";

View File

@ -13,7 +13,6 @@ export class AchievementStaticRouter extends StaticRouter
super([
new RouteAction(
"/client/achievement/list",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,
@ -27,7 +26,6 @@ export class AchievementStaticRouter extends StaticRouter
new RouteAction(
"/client/achievement/statistic",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,

View File

@ -13,7 +13,6 @@ export class BuildsStaticRouter extends StaticRouter
super([
new RouteAction(
"/client/builds/list",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,
@ -26,7 +25,6 @@ export class BuildsStaticRouter extends StaticRouter
),
new RouteAction(
"/client/builds/magazine/save",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (url: string, info: any, sessionID: string, output: string): Promise<INullResponseData> =>
{
return this.buildsCallbacks.createMagazineTemplate(url, info, sessionID);
@ -34,7 +32,6 @@ export class BuildsStaticRouter extends StaticRouter
),
new RouteAction(
"/client/builds/weapon/save",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (url: string, info: any, sessionID: string, output: string): Promise<INullResponseData> =>
{
return this.buildsCallbacks.setWeapon(url, info, sessionID);
@ -42,7 +39,6 @@ export class BuildsStaticRouter extends StaticRouter
),
new RouteAction(
"/client/builds/equipment/save",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (url: string, info: any, sessionID: string, output: string): Promise<INullResponseData> =>
{
return this.buildsCallbacks.setEquipment(url, info, sessionID);
@ -50,7 +46,6 @@ export class BuildsStaticRouter extends StaticRouter
),
new RouteAction(
"/client/builds/delete",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (url: string, info: any, sessionID: string, output: string): Promise<INullResponseData> =>
{
return this.buildsCallbacks.deleteBuild(url, info, sessionID);

View File

@ -151,7 +151,6 @@ export class GameStaticRouter extends StaticRouter
),
new RouteAction(
"/singleplayer/settings/getRaidTime",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (url: string, info: any, sessionID: string, output: string): Promise<IGetRaidTimeResponse> =>
{
return this.gameCallbacks.getRaidTime(url, info, sessionID);

View File

@ -265,7 +265,6 @@ export class MatchStaticRouter extends StaticRouter
),
new RouteAction(
"/client/raid/configuration-by-profile",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (url: string, info: any, sessionID: string, output: string): Promise<INullResponseData> =>
{
return this.matchCallbacks.getConfigurationByProfile(url, info, sessionID);

View File

@ -108,7 +108,6 @@ export class ProfileStaticRouter extends StaticRouter
),
new RouteAction(
"/client/profile/view",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,

View File

@ -15,7 +15,6 @@ export class RagfairStaticRouter extends StaticRouter
super([
new RouteAction(
"/client/ragfair/search",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,
@ -28,7 +27,6 @@ export class RagfairStaticRouter extends StaticRouter
),
new RouteAction(
"/client/ragfair/find",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,
@ -41,7 +39,6 @@ export class RagfairStaticRouter extends StaticRouter
),
new RouteAction(
"/client/ragfair/itemMarketPrice",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,
@ -54,7 +51,6 @@ export class RagfairStaticRouter extends StaticRouter
),
new RouteAction(
"/client/ragfair/offerfees",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (url: string, info: any, sessionID: string, output: string): Promise<INullResponseData> =>
{
return this.ragfairCallbacks.storePlayerOfferTaxAmount(url, info, sessionID);
@ -62,7 +58,6 @@ export class RagfairStaticRouter extends StaticRouter
),
new RouteAction(
"/client/reports/ragfair/send",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (url: string, info: any, sessionID: string, output: string): Promise<INullResponseData> =>
{
return this.ragfairCallbacks.sendReport(url, info, sessionID);
@ -70,7 +65,6 @@ export class RagfairStaticRouter extends StaticRouter
),
new RouteAction(
"/client/items/prices",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,
@ -83,7 +77,6 @@ export class RagfairStaticRouter extends StaticRouter
),
new RouteAction(
"/client/ragfair/offer/findbyid",
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async (
url: string,
info: any,

View File

@ -166,7 +166,6 @@ export class SptHttpListener implements IHttpListener
public sendJson(resp: ServerResponse, output: string, sessionID: string): void
{
// eslint-disable-next-line @typescript-eslint/naming-convention
resp.writeHead(200, "OK", { "Content-Type": "application/json", "Set-Cookie": `PHPSESSID=${sessionID}` });
resp.end(output);
}

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import fs from "node:fs";
import path from "node:path";
import { inject, injectable } from "tsyringe";

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
/**
* An object containing item name overrides for use with ItemTplGenerator

View File

@ -17,7 +17,6 @@ export class AsyncQueue implements IAsyncQueue
// Add to the queue
this.commandsQueue.push(command);
// eslint-disable-next-line no-constant-condition
while (this.commandsQueue[0].uuid !== command.uuid)
{
await new Promise<void>((resolve) =>

View File

@ -3,8 +3,6 @@ import { Queue } from "@spt/utils/collections/queue/Queue";
import { JsonUtil } from "@spt/utils/JsonUtil";
import { VFS } from "@spt/utils/VFS";
/* eslint-disable @typescript-eslint/no-empty-function */
/* eslint-disable @typescript-eslint/brace-style */
@injectable()
export class ImporterUtil
{

View File

@ -2,7 +2,6 @@ import crypto from "node:crypto";
import fs from "node:fs";
import { promisify } from "node:util";
import winston, { createLogger, format, transports, addColors } from "winston";
// eslint-disable-next-line @typescript-eslint/naming-convention
import DailyRotateFile from "winston-daily-rotate-file";
import { Daum } from "@spt/models/eft/itemEvent/IItemEventRouterRequest";
import { LogBackgroundColor } from "@spt/models/spt/logging/LogBackgroundColor";

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import "reflect-metadata";
import { container } from "tsyringe";

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import "reflect-metadata";
import { container } from "tsyringe";

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import "reflect-metadata";
import { container } from "tsyringe";

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import "reflect-metadata";
import { container } from "tsyringe";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";

View File

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/naming-convention */
import "reflect-metadata";
import { container } from "tsyringe";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";