forked from package-url/packageurl-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
eslint.config.js
109 lines (103 loc) · 3.4 KB
/
eslint.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
'use strict'
const path = require('node:path')
const { includeIgnoreFile } = require('@eslint/compat')
const js = require('@eslint/js')
const importXPlugin = require('eslint-plugin-import-x')
const nodePlugin = require('eslint-plugin-n')
const sortDestructureKeysPlugin = require('eslint-plugin-sort-destructure-keys')
const unicornPlugin = require('eslint-plugin-unicorn')
const constants = require('@socketsecurity/registry/lib/constants')
const { GIT_IGNORE, LATEST, PRETTIER_IGNORE } = constants
const rootPath = __dirname
const gitignorePath = path.resolve(rootPath, GIT_IGNORE)
const prettierignorePath = path.resolve(rootPath, PRETTIER_IGNORE)
module.exports = [
includeIgnoreFile(gitignorePath),
includeIgnoreFile(prettierignorePath),
{
files: ['**/*.{c,}js'],
...importXPlugin.flatConfigs.recommended,
languageOptions: {
...importXPlugin.flatConfigs.recommended.languageOptions,
ecmaVersion: LATEST,
sourceType: 'script'
},
linterOptions: {
reportUnusedDisableDirectives: 'off'
},
rules: {
...importXPlugin.flatConfigs.recommended.rules,
'import-x/no-named-as-default-member': 'off',
'import-x/no-unresolved': ['error', { commonjs: true }],
'import-x/order': [
'warn',
{
groups: [
'builtin',
'external',
'internal',
['parent', 'sibling', 'index'],
'type'
],
pathGroups: [
{
pattern: '@socket{registry,security}/**',
group: 'internal'
}
],
pathGroupsExcludedImportTypes: ['type'],
'newlines-between': 'always',
alphabetize: {
order: 'asc'
}
}
]
}
},
{
files: ['scripts/**/*.{c,}js', 'test/**/*.{c,}js'],
...nodePlugin.configs['flat/recommended-script'],
rules: {
...nodePlugin.configs['flat/recommended-script'].rules,
'n/exports-style': ['error', 'module.exports'],
// The n/no-unpublished-bin rule does does not support non-trivial glob
// patterns used in package.json "files" fields. In those cases we simplify
// the glob patterns used.
'n/no-unpublished-bin': ['error'],
'n/no-unsupported-features/es-builtins': ['error'],
'n/no-unsupported-features/es-syntax': ['error'],
'n/no-unsupported-features/node-builtins': [
'error',
{
ignores: ['test', 'test.describe'],
// Lazily access constants.maintainedNodeVersions.
version: constants.maintainedNodeVersions.previous
}
],
'n/prefer-node-protocol': ['error']
}
},
{
files: ['scripts/**/*.{c,}js', 'test/**/*.{c,}js'],
plugins: {
'sort-destructure-keys': sortDestructureKeysPlugin,
unicorn: unicornPlugin
},
rules: {
...js.configs.recommended.rules,
'no-await-in-loop': ['error'],
'no-control-regex': ['error'],
'no-empty': ['error', { allowEmptyCatch: true }],
'no-new': ['error'],
'no-proto': ['error'],
'no-unused-vars': [
'error',
{ argsIgnorePattern: '^_|^this$', ignoreRestSiblings: true }
],
'no-warning-comments': ['warn', { terms: ['fixme'] }],
'sort-destructure-keys/sort-destructure-keys': ['error'],
'sort-imports': ['error', { ignoreDeclarationSort: true }],
'unicorn/consistent-function-scoping': ['error']
}
}
]