diff --git a/package-lock.json b/package-lock.json index 0759bc1e9ef..aa62152c299 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19043,7 +19043,7 @@ "express": "^4.22.2", "fresh": "^0.5.2", "graceful-fs": "^4.2.11", - "mime-types": "^2.1.35", + "mime-types": "^3.0.2", "parseurl": "^1.3.3", "portscanner": "^2.2.0", "router": "^2.2.0", @@ -19067,6 +19067,22 @@ "node": "^22.20.0 || >=24.0.0", "npm": ">= 8" } + }, + "packages/server/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } } } } diff --git a/packages/server/lib/middleware/serveIndex/serveIndex.cjs b/packages/server/lib/middleware/serveIndex/serveIndex.cjs index ffc1f0e0745..eaedf522f82 100644 --- a/packages/server/lib/middleware/serveIndex/serveIndex.cjs +++ b/packages/server/lib/middleware/serveIndex/serveIndex.cjs @@ -1,10 +1,10 @@ /* * serve-index * - * Version: 1.9.1 + * Version: 1.9.2 * * Author: Douglas Christopher Wilson - * Web: https://github.com/expressjs/serve-index/tree/20e83c893b701c3a117a0f6836be0f5a818bb925 + * Web: https://github.com/expressjs/serve-index/tree/6f86a185446a37a99b2cd9694ce93df996aeba6f * * Licensed under * MIT License, see "/LICENSES/MIT.txt" @@ -150,7 +150,7 @@ function iconLookup(filename) { // try by mime type if (icons[mimetype]) { return { - className: "icon-" + mimetype.replace("/", "-"), + className: "icon-" + mimetype.replace("/", "-").replace("+", "_"), fileName: icons[mimetype] }; } @@ -305,6 +305,8 @@ const icons = { "image/svg+xml": "page_white_vector.png", "text/css": "page_white_code.png", "text/html": "page_white_code.png", + // mime-types resolves ".js"/".mjs" to "text/javascript"; keep the JS-specific icon + "text/javascript": "page_white_code_red.png", "text/less": "page_white_code.png", // other, extension-specific icons diff --git a/packages/server/package.json b/packages/server/package.json index e69da3ce6a4..688caefcfc9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -97,7 +97,7 @@ "express": "^4.22.2", "fresh": "^0.5.2", "graceful-fs": "^4.2.11", - "mime-types": "^2.1.35", + "mime-types": "^3.0.2", "parseurl": "^1.3.3", "portscanner": "^2.2.0", "router": "^2.2.0", diff --git a/packages/server/test/lib/server/main.js b/packages/server/test/lib/server/main.js index 8e2e0849f0c..029efb9fa19 100644 --- a/packages/server/test/lib/server/main.js +++ b/packages/server/test/lib/server/main.js @@ -70,7 +70,7 @@ test("Get resource from application.a with replaced version placeholder (/versio throw new Error(res.error); } t.is(res.statusCode, 200, "Correct HTTP status code"); - t.regex(res.headers["content-type"], /application\/javascript/, "Correct content type"); + t.regex(res.headers["content-type"], /text\/javascript/, "Correct content type"); // The 'minify' task rewrites the served file and appends a sourceMappingURL t.is(res.text, "console.log(`1.0.0`);\n" + SOURCE_MAPPING_URL + "=versionTest.js.map", "Correct response"); }); diff --git a/packages/server/test/lib/server/middleware/serveIndex.js b/packages/server/test/lib/server/middleware/serveIndex.js index ea700f6b8f9..4bc693ce0ab 100644 --- a/packages/server/test/lib/server/middleware/serveIndex.js +++ b/packages/server/test/lib/server/middleware/serveIndex.js @@ -47,7 +47,7 @@ test.serial("serveIndex default", async (t) => { "1.00 KB")); t.regex(content, RegExp( - "
  • myFile2.js" + "1.00 MB")); t.regex(content, @@ -115,7 +115,7 @@ test.serial("serveIndex no hidden", async (t) => { "1.00 KB")); t.regex(content, RegExp( - "
  • myFile2.js" + "1.00 MB")); t.regex(content, @@ -210,7 +210,7 @@ test.serial("serveIndex no details", async (t) => { "title=\"myFile1.meh\">myFile1.meh" + "1.00 KB")); t.regex(content, RegExp( - "
  • myFile2.js" + "1.00 MB")); t.regex(content, RegExp(