meocord
Version:
Decorator-based Discord bot framework built on discord.js. Brings NestJS-style controllers, dependency injection, guards, and testing utilities to bot development — with a full CLI and TypeScript-first design.
92 lines (84 loc) • 2.14 kB
JavaScript
/**
* MeoCord Framework
* Copyright (c) 2025 Ukasyah Rahmatullah Zada
* SPDX-License-Identifier: MIT
*/
import { importX } from 'eslint-plugin-import-x'
import globals from 'globals'
import tsParser from '@typescript-eslint/parser'
import eslintTs from 'typescript-eslint'
import eslintConfigPrettier from 'eslint-config-prettier'
import eslintPluginPrettier from 'eslint-plugin-prettier'
const tsFiles = ['**/*.ts']
const languageOptions = {
globals: {
...globals.node,
...globals.jest,
},
ecmaVersion: 2023,
sourceType: 'module',
parserOptions: {
project: ['./tsconfig.json', './tsconfig.test.json', './tsconfig.eslint.json'],
},
}
export const typescriptConfig = {
files: tsFiles,
plugins: {
'import-x': importX,
prettier: eslintPluginPrettier,
},
languageOptions: {
...languageOptions,
parser: tsParser,
},
settings: {
'import-x/parsers': {
'@typescript-eslint/parser': ['.ts'],
},
'import-x/resolver': {
typescript: {
alwaysTryTypes: true,
project: ['./tsconfig.json', './tsconfig.test.json', './tsconfig.eslint.json'],
},
},
},
rules: {
'prettier/prettier': 'error',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-var-requires': 'warn',
'@typescript-eslint/no-unused-expressions': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
vars: 'all',
varsIgnorePattern: '^_',
args: 'all',
argsIgnorePattern: '^_',
},
],
},
}
const recommendedTypeScriptConfigs = [
...eslintTs.configs.recommended.map(config => ({
...config,
files: tsFiles,
})),
...eslintTs.configs.stylistic.map(config => ({
...config,
files: tsFiles,
})),
]
const specConfig = {
files: ['**/*.spec.ts'],
rules: {
'@typescript-eslint/no-empty-function': 'off',
},
}
export default [
{ ignores: ['docs/*', 'build/*', 'lib/*', 'dist/*', 'meocord.config.ts', 'jest.config.ts'] },
...recommendedTypeScriptConfigs,
specConfig,
eslintConfigPrettier,
typescriptConfig,
]