fix: harden repository content and improve access recovery

Sandbox executable MIME aliases, enforce strict Mermaid rendering, and add security regression coverage. Upgrade vulnerable dependencies with archive compatibility checks and Node 22/24 CI. Make repository restoration atomic and provide actionable viewer errors with retry controls.
This commit is contained in:
Thomas Durieux committed 2026-11-02 05:50:34 +00:00
1 parent 772e40debd
commit a301c46a94
21 files changed
+1048 -1051

No files matched your search

+22 -18
View File
@@ -41,12 +41,12 @@
"build"
],
"dependencies": {
"@aws-sdk/client-s3": "^3.1147.0",
"@aws-sdk/lib-storage": "^3.1147.0",
"@aws-sdk/client-s3": "^3.1161.0",
"@aws-sdk/lib-storage": "^3.1161.0",
"@mongodb-js/zstd": "^1.2.2",
"@octokit/plugin-throttling": "^8.2.0",
"@octokit/rest": "^20.1.2",
"@smithy/node-http-handler": "^4.12.1",
"@smithy/node-http-handler": "^4.14.1",
"archiver": "^7.0.1",
"bullmq": "^5.81.5",
"cacheable-lookup": "^6.1.0",
@@ -54,9 +54,9 @@
"connect-redis": "^10.0.0",
"crypto-js": "^4.2.0",
"decompress-stream-to-s3": "^2.1.1",
"dotenv": "^18.0.6",
"express": "^5.2.1",
"express-rate-limit": "^8.7.1",
"dotenv": "^18.0.9",
"express": "^5.3.0",
"express-rate-limit": "^8.7.2",
"express-session": "^1.19.0",
"express-slow-down": "^3.1.1",
"got": "^11.8.6",
@@ -64,15 +64,15 @@
"isbinaryfile": "^5.0.7",
"marked": "^15.0.12",
"mime-types": "^3.0.2",
"mongoose": "^7.8.12",
"node-schedule": "^2.1.1",
"mongoose": "^7.8.13",
"node-schedule": "^2.1.2",
"parse-github-url": "^1.0.4",
"passport": "^0.7.0",
"passport-github2": "^0.1.12",
"rate-limit-redis": "^6.0.1",
"re2js": "^2.8.6",
"rate-limit-redis": "^6.0.2",
"re2js": "^2.9.1",
"redis": "^5.12.1",
"sanitize-html": "^2.18.0",
"sanitize-html": "^2.18.1",
"ts-custom-error": "^3.3.1",
"unzip-stream": "^0.3.4"
},
@@ -94,23 +94,27 @@
"c8": "^12.0.0",
"chai": "^4.5.0",
"esbuild": "^0.28.2",
"eslint": "^10.12.0",
"eslint": "^10.14.0",
"gulp-clean-css": "^4.3.0",
"gulp-concat": "^2.6.1",
"gulp-uglify": "^3.0.2",
"http-proxy-middleware": "^4.2.0",
"http-proxy-middleware": "^4.2.1",
"jsdom": "^29.1.1",
"knip": "^6.40.0",
"knip": "^6.44.1",
"mocha": "^12.0.3",
"ordered-read-streams": "^2.0.0",
"ts-node": "^10.9.2",
"typescript": "^5.9.3",
"typescript-eslint": "^8.71.1",
"vue": "^3.5.43",
"vue-router": "^4.6.4",
"vinyl-fs": "^4.0.2"
"typescript-eslint": "^8.72.1",
"vinyl-fs": "^4.0.2",
"vue": "^3.5.44",
"vue-router": "^4.6.4"
},
"engines": {
"node": "^22.15.0 || ^24.0.0 || >=26.0.0"
},
"overrides": {
"glob": "^14.0.2",
"minimatch": "^11.0.1"
}
}