Files
NewTube/package.json
T
bruno f443a470f9
CI / build-and-test (push) Successful in 14m6s
feat: détection short par orientation vidéo
Règle partagée front/back : flag natif, verticale stricte (ratio ≤ 0.8, ≤ 90 s), verticale sans durée jamais short, repli durée (70 YT / 75 autres). Dimensions alimentées par Dailymotion/Odysee/PeerTube, flag maison Rumble supprimé, condition innertube morte simplifiée. Shorts : langues utilisateur (UI + transcripts) via relevanceLanguage/languageOneOf/Twitch language, son activé par défaut.
2026-09-29 12:17:10 -04:00

70 lines
3.2 KiB
JSON

{
"name": "newtube",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "ng serve",
"build": "ng build",
"preview": "ng serve --configuration=production",
"api": "node --env-file=.env.local ./server/index.mjs",
"api:watch": "node --watch --env-file=.env.local ./server/index.mjs",
"mcp": "node ./mcp/server.mjs",
"mcp:dev": "node --env-file=.env.local ./mcp/server.mjs",
"test:mcp": "node --test ./mcp/server.test.mjs ./mcp/tools.test.mjs",
"test:api": "node --test ./server/tests/api_coverage.test.mjs ./server/tests/api_coverage2.test.mjs",
"test:playlists": "node ./server/tests/playlist_visibility.test.mjs",
"test:preferences": "node ./server/tests/preferences.test.mjs",
"test:search-e2e": "node ./server/tests/search.e2e.test.mjs",
"test:telemetry": "node ./server/tests/telemetry.test.mjs",
"test:downloads": "node ./server/tests/download_jobs.test.mjs",
"test:subscriptions": "node --loader ts-node/esm --experimental-specifier-resolution=node src/services/subscriptions.service.spec.ts",
"test:search": "node --loader ts-node/esm --experimental-specifier-resolution=node src/app/search/search.service.spec.ts && node --loader ts-node/esm --experimental-specifier-resolution=node src/app/search/search-components.spec.ts",
"test:suggest": "node --loader ts-node/esm --experimental-specifier-resolution=node src/app/search/suggest.spec.ts && node ./server/tests/suggest.test.mjs",
"test:filters": "node ./server/tests/search-filters.test.mjs",
"test:transcript": "node --test server/tests/transcript.test.mjs",
"test:history": "node server/tests/history_filters.test.mjs",
"test:highlight": "node --loader ts-node/esm --experimental-specifier-resolution=node src/components/account/history/highlight.util.spec.ts",
"test:kind": "node --loader ts-node/esm --experimental-specifier-resolution=node src/app/shared/utils/video-kind.spec.ts",
"test:ytscrape": "node server/tests/youtube-scrape.test.mjs",
"test:ytinnertube": "node server/tests/youtube-innertube.test.mjs",
"ytdlp:update": "yt-dlp -U || python3 -m yt_dlp -U || echo \"yt-dlp update: installez yt-dlp puis relancez\""
},
"dependencies": {
"@angular/build": "^20.1.0",
"@angular/cdk": "^20.2.4",
"@angular/cli": "^20.1.0",
"@angular/common": "^20.1.0",
"@angular/compiler": "^20.1.0",
"@angular/compiler-cli": "^20.1.0",
"@angular/core": "^20.1.0",
"@angular/forms": "^20.1.0",
"@angular/platform-browser": "^20.1.0",
"@angular/platform-browser-dynamic": "~20.2.4",
"@angular/router": "^20.1.6-0",
"@google/genai": "latest",
"axios": "^1.12.1",
"bcryptjs": "^2.4.3",
"better-sqlite3": "^9.6.0",
"cheerio": "^1.1.2",
"cookie-parser": "^1.4.6",
"cors": "^2.8.5",
"express": "^4.19.2",
"express-rate-limit": "^7.1.5",
"ffmpeg-static": "^5.2.0",
"helmet": "^7.1.0",
"jsonwebtoken": "^9.0.2",
"rxjs": "^7.8.2",
"tailwindcss": "latest",
"youtube-dl-exec": "^3.0.0",
"youtubei.js": "18.1.0",
"zone.js": "~0.15.1"
},
"devDependencies": {
"@types/node": "^22.14.0",
"ts-node": "^10.9.2",
"typescript": "~5.8.2",
"vite": "^6.2.0"
}
}