61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JSON
		
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JSON
		
	
	
| {
 | |
|   "plugins": ["jest", "@typescript-eslint", "prettier", "unicorn"],
 | |
|   "extends": ["plugin:unicorn/recommended", "plugin:github/recommended", "plugin:prettier/recommended"],
 | |
|   "parser": "@typescript-eslint/parser",
 | |
|   "parserOptions": {
 | |
|     "ecmaVersion": 2020,
 | |
|     "sourceType": "module",
 | |
|     "extraFileExtensions": [".mjs"],
 | |
|     "ecmaFeatures": {
 | |
|       "impliedStrict": true
 | |
|     },
 | |
|     "project": "./tsconfig.json"
 | |
|   },
 | |
|   "env": {
 | |
|     "node": true,
 | |
|     "es6": true,
 | |
|     "jest/globals": true
 | |
|   },
 | |
|   "rules": {
 | |
|     // Error out for code formatting errors
 | |
|     "prettier/prettier": "error",
 | |
|     // Namespaces or sometimes needed
 | |
|     "import/no-namespace": "off",
 | |
|     // Properly format comments
 | |
|     "spaced-comment": ["error", "always"],
 | |
|     "lines-around-comment": [
 | |
|       "error",
 | |
|       {
 | |
|         "beforeBlockComment": true,
 | |
|         "beforeLineComment": true,
 | |
|         "allowBlockStart": true,
 | |
|         "allowObjectStart": true,
 | |
|         "allowArrayStart": true,
 | |
|         "allowClassStart": true,
 | |
|         "ignorePattern": "pragma|ts-ignore"
 | |
|       }
 | |
|     ],
 | |
|     // Mandatory spacing
 | |
|     "padding-line-between-statements": [
 | |
|       "error",
 | |
|       { "blankLine": "always", "prev": "*", "next": "return" },
 | |
|       { "blankLine": "always", "prev": "directive", "next": "*" },
 | |
|       { "blankLine": "any", "prev": "directive", "next": "directive" }
 | |
|     ],
 | |
|     // Enforce camelCase
 | |
|     "camelcase": "error",
 | |
|     // Allow forOfStatements
 | |
|     "no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"],
 | |
|     // Continue is viable in forOf loops in generators
 | |
|     "no-continue": "off",
 | |
|     // From experience, named exports are almost always desired. I got tired of this rule
 | |
|     "import/prefer-default-export": "off",
 | |
|     // Unused vars are useful to keep method signatures consistent and documented
 | |
|     "@typescript-eslint/no-unused-vars": "off",
 | |
|     // For this project only use kebab-case
 | |
|     "unicorn/filename-case": ["error", { "cases": { "kebabCase": true } }],
 | |
|     // Allow Array.from(set) mitigate TS2569 which would require '--downlevelIteration'
 | |
|     "unicorn/prefer-spread": "off"
 | |
|   }
 | |
| }
 |