@@ -22,6 +22,12 @@ var genericParser = require('../..').generic
2222
2323module . exports = urlencoded
2424
25+ /**
26+ * Cache of parser modules.
27+ */
28+
29+ var parsers = Object . create ( null )
30+
2531/**
2632 * Create a middleware to parse urlencoded bodies.
2733 *
@@ -60,18 +66,17 @@ function urlencoded (options) {
6066 * @param {object } options
6167 */
6268
63- function createQueryParser ( options , extended ) {
69+ function extendedparser ( options ) {
6470 var parameterLimit = options . parameterLimit !== undefined
6571 ? options . parameterLimit
6672 : 1000
6773 var charsetSentinel = options . charsetSentinel
6874 var interpretNumericEntities = options . interpretNumericEntities
69- var depth = extended ? ( options . depth !== undefined ? options . depth : 32 ) : 0
75+ var depth = ( options . depth !== undefined ? options . depth : 32 )
7076
7177 if ( isNaN ( parameterLimit ) || parameterLimit < 1 ) {
7278 throw new TypeError ( 'option parameterLimit must be a positive number' )
7379 }
74-
7580 if ( isNaN ( depth ) || depth < 0 ) {
7681 throw new TypeError ( 'option depth must be a zero or a positive number' )
7782 }
@@ -80,6 +85,8 @@ function createQueryParser (options, extended) {
8085 parameterLimit = parameterLimit | 0
8186 }
8287
88+ var parse = parser ( 'qs' )
89+
8390 return function queryparse ( body , encoding ) {
8491 var paramCount = parameterCount ( body , parameterLimit )
8592
@@ -90,11 +97,11 @@ function createQueryParser (options, extended) {
9097 } )
9198 }
9299
93- var arrayLimit = extended ? Math . max ( 100 , paramCount ) : 0
100+ var arrayLimit = Math . max ( 100 , paramCount )
94101
95- debug ( 'parse ' + ( extended ? 'extended ' : '' ) + ' urlencoding')
102+ debug ( 'parse extended urlencoding' )
96103 try {
97- return qs . parse ( body , {
104+ return parse ( body , {
98105 allowPrototypes : true ,
99106 arrayLimit : arrayLimit ,
100107 depth : depth ,
0 commit comments