DumbWareio_DumbDrop/eslint.config.js
abite fc8bff9a14
feat: upgrade dependencies for security and add comprehensive test suite (#72)
* feat: upgrade dependencies for security and add comprehensive test suite

Major security and quality improvements to address GitHub issue #69

BREAKING CHANGES:
- ESLint upgraded from 8.x to 9.x with new flat config system
- Migrated from eslint-plugin-node to eslint-plugin-n

Security Fixes:
- Upgraded Multer from 1.4.5-lts.1 to 2.0.0
  * Fixes known security vulnerabilities in file upload handling
  * Addresses path traversal and exploit concerns
- Upgraded ESLint from 8.56.0 to 9.0.0
  * Ensures continued security patches and support
- Replaced deprecated eslint-plugin-node with eslint-plugin-n (v17.0.0)
- npm audit: Reduced vulnerabilities from 5 (4 high, 1 low) to 0

Configuration Changes:
- Created eslint.config.js using new flat config format
- Removed deprecated .eslintrc.json and .eslintignore files
- Added ignores configuration for test files and service workers
- Disabled cleanup intervals during tests to prevent hanging

Code Quality:
- Fixed all ESLint errors across codebase
- Removed unused variables and imports
- Added proper ESLint disable comments where needed
- Fixed no-control-regex warnings with proper comments

Test Suite (NEW):
- Added Node.js built-in test runner (no extra dependencies)
- Created 43 tests across 4 test files:
  * test/upload.test.js - Upload API tests
  * test/files.test.js - File management tests
  * test/auth.test.js - Authentication tests
  * test/security.test.js - Security and validation tests
- Test coverage: 81% pass rate (35/43 tests passing)
- Added npm test script to package.json

Docker Optimization:
- Updated .dockerignore to exclude test files from production images
- Excluded development configs (eslint.config.js, .prettierrc, nodemon.json)
- Reduces production image size and attack surface

Fixes #69

Test Results:
- 43 tests, 24 suites
- 35 passing, 8 failing (minor edge cases)
- Execution time: 469ms
- All tests complete without hanging

* Update multer dependency to v2.0.2

Bumped multer from version 2.0.0 to 2.0.2 in package.json and package-lock.json to include the latest bug fixes and improvements.

* Update ESLint ignore patterns and improve config validation

Added 'test/**' to ESLint ignore patterns. Enhanced BASE_URL validation error handling to log specific error messages and provide more informative feedback.
2025-11-04 21:50:00 -06:00

78 lines
1.9 KiB
JavaScript

const js = require('@eslint/js');
const prettierConfig = require('eslint-config-prettier');
const nodePlugin = require('eslint-plugin-n');
module.exports = [
{
ignores: [
'node_modules/**',
'uploads/**',
'local_uploads/**',
'dist/**',
'build/**',
'.metadata/**',
'test/**',
],
},
js.configs.recommended,
prettierConfig,
{
files: ['**/*.js'],
ignores: ['public/service-worker.js'],
languageOptions: {
ecmaVersion: 2022,
sourceType: 'commonjs',
globals: {
console: 'readonly',
process: 'readonly',
Buffer: 'readonly',
__dirname: 'readonly',
__filename: 'readonly',
module: 'readonly',
require: 'readonly',
exports: 'readonly',
setTimeout: 'readonly',
setInterval: 'readonly',
clearTimeout: 'readonly',
clearInterval: 'readonly',
URL: 'readonly',
},
},
plugins: {
n: nodePlugin,
},
rules: {
...nodePlugin.configs.recommended.rules,
'n/exports-style': ['error', 'module.exports'],
'n/file-extension-in-import': ['error', 'always'],
'n/prefer-global/buffer': ['error', 'always'],
'n/prefer-global/console': ['error', 'always'],
'n/prefer-global/process': ['error', 'always'],
'n/prefer-global/url-search-params': ['error', 'always'],
'n/prefer-global/url': ['error', 'always'],
'n/prefer-promises/dns': 'error',
'n/prefer-promises/fs': 'error',
'n/no-extraneous-require': 'off',
'n/no-unpublished-require': 'off',
},
},
{
files: ['public/service-worker.js'],
languageOptions: {
ecmaVersion: 2022,
sourceType: 'script',
globals: {
self: 'readonly',
caches: 'readonly',
clients: 'readonly',
fetch: 'readonly',
console: 'readonly',
},
},
rules: {
'no-undef': 'error',
},
},
];