refactor: using eslint-config-neon on mainlib (#10876)

* refactor: using eslint-config-neon on mainlib

* fix: lint

* fix: lint

* fix: the way we lint

* chore: lint some more

* fix: more lint changes

* fix: type tests

* chore: port eslint rule

* refactor: lintstaged doesn't need this

* fix: eslint was a bit too eager

* fix: forgot Client

* Apply suggestions from code review

Co-authored-by: Almeida <github@almeidx.dev>

* chore: more lint fixes

* fix: remove useless Boolean()

* fix: get docs back

* fix: snowflake docs

* refactor: don't use typescript lint rules

* fix: code review

* fix: tidy up disabled rules

* chore: code review

* chore: code review

* chore: code review

* fix: consistent spacing in typings

* fix: tests

* fix: unsort ErrorCodes

* chore: get comments back

* Update packages/discord.js/src/client/websocket/handlers/THREAD_LIST_SYNC.js

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

* fix: remove unused parameter

* fix: merge messed up types

* fix: more type mess from merge

* fix: generate script for ActionsManager

* fix: code review

* Update packages/discord.js/src/structures/MessageMentions.js

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

* Update packages/discord.js/src/structures/Presence.js

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

* fix: replace is faster, unicorn is wrong

* fix: consistency

* fix: delete obsolete file

* fix: minor nit in test file

---------

Co-authored-by: Almeida <github@almeidx.dev>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
This commit is contained in:
Qjuh
2025-06-02 19:23:40 +02:00
committed by GitHub
parent ef2c1bfa77
commit b03c65c34c
293 changed files with 5121 additions and 3366 deletions

View File

@@ -21,6 +21,7 @@ const nodeRuleset = merge(...node, { files: [`**/*${commonFiles}`] });
const typeScriptRuleset = merge(...typescript, {
files: [`**/*${commonFiles}`],
ignores: [`packages/discord.js/**/*.{js,mjs,cjs}`],
languageOptions: {
parserOptions: {
warnOnUnsupportedTypeScriptVersion: false,
@@ -88,7 +89,6 @@ export default tseslint.config(
'**/storybook-static/',
'**/.next/',
'**/shiki.bundle.ts',
'packages/discord.js/',
],
},
commonRuleset,
@@ -137,6 +137,101 @@ export default tseslint.config(
'@typescript-eslint/no-empty-object-type': 0,
},
},
{
files: [`packages/discord.js/**/*.{js,cjs}`],
languageOptions: {
sourceType: 'commonjs',
parserOptions: {
ecmaFeatures: {
impliedStrict: false,
},
},
},
settings: {
jsdoc: {
tagNamePreference: {
augments: 'extends',
fires: 'emits',
function: 'method',
},
preferredTypes: {
object: 'Object',
null: 'void',
},
},
},
rules: {
'jsdoc/no-undefined-types': 0,
'jsdoc/no-defaults': 0,
'no-eq-null': 0,
strict: ['error', 'global'],
'no-restricted-syntax': [
'error',
{
selector: "AssignmentExpression[left.object.name='module'][left.property.name='exports']",
message: 'Use named exports instead of module.exports',
},
{
selector:
"VariableDeclarator[init.callee.name='require'][init.arguments.0.value=/^\\./]:not([id.type='ObjectPattern'])",
message: 'Use object destructuring when requiring local modules',
},
],
},
},
{
files: [`packages/discord.js/src/client/websocket/handlers/*.js`],
rules: {
'no-restricted-syntax': [
'error',
{
selector:
"VariableDeclarator[init.callee.name='require'][init.arguments.0.value=/^\\./]:not([id.type='ObjectPattern'])",
message: 'Use object destructuring when requiring local modules',
},
],
},
},
{
files: [`packages/discord.js/typings/*{d.ts,test-d.ts,d.mts,test-d.mts}`],
rules: {
'@typescript-eslint/no-unsafe-declaration-merging': 0,
'@typescript-eslint/no-empty-object-type': 0,
'@typescript-eslint/no-use-before-define': 0,
'@typescript-eslint/consistent-type-imports': 0,
'@stylistic/ts/lines-between-class-members': 0,
'no-restricted-syntax': [
2,
{
selector:
'MethodDefinition[key.name!=on][key.name!=once][key.name!=off] > TSEmptyBodyFunctionExpression > Identifier :not(TSTypeOperator[operator=readonly]) > TSArrayType',
message: 'Array parameters on methods must be readonly',
},
{
selector:
'MethodDefinition > TSEmptyBodyFunctionExpression > Identifier TSTypeReference > Identifier[name=Collection]',
message: 'Parameters of type Collection on methods must use ReadonlyCollection',
},
{
selector: 'TSDeclareFunction > Identifier :not(TSTypeOperator[operator=readonly]) > TSArrayType',
message: 'Array parameters on functions must be readonly',
},
{
selector: 'TSDeclareFunction Identifier TSTypeReference > Identifier[name=Collection]',
message: 'Parameters of type Collection on functions must use ReadonlyCollection',
},
{
selector: 'TSInterfaceDeclaration TSPropertySignature :not(TSTypeOperator[operator=readonly]) > TSArrayType',
message: 'Array properties on interfaces must be readonly',
},
{
selector: 'TSInterfaceDeclaration TSPropertySignature TSTypeReference > Identifier[name=Collection]',
message: 'Interface properties of type Collection must use ReadonlyCollection',
},
],
},
},
{
files: [`packages/rest/**/*${commonFiles}`],
rules: {