v1.9.0: Full diagnostic sweep - 42 issues fixed

Critical fixes (7):
- Added global Express error handler (returns JSON instead of HTML)
- Removed caching from random endpoint (defeated purpose)
- Renamed share.jpg to share.png (MIME type mismatch)
- Fixed OG image dimensions (630 → 601)
- Fixed manifest.json icon sizes (192x192 → 512x512)
- Fixed implicit global event variable in console
- Added 9 missing endpoints to docs/endpoints.md

High fixes (12):
- Imported version from package.json (no hardcoded drift)
- Added dynamic endpoint count in stats
- Added input sanitization for mapper API (SSRF prevention)
- Added homepage caching (reduced 5 duplicate HTTP requests)
- Added rate limiting (100 requests/minute per IP)
- Added rel="noopener noreferrer" to all target="_blank" links
- Fixed trailing slash inconsistency in console
- Added noindex meta to 404.html
- Fixed docs/architecture.md controller filenames and dependency versions
- Fixed README.md dependency versions
- Added 12 missing endpoint tests

Medium fixes (22):
- Added escapeHtml helper for error messages
- Consistent favicon across all pages
- Added meta descriptions to privacy.html and tos.html
- Added OG/Twitter meta tags to privacy.html and tos.html
- Added aria-label to playground inputs
- Added aria-hidden to decorative SVGs
- Synced Twitter description with OG description
- Fixed robots.txt to disallow /api
- Added PWA fields to manifest.json
- Removed 5 unused imports
- Removed unused cookie-parser dependency
- Fixed inconsistent error handling in extractors
- Fixed resolvedSlug returning numeric ID
- Added /watch endpoint to streaming docs
- Improved test assertions and status code validation
- Deleted orphaned og-image.svg and logo.png

Low fixes (11):
- Removed redundant try/catch from extractPages
- Added max size eviction to cache
- Added cache key sorting in filter controller
- Added author meta tag
- Fixed favicon.svg font

Version bumped to 1.9.0
This commit is contained in:
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
2026-06-09 06:00:37 +05:30
parent 84c4877669
commit 100b9f9414
30 changed files with 404 additions and 139 deletions
+144
View File
@@ -454,3 +454,147 @@ curl "https://anikototvapi.vercel.app/api/filter?keyword=&genre[]=1"
```
Returns filtered and paginated anime list.
---
## GET /watch
Get full watch page data including servers, trending, and recommended anime.
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | Anime slug (e.g., `one-piece-100`) |
| `ep` | number | Yes | Episode number |
```bash
curl "https://anikototvapi.vercel.app/api/watch?slug=one-piece-100&ep=1"
```
Returns episode data with server list, trending sidebar, and recommended anime.
---
## GET /search/suggest
Get search autocomplete suggestions.
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| `keyword` | string | Yes | Search keyword |
```bash
curl "https://anikototvapi.vercel.app/api/search/suggest?keyword=naruto"
```
Returns array of suggestion objects with title, ID, and image.
---
## GET /episodes-ajax/:id
Get AJAX-loaded episode list for an anime.
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | Yes | Anime ID or slug |
```bash
curl "https://anikototvapi.vercel.app/api/episodes-ajax/one-piece-100"
```
Returns episode list with filters, ranges, and server IDs.
---
## GET /mapper-servers
Get cross-server mapping for gogoanime/anivibe servers.
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| `malId` | number | Yes | MyAnimeList ID |
| `slug` | string | Yes | Anime slug |
| `timestamp` | number | Yes | Timestamp |
```bash
curl "https://anikototvapi.vercel.app/api/mapper-servers?malId=21&slug=one-piece-100&timestamp=1234567890"
```
Returns mapped server URLs for gogoanime/anivibe.
---
## GET /newly-added
Get newly added anime series.
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | number | No | Page number (default: 1) |
```bash
curl "https://anikototvapi.vercel.app/api/newly-added"
```
Returns paginated list of newly added anime.
---
## GET /trending-sidebar
Get trending sidebar widget data.
```bash
curl "https://anikototvapi.vercel.app/api/trending-sidebar"
```
Returns trending anime for sidebar display.
---
## GET /seasons/:id
Get season information for an anime.
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | Yes | Anime slug |
```bash
curl "https://anikototvapi.vercel.app/api/seasons/one-piece-100"
```
Returns season data including related seasons.
---
## GET /watch-order/:id
Get recommended watch order for an anime.
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | Yes | Anime slug |
```bash
curl "https://anikototvapi.vercel.app/api/watch-order/one-piece-100"
```
Returns recommended watch order sequence.
---
## GET /az-list/:letter
Get anime alphabetically by letter.
| Param | Type | Required | Description |
|-------|------|----------|-------------|
| `letter` | string | Yes | Letter (a-z, or # for numbers) |
| `page` | number | No | Page number (default: 1) |
```bash
curl "https://anikototvapi.vercel.app/api/az-list/a"
```
Returns paginated list of anime starting with the specified letter.