mirror of
				https://github.com/theoludwig/eslint-config-conventions.git
				synced 2025-10-21 07:35:11 +02:00 
			
		
		
		
	chore: initial commit
This commit is contained in:
		
							
								
								
									
										1
									
								
								.commitlintrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.commitlintrc.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| { "extends": ["@commitlint/config-conventional"] } | ||||
							
								
								
									
										11
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| # For more information see: https://editorconfig.org/ | ||||
|  | ||||
| root = true | ||||
|  | ||||
| [*] | ||||
| indent_style = space | ||||
| indent_size = 2 | ||||
| end_of_line = lf | ||||
| charset = utf-8 | ||||
| trim_trailing_whitespace = true | ||||
| insert_final_newline = true | ||||
							
								
								
									
										2
									
								
								.eslintignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.eslintignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| node_modules | ||||
| test/fixtures | ||||
							
								
								
									
										318
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										318
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,318 @@ | ||||
| { | ||||
|   "root": true, | ||||
|   "plugins": ["@typescript-eslint", "import", "promise", "unicorn"], | ||||
|   "env": { | ||||
|     "browser": true, | ||||
|     "node": true, | ||||
|     "es2022": true | ||||
|   }, | ||||
|   "parser": "@typescript-eslint/parser", | ||||
|   "parserOptions": { | ||||
|     "ecmaVersion": 2022, | ||||
|     "sourceType": "module", | ||||
|     "ecmaFeatures": { | ||||
|       "jsx": true | ||||
|     }, | ||||
|     "project": "./tsconfig.json" | ||||
|   }, | ||||
|   "rules": { | ||||
|     "constructor-super": "error", | ||||
|     "for-direction": "error", | ||||
|     "getter-return": "error", | ||||
|     "no-async-promise-executor": "error", | ||||
|     "no-class-assign": "error", | ||||
|     "no-compare-neg-zero": "error", | ||||
|     "no-cond-assign": "error", | ||||
|     "no-const-assign": "error", | ||||
|     "no-constant-condition": "error", | ||||
|     "no-constructor-return": "error", | ||||
|     "no-control-regex": "error", | ||||
|     "no-debugger": "error", | ||||
|     "no-dupe-args": "error", | ||||
|     "no-dupe-class-members": "off", | ||||
|     "@typescript-eslint/no-dupe-class-members": "error", | ||||
|     "no-dupe-else-if": "error", | ||||
|     "no-dupe-keys": "error", | ||||
|     "no-duplicate-case": "error", | ||||
|     "no-duplicate-imports": "off", | ||||
|     "@typescript-eslint/no-duplicate-imports": "error", | ||||
|     "no-empty-character-class": "error", | ||||
|     "no-empty-pattern": "error", | ||||
|     "no-ex-assign": "error", | ||||
|     "no-fallthrough": "error", | ||||
|     "no-func-assign": "error", | ||||
|     "no-import-assign": "error", | ||||
|     "no-invalid-regexp": "error", | ||||
|     "no-irregular-whitespace": "error", | ||||
|     "no-loss-of-precision": "off", | ||||
|     "@typescript-eslint/no-loss-of-precision": "error", | ||||
|     "no-misleading-character-class": "error", | ||||
|     "no-new-symbol": "error", | ||||
|     "no-obj-calls": "error", | ||||
|     "no-promise-executor-return": "error", | ||||
|     "no-prototype-builtins": "error", | ||||
|     "no-self-assign": "error", | ||||
|     "no-self-compare": "error", | ||||
|     "no-setter-return": "error", | ||||
|     "no-this-before-super": "error", | ||||
|     "no-undef": "error", | ||||
|     "no-unexpected-multiline": "error", | ||||
|     "no-unmodified-loop-condition": "error", | ||||
|     "no-unreachable": "error", | ||||
|     "no-unreachable-loop": "error", | ||||
|     "no-unsafe-finally": "error", | ||||
|     "no-unsafe-negation": "error", | ||||
|     "no-unsafe-optional-chaining": "error", | ||||
|     "no-unused-private-class-members": "error", | ||||
|     "no-unused-vars": "off", | ||||
|     "@typescript-eslint/no-unused-vars": "error", | ||||
|     "no-use-before-define": "off", | ||||
|     "@typescript-eslint/no-use-before-define": [ | ||||
|       "error", | ||||
|       { | ||||
|         "functions": false, | ||||
|         "classes": false, | ||||
|         "enums": false, | ||||
|         "variables": false, | ||||
|         "typedefs": false | ||||
|       } | ||||
|     ], | ||||
|     "no-useless-backreference": "error", | ||||
|     "require-atomic-updates": "error", | ||||
|     "use-isnan": [ | ||||
|       "error", | ||||
|       { | ||||
|         "enforceForSwitchCase": true, | ||||
|         "enforceForIndexOf": true | ||||
|       } | ||||
|     ], | ||||
|     "valid-typeof": ["error", { "requireStringLiterals": true }], | ||||
|  | ||||
|     "class-methods-use-this": "error", | ||||
|     "consistent-this": "error", | ||||
|     "default-param-last": "off", | ||||
|     "@typescript-eslint/default-param-last": "error", | ||||
|     "default-case-last": "error", | ||||
|     "dot-notation": "off", | ||||
|     "@typescript-eslint/dot-notation": ["error", { "allowKeywords": true }], | ||||
|     "eqeqeq": "error", | ||||
|     "grouped-accessor-pairs": "error", | ||||
|     "new-cap": [ | ||||
|       "error", | ||||
|       { "newIsCap": true, "capIsNew": false, "properties": true } | ||||
|     ], | ||||
|     "no-array-constructor": "off", | ||||
|     "@typescript-eslint/no-array-constructor": "error", | ||||
|     "no-caller": "error", | ||||
|     "no-confusing-arrow": "error", | ||||
|     "no-delete-var": "error", | ||||
|     "no-empty": ["error", { "allowEmptyCatch": true }], | ||||
|     "no-eval": "error", | ||||
|     "no-floating-decimal": "error", | ||||
|     "no-global-assign": "error", | ||||
|     "no-implied-eval": "off", | ||||
|     "@typescript-eslint/no-implied-eval": "error", | ||||
|     "no-mixed-operators": [ | ||||
|       "error", | ||||
|       { | ||||
|         "groups": [ | ||||
|           ["==", "!=", "===", "!==", ">", ">=", "<", "<="], | ||||
|           ["&&", "||"], | ||||
|           ["in", "instanceof"] | ||||
|         ], | ||||
|         "allowSamePrecedence": true | ||||
|       } | ||||
|     ], | ||||
|     "no-multi-str": "error", | ||||
|     "no-new-func": "error", | ||||
|     "no-new-object": "error", | ||||
|     "no-octal": "error", | ||||
|     "no-octal-escape": "error", | ||||
|     "no-proto": "error", | ||||
|     "no-redeclare": "off", | ||||
|     "@typescript-eslint/no-redeclare": ["error", { "builtinGlobals": false }], | ||||
|     "no-regex-spaces": "error", | ||||
|     "no-shadow-restricted-names": "error", | ||||
|     "no-throw-literal": "off", | ||||
|     "@typescript-eslint/no-throw-literal": "error", | ||||
|     "no-undef-init": "error", | ||||
|     "no-unused-expressions": "off", | ||||
|     "@typescript-eslint/no-unused-expressions": [ | ||||
|       "error", | ||||
|       { | ||||
|         "allowShortCircuit": true, | ||||
|         "allowTernary": true, | ||||
|         "allowTaggedTemplates": true | ||||
|       } | ||||
|     ], | ||||
|     "no-useless-call": "error", | ||||
|     "no-useless-computed-key": "error", | ||||
|     "no-useless-constructor": "off", | ||||
|     "@typescript-eslint/no-useless-constructor": "error", | ||||
|     "no-useless-escape": "error", | ||||
|     "no-useless-rename": "error", | ||||
|     "no-useless-return": "error", | ||||
|     "no-var": "error", | ||||
|     "no-void": "error", | ||||
|     "no-with": "error", | ||||
|     "object-shorthand": ["error", "properties"], | ||||
|     "one-var": ["error", { "initialized": "never" }], | ||||
|     "prefer-const": ["error", { "destructuring": "all" }], | ||||
|     "prefer-object-has-own": "error", | ||||
|     "prefer-promise-reject-errors": "error", | ||||
|     "prefer-regex-literals": ["error", { "disallowRedundantWrapping": true }], | ||||
|     "quote-props": ["error", "as-needed"], | ||||
|     "radix": "error", | ||||
|     "require-await": "off", | ||||
|     "@typescript-eslint/require-await": "error", | ||||
|     "spaced-comment": ["error", "always"], | ||||
|     "yoda": ["error", "never"], | ||||
|  | ||||
|     "import/no-absolute-path": "error", | ||||
|     "import/no-webpack-loader-syntax": "error", | ||||
|     "import/no-self-import": "error", | ||||
|     "import/no-useless-path-segments": "error", | ||||
|     "import/export": "error", | ||||
|     "import/first": "error", | ||||
|     "import/no-duplicates": "error", | ||||
|     "import/order": [ | ||||
|       "error", | ||||
|       { | ||||
|         "groups": ["builtin", "external", "internal"], | ||||
|         "newlines-between": "always" | ||||
|       } | ||||
|     ], | ||||
|     "import/no-named-default": "error", | ||||
|  | ||||
|     "promise/param-names": "error", | ||||
|     "promise/no-new-statics": "error", | ||||
|  | ||||
|     "unicorn/better-regex": "error", | ||||
|     "unicorn/catch-error-name": "error", | ||||
|     "unicorn/custom-error-definition": "error", | ||||
|     "unicorn/error-message": "error", | ||||
|     "unicorn/escape-case": "error", | ||||
|     "unicorn/new-for-builtins": "error", | ||||
|     "unicorn/no-array-callback-reference": "error", | ||||
|     "unicorn/no-hex-escape": "error", | ||||
|     "unicorn/no-instanceof-array": "error", | ||||
|     "unicorn/no-this-assignment": "error", | ||||
|     "unicorn/no-zero-fractions": "error", | ||||
|     "unicorn/prefer-node-protocol": "error", | ||||
|     "unicorn/throw-new-error": "error" | ||||
|   }, | ||||
|   "overrides": [ | ||||
|     { | ||||
|       "files": ["*.ts", "*.tsx"], | ||||
|       "rules": { | ||||
|         "@typescript-eslint/adjacent-overload-signatures": "error", | ||||
|         "@typescript-eslint/array-type": [ | ||||
|           "error", | ||||
|           { "default": "array-simple" } | ||||
|         ], | ||||
|         "@typescript-eslint/consistent-type-assertions": [ | ||||
|           "error", | ||||
|           { | ||||
|             "assertionStyle": "as", | ||||
|             "objectLiteralTypeAssertions": "never" | ||||
|           } | ||||
|         ], | ||||
|         "@typescript-eslint/consistent-type-definitions": [ | ||||
|           "error", | ||||
|           "interface" | ||||
|         ], | ||||
|         "@typescript-eslint/explicit-function-return-type": [ | ||||
|           "error", | ||||
|           { | ||||
|             "allowExpressions": true, | ||||
|             "allowHigherOrderFunctions": true, | ||||
|             "allowTypedFunctionExpressions": true, | ||||
|             "allowDirectConstAssertionInArrowFunctions": true | ||||
|           } | ||||
|         ], | ||||
|         "@typescript-eslint/member-delimiter-style": [ | ||||
|           "error", | ||||
|           { | ||||
|             "multiline": { "delimiter": "none" }, | ||||
|             "singleline": { "delimiter": "comma", "requireLast": false } | ||||
|           } | ||||
|         ], | ||||
|         "@typescript-eslint/method-signature-style": "error", | ||||
|         "@typescript-eslint/naming-convention": [ | ||||
|           "error", | ||||
|           { | ||||
|             "selector": "variableLike", | ||||
|             "leadingUnderscore": "allow", | ||||
|             "trailingUnderscore": "allow", | ||||
|             "format": ["camelCase", "PascalCase", "UPPER_CASE"] | ||||
|           } | ||||
|         ], | ||||
|         "@typescript-eslint/no-base-to-string": "error", | ||||
|         "@typescript-eslint/no-dynamic-delete": "error", | ||||
|         "@typescript-eslint/no-empty-interface": [ | ||||
|           "error", | ||||
|           { "allowSingleExtends": true } | ||||
|         ], | ||||
|         "@typescript-eslint/no-extra-non-null-assertion": "error", | ||||
|         "@typescript-eslint/no-extraneous-class": [ | ||||
|           "error", | ||||
|           { "allowWithDecorator": true } | ||||
|         ], | ||||
|         "@typescript-eslint/no-floating-promises": "error", | ||||
|         "@typescript-eslint/no-for-in-array": "error", | ||||
|         "@typescript-eslint/no-invalid-void-type": "error", | ||||
|         "@typescript-eslint/no-misused-new": "error", | ||||
|         "@typescript-eslint/no-misused-promises": "error", | ||||
|         "@typescript-eslint/no-non-null-asserted-optional-chain": "error", | ||||
|         "@typescript-eslint/no-non-null-assertion": "error", | ||||
|         "@typescript-eslint/no-this-alias": [ | ||||
|           "error", | ||||
|           { "allowDestructuring": true } | ||||
|         ], | ||||
|         "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", | ||||
|         "@typescript-eslint/no-unnecessary-type-assertion": "error", | ||||
|         "@typescript-eslint/no-var-requires": "error", | ||||
|         "@typescript-eslint/prefer-function-type": "error", | ||||
|         "@typescript-eslint/prefer-includes": "error", | ||||
|         "@typescript-eslint/prefer-nullish-coalescing": [ | ||||
|           "error", | ||||
|           { | ||||
|             "ignoreConditionalTests": false, | ||||
|             "ignoreMixedLogicalExpressions": false | ||||
|           } | ||||
|         ], | ||||
|         "@typescript-eslint/prefer-optional-chain": "error", | ||||
|         "@typescript-eslint/prefer-readonly": "error", | ||||
|         "@typescript-eslint/prefer-reduce-type-parameter": "error", | ||||
|         "@typescript-eslint/prefer-ts-expect-error": "error", | ||||
|         "@typescript-eslint/promise-function-async": "error", | ||||
|         "@typescript-eslint/require-array-sort-compare": [ | ||||
|           "error", | ||||
|           { "ignoreStringArrays": true } | ||||
|         ], | ||||
|         "@typescript-eslint/restrict-plus-operands": [ | ||||
|           "error", | ||||
|           { "checkCompoundAssignments": true } | ||||
|         ], | ||||
|         "@typescript-eslint/restrict-template-expressions": [ | ||||
|           "error", | ||||
|           { "allowNumber": true } | ||||
|         ], | ||||
|         "@typescript-eslint/return-await": ["error", "always"], | ||||
|         "@typescript-eslint/strict-boolean-expressions": [ | ||||
|           "error", | ||||
|           { | ||||
|             "allowString": false, | ||||
|             "allowNumber": false, | ||||
|             "allowNullableObject": false, | ||||
|             "allowNullableBoolean": false, | ||||
|             "allowNullableString": false, | ||||
|             "allowNullableNumber": false, | ||||
|             "allowAny": false | ||||
|           } | ||||
|         ], | ||||
|         "@typescript-eslint/type-annotation-spacing": "error" | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| * text=auto eol=lf | ||||
							
								
								
									
										20
									
								
								.github/ISSUE_TEMPLATE/BUG.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/ISSUE_TEMPLATE/BUG.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| --- | ||||
| name: '🐛 Bug Report' | ||||
| about: 'Report an unexpected problem or unintended behavior.' | ||||
| title: '[Bug]' | ||||
| labels: 'bug' | ||||
| --- | ||||
|  | ||||
| <!-- | ||||
|   Please provide a clear and concise description of what the bug is. Include | ||||
|   screenshots if needed. Please make sure your issue has not already been fixed. | ||||
| --> | ||||
|  | ||||
| ## Steps To Reproduce | ||||
|  | ||||
| 1. Step 1 | ||||
| 2. Step 2 | ||||
|  | ||||
| ## The current behavior | ||||
|  | ||||
| ## The expected behavior | ||||
							
								
								
									
										18
									
								
								.github/ISSUE_TEMPLATE/DOCUMENTATION.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.github/ISSUE_TEMPLATE/DOCUMENTATION.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| --- | ||||
| name: '📜 Documentation' | ||||
| about: 'Correct spelling errors, improvements or additions to documentation files (README, CONTRIBUTING...).' | ||||
| title: '[Documentation]' | ||||
| labels: 'documentation' | ||||
| --- | ||||
|  | ||||
| <!-- Please make sure your issue has not already been fixed. --> | ||||
|  | ||||
| ## Documentation | ||||
|  | ||||
| <!-- Please uncomment the type of documentation problem this issue address --> | ||||
|  | ||||
| <!-- Documentation is Missing --> | ||||
| <!-- Documentation is Confusing --> | ||||
| <!-- Documentation has Typo errors --> | ||||
|  | ||||
| ## Proposal | ||||
							
								
								
									
										20
									
								
								.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| --- | ||||
| name: '✨ Feature Request' | ||||
| about: 'Suggest a new feature idea.' | ||||
| title: '[Feature]' | ||||
| labels: 'feature request' | ||||
| --- | ||||
|  | ||||
| <!-- Please make sure your issue has not already been fixed. --> | ||||
|  | ||||
| ## Description | ||||
|  | ||||
| <!-- A clear and concise description of the problem or missing capability... --> | ||||
|  | ||||
| ## Describe the solution you'd like | ||||
|  | ||||
| <!-- If you have a solution in mind, please describe it. --> | ||||
|  | ||||
| ## Describe alternatives you've considered | ||||
|  | ||||
| <!-- Have you considered any alternative solutions or workarounds? --> | ||||
							
								
								
									
										20
									
								
								.github/ISSUE_TEMPLATE/IMPROVEMENT.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/ISSUE_TEMPLATE/IMPROVEMENT.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| --- | ||||
| name: '🔧 Improvement' | ||||
| about: 'Improve structure/format/performance/refactor/tests of the code.' | ||||
| title: '[Improvement]' | ||||
| labels: 'improvement' | ||||
| --- | ||||
|  | ||||
| <!-- Please make sure your issue has not already been fixed. --> | ||||
|  | ||||
| ## Type of Improvement | ||||
|  | ||||
| <!-- Please uncomment the type of improvements this issue address --> | ||||
|  | ||||
| <!-- Files and Folders Structure --> | ||||
| <!-- Performance --> | ||||
| <!-- Refactoring code --> | ||||
| <!-- Tests --> | ||||
| <!-- Not Sure? --> | ||||
|  | ||||
| ## Proposal | ||||
							
								
								
									
										8
									
								
								.github/ISSUE_TEMPLATE/QUESTION.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.github/ISSUE_TEMPLATE/QUESTION.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| --- | ||||
| name: '🙋 Question' | ||||
| about: 'Further information is requested.' | ||||
| title: '[Question]' | ||||
| labels: 'question' | ||||
| --- | ||||
|  | ||||
| ### Question | ||||
							
								
								
									
										7
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| <!-- Please first discuss the change you wish to make via issue before making a change. It might avoid a waste of your time. --> | ||||
|  | ||||
| ## What changes this PR introduce? | ||||
|  | ||||
| ## List any relevant issue numbers | ||||
|  | ||||
| ## Is there anything you'd like reviewers to focus on? | ||||
							
								
								
									
										28
									
								
								.github/workflows/lint.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.github/workflows/lint.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| name: 'Lint' | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: [master, develop] | ||||
|   pull_request: | ||||
|     branches: [master, develop] | ||||
|  | ||||
| jobs: | ||||
|   lint: | ||||
|     runs-on: 'ubuntu-latest' | ||||
|     steps: | ||||
|       - uses: 'actions/checkout@v2.4.0' | ||||
|  | ||||
|       - name: 'Use Node.js' | ||||
|         uses: 'actions/setup-node@v2.5.1' | ||||
|         with: | ||||
|           node-version: 'lts/*' | ||||
|           cache: 'npm' | ||||
|  | ||||
|       - name: 'Install' | ||||
|         run: 'npm install' | ||||
|  | ||||
|       - run: 'npm run lint:commit -- --to "${{ github.sha }}"' | ||||
|       - run: 'npm run lint:editorconfig' | ||||
|       - run: 'npm run lint:markdown' | ||||
|       - run: 'npm run lint:javascript' | ||||
|       - run: 'npm run lint:prettier' | ||||
							
								
								
									
										25
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| name: 'Test' | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: [master, develop] | ||||
|   pull_request: | ||||
|     branches: [master, develop] | ||||
|  | ||||
| jobs: | ||||
|   test: | ||||
|     runs-on: 'ubuntu-latest' | ||||
|     steps: | ||||
|       - uses: 'actions/checkout@v2.4.0' | ||||
|  | ||||
|       - name: 'Use Node.js' | ||||
|         uses: 'actions/setup-node@v2.5.1' | ||||
|         with: | ||||
|           node-version: 'lts/*' | ||||
|           cache: 'npm' | ||||
|  | ||||
|       - name: 'Install' | ||||
|         run: 'npm install' | ||||
|  | ||||
|       - name: 'Test' | ||||
|         run: 'npm run test' | ||||
							
								
								
									
										28
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| # dependencies | ||||
| node_modules | ||||
| .npm | ||||
|  | ||||
| # testing | ||||
| coverage | ||||
|  | ||||
| # debug | ||||
| npm-debug.log* | ||||
|  | ||||
| # IDEs and editors | ||||
| /.idea | ||||
| .project | ||||
| .classpath | ||||
| .c9/ | ||||
| *.launch | ||||
| .settings/ | ||||
| *.sublime-workspace | ||||
|  | ||||
| # IDE - VSCode | ||||
| .vscode/* | ||||
| !.vscode/settings.json | ||||
| !.vscode/tasks.json | ||||
| !.vscode/launch.json | ||||
| !.vscode/extensions.json | ||||
|  | ||||
| # misc | ||||
| .DS_Store | ||||
							
								
								
									
										4
									
								
								.husky/commit-msg
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								.husky/commit-msg
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| #!/bin/sh | ||||
| . "$(dirname "$0")/_/husky.sh" | ||||
|  | ||||
| npm run lint:commit -- --edit | ||||
							
								
								
									
										5
									
								
								.husky/pre-commit
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								.husky/pre-commit
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| #!/bin/sh | ||||
| . "$(dirname "$0")/_/husky.sh" | ||||
|  | ||||
| npm run lint:staged | ||||
| npm run test | ||||
							
								
								
									
										6
									
								
								.lintstagedrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.lintstagedrc.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "*": ["editorconfig-checker"], | ||||
|   "*.{js,jsx,ts,tsx}": ["prettier --write", "eslint --fix"], | ||||
|   "*.{json,jsonc,yml,yaml}": ["prettier --write"], | ||||
|   "*.{md,mdx}": ["prettier --write", "markdownlint --dot --fix"] | ||||
| } | ||||
							
								
								
									
										6
									
								
								.markdownlint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.markdownlint.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "default": true, | ||||
|   "MD013": false, | ||||
|   "MD033": false, | ||||
|   "MD041": false | ||||
| } | ||||
							
								
								
									
										6
									
								
								.prettierrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.prettierrc.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "singleQuote": true, | ||||
|   "jsxSingleQuote": true, | ||||
|   "semi": false, | ||||
|   "trailingComma": "none" | ||||
| } | ||||
							
								
								
									
										19
									
								
								.releaserc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.releaserc.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| { | ||||
|   "branches": ["master"], | ||||
|   "plugins": [ | ||||
|     [ | ||||
|       "@semantic-release/commit-analyzer", | ||||
|       { | ||||
|         "preset": "conventionalcommits" | ||||
|       } | ||||
|     ], | ||||
|     [ | ||||
|       "@semantic-release/release-notes-generator", | ||||
|       { | ||||
|         "preset": "conventionalcommits" | ||||
|       } | ||||
|     ], | ||||
|     "@semantic-release/npm", | ||||
|     "@semantic-release/github" | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										8
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| { | ||||
|   "recommendations": [ | ||||
|     "editorconfig.editorconfig", | ||||
|     "esbenp.prettier-vscode", | ||||
|     "dbaeumer.vscode-eslint", | ||||
|     "davidanson.vscode-markdownlint" | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										10
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| { | ||||
|   "typescript.tsdk": "node_modules/typescript/lib", | ||||
|   "typescript.preferences.importModuleSpecifierEnding": "js", | ||||
|   "editor.defaultFormatter": "esbenp.prettier-vscode", | ||||
|   "prettier.configPath": ".prettierrc.json", | ||||
|   "editor.formatOnSave": true, | ||||
|   "editor.codeActionsOnSave": { | ||||
|     "source.fixAll": true | ||||
|   } | ||||
| } | ||||
							
								
								
									
										132
									
								
								CODE_OF_CONDUCT.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								CODE_OF_CONDUCT.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,132 @@ | ||||
| # Contributor Covenant Code of Conduct | ||||
|  | ||||
| ## Our Pledge | ||||
|  | ||||
| We as members, contributors, and leaders pledge to make participation in our | ||||
| community a harassment-free experience for everyone, regardless of age, body | ||||
| size, visible or invisible disability, ethnicity, sex characteristics, gender | ||||
| identity and expression, level of experience, education, socio-economic status, | ||||
| nationality, personal appearance, race, religion, or sexual identity | ||||
| and orientation. | ||||
|  | ||||
| We pledge to act and interact in ways that contribute to an open, welcoming, | ||||
| diverse, inclusive, and healthy community. | ||||
|  | ||||
| ## Our Standards | ||||
|  | ||||
| Examples of behavior that contributes to a positive environment for our | ||||
| community include: | ||||
|  | ||||
| - Demonstrating empathy and kindness toward other people | ||||
| - Being respectful of differing opinions, viewpoints, and experiences | ||||
| - Giving and gracefully accepting constructive feedback | ||||
| - Accepting responsibility and apologizing to those affected by our mistakes, | ||||
|   and learning from the experience | ||||
| - Focusing on what is best not just for us as individuals, but for the | ||||
|   overall community | ||||
|  | ||||
| Examples of unacceptable behavior include: | ||||
|  | ||||
| - The use of sexualized language or imagery, and sexual attention or | ||||
|   advances of any kind | ||||
| - Trolling, insulting or derogatory comments, and personal or political attacks | ||||
| - Public or private harassment | ||||
| - Publishing others' private information, such as a physical or email | ||||
|   address, without their explicit permission | ||||
| - Other conduct which could reasonably be considered inappropriate in a | ||||
|   professional setting | ||||
|  | ||||
| ## Enforcement Responsibilities | ||||
|  | ||||
| Community leaders are responsible for clarifying and enforcing our standards of | ||||
| acceptable behavior and will take appropriate and fair corrective action in | ||||
| response to any behavior that they deem inappropriate, threatening, offensive, | ||||
| or harmful. | ||||
|  | ||||
| Community leaders have the right and responsibility to remove, edit, or reject | ||||
| comments, commits, code, wiki edits, issues, and other contributions that are | ||||
| not aligned to this Code of Conduct, and will communicate reasons for moderation | ||||
| decisions when appropriate. | ||||
|  | ||||
| ## Scope | ||||
|  | ||||
| This Code of Conduct applies within all community spaces, and also applies when | ||||
| an individual is officially representing the community in public spaces. | ||||
| Examples of representing our community include using an official e-mail address, | ||||
| posting via an official social media account, or acting as an appointed | ||||
| representative at an online or offline event. | ||||
|  | ||||
| ## Enforcement | ||||
|  | ||||
| Instances of abusive, harassing, or otherwise unacceptable behavior may be | ||||
| reported to the community leaders responsible for enforcement at | ||||
| contact@divlo.fr. | ||||
| All complaints will be reviewed and investigated promptly and fairly. | ||||
|  | ||||
| All community leaders are obligated to respect the privacy and security of the | ||||
| reporter of any incident. | ||||
|  | ||||
| ## Enforcement Guidelines | ||||
|  | ||||
| Community leaders will follow these Community Impact Guidelines in determining | ||||
| the consequences for any action they deem in violation of this Code of Conduct: | ||||
|  | ||||
| ### 1. Correction | ||||
|  | ||||
| **Community Impact**: Use of inappropriate language or other behavior deemed | ||||
| unprofessional or unwelcome in the community. | ||||
|  | ||||
| **Consequence**: A private, written warning from community leaders, providing | ||||
| clarity around the nature of the violation and an explanation of why the | ||||
| behavior was inappropriate. A public apology may be requested. | ||||
|  | ||||
| ### 2. Warning | ||||
|  | ||||
| **Community Impact**: A violation through a single incident or series | ||||
| of actions. | ||||
|  | ||||
| **Consequence**: A warning with consequences for continued behavior. No | ||||
| interaction with the people involved, including unsolicited interaction with | ||||
| those enforcing the Code of Conduct, for a specified period of time. This | ||||
| includes avoiding interactions in community spaces as well as external channels | ||||
| like social media. Violating these terms may lead to a temporary or | ||||
| permanent ban. | ||||
|  | ||||
| ### 3. Temporary Ban | ||||
|  | ||||
| **Community Impact**: A serious violation of community standards, including | ||||
| sustained inappropriate behavior. | ||||
|  | ||||
| **Consequence**: A temporary ban from any sort of interaction or public | ||||
| communication with the community for a specified period of time. No public or | ||||
| private interaction with the people involved, including unsolicited interaction | ||||
| with those enforcing the Code of Conduct, is allowed during this period. | ||||
| Violating these terms may lead to a permanent ban. | ||||
|  | ||||
| ### 4. Permanent Ban | ||||
|  | ||||
| **Community Impact**: Demonstrating a pattern of violation of community | ||||
| standards, including sustained inappropriate behavior, harassment of an | ||||
| individual, or aggression toward or disparagement of classes of individuals. | ||||
|  | ||||
| **Consequence**: A permanent ban from any sort of public interaction within | ||||
| the community. | ||||
|  | ||||
| ## Attribution | ||||
|  | ||||
| This Code of Conduct is adapted from the [Contributor Covenant][homepage], | ||||
| version 2.0, available at | ||||
| [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. | ||||
|  | ||||
| Community Impact Guidelines were inspired by | ||||
| [Mozilla's code of conduct enforcement ladder][mozilla coc]. | ||||
|  | ||||
| For answers to common questions about this code of conduct, see the FAQ at | ||||
| [https://www.contributor-covenant.org/faq][faq]. Translations are available | ||||
| at [https://www.contributor-covenant.org/translations][translations]. | ||||
|  | ||||
| [homepage]: https://www.contributor-covenant.org | ||||
| [v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html | ||||
| [mozilla coc]: https://github.com/mozilla/diversity | ||||
| [faq]: https://www.contributor-covenant.org/faq | ||||
| [translations]: https://www.contributor-covenant.org/translations | ||||
							
								
								
									
										46
									
								
								CONTRIBUTING.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								CONTRIBUTING.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| # 💡 Contributing | ||||
|  | ||||
| Thanks a lot for your interest in contributing to **eslint-config-conventions**! 🎉 | ||||
|  | ||||
| ## Types of contributions | ||||
|  | ||||
| - Reporting a bug. | ||||
| - Suggest a new feature idea. | ||||
| - Correct spelling errors, improvements or additions to documentation files (README, CONTRIBUTING...). | ||||
| - Improve structure/format/performance/refactor/tests of the code. | ||||
|  | ||||
| ## Pull Requests | ||||
|  | ||||
| - **Please first discuss** the change you wish to make via [issue](https://github.com/Divlo/eslint-config-conventions/issues) before making a change. It might avoid a waste of your time. | ||||
|  | ||||
| - Ensure your code respect linting. | ||||
|  | ||||
| - Make sure your **code passes the tests**. | ||||
|  | ||||
| If you're adding new features to **eslint-config-conventions**, please include tests. | ||||
|  | ||||
| ## Commits | ||||
|  | ||||
| The commit message guidelines respect [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional) and [Semantic Versioning](https://semver.org/) for releases. | ||||
|  | ||||
| ### Types | ||||
|  | ||||
| Types define which kind of changes you made to the project. | ||||
|  | ||||
| | Types    | Description                                                                                                  | | ||||
| | -------- | ------------------------------------------------------------------------------------------------------------ | | ||||
| | feat     | A new feature.                                                                                               | | ||||
| | fix      | A bug fix.                                                                                                   | | ||||
| | docs     | Documentation only changes.                                                                                  | | ||||
| | style    | Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc).      | | ||||
| | refactor | A code change that neither fixes a bug nor adds a feature.                                                   | | ||||
| | perf     | A code change that improves performance.                                                                     | | ||||
| | test     | Adding missing tests or correcting existing tests.                                                           | | ||||
| | build    | Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm).         | | ||||
| | ci       | Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs). | | ||||
| | chore    | Other changes that don't modify src or test files.                                                           | | ||||
| | revert   | Reverts a previous commit.                                                                                   | | ||||
|  | ||||
| ### Scopes | ||||
|  | ||||
| Scopes define what part of the code changed. | ||||
							
								
								
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) Divlo | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										127
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,127 @@ | ||||
| <h1 align="center">eslint-config-conventions</h1> | ||||
|  | ||||
| <p align="center"> | ||||
|   <strong><a href="https://eslint.org/docs/developer-guide/shareable-configs">ESLint shareable config</a> to enforce strict conventions and good code quality.</strong> | ||||
| </p> | ||||
|  | ||||
| </p> | ||||
|  | ||||
| <p align="center"> | ||||
|   <a href="./CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat" /></a> | ||||
|   <a href="./LICENSE"><img src="https://img.shields.io/badge/licence-MIT-blue.svg" alt="Licence MIT"/></a> | ||||
|   <a href="./CODE_OF_CONDUCT.md"><img src="https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg" alt="Contributor Covenant" /></a> | ||||
|   <br /> | ||||
|   <a href="https://github.com/Divlo/eslint-config-conventions/actions/workflows/build.yml"><img src="https://github.com/Divlo/eslint-config-conventions/build.yml/badge.svg?branch=develop" /></a> | ||||
|   <a href="https://github.com/Divlo/eslint-config-conventions/actions/workflows/lint.yml"><img src="https://github.com/Divlo/eslint-config-conventions/actions/workflows/lint.yml/badge.svg?branch=develop" /></a> | ||||
|   <a href="https://github.com/Divlo/eslint-config-conventions/actions/workflows/test.yml"><img src="https://github.com/Divlo/eslint-config-conventions/actions/workflows/test.yml/badge.svg?branch=develop" /></a> | ||||
|   <br /> | ||||
|   <a href="https://conventionalcommits.org"><img src="https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg" alt="Conventional Commits" /></a> | ||||
|   <a href="https://github.com/semantic-release/semantic-release"><img src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg" alt="semantic-release" /></a> | ||||
|   <a href="https://www.npmjs.com/package/eslint-config-conventions"><img src="https://img.shields.io/npm/v/eslint-config-conventions.svg" alt="npm version"></a> | ||||
| </p> | ||||
|  | ||||
| ## 📜 About | ||||
|  | ||||
| **eslint-config-conventions** is a [ESLint](https://eslint.org) configuration to enforce strict conventions and good code quality, it is highly inspired from [eslint-config-standard-with-typescript](https://github.com/standard/eslint-config-standard-with-typescript) but it is **stricter** and with **no formatting rules**, **only code-quality rules**. | ||||
|  | ||||
| This configuration is mostly **for catching bugs** and **code-quality** so it is recommanded to use it with [Prettier](https://prettier.io/) for a consistent code style, it works with any `.prettierrc.json` configuration. | ||||
|  | ||||
| More information about **formatting rules** vs **code-quality rules** can be found on [Prettier vs. Linters](https://prettier.io/docs/en/comparison.html). | ||||
|  | ||||
| ## ⚙️ Getting Started | ||||
|  | ||||
| ### Prerequisites | ||||
|  | ||||
| - [Node.js](https://nodejs.org/) >= 16.0.0 | ||||
|  | ||||
| ### Installation | ||||
|  | ||||
| `npm@<7` does not automatically install `peerDependencies`, so if that's what you're using, install them manually. | ||||
| Here is an example, but use it only for reference, because your decisions regarding version ranges and range specifiers may vary. | ||||
|  | ||||
| ```sh | ||||
| npm install --save-dev \ | ||||
|   eslint@^8.9.0 \ | ||||
|   eslint-plugin-import@^2.25.4 \ | ||||
|   eslint-plugin-promise@^6.0.0 \ | ||||
|   eslint-plugin-unicorn@^41.0.0 \ | ||||
|   typescript@^4.4.0 \ | ||||
|   @typescript-eslint/eslint-plugin@^5.12.0 \ | ||||
|   eslint-config-conventions@latest | ||||
| ``` | ||||
|  | ||||
| Yes, this is a large number of packages. This is due to [a known limitation in ESLint](https://github.com/eslint/eslint/issues/3458). | ||||
|  | ||||
| This list of dependencies are: | ||||
|  | ||||
| - [ESLint](https://github.com/eslint/eslint) | ||||
| - 3 [ESLint Plugins](https://eslint.org/docs/user-guide/configuring/plugins) | ||||
|   - [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) | ||||
|   - [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise) | ||||
|   - [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) | ||||
| - [TypeScript](https://github.com/Microsoft/TypeScript) | ||||
| - [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint); ESLint rules for TypeScript. | ||||
| - This package: `eslint-config-conventions` | ||||
|  | ||||
| ### Configuration with [Prettier](https://prettier.io/) (recommended) | ||||
|  | ||||
| You will need to install some dependencies in addition to those required: | ||||
|  | ||||
| ```sh | ||||
| npm install --save-dev prettier eslint-config-prettier eslint-plugin-prettier | ||||
|  | ||||
| # Create an empty config file to let editors and other tools know you are using Prettier | ||||
| # You can personalize it with your own rules | ||||
| echo {}> .prettierrc.json | ||||
| ``` | ||||
|  | ||||
| #### `.eslintrc.json` | ||||
|  | ||||
| ```json | ||||
| { | ||||
|   "extends": ["conventions", "prettier"], | ||||
|   "plugins": ["prettier"], | ||||
|   "parserOptions": { | ||||
|     "project": "./tsconfig.json" | ||||
|   }, | ||||
|   "rules": { | ||||
|     "prettier/prettier": "error" | ||||
|   } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| **Note:** Please read some important instructions regarding the `project` option [here](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/README.md#configuration). | ||||
|  | ||||
| You must have a valid `tsconfig.json` file to specify `"parserOptions.project"`. | ||||
|  | ||||
| #### `package.json` | ||||
|  | ||||
| ```jsonc | ||||
| { | ||||
|   "scripts": { | ||||
|     "lint:typescript": "eslint \"**/*.{js,jsx,ts,tsx}\" --ignore-path \".gitignore\"", | ||||
|     "lint:prettier": "prettier \".\" --check --ignore-path \".gitignore\"" | ||||
|   } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ### Usage | ||||
|  | ||||
| ```sh | ||||
| npm run lint:typescript | ||||
| # or to apply automatic fixes to code | ||||
| npm run lint:typescript -- --fix | ||||
|  | ||||
| # Validate code formatting in all supported languages by Prettier | ||||
| npm run lint:prettier | ||||
| ``` | ||||
|  | ||||
| ## 💡 Contributing | ||||
|  | ||||
| Anyone can help to improve the project, submit a Feature Request, a bug report or even correct a simple spelling mistake. | ||||
|  | ||||
| The steps to contribute can be found in the [CONTRIBUTING.md](./CONTRIBUTING.md) file. | ||||
|  | ||||
| ## 📄 License | ||||
|  | ||||
| [MIT](./LICENSE) | ||||
							
								
								
									
										16280
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										16280
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										72
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| { | ||||
|   "name": "eslint-config-conventions", | ||||
|   "version": "0.0.0-development", | ||||
|   "public": true, | ||||
|   "description": "ESLint shareable config to enforce strict conventions and good code quality.", | ||||
|   "author": "Divlo <contact@divlo.fr>", | ||||
|   "license": "MIT", | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "https://github.com/Divlo/eslint-config-conventions.git" | ||||
|   }, | ||||
|   "bugs": { | ||||
|     "url": "https://github.com/Divlo/eslint-config-conventions/issues" | ||||
|   }, | ||||
|   "homepage": "https://github.com/Divlo/eslint-config-conventions#readme", | ||||
|   "keywords": [ | ||||
|     "eslintconfig", | ||||
|     "eslint", | ||||
|     "quality", | ||||
|     "strict linter", | ||||
|     "validate", | ||||
|     "code quality", | ||||
|     "conventions" | ||||
|   ], | ||||
|   "main": "index.js", | ||||
|   "engines": { | ||||
|     "node": ">=16.0.0", | ||||
|     "npm": ">=8.0.0" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "lint:commit": "commitlint", | ||||
|     "lint:editorconfig": "editorconfig-checker", | ||||
|     "lint:markdown": "markdownlint \"**/*.md\" --dot --ignore-path \".gitignore\"", | ||||
|     "lint:javascript": "eslint \"**/*.{js,jsx,ts,tsx}\"", | ||||
|     "lint:prettier": "prettier \".\" --check --ignore-path \".gitignore\"", | ||||
|     "lint:staged": "lint-staged", | ||||
|     "test": "tape \"test/**/*.js\"", | ||||
|     "release": "semantic-release", | ||||
|     "postinstall": "husky install", | ||||
|     "prepublishOnly": "pinst --disable", | ||||
|     "postpublish": "pinst --enable" | ||||
|   }, | ||||
|   "peerDependencies": { | ||||
|     "eslint": "^8.9.0", | ||||
|     "eslint-plugin-import": "^2.25.4", | ||||
|     "eslint-plugin-promise": "^6.0.0", | ||||
|     "eslint-plugin-unicorn": "^41.0.0", | ||||
|     "typescript": "^4.4.0", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.12.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@commitlint/cli": "16.2.1", | ||||
|     "@commitlint/config-conventional": "16.2.1", | ||||
|     "editorconfig-checker": "4.0.2", | ||||
|     "eslint": "8.9.0", | ||||
|     "@types/eslint": "8.4.1", | ||||
|     "eslint-plugin-import": "2.25.4", | ||||
|     "eslint-plugin-promise": "6.0.0", | ||||
|     "eslint-plugin-unicorn": "41.0.0", | ||||
|     "typescript": "4.5.5", | ||||
|     "@typescript-eslint/parser": "5.12.0", | ||||
|     "@typescript-eslint/eslint-plugin": "5.12.0", | ||||
|     "tape": "5.5.2", | ||||
|     "husky": "7.0.4", | ||||
|     "lint-staged": "12.3.4", | ||||
|     "markdownlint-cli": "0.31.1", | ||||
|     "@types/tape": "4.13.2", | ||||
|     "pinst": "2.1.6", | ||||
|     "prettier": "2.5.1", | ||||
|     "semantic-release": "19.0.2" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										15
									
								
								test/basic.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								test/basic.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| const test = require('tape') | ||||
|  | ||||
| const config = require('../index.js') | ||||
|  | ||||
| test('test basic properties of config', function (t) { | ||||
|   t.ok(isObject(config.parserOptions)) | ||||
|   t.ok(isObject(config.env)) | ||||
|   t.ok(isObject(config.rules)) | ||||
|   t.ok(isObject(config.overrides)) | ||||
|   t.end() | ||||
| }) | ||||
|  | ||||
| function isObject(object) { | ||||
|   return typeof object === 'object' && object !== null | ||||
| } | ||||
							
								
								
									
										5
									
								
								test/fixtures/javascript-no-errors.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/fixtures/javascript-no-errors.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| const foo = 1 | ||||
| const bar = (argument) => { | ||||
|   return argument + foo | ||||
| } | ||||
| bar(foo) | ||||
							
								
								
									
										1
									
								
								test/fixtures/javascript-with-errors.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/fixtures/javascript-with-errors.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| 'invalid eqeqeq' == 'invalid eqeqeq' | ||||
							
								
								
									
										3
									
								
								test/fixtures/top-level-await.mjs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/fixtures/top-level-await.mjs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| const foo = await 1 | ||||
| const bar = function () {} | ||||
| await bar(foo) | ||||
							
								
								
									
										5
									
								
								test/fixtures/typescript-no-errors.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/fixtures/typescript-no-errors.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| const foo = 1 | ||||
| const bar = (argument: number): number => { | ||||
|   return argument + foo | ||||
| } | ||||
| bar(foo) | ||||
							
								
								
									
										5
									
								
								test/fixtures/typescript-with-errors.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/fixtures/typescript-with-errors.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| const foo = 1 | ||||
| const bar = (argument: number) => { | ||||
|   return argument + foo | ||||
| } | ||||
| bar(foo) | ||||
							
								
								
									
										37
									
								
								test/validate-config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								test/validate-config.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| const { ESLint } = require('eslint') | ||||
| const test = require('tape') | ||||
|  | ||||
| test('ensure we validate correctly JavaScript files', async (t) => { | ||||
|   const eslint = new ESLint({ ignore: false }) | ||||
|   const [noErrors] = await eslint.lintFiles( | ||||
|     'test/fixtures/javascript-no-errors.js' | ||||
|   ) | ||||
|   const [withErrors] = await eslint.lintFiles( | ||||
|     'test/fixtures/javascript-with-errors.js' | ||||
|   ) | ||||
|   t.equal(noErrors.errorCount, 0) | ||||
|   t.equal(withErrors.errorCount, 3) | ||||
|   t.end() | ||||
| }) | ||||
|  | ||||
| test('ensure we validate correctly TypeScript files', async (t) => { | ||||
|   const eslint = new ESLint({ ignore: false }) | ||||
|   const [noErrors] = await eslint.lintFiles( | ||||
|     'test/fixtures/typescript-no-errors.ts' | ||||
|   ) | ||||
|   const [withErrors] = await eslint.lintFiles( | ||||
|     'test/fixtures/javascript-with-errors.js' | ||||
|   ) | ||||
|   t.equal(noErrors.errorCount, 0) | ||||
|   t.equal(withErrors.errorCount, 3) | ||||
|   t.end() | ||||
| }) | ||||
|  | ||||
| test('ensure we allow top-level await', async (t) => { | ||||
|   const eslint = new ESLint({ ignore: false }) | ||||
|   const [lintResult] = await eslint.lintFiles( | ||||
|     'test/fixtures/top-level-await.mjs' | ||||
|   ) | ||||
|   t.equal(lintResult.errorCount, 0) | ||||
|   t.end() | ||||
| }) | ||||
							
								
								
									
										12
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| { | ||||
|   "compilerOptions": { | ||||
|     "target": "ESNext", | ||||
|     "module": "commonjs", | ||||
|     "lib": ["ESNext"], | ||||
|     "moduleResolution": "node", | ||||
|     "rootDir": "./", | ||||
|     "strict": true, | ||||
|     "skipLibCheck": true, | ||||
|     "esModuleInterop": true | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user