Skip to content

Commit f5510ef

Browse files
dee-kapdougwilson
authored andcommitted
Use array-flatten module for flattening arrays
closes #2624
1 parent bc58db8 commit f5510ef

File tree

6 files changed

+11
-18
lines changed

6 files changed

+11
-18
lines changed

History.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ unreleased
22
==========
33

44
* Fix issue where `next('route')` in `app.param` would incorrectly skip values
5+
* Use `array-flatten` module for flattening arrays
56

67
4.12.4 / 2015-05-17
78
===================

lib/application.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
*/
1313

1414
var finalhandler = require('finalhandler');
15-
var flatten = require('./utils').flatten;
1615
var Router = require('./router');
1716
var methods = require('methods');
1817
var middleware = require('./middleware/init');
@@ -24,6 +23,7 @@ var compileETag = require('./utils').compileETag;
2423
var compileQueryParser = require('./utils').compileQueryParser;
2524
var compileTrust = require('./utils').compileTrust;
2625
var deprecate = require('depd')('express');
26+
var flatten = require('array-flatten');
2727
var merge = require('utils-merge');
2828
var resolve = require('path').resolve;
2929
var slice = Array.prototype.slice;

lib/router/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ var methods = require('methods');
99
var mixin = require('utils-merge');
1010
var debug = require('debug')('express:router');
1111
var deprecate = require('depd')('express');
12+
var flatten = require('array-flatten');
1213
var parseUrl = require('parseurl');
13-
var utils = require('../utils');
1414

1515
/**
1616
* Module variables.
@@ -436,7 +436,7 @@ proto.use = function use(fn) {
436436
}
437437
}
438438

439-
var callbacks = utils.flatten(slice.call(arguments, offset));
439+
var callbacks = flatten(slice.call(arguments, offset));
440440

441441
if (callbacks.length === 0) {
442442
throw new TypeError('Router.use() requires middleware functions');

lib/router/route.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
*/
44

55
var debug = require('debug')('express:router:route');
6+
var flatten = require('array-flatten');
67
var Layer = require('./layer');
78
var methods = require('methods');
8-
var utils = require('../utils');
99

1010
/**
1111
* Expose `Route`.
@@ -141,7 +141,7 @@ Route.prototype.dispatch = function(req, res, done){
141141
*/
142142

143143
Route.prototype.all = function(){
144-
var callbacks = utils.flatten([].slice.call(arguments));
144+
var callbacks = flatten([].slice.call(arguments));
145145
callbacks.forEach(function(fn) {
146146
if (typeof fn !== 'function') {
147147
var type = {}.toString.call(fn);
@@ -161,7 +161,7 @@ Route.prototype.all = function(){
161161

162162
methods.forEach(function(method){
163163
Route.prototype[method] = function(){
164-
var callbacks = utils.flatten([].slice.call(arguments));
164+
var callbacks = flatten([].slice.call(arguments));
165165

166166
callbacks.forEach(function(fn) {
167167
if (typeof fn !== 'function') {

lib/utils.js

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
var contentDisposition = require('content-disposition');
1414
var contentType = require('content-type');
1515
var deprecate = require('depd')('express');
16+
var flatten = require('array-flatten');
1617
var mime = require('send').mime;
1718
var basename = require('path').basename;
1819
var etag = require('etag');
@@ -76,18 +77,8 @@ exports.isAbsolute = function(path){
7677
* @api private
7778
*/
7879

79-
exports.flatten = function(arr, ret){
80-
ret = ret || [];
81-
var len = arr.length;
82-
for (var i = 0; i < len; ++i) {
83-
if (Array.isArray(arr[i])) {
84-
exports.flatten(arr[i], ret);
85-
} else {
86-
ret.push(arr[i]);
87-
}
88-
}
89-
return ret;
90-
};
80+
exports.flatten = deprecate.function(flatten,
81+
'utils.flatten: use array-flatten npm module instead');
9182

9283
/**
9384
* Normalize the given `type`, for example "html" becomes "text/html".

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
],
2929
"dependencies": {
3030
"accepts": "~1.2.7",
31+
"array-flatten": "1.1.0",
3132
"content-disposition": "0.5.0",
3233
"content-type": "~1.0.1",
3334
"cookie": "0.1.2",

0 commit comments

Comments
 (0)