mirror of
https://github.com/Shineii86/AniKotoAPI.git
synced 2026-10-22 02:45:10 +00:00
feat: v2.2.0 — Modularize codebase, unify mirror fallback, harden security
Major Changes: - Add shared parseListItem.helper.js for unified list parsing (DRY) - Migrate all 22 extractors to use fetchWithMirror() for consistent mirror fallback - Remove unused cors dependency (custom CORS middleware handles it) - Fix middleware ordering: timeout now registered before routes - Fix CORS to allow POST for /api/mirrors/reset endpoint - Remove redundant cache check in homeInfo extractor New Features: - Request ID tracking (X-Request-Id header) for debugging - Graceful shutdown handling (SIGTERM/SIGINT) with 10s timeout - CSP and HSTS security headers - Rate limiter cleanup interval (every 5 min) to prevent memory leak - Request body size limits (10kb) via express.json() Security: - Content-Security-Policy header for XSS protection - Strict-Transport-Security for HTTPS enforcement - X-Permitted-Cross-Domain-Policies: none - Body size limits to prevent large payload attacks Code Quality: - All files follow strict documentation style (box headers, section separators, feature markers, JSDoc params/returns, inline notes, module footers) - Eliminated ~200 lines of duplicated code across 8+ extractors - Updated CHANGELOG.md with comprehensive change history
This commit is contained in:
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [2.2.0] - 2026-07-28
|
||||
|
||||
### Added
|
||||
- **Shared Helper**: New `parseListItem.helper.js` for unified anime list item parsing across all extractors
|
||||
- **Graceful Shutdown**: Server now handles SIGTERM/SIGINT signals for clean shutdown
|
||||
- **Request ID Tracking**: Every request gets a unique `X-Request-Id` header for debugging
|
||||
- **CSP Headers**: Added `Content-Security-Policy` header for XSS protection
|
||||
- **HSTS Headers**: Added `Strict-Transport-Security` header for HTTPS enforcement
|
||||
- **Body Size Limits**: Added `express.json({ limit: '10kb' })` to prevent large payload attacks
|
||||
- **Rate Limiter Cleanup**: Automatic cleanup of stale IP entries every 5 minutes
|
||||
- **Uncaught Exception Handler**: Added handler for uncaught exceptions with graceful shutdown
|
||||
|
||||
### Changed
|
||||
- **Mirror Fallback**: All 22 extractors now use `fetchWithMirror()` for consistent mirror fallback
|
||||
- **Code Deduplication**: Extracted shared list item parsing logic into `parseListItem.helper.js`, eliminating ~200 lines of duplicated code across 8+ extractors
|
||||
- **Documentation**: All files follow strict documentation style — box-style headers, section separators, feature markers, JSDoc params/returns, inline notes, and module footers
|
||||
- **Version**: Bumped to 2.2.0
|
||||
- **Package**: Removed unused `cors` dependency (custom CORS middleware used instead)
|
||||
|
||||
### Fixed
|
||||
- **Middleware Order**: Moved request timeout middleware before routes to properly catch timeouts
|
||||
- **CORS POST**: Fixed CORS to allow POST method for `/api/mirrors/reset` endpoint
|
||||
- **HomeInfo Cache**: Removed redundant cache check in `homeInfo.extractor.js` (controller already handles caching)
|
||||
- **Error Handler**: Added `res.headersSent` check to prevent double response on timeout
|
||||
- **Unused Imports**: Removed unused `cheerio`, `axios`, `headers` imports from extractors that now use `fetchWithMirror`
|
||||
|
||||
### Removed
|
||||
- **Unused Dependency**: Removed `cors` package from dependencies (custom middleware handles CORS)
|
||||
- **Dead Code**: Removed redundant cache check in `homeInfo.extractor.js`
|
||||
|
||||
## [2.1.0] - 2026-07-05
|
||||
|
||||
### Changed
|
||||
|
||||
Reference in New Issue
Block a user