2024-09-10 09:50:11 +00:00
module . exports = {
parser : '@typescript-eslint/parser' ,
parserOptions : {
project : 'tsconfig.json' ,
tsconfigRootDir : _ _dirname ,
sourceType : 'module' ,
} ,
2024-10-19 11:16:49 +00:00
plugins : [ '@typescript-eslint/eslint-plugin' , 'import' , 'license-header' ] ,
2024-09-10 09:50:11 +00:00
extends : [
'plugin:@typescript-eslint/recommended' ,
'plugin:prettier/recommended' ,
] ,
root : true ,
env : {
node : true ,
jest : true ,
} ,
ignorePatterns : [ '.eslintrc.js' ] ,
rules : {
'@typescript-eslint/interface-name-prefix' : 'off' ,
'@typescript-eslint/explicit-function-return-type' : 'off' ,
'@typescript-eslint/explicit-module-boundary-types' : 'off' ,
'@typescript-eslint/lines-between-class-members' : [
1 ,
{
enforce : [
{ blankLine : 'always' , prev : '*' , next : 'field' } ,
{ blankLine : 'always' , prev : 'field' , next : '*' } ,
{ blankLine : 'always' , prev : 'method' , next : 'method' } ,
] ,
} ,
] ,
'@typescript-eslint/no-explicit-any' : 'off' ,
'@typescript-eslint/no-this-alias' : 'off' ,
'@typescript-eslint/no-unused-vars' : [
'error' ,
{
argsIgnorePattern : '^_' ,
varsIgnorePattern : '^_' ,
caughtErrorsIgnorePattern : '^_' ,
} ,
] ,
'@typescript-eslint/no-namespace' : 'off' ,
'@typescript-eslint/padding-line-between-statements' : [
2 ,
{ blankLine : 'always' , prev : '*' , next : 'export' } ,
{ blankLine : 'always' , prev : '*' , next : 'function' } ,
] ,
'lines-between-class-members' : 'off' ,
'no-console' : 2 ,
'no-duplicate-imports' : 2 ,
'object-shorthand' : 1 ,
'import/order' : [
'error' ,
{
groups : [
'builtin' , // Built-in imports (come from NodeJS native) go first
'external' , // <- External imports
'unknown' , // <- unknown
2024-10-16 17:54:55 +00:00
'parent' , // <- Relative imports, the sibling and parent types they can be mingled together
'sibling' ,
2024-09-10 09:50:11 +00:00
'index' , // <- index imports
'internal' , // <- Absolute imports
] ,
'newlines-between' : 'always' ,
alphabetize : {
/* sort in ascending order. Options: ["ignore", "asc", "desc"] */
order : 'asc' ,
/* ignore case. Options: [true, false] */
caseInsensitive : true ,
} ,
} ,
] ,
2024-10-19 11:16:49 +00:00
'license-header/header' : [
'error' ,
[
'/*' ,
' * Copyright © ' +
new Date ( ) . getFullYear ( ) +
' Hexastack. All rights reserved.' ,
' *' ,
' * Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:' ,
' * 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.' ,
' * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software\'s "About" section, documentation, and README file).' ,
' */' ,
] ,
] ,
2024-09-10 09:50:11 +00:00
} ,
} ;