From 807de76241e818f45ac374e32aef746452774eb9 Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Mon, 24 Nov 2025 00:00:00 +0000 Subject: [PATCH 1/6] standardize exports style --- lib/application.js | 4 +++- lib/express.js | 25 +++++++++++++------------ lib/utils.js | 40 ++++++++++++++++++++++++++-------------- 3 files changed, 42 insertions(+), 27 deletions(-) diff --git a/lib/application.js b/lib/application.js index 838b882aaae..ae1c0d88c20 100644 --- a/lib/application.js +++ b/lib/application.js @@ -37,7 +37,9 @@ var flatten = Array.prototype.flat; * Application prototype. */ -var app = exports = module.exports = {}; +var app = {}; + +module.exports = app; /** * Variable for trust proxy inheritance back-compat diff --git a/lib/express.js b/lib/express.js index 2d502eb54e4..1df33a1ae94 100644 --- a/lib/express.js +++ b/lib/express.js @@ -12,11 +12,12 @@ * Module dependencies. */ -var bodyParser = require('body-parser') +const { json, raw, text, urlencoded } = require('body-parser'); var EventEmitter = require('node:events').EventEmitter; var mixin = require('merge-descriptors'); var proto = require('./application'); var Router = require('router'); +const Route = Router.Route; var req = require('./request'); var res = require('./response'); @@ -24,7 +25,7 @@ var res = require('./response'); * Expose `createApplication()`. */ -exports = module.exports = createApplication; +module.exports = createApplication; /** * Create an express application. @@ -59,23 +60,23 @@ function createApplication() { * Expose the prototypes. */ -exports.application = proto; -exports.request = req; -exports.response = res; +module.exports.application = proto; +module.exports.request = req; +module.exports.response = res; /** * Expose constructors. */ -exports.Route = Router.Route; -exports.Router = Router; +module.exports.Route = Route; +module.exports.Router = Router; /** * Expose middleware */ -exports.json = bodyParser.json -exports.raw = bodyParser.raw -exports.static = require('serve-static'); -exports.text = bodyParser.text -exports.urlencoded = bodyParser.urlencoded +module.exports.json = json; +module.exports.raw = raw; +module.exports.static = require('serve-static'); +module.exports.text = text; +module.exports.urlencoded = urlencoded; diff --git a/lib/utils.js b/lib/utils.js index 4f21e7ef1e3..2f9cba8876e 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -14,7 +14,7 @@ var { METHODS } = require('node:http'); var contentType = require('content-type'); -var etag = require('etag'); +var etag_gen = require('etag'); var mime = require('mime-types') var proxyaddr = require('proxy-addr'); var qs = require('qs'); @@ -26,7 +26,7 @@ const { Buffer } = require('node:buffer'); * A list of lowercased HTTP methods that are supported by Node.js. * @api private */ -exports.methods = METHODS.map((method) => method.toLowerCase()); +const methods = METHODS.map((method) => method.toLowerCase()); /** * Return strong ETag for `body`. @@ -37,7 +37,7 @@ exports.methods = METHODS.map((method) => method.toLowerCase()); * @api private */ -exports.etag = createETagGenerator({ weak: false }) +const etag = createETagGenerator({ weak: false }) /** * Return weak ETag for `body`. @@ -48,7 +48,7 @@ exports.etag = createETagGenerator({ weak: false }) * @api private */ -exports.wetag = createETagGenerator({ weak: true }) +const wetag = createETagGenerator({ weak: true }) /** * Normalize the given `type`, for example "html" becomes "text/html". @@ -58,7 +58,7 @@ exports.wetag = createETagGenerator({ weak: true }) * @api private */ -exports.normalizeType = function(type){ +const normalizeType = function(type){ return ~type.indexOf('/') ? acceptParams(type) : { value: (mime.lookup(type) || 'application/octet-stream'), params: {} } @@ -72,8 +72,8 @@ exports.normalizeType = function(type){ * @api private */ -exports.normalizeTypes = function(types) { - return types.map(exports.normalizeType); +const normalizeTypes = function(types) { + return types.map(normalizeType); }; @@ -127,7 +127,7 @@ function acceptParams (str) { * @api private */ -exports.compileETag = function(val) { +const compileETag = function(val) { var fn; if (typeof val === 'function') { @@ -137,12 +137,12 @@ exports.compileETag = function(val) { switch (val) { case true: case 'weak': - fn = exports.wetag; + fn = wetag; break; case false: break; case 'strong': - fn = exports.etag; + fn = etag; break; default: throw new TypeError('unknown value for etag function: ' + val); @@ -159,7 +159,7 @@ exports.compileETag = function(val) { * @api private */ -exports.compileQueryParser = function compileQueryParser(val) { +const compileQueryParser = function compileQueryParser(val) { var fn; if (typeof val === 'function') { @@ -191,7 +191,7 @@ exports.compileQueryParser = function compileQueryParser(val) { * @api private */ -exports.compileTrust = function(val) { +const compileTrust = function(val) { if (typeof val === 'function') return val; if (val === true) { @@ -222,7 +222,7 @@ exports.compileTrust = function(val) { * @api private */ -exports.setCharset = function setCharset(type, charset) { +const setCharset = function setCharset(type, charset) { if (!type || !charset) { return type; } @@ -252,7 +252,7 @@ function createETagGenerator (options) { ? Buffer.from(body, encoding) : body - return etag(buf, options) + return etag_gen(buf, options) } } @@ -269,3 +269,15 @@ function parseExtendedQueryString(str) { allowPrototypes: true }); } + +module.exports = { + methods, + etag, + wetag, + normalizeType, + normalizeTypes, + compileETag, + compileQueryParser, + compileTrust, + setCharset +}; From b0411c1cf0d57415ca4f27441e6bda19f1477abd Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Mon, 24 Nov 2025 00:00:00 +0000 Subject: [PATCH 2/6] standardize require statements --- lib/application.js | 10 ++++------ lib/express.js | 4 ++-- lib/request.js | 2 +- lib/response.js | 11 +++-------- lib/view.js | 16 +++------------- 5 files changed, 13 insertions(+), 30 deletions(-) diff --git a/lib/application.js b/lib/application.js index ae1c0d88c20..8a4e288bd21 100644 --- a/lib/application.js +++ b/lib/application.js @@ -14,14 +14,12 @@ */ var finalhandler = require('finalhandler'); -var debug = require('debug')('express:application'); +const debugCreate = require('debug'); +const debug = debugCreate('express:application'); var View = require('./view'); var http = require('node:http'); -var methods = require('./utils').methods; -var compileETag = require('./utils').compileETag; -var compileQueryParser = require('./utils').compileQueryParser; -var compileTrust = require('./utils').compileTrust; -var resolve = require('node:path').resolve; +const { methods, compileETag, compileQueryParser, compileTrust } = require('./utils'); +const { resolve } = require('node:path'); var once = require('once') var Router = require('router'); diff --git a/lib/express.js b/lib/express.js index 1df33a1ae94..2151d030b69 100644 --- a/lib/express.js +++ b/lib/express.js @@ -13,11 +13,11 @@ */ const { json, raw, text, urlencoded } = require('body-parser'); -var EventEmitter = require('node:events').EventEmitter; +const { EventEmitter } = require('node:events'); var mixin = require('merge-descriptors'); var proto = require('./application'); var Router = require('router'); -const Route = Router.Route; +const { Route } = Router; var req = require('./request'); var res = require('./response'); diff --git a/lib/request.js b/lib/request.js index 69990da39b6..690cf50dca6 100644 --- a/lib/request.js +++ b/lib/request.js @@ -14,7 +14,7 @@ */ var accepts = require('accepts'); -var isIP = require('node:net').isIP; +const { isIP } = require('node:net'); var typeis = require('type-is'); var http = require('node:http'); var fresh = require('fresh'); diff --git a/lib/response.js b/lib/response.js index 7a2f0ecce56..610c48acec7 100644 --- a/lib/response.js +++ b/lib/response.js @@ -20,17 +20,12 @@ var escapeHtml = require('escape-html'); var http = require('node:http'); var onFinished = require('on-finished'); var mime = require('mime-types') -var path = require('node:path'); -var pathIsAbsolute = require('node:path').isAbsolute; +const { extname, resolve, isAbsolute: pathIsAbsolute } = require('node:path'); var statuses = require('statuses') -var sign = require('cookie-signature').sign; -var normalizeType = require('./utils').normalizeType; -var normalizeTypes = require('./utils').normalizeTypes; -var setCharset = require('./utils').setCharset; +const { sign } = require('cookie-signature'); +const { normalizeType, normalizeTypes, setCharset } = require('./utils'); var cookie = require('cookie'); var send = require('send'); -var extname = path.extname; -var resolve = path.resolve; var vary = require('vary'); const { Buffer } = require('node:buffer'); diff --git a/lib/view.js b/lib/view.js index d66b4a2d89c..26534db1b9c 100644 --- a/lib/view.js +++ b/lib/view.js @@ -13,21 +13,11 @@ * @private */ -var debug = require('debug')('express:view'); -var path = require('node:path'); +const debugCreate = require('debug'); +const debug = debugCreate('express:view'); +const { dirname, basename, extname, join, resolve } = require('node:path'); var fs = require('node:fs'); -/** - * Module variables. - * @private - */ - -var dirname = path.dirname; -var basename = path.basename; -var extname = path.extname; -var join = path.join; -var resolve = path.resolve; - /** * Module exports. * @public From 0b1f51e26e5c3d58c49409972c94b5a715066f05 Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Mon, 24 Nov 2025 00:00:00 +0000 Subject: [PATCH 3/6] consistent variable names --- lib/express.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/express.js b/lib/express.js index 2151d030b69..d3a23d8b9e5 100644 --- a/lib/express.js +++ b/lib/express.js @@ -15,11 +15,11 @@ const { json, raw, text, urlencoded } = require('body-parser'); const { EventEmitter } = require('node:events'); var mixin = require('merge-descriptors'); -var proto = require('./application'); +const application = require('./application'); var Router = require('router'); const { Route } = Router; -var req = require('./request'); -var res = require('./response'); +const request = require('./request'); +const response = require('./response'); /** * Expose `createApplication()`. @@ -40,15 +40,15 @@ function createApplication() { }; mixin(app, EventEmitter.prototype, false); - mixin(app, proto, false); + mixin(app, application, false); // expose the prototype that will get set on requests - app.request = Object.create(req, { + app.request = Object.create(request, { app: { configurable: true, enumerable: true, writable: true, value: app } }) // expose the prototype that will get set on responses - app.response = Object.create(res, { + app.response = Object.create(response, { app: { configurable: true, enumerable: true, writable: true, value: app } }) @@ -60,9 +60,9 @@ function createApplication() { * Expose the prototypes. */ -module.exports.application = proto; -module.exports.request = req; -module.exports.response = res; +module.exports.application = application; +module.exports.request = request; +module.exports.response = response; /** * Expose constructors. From cc3208c14c7af309f036485a107bcec95153cbeb Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Mon, 24 Nov 2025 00:00:00 +0000 Subject: [PATCH 4/6] shorten exports boilerplate --- lib/express.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/express.js b/lib/express.js index d3a23d8b9e5..df33f9b9ff0 100644 --- a/lib/express.js +++ b/lib/express.js @@ -60,23 +60,29 @@ function createApplication() { * Expose the prototypes. */ -module.exports.application = application; -module.exports.request = request; -module.exports.response = response; +Object.assign(module.exports, { + application, + request, + response, +}); /** * Expose constructors. */ -module.exports.Route = Route; -module.exports.Router = Router; +Object.assign(module.exports, { + Route, + Router, +}); /** * Expose middleware */ -module.exports.json = json; -module.exports.raw = raw; -module.exports.static = require('serve-static'); -module.exports.text = text; -module.exports.urlencoded = urlencoded; +Object.assign(module.exports, { + json, + raw, + static: require('serve-static'), + text, + urlencoded, +}); From fe36d6501e0a06e9079e7aa836b7a31d06fafc3a Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Mon, 24 Nov 2025 00:00:00 +0000 Subject: [PATCH 5/6] consolidate exports statement --- lib/express.js | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/lib/express.js b/lib/express.js index df33f9b9ff0..432ade464c0 100644 --- a/lib/express.js +++ b/lib/express.js @@ -57,29 +57,15 @@ function createApplication() { } /** - * Expose the prototypes. + * Expose the other exports as properties on createApplication. */ Object.assign(module.exports, { application, request, response, -}); - -/** - * Expose constructors. - */ - -Object.assign(module.exports, { Route, Router, -}); - -/** - * Expose middleware - */ - -Object.assign(module.exports, { json, raw, static: require('serve-static'), From f92da11467b0dadeda06f0aa13ef629d38536530 Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Mon, 24 Nov 2025 00:00:00 +0000 Subject: [PATCH 6/6] destructuring assignment in tests --- examples/view-constructor/index.js | 2 +- test/Route.js | 5 ++--- test/Router.js | 7 +++---- test/app.router.js | 4 ++-- test/express.json.js | 2 +- test/express.raw.js | 2 +- test/express.text.js | 2 +- test/express.urlencoded.js | 2 +- test/res.download.js | 2 +- test/res.send.js | 4 ++-- test/res.sendFile.js | 2 +- 11 files changed, 16 insertions(+), 18 deletions(-) diff --git a/examples/view-constructor/index.js b/examples/view-constructor/index.js index 3d673670e31..f40e6b26d69 100644 --- a/examples/view-constructor/index.js +++ b/examples/view-constructor/index.js @@ -6,7 +6,7 @@ var express = require('../../'); var GithubView = require('./github-view'); -var md = require('marked').parse; +const { parse } = require('marked'); var app = module.exports = express(); diff --git a/test/Route.js b/test/Route.js index e4b73c7e6ec..d9e7155e786 100644 --- a/test/Route.js +++ b/test/Route.js @@ -2,9 +2,8 @@ var after = require('after'); var assert = require('node:assert') -var express = require('../') - , Route = express.Route - , methods = require('../lib/utils').methods +const { Route } = require('../'); +const { methods } = require('../lib/utils'); describe('Route', function(){ it('should work without handlers', function(done) { diff --git a/test/Router.js b/test/Router.js index 7bac7159b04..431a80a069d 100644 --- a/test/Router.js +++ b/test/Router.js @@ -1,10 +1,9 @@ 'use strict' var after = require('after'); -var express = require('../') - , Router = express.Router - , methods = require('../lib/utils').methods - , assert = require('node:assert'); +const { Router } = require('../'); +const { methods } = require('../lib/utils'); +const assert = require('node:assert'); describe('Router', function () { it('should return a function with router methods', function () { diff --git a/test/app.router.js b/test/app.router.js index 6e7be684e55..0bfc82d92d8 100644 --- a/test/app.router.js +++ b/test/app.router.js @@ -4,9 +4,9 @@ var after = require('after'); var express = require('../') , request = require('supertest') , assert = require('node:assert') - , methods = require('../lib/utils').methods; + , { methods } = require('../lib/utils'); -var shouldSkipQuery = require('./support/utils').shouldSkipQuery +const { shouldSkipQuery } = require('./support/utils') describe('app.router', function () { it('should restore req.params after leaving router', function (done) { diff --git a/test/express.json.js b/test/express.json.js index 28746bfebda..59c2b7731e9 100644 --- a/test/express.json.js +++ b/test/express.json.js @@ -1,7 +1,7 @@ 'use strict' var assert = require('node:assert') -var AsyncLocalStorage = require('node:async_hooks').AsyncLocalStorage +const { AsyncLocalStorage } = require('node:async_hooks'); const { Buffer } = require('node:buffer'); var express = require('..') diff --git a/test/express.raw.js b/test/express.raw.js index 5576e225283..df0c4bb8308 100644 --- a/test/express.raw.js +++ b/test/express.raw.js @@ -1,7 +1,7 @@ 'use strict' var assert = require('node:assert') -var AsyncLocalStorage = require('node:async_hooks').AsyncLocalStorage +const { AsyncLocalStorage } = require('node:async_hooks'); var express = require('..') var request = require('supertest') diff --git a/test/express.text.js b/test/express.text.js index e96cc5efe52..2130b86a42e 100644 --- a/test/express.text.js +++ b/test/express.text.js @@ -1,7 +1,7 @@ 'use strict' var assert = require('node:assert') -var AsyncLocalStorage = require('node:async_hooks').AsyncLocalStorage +const { AsyncLocalStorage } = require('node:async_hooks'); const { Buffer } = require('node:buffer'); var express = require('..') var request = require('supertest') diff --git a/test/express.urlencoded.js b/test/express.urlencoded.js index f4acf231989..ac2f0f6e5c8 100644 --- a/test/express.urlencoded.js +++ b/test/express.urlencoded.js @@ -1,7 +1,7 @@ 'use strict' var assert = require('node:assert') -var AsyncLocalStorage = require('node:async_hooks').AsyncLocalStorage +const { AsyncLocalStorage } = require('node:async_hooks'); const { Buffer } = require('node:buffer'); var express = require('..') diff --git a/test/res.download.js b/test/res.download.js index e9966007eba..d13adb31bc3 100644 --- a/test/res.download.js +++ b/test/res.download.js @@ -2,7 +2,7 @@ var after = require('after'); var assert = require('node:assert') -var AsyncLocalStorage = require('node:async_hooks').AsyncLocalStorage +const { AsyncLocalStorage } = require('node:async_hooks'); const { Buffer } = require('node:buffer'); var express = require('..'); diff --git a/test/res.send.js b/test/res.send.js index 8547b77648b..469de3be6a4 100644 --- a/test/res.send.js +++ b/test/res.send.js @@ -3,11 +3,11 @@ var assert = require('node:assert') const { Buffer } = require('node:buffer'); var express = require('..'); -var methods = require('../lib/utils').methods; +const { methods } = require('../lib/utils'); var request = require('supertest'); var utils = require('./support/utils'); -var shouldSkipQuery = require('./support/utils').shouldSkipQuery +const { shouldSkipQuery } = require('./support/utils') describe('res', function(){ describe('.send()', function(){ diff --git a/test/res.sendFile.js b/test/res.sendFile.js index 16eea79761e..392c58c00bf 100644 --- a/test/res.sendFile.js +++ b/test/res.sendFile.js @@ -2,7 +2,7 @@ var after = require('after'); var assert = require('node:assert') -var AsyncLocalStorage = require('node:async_hooks').AsyncLocalStorage +const { AsyncLocalStorage } = require('node:async_hooks'); const { Buffer } = require('node:buffer'); var express = require('../')