Skip to content

Commit e284612

Browse files
author
benjaminPla
committed
remove array-flatten dependency, no longer necessary
replaced array-flatten dependency with the new flat() method from JavaScript, which is supported in Node.js version 11.0.0 and above. This simplifies the code and reduces the number of dependencies. Proposed change for Express.js v5.
1 parent 3531987 commit e284612

File tree

6 files changed

+4
-35
lines changed

6 files changed

+4
-35
lines changed

lib/application.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ var compileETag = require('./utils').compileETag;
2525
var compileQueryParser = require('./utils').compileQueryParser;
2626
var compileTrust = require('./utils').compileTrust;
2727
var deprecate = require('depd')('express');
28-
var flatten = require('array-flatten');
2928
var merge = require('utils-merge');
3029
var resolve = require('path').resolve;
3130
var setPrototypeOf = require('setprototypeof')
@@ -211,7 +210,7 @@ app.use = function use(fn) {
211210
}
212211
}
213212

214-
var fns = flatten(slice.call(arguments, offset));
213+
var fns = slice.call(arguments, offset).flat(Infinity)
215214

216215
if (fns.length === 0) {
217216
throw new TypeError('app.use() requires a middleware function')

lib/router/index.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ var methods = require('methods');
1919
var mixin = require('utils-merge');
2020
var debug = require('debug')('express:router');
2121
var deprecate = require('depd')('express');
22-
var flatten = require('array-flatten');
2322
var parseUrl = require('parseurl');
2423
var setPrototypeOf = require('setprototypeof')
2524

@@ -456,7 +455,7 @@ proto.use = function use(fn) {
456455
}
457456
}
458457

459-
var callbacks = flatten(slice.call(arguments, offset));
458+
var callbacks = slice.call(arguments, offset).flat(Infinity);
460459

461460
if (callbacks.length === 0) {
462461
throw new TypeError('Router.use() requires a middleware function')

lib/router/route.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
*/
1515

1616
var debug = require('debug')('express:router:route');
17-
var flatten = require('array-flatten');
1817
var Layer = require('./layer');
1918
var methods = require('methods');
2019

@@ -182,7 +181,7 @@ Route.prototype.dispatch = function dispatch(req, res, done) {
182181
*/
183182

184183
Route.prototype.all = function all() {
185-
var handles = flatten(slice.call(arguments));
184+
var handles = slice.call(arguments).flat(Infinity);
186185

187186
for (var i = 0; i < handles.length; i++) {
188187
var handle = handles[i];
@@ -205,7 +204,7 @@ Route.prototype.all = function all() {
205204

206205
methods.forEach(function(method){
207206
Route.prototype[method] = function(){
208-
var handles = flatten(slice.call(arguments));
207+
var handles = slice.call(arguments).flat(Infinity);
209208

210209
for (var i = 0; i < handles.length; i++) {
211210
var handle = handles[i];

lib/utils.js

-12
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ var Buffer = require('safe-buffer').Buffer
1616
var contentDisposition = require('content-disposition');
1717
var contentType = require('content-type');
1818
var deprecate = require('depd')('express');
19-
var flatten = require('array-flatten');
2019
var mime = require('send').mime;
2120
var etag = require('etag');
2221
var proxyaddr = require('proxy-addr');
@@ -59,17 +58,6 @@ exports.isAbsolute = function(path){
5958
if ('\\\\' === path.substring(0, 2)) return true; // Microsoft Azure absolute path
6059
};
6160

62-
/**
63-
* Flatten the given `arr`.
64-
*
65-
* @param {Array} arr
66-
* @return {Array}
67-
* @api private
68-
*/
69-
70-
exports.flatten = deprecate.function(flatten,
71-
'utils.flatten: use array-flatten npm module instead');
72-
7361
/**
7462
* Normalize the given `type`, for example "html" becomes "text/html".
7563
*

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
],
3030
"dependencies": {
3131
"accepts": "~1.3.8",
32-
"array-flatten": "1.1.1",
3332
"body-parser": "1.20.2",
3433
"content-disposition": "0.5.4",
3534
"content-type": "~1.0.4",

test/utils.js

-15
Original file line numberDiff line numberDiff line change
@@ -86,18 +86,3 @@ describe('utils.isAbsolute()', function(){
8686
assert(!utils.isAbsolute('foo/bar'));
8787
})
8888
})
89-
90-
describe('utils.flatten(arr)', function(){
91-
it('should flatten an array', function(){
92-
var arr = ['one', ['two', ['three', 'four'], 'five']];
93-
var flat = utils.flatten(arr)
94-
95-
assert.strictEqual(flat.length, 5)
96-
assert.strictEqual(flat[0], 'one')
97-
assert.strictEqual(flat[1], 'two')
98-
assert.strictEqual(flat[2], 'three')
99-
assert.strictEqual(flat[3], 'four')
100-
assert.strictEqual(flat[4], 'five')
101-
assert.ok(flat.every(function (v) { return typeof v === 'string' }))
102-
})
103-
})

0 commit comments

Comments
 (0)