Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/view-constructor/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
14 changes: 7 additions & 7 deletions lib/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand All @@ -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
Expand Down
53 changes: 23 additions & 30 deletions lib/express.js
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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 }
})

Expand All @@ -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,
});
2 changes: 1 addition & 1 deletion lib/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
11 changes: 3 additions & 8 deletions lib/response.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand Down
40 changes: 26 additions & 14 deletions lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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`.
Expand All @@ -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`.
Expand All @@ -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".
Expand All @@ -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: {} }
Expand All @@ -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);
};


Expand Down Expand Up @@ -127,7 +127,7 @@ function acceptParams (str) {
* @api private
*/

exports.compileETag = function(val) {
const compileETag = function(val) {
var fn;

if (typeof val === 'function') {
Expand All @@ -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);
Expand All @@ -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') {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -252,7 +252,7 @@ function createETagGenerator (options) {
? Buffer.from(body, encoding)
: body

return etag(buf, options)
return etag_gen(buf, options)
}
}

Expand All @@ -269,3 +269,15 @@ function parseExtendedQueryString(str) {
allowPrototypes: true
});
}

module.exports = {
methods,
etag,
wetag,
normalizeType,
normalizeTypes,
compileETag,
compileQueryParser,
compileTrust,
setCharset
};
16 changes: 3 additions & 13 deletions lib/view.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions test/Route.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
7 changes: 3 additions & 4 deletions test/Router.js
Original file line number Diff line number Diff line change
@@ -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 () {
Expand Down
4 changes: 2 additions & 2 deletions test/app.router.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion test/express.json.js
Original file line number Diff line number Diff line change
@@ -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('..')
Expand Down
2 changes: 1 addition & 1 deletion test/express.raw.js
Original file line number Diff line number Diff line change
@@ -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')
Expand Down
2 changes: 1 addition & 1 deletion test/express.text.js
Original file line number Diff line number Diff line change
@@ -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')
Expand Down
2 changes: 1 addition & 1 deletion test/express.urlencoded.js
Original file line number Diff line number Diff line change
@@ -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('..')
Expand Down
2 changes: 1 addition & 1 deletion test/res.download.js
Original file line number Diff line number Diff line change
Expand Up @@ -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('..');
Expand Down
Loading