mirror of
				https://github.com/pagefaultgames/pokerogue.git
				synced 2025-10-31 16:35:52 +01:00 
			
		
		
		
	* [Dev] Enable biome parsing of `pokemon.ts` * Apply unsafe fixes * Add + apply rule disallowing the use of the `integer` type alias * Fix typo in comment; remove unnecessary `!!` * Re-apply Biome after merge * Re-apply Biome "unsafe" fixes after merge * Fix import * Add comment to `getFusionIconAtlasKey` too
		
			
				
	
	
		
			130 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| {
 | |
|   "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
 | |
|   "vcs": {
 | |
|     "enabled": false,
 | |
|     "clientKind": "git",
 | |
|     "useIgnoreFile": true,
 | |
|     "defaultBranch": "beta"
 | |
|   },
 | |
|   "formatter": {
 | |
|     "enabled": true,
 | |
|     "useEditorconfig": true,
 | |
|     "indentStyle": "space",
 | |
|     "ignore": ["src/enums/*", "src/data/balance/*"],
 | |
|     "lineWidth": 120
 | |
|   },
 | |
|   "files": {
 | |
|     "ignoreUnknown": true,
 | |
|     // Adding folders to the ignore list is GREAT for performance because it prevents biome from descending into them
 | |
|     // and having to verify whether each individual file is ignored
 | |
|     "ignore": [
 | |
|       "**/*.d.ts",
 | |
|       "dist/*",
 | |
|       "build/*",
 | |
|       "coverage/*",
 | |
|       "public/*",
 | |
|       ".github/*",
 | |
|       "node_modules/*",
 | |
|       ".vscode/*",
 | |
|       "*.css", // TODO?
 | |
|       "*.html", // TODO?
 | |
|       "src/overrides.ts",
 | |
|       // TODO: these files are too big and complex, ignore them until their respective refactors
 | |
|       "src/data/moves/move.ts",
 | |
|       "src/data/abilities/ability.ts",
 | |
| 
 | |
|       // this file is just too big:
 | |
|       "src/data/balance/tms.ts"
 | |
|     ]
 | |
|   },
 | |
| 
 | |
|   // While it'd be nice to enable consistent sorting, enabling this causes issues due to circular import resolution order
 | |
|   // TODO: Remove if we ever get down to 0 circular imports
 | |
|   "organizeImports": { "enabled": false },
 | |
|   "linter": {
 | |
|     "ignore": [
 | |
|       "src/phases/move-effect-phase.ts" // TODO: unignore after move-effect-phase refactor
 | |
|     ],
 | |
|     "enabled": true,
 | |
|     "rules": {
 | |
|       "recommended": true,
 | |
|       "correctness": {
 | |
|         "noUndeclaredVariables": "off",
 | |
|         "noUnusedVariables": "error",
 | |
|         "noSwitchDeclarations": "warn", // TODO: refactor and make this an error
 | |
|         "noVoidTypeReturn": "warn", // TODO: Refactor and make this an error
 | |
|         "noUnusedImports": "error"
 | |
|       },
 | |
|       "style": {
 | |
|         "noVar": "error",
 | |
|         "useEnumInitializers": "off", // large enums like Moves/Species would make this cumbersome
 | |
|         "useBlockStatements": "error",
 | |
|         "useConst": "error",
 | |
|         "useImportType": "error",
 | |
|         "noNonNullAssertion": "off", // TODO: Turn this on ASAP and fix all non-null assertions in non-test files
 | |
|         "noParameterAssign": "off",
 | |
|         "useExponentiationOperator": "off", // Too typo-prone and easy to mixup with standard multiplication (* vs **)
 | |
|         "useDefaultParameterLast": "off", // TODO: Fix spots in the codebase where this flag would be triggered, and then enable
 | |
|         "useSingleVarDeclarator": "off",
 | |
|         "useNodejsImportProtocol": "off",
 | |
|         "useTemplate": "off", // string concatenation is faster: https://stackoverflow.com/questions/29055518/are-es6-template-literals-faster-than-string-concatenation
 | |
|         "noNamespaceImport": "error"
 | |
|       },
 | |
|       "suspicious": {
 | |
|         "noDoubleEquals": "error",
 | |
|         // While this would be a nice rule to enable, the current structure of the codebase makes this infeasible
 | |
|         // due to being used for move/ability `args` params and save data-related code.
 | |
|         // This can likely be enabled for all non-utils files once these are eventually reworked, but until then we leave it off.
 | |
|         "noExplicitAny": "off",
 | |
|         "noAssignInExpressions": "off",
 | |
|         "noPrototypeBuiltins": "off",
 | |
|         "noFallthroughSwitchClause": "error", // Prevents accidental automatic fallthroughs in switch cases (use disable comment if needed)
 | |
|         "noImplicitAnyLet": "warn", // TODO: Refactor and make this an error
 | |
|         "noRedeclare": "info", // TODO: Refactor and make this an error
 | |
|         "noGlobalIsNan": "off",
 | |
|         "noAsyncPromiseExecutor": "warn" // TODO: Refactor and make this an error
 | |
|       },
 | |
|       "complexity": {
 | |
|         "noExcessiveCognitiveComplexity": "warn", // TODO: Refactor and make this an error
 | |
|         "useLiteralKeys": "off",
 | |
|         "noForEach": "off", // Foreach vs for of is not that simple.
 | |
|         "noUselessSwitchCase": "off", // Explicit > Implicit
 | |
|         "noUselessConstructor": "warn", // TODO: Refactor and make this an error
 | |
|         "noBannedTypes": "warn" // TODO: Refactor and make this an error
 | |
|       },
 | |
|       "nursery": {
 | |
|         "noRestrictedTypes": {
 | |
|           "level": "error",
 | |
|           "options": {
 | |
|             "types": {
 | |
|               "integer": {
 | |
|                 "message": "This is an alias for 'number' that can provide false impressions of what values can actually be contained in this variable. Use 'number' instead.",
 | |
|                 "use": "number"
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   },
 | |
|   "javascript": {
 | |
|     "formatter": { "quoteStyle": "double", "arrowParentheses": "asNeeded" }
 | |
|   },
 | |
|   "overrides": [
 | |
|     {
 | |
|       "include": ["test/**/*.test.ts"],
 | |
|       "javascript": { "globals": [] },
 | |
|       "linter": {
 | |
|         "rules": {
 | |
|           "performance": {
 | |
|             "noDelete": "off" // TODO: evaluate if this is necessary for the test(s) to function
 | |
|           },
 | |
|           "style": {
 | |
|             "noNamespaceImport": "off" // this is required for `vi.spyOn` to work in some tests
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   ]
 | |
| }
 |