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/lib/application.js b/lib/application.js index 838b882aaae..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'); @@ -37,7 +35,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..432ade464c0 100644 --- a/lib/express.js +++ b/lib/express.js @@ -12,19 +12,20 @@ * Module dependencies. */ -var bodyParser = require('body-parser') -var EventEmitter = require('node:events').EventEmitter; +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'); -var req = require('./request'); -var res = require('./response'); +const { Route } = Router; +const request = require('./request'); +const response = require('./response'); /** * Expose `createApplication()`. */ -exports = module.exports = createApplication; +module.exports = createApplication; /** * Create an express application. @@ -39,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 } }) @@ -56,26 +57,18 @@ function createApplication() { } /** - * Expose the prototypes. + * Expose the other exports as properties on createApplication. */ -exports.application = proto; -exports.request = req; -exports.response = res; - -/** - * Expose constructors. - */ - -exports.Route = Router.Route; -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 +Object.assign(module.exports, { + application, + request, + response, + Route, + Router, + json, + raw, + static: require('serve-static'), + text, + urlencoded, +}); 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/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 +}; 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 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('../')