63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
import eslint from '@eslint/js';
|
|
import tseslint from 'typescript-eslint';
|
|
import docmdRules from './eslint-rules/index.js';
|
|
|
|
export default [
|
|
eslint.configs.recommended,
|
|
...tseslint.configs.recommended,
|
|
{
|
|
languageOptions: {
|
|
globals: {
|
|
process: 'readonly',
|
|
console: 'readonly',
|
|
require: 'readonly',
|
|
module: 'readonly',
|
|
__dirname: 'readonly',
|
|
__filename: 'readonly',
|
|
setTimeout: 'readonly',
|
|
clearTimeout: 'readonly',
|
|
requestAnimationFrame: 'readonly',
|
|
cancelAnimationFrame: 'readonly',
|
|
Buffer: 'readonly',
|
|
exports: 'writable',
|
|
document: 'readonly',
|
|
window: 'readonly',
|
|
localStorage: 'readonly',
|
|
IntersectionObserver: 'readonly',
|
|
fetch: 'readonly',
|
|
DOMParser: 'readonly',
|
|
history: 'readonly',
|
|
CustomEvent: 'readonly',
|
|
Event: 'readonly',
|
|
MouseEvent: 'readonly',
|
|
KeyboardEvent: 'readonly',
|
|
getComputedStyle: 'readonly',
|
|
navigator: 'readonly',
|
|
location: 'readonly',
|
|
URL: 'readonly'
|
|
}
|
|
},
|
|
rules: {
|
|
'@typescript-eslint/no-require-imports': 'off',
|
|
'@typescript-eslint/no-unused-vars': 'warn',
|
|
'@typescript-eslint/no-explicit-any': 'warn',
|
|
'preserve-caught-error': 'off',
|
|
'@typescript-eslint/ban-ts-comment': 'warn',
|
|
'no-useless-escape': 'off',
|
|
'no-useless-assignment': 'off',
|
|
'@typescript-eslint/no-unused-expressions': 'off'
|
|
}
|
|
},
|
|
{
|
|
ignores: ['**/dist/**', '**/node_modules/**', '**/site/**', 'temp-*/**', '**/public/**']
|
|
},
|
|
{
|
|
// docmd internal security rules — Phase 0 failsafe for DEVELOPMENT-BENCHMARK.md S1 and S3.
|
|
// Promoted to 'error' after Phase 1 cleans up the surface area.
|
|
plugins: { docmd: docmdRules },
|
|
rules: {
|
|
'docmd/no-unsafe-fs-read': 'warn',
|
|
'docmd/require-verify-client': 'error'
|
|
}
|
|
}
|
|
]; |