forked from dachan/dach
		
	a lot of changes
This commit is contained in:
		
							
								
								
									
										657
									
								
								node_modules/body-parser/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										657
									
								
								node_modules/body-parser/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,657 @@
 | 
			
		||||
1.20.1 / 2022-10-06
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@6.11.0
 | 
			
		||||
  * perf: remove unnecessary object clone
 | 
			
		||||
 | 
			
		||||
1.20.0 / 2022-04-02
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * Fix error message for json parse whitespace in `strict`
 | 
			
		||||
  * Fix internal error when inflated body exceeds limit
 | 
			
		||||
  * Prevent loss of async hooks context
 | 
			
		||||
  * Prevent hanging when request already read
 | 
			
		||||
  * deps: depd@2.0.0
 | 
			
		||||
    - Replace internal `eval` usage with `Function` constructor
 | 
			
		||||
    - Use instance methods on `process` to check for listeners
 | 
			
		||||
  * deps: http-errors@2.0.0
 | 
			
		||||
    - deps: depd@2.0.0
 | 
			
		||||
    - deps: statuses@2.0.1
 | 
			
		||||
  * deps: on-finished@2.4.1
 | 
			
		||||
  * deps: qs@6.10.3
 | 
			
		||||
  * deps: raw-body@2.5.1
 | 
			
		||||
    - deps: http-errors@2.0.0
 | 
			
		||||
 | 
			
		||||
1.19.2 / 2022-02-15
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: bytes@3.1.2
 | 
			
		||||
  * deps: qs@6.9.7
 | 
			
		||||
    * Fix handling of `__proto__` keys
 | 
			
		||||
  * deps: raw-body@2.4.3
 | 
			
		||||
    - deps: bytes@3.1.2
 | 
			
		||||
 | 
			
		||||
1.19.1 / 2021-12-10
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: bytes@3.1.1
 | 
			
		||||
  * deps: http-errors@1.8.1
 | 
			
		||||
    - deps: inherits@2.0.4
 | 
			
		||||
    - deps: toidentifier@1.0.1
 | 
			
		||||
    - deps: setprototypeof@1.2.0
 | 
			
		||||
  * deps: qs@6.9.6
 | 
			
		||||
  * deps: raw-body@2.4.2
 | 
			
		||||
    - deps: bytes@3.1.1
 | 
			
		||||
    - deps: http-errors@1.8.1
 | 
			
		||||
  * deps: safe-buffer@5.2.1
 | 
			
		||||
  * deps: type-is@~1.6.18
 | 
			
		||||
 | 
			
		||||
1.19.0 / 2019-04-25
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: bytes@3.1.0
 | 
			
		||||
    - Add petabyte (`pb`) support
 | 
			
		||||
  * deps: http-errors@1.7.2
 | 
			
		||||
    - Set constructor name when possible
 | 
			
		||||
    - deps: setprototypeof@1.1.1
 | 
			
		||||
    - deps: statuses@'>= 1.5.0 < 2'
 | 
			
		||||
  * deps: iconv-lite@0.4.24
 | 
			
		||||
    - Added encoding MIK
 | 
			
		||||
  * deps: qs@6.7.0
 | 
			
		||||
    - Fix parsing array brackets after index
 | 
			
		||||
  * deps: raw-body@2.4.0
 | 
			
		||||
    - deps: bytes@3.1.0
 | 
			
		||||
    - deps: http-errors@1.7.2
 | 
			
		||||
    - deps: iconv-lite@0.4.24
 | 
			
		||||
  * deps: type-is@~1.6.17
 | 
			
		||||
    - deps: mime-types@~2.1.24
 | 
			
		||||
    - perf: prevent internal `throw` on invalid type
 | 
			
		||||
 | 
			
		||||
1.18.3 / 2018-05-14
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * Fix stack trace for strict json parse error
 | 
			
		||||
  * deps: depd@~1.1.2
 | 
			
		||||
    - perf: remove argument reassignment
 | 
			
		||||
  * deps: http-errors@~1.6.3
 | 
			
		||||
    - deps: depd@~1.1.2
 | 
			
		||||
    - deps: setprototypeof@1.1.0
 | 
			
		||||
    - deps: statuses@'>= 1.3.1 < 2'
 | 
			
		||||
  * deps: iconv-lite@0.4.23
 | 
			
		||||
    - Fix loading encoding with year appended
 | 
			
		||||
    - Fix deprecation warnings on Node.js 10+
 | 
			
		||||
  * deps: qs@6.5.2
 | 
			
		||||
  * deps: raw-body@2.3.3
 | 
			
		||||
    - deps: http-errors@1.6.3
 | 
			
		||||
    - deps: iconv-lite@0.4.23
 | 
			
		||||
  * deps: type-is@~1.6.16
 | 
			
		||||
    - deps: mime-types@~2.1.18
 | 
			
		||||
 | 
			
		||||
1.18.2 / 2017-09-22
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: debug@2.6.9
 | 
			
		||||
  * perf: remove argument reassignment
 | 
			
		||||
 | 
			
		||||
1.18.1 / 2017-09-12
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: content-type@~1.0.4
 | 
			
		||||
    - perf: remove argument reassignment
 | 
			
		||||
    - perf: skip parameter parsing when no parameters
 | 
			
		||||
  * deps: iconv-lite@0.4.19
 | 
			
		||||
    - Fix ISO-8859-1 regression
 | 
			
		||||
    - Update Windows-1255
 | 
			
		||||
  * deps: qs@6.5.1
 | 
			
		||||
    - Fix parsing & compacting very deep objects
 | 
			
		||||
  * deps: raw-body@2.3.2
 | 
			
		||||
    - deps: iconv-lite@0.4.19
 | 
			
		||||
 | 
			
		||||
1.18.0 / 2017-09-08
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * Fix JSON strict violation error to match native parse error
 | 
			
		||||
  * Include the `body` property on verify errors
 | 
			
		||||
  * Include the `type` property on all generated errors
 | 
			
		||||
  * Use `http-errors` to set status code on errors
 | 
			
		||||
  * deps: bytes@3.0.0
 | 
			
		||||
  * deps: debug@2.6.8
 | 
			
		||||
  * deps: depd@~1.1.1
 | 
			
		||||
    - Remove unnecessary `Buffer` loading
 | 
			
		||||
  * deps: http-errors@~1.6.2
 | 
			
		||||
    - deps: depd@1.1.1
 | 
			
		||||
  * deps: iconv-lite@0.4.18
 | 
			
		||||
    - Add support for React Native
 | 
			
		||||
    - Add a warning if not loaded as utf-8
 | 
			
		||||
    - Fix CESU-8 decoding in Node.js 8
 | 
			
		||||
    - Improve speed of ISO-8859-1 encoding
 | 
			
		||||
  * deps: qs@6.5.0
 | 
			
		||||
  * deps: raw-body@2.3.1
 | 
			
		||||
    - Use `http-errors` for standard emitted errors
 | 
			
		||||
    - deps: bytes@3.0.0
 | 
			
		||||
    - deps: iconv-lite@0.4.18
 | 
			
		||||
    - perf: skip buffer decoding on overage chunk
 | 
			
		||||
  * perf: prevent internal `throw` when missing charset
 | 
			
		||||
 | 
			
		||||
1.17.2 / 2017-05-17
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: debug@2.6.7
 | 
			
		||||
    - Fix `DEBUG_MAX_ARRAY_LENGTH`
 | 
			
		||||
    - deps: ms@2.0.0
 | 
			
		||||
  * deps: type-is@~1.6.15
 | 
			
		||||
    - deps: mime-types@~2.1.15
 | 
			
		||||
 | 
			
		||||
1.17.1 / 2017-03-06
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@6.4.0
 | 
			
		||||
    - Fix regression parsing keys starting with `[`
 | 
			
		||||
 | 
			
		||||
1.17.0 / 2017-03-01
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: http-errors@~1.6.1
 | 
			
		||||
    - Make `message` property enumerable for `HttpError`s
 | 
			
		||||
    - deps: setprototypeof@1.0.3
 | 
			
		||||
  * deps: qs@6.3.1
 | 
			
		||||
    - Fix compacting nested arrays
 | 
			
		||||
 | 
			
		||||
1.16.1 / 2017-02-10
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: debug@2.6.1
 | 
			
		||||
    - Fix deprecation messages in WebStorm and other editors
 | 
			
		||||
    - Undeprecate `DEBUG_FD` set to `1` or `2`
 | 
			
		||||
 | 
			
		||||
1.16.0 / 2017-01-17
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: debug@2.6.0
 | 
			
		||||
    - Allow colors in workers
 | 
			
		||||
    - Deprecated `DEBUG_FD` environment variable
 | 
			
		||||
    - Fix error when running under React Native
 | 
			
		||||
    - Use same color for same namespace
 | 
			
		||||
    - deps: ms@0.7.2
 | 
			
		||||
  * deps: http-errors@~1.5.1
 | 
			
		||||
    - deps: inherits@2.0.3
 | 
			
		||||
    - deps: setprototypeof@1.0.2
 | 
			
		||||
    - deps: statuses@'>= 1.3.1 < 2'
 | 
			
		||||
  * deps: iconv-lite@0.4.15
 | 
			
		||||
    - Added encoding MS-31J
 | 
			
		||||
    - Added encoding MS-932
 | 
			
		||||
    - Added encoding MS-936
 | 
			
		||||
    - Added encoding MS-949
 | 
			
		||||
    - Added encoding MS-950
 | 
			
		||||
    - Fix GBK/GB18030 handling of Euro character
 | 
			
		||||
  * deps: qs@6.2.1
 | 
			
		||||
    - Fix array parsing from skipping empty values
 | 
			
		||||
  * deps: raw-body@~2.2.0
 | 
			
		||||
    - deps: iconv-lite@0.4.15
 | 
			
		||||
  * deps: type-is@~1.6.14
 | 
			
		||||
    - deps: mime-types@~2.1.13
 | 
			
		||||
 | 
			
		||||
1.15.2 / 2016-06-19
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: bytes@2.4.0
 | 
			
		||||
  * deps: content-type@~1.0.2
 | 
			
		||||
    - perf: enable strict mode
 | 
			
		||||
  * deps: http-errors@~1.5.0
 | 
			
		||||
    - Use `setprototypeof` module to replace `__proto__` setting
 | 
			
		||||
    - deps: statuses@'>= 1.3.0 < 2'
 | 
			
		||||
    - perf: enable strict mode
 | 
			
		||||
  * deps: qs@6.2.0
 | 
			
		||||
  * deps: raw-body@~2.1.7
 | 
			
		||||
    - deps: bytes@2.4.0
 | 
			
		||||
    - perf: remove double-cleanup on happy path
 | 
			
		||||
  * deps: type-is@~1.6.13
 | 
			
		||||
    - deps: mime-types@~2.1.11
 | 
			
		||||
 | 
			
		||||
1.15.1 / 2016-05-05
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: bytes@2.3.0
 | 
			
		||||
    - Drop partial bytes on all parsed units
 | 
			
		||||
    - Fix parsing byte string that looks like hex
 | 
			
		||||
  * deps: raw-body@~2.1.6
 | 
			
		||||
    - deps: bytes@2.3.0
 | 
			
		||||
  * deps: type-is@~1.6.12
 | 
			
		||||
    - deps: mime-types@~2.1.10
 | 
			
		||||
 | 
			
		||||
1.15.0 / 2016-02-10
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: http-errors@~1.4.0
 | 
			
		||||
    - Add `HttpError` export, for `err instanceof createError.HttpError`
 | 
			
		||||
    - deps: inherits@2.0.1
 | 
			
		||||
    - deps: statuses@'>= 1.2.1 < 2'
 | 
			
		||||
  * deps: qs@6.1.0
 | 
			
		||||
  * deps: type-is@~1.6.11
 | 
			
		||||
    - deps: mime-types@~2.1.9
 | 
			
		||||
 | 
			
		||||
1.14.2 / 2015-12-16
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: bytes@2.2.0
 | 
			
		||||
  * deps: iconv-lite@0.4.13
 | 
			
		||||
  * deps: qs@5.2.0
 | 
			
		||||
  * deps: raw-body@~2.1.5
 | 
			
		||||
    - deps: bytes@2.2.0
 | 
			
		||||
    - deps: iconv-lite@0.4.13
 | 
			
		||||
  * deps: type-is@~1.6.10
 | 
			
		||||
    - deps: mime-types@~2.1.8
 | 
			
		||||
 | 
			
		||||
1.14.1 / 2015-09-27
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * Fix issue where invalid charset results in 400 when `verify` used
 | 
			
		||||
  * deps: iconv-lite@0.4.12
 | 
			
		||||
    - Fix CESU-8 decoding in Node.js 4.x
 | 
			
		||||
  * deps: raw-body@~2.1.4
 | 
			
		||||
    - Fix masking critical errors from `iconv-lite`
 | 
			
		||||
    - deps: iconv-lite@0.4.12
 | 
			
		||||
  * deps: type-is@~1.6.9
 | 
			
		||||
    - deps: mime-types@~2.1.7
 | 
			
		||||
 | 
			
		||||
1.14.0 / 2015-09-16
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * Fix JSON strict parse error to match syntax errors
 | 
			
		||||
  * Provide static `require` analysis in `urlencoded` parser
 | 
			
		||||
  * deps: depd@~1.1.0
 | 
			
		||||
    - Support web browser loading
 | 
			
		||||
  * deps: qs@5.1.0
 | 
			
		||||
  * deps: raw-body@~2.1.3
 | 
			
		||||
    - Fix sync callback when attaching data listener causes sync read
 | 
			
		||||
  * deps: type-is@~1.6.8
 | 
			
		||||
    - Fix type error when given invalid type to match against
 | 
			
		||||
    - deps: mime-types@~2.1.6
 | 
			
		||||
 | 
			
		||||
1.13.3 / 2015-07-31
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: type-is@~1.6.6
 | 
			
		||||
    - deps: mime-types@~2.1.4
 | 
			
		||||
 | 
			
		||||
1.13.2 / 2015-07-05
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: iconv-lite@0.4.11
 | 
			
		||||
  * deps: qs@4.0.0
 | 
			
		||||
    - Fix dropping parameters like `hasOwnProperty`
 | 
			
		||||
    - Fix user-visible incompatibilities from 3.1.0
 | 
			
		||||
    - Fix various parsing edge cases
 | 
			
		||||
  * deps: raw-body@~2.1.2
 | 
			
		||||
    - Fix error stack traces to skip `makeError`
 | 
			
		||||
    - deps: iconv-lite@0.4.11
 | 
			
		||||
  * deps: type-is@~1.6.4
 | 
			
		||||
    - deps: mime-types@~2.1.2
 | 
			
		||||
    - perf: enable strict mode
 | 
			
		||||
    - perf: remove argument reassignment
 | 
			
		||||
 | 
			
		||||
1.13.1 / 2015-06-16
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@2.4.2
 | 
			
		||||
    - Downgraded from 3.1.0 because of user-visible incompatibilities
 | 
			
		||||
 | 
			
		||||
1.13.0 / 2015-06-14
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * Add `statusCode` property on `Error`s, in addition to `status`
 | 
			
		||||
  * Change `type` default to `application/json` for JSON parser
 | 
			
		||||
  * Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser
 | 
			
		||||
  * Provide static `require` analysis
 | 
			
		||||
  * Use the `http-errors` module to generate errors
 | 
			
		||||
  * deps: bytes@2.1.0
 | 
			
		||||
    - Slight optimizations
 | 
			
		||||
  * deps: iconv-lite@0.4.10
 | 
			
		||||
    - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails
 | 
			
		||||
    - Leading BOM is now removed when decoding
 | 
			
		||||
  * deps: on-finished@~2.3.0
 | 
			
		||||
    - Add defined behavior for HTTP `CONNECT` requests
 | 
			
		||||
    - Add defined behavior for HTTP `Upgrade` requests
 | 
			
		||||
    - deps: ee-first@1.1.1
 | 
			
		||||
  * deps: qs@3.1.0
 | 
			
		||||
    - Fix dropping parameters like `hasOwnProperty`
 | 
			
		||||
    - Fix various parsing edge cases
 | 
			
		||||
    - Parsed object now has `null` prototype
 | 
			
		||||
  * deps: raw-body@~2.1.1
 | 
			
		||||
    - Use `unpipe` module for unpiping requests
 | 
			
		||||
    - deps: iconv-lite@0.4.10
 | 
			
		||||
  * deps: type-is@~1.6.3
 | 
			
		||||
    - deps: mime-types@~2.1.1
 | 
			
		||||
    - perf: reduce try block size
 | 
			
		||||
    - perf: remove bitwise operations
 | 
			
		||||
  * perf: enable strict mode
 | 
			
		||||
  * perf: remove argument reassignment
 | 
			
		||||
  * perf: remove delete call
 | 
			
		||||
 | 
			
		||||
1.12.4 / 2015-05-10
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: debug@~2.2.0
 | 
			
		||||
  * deps: qs@2.4.2
 | 
			
		||||
    - Fix allowing parameters like `constructor`
 | 
			
		||||
  * deps: on-finished@~2.2.1
 | 
			
		||||
  * deps: raw-body@~2.0.1
 | 
			
		||||
    - Fix a false-positive when unpiping in Node.js 0.8
 | 
			
		||||
    - deps: bytes@2.0.1
 | 
			
		||||
  * deps: type-is@~1.6.2
 | 
			
		||||
    - deps: mime-types@~2.0.11
 | 
			
		||||
 | 
			
		||||
1.12.3 / 2015-04-15
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * Slight efficiency improvement when not debugging
 | 
			
		||||
  * deps: depd@~1.0.1
 | 
			
		||||
  * deps: iconv-lite@0.4.8
 | 
			
		||||
    - Add encoding alias UNICODE-1-1-UTF-7
 | 
			
		||||
  * deps: raw-body@1.3.4
 | 
			
		||||
    - Fix hanging callback if request aborts during read
 | 
			
		||||
    - deps: iconv-lite@0.4.8
 | 
			
		||||
 | 
			
		||||
1.12.2 / 2015-03-16
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@2.4.1
 | 
			
		||||
    - Fix error when parameter `hasOwnProperty` is present
 | 
			
		||||
 | 
			
		||||
1.12.1 / 2015-03-15
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: debug@~2.1.3
 | 
			
		||||
    - Fix high intensity foreground color for bold
 | 
			
		||||
    - deps: ms@0.7.0
 | 
			
		||||
  * deps: type-is@~1.6.1
 | 
			
		||||
    - deps: mime-types@~2.0.10
 | 
			
		||||
 | 
			
		||||
1.12.0 / 2015-02-13
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * add `debug` messages
 | 
			
		||||
  * accept a function for the `type` option
 | 
			
		||||
  * use `content-type` to parse `Content-Type` headers
 | 
			
		||||
  * deps: iconv-lite@0.4.7
 | 
			
		||||
    - Gracefully support enumerables on `Object.prototype`
 | 
			
		||||
  * deps: raw-body@1.3.3
 | 
			
		||||
    - deps: iconv-lite@0.4.7
 | 
			
		||||
  * deps: type-is@~1.6.0
 | 
			
		||||
    - fix argument reassignment
 | 
			
		||||
    - fix false-positives in `hasBody` `Transfer-Encoding` check
 | 
			
		||||
    - support wildcard for both type and subtype (`*/*`)
 | 
			
		||||
    - deps: mime-types@~2.0.9
 | 
			
		||||
 | 
			
		||||
1.11.0 / 2015-01-30
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * make internal `extended: true` depth limit infinity
 | 
			
		||||
  * deps: type-is@~1.5.6
 | 
			
		||||
    - deps: mime-types@~2.0.8
 | 
			
		||||
 | 
			
		||||
1.10.2 / 2015-01-20
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: iconv-lite@0.4.6
 | 
			
		||||
    - Fix rare aliases of single-byte encodings
 | 
			
		||||
  * deps: raw-body@1.3.2
 | 
			
		||||
    - deps: iconv-lite@0.4.6
 | 
			
		||||
 | 
			
		||||
1.10.1 / 2015-01-01
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * deps: on-finished@~2.2.0
 | 
			
		||||
  * deps: type-is@~1.5.5
 | 
			
		||||
    - deps: mime-types@~2.0.7
 | 
			
		||||
 | 
			
		||||
1.10.0 / 2014-12-02
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
  * make internal `extended: true` array limit dynamic
 | 
			
		||||
 | 
			
		||||
1.9.3 / 2014-11-21
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: iconv-lite@0.4.5
 | 
			
		||||
    - Fix Windows-31J and X-SJIS encoding support
 | 
			
		||||
  * deps: qs@2.3.3
 | 
			
		||||
    - Fix `arrayLimit` behavior
 | 
			
		||||
  * deps: raw-body@1.3.1
 | 
			
		||||
    - deps: iconv-lite@0.4.5
 | 
			
		||||
  * deps: type-is@~1.5.3
 | 
			
		||||
    - deps: mime-types@~2.0.3
 | 
			
		||||
 | 
			
		||||
1.9.2 / 2014-10-27
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@2.3.2
 | 
			
		||||
    - Fix parsing of mixed objects and values
 | 
			
		||||
 | 
			
		||||
1.9.1 / 2014-10-22
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: on-finished@~2.1.1
 | 
			
		||||
    - Fix handling of pipelined requests
 | 
			
		||||
  * deps: qs@2.3.0
 | 
			
		||||
    - Fix parsing of mixed implicit and explicit arrays
 | 
			
		||||
  * deps: type-is@~1.5.2
 | 
			
		||||
    - deps: mime-types@~2.0.2
 | 
			
		||||
 | 
			
		||||
1.9.0 / 2014-09-24
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * include the charset in "unsupported charset" error message
 | 
			
		||||
  * include the encoding in "unsupported content encoding" error message
 | 
			
		||||
  * deps: depd@~1.0.0
 | 
			
		||||
 | 
			
		||||
1.8.4 / 2014-09-23
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * fix content encoding to be case-insensitive
 | 
			
		||||
 | 
			
		||||
1.8.3 / 2014-09-19
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@2.2.4
 | 
			
		||||
    - Fix issue with object keys starting with numbers truncated
 | 
			
		||||
 | 
			
		||||
1.8.2 / 2014-09-15
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: depd@0.4.5
 | 
			
		||||
 | 
			
		||||
1.8.1 / 2014-09-07
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: media-typer@0.3.0
 | 
			
		||||
  * deps: type-is@~1.5.1
 | 
			
		||||
 | 
			
		||||
1.8.0 / 2014-09-05
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * make empty-body-handling consistent between chunked requests
 | 
			
		||||
    - empty `json` produces `{}`
 | 
			
		||||
    - empty `raw` produces `new Buffer(0)`
 | 
			
		||||
    - empty `text` produces `''`
 | 
			
		||||
    - empty `urlencoded` produces `{}`
 | 
			
		||||
  * deps: qs@2.2.3
 | 
			
		||||
    - Fix issue where first empty value in array is discarded
 | 
			
		||||
  * deps: type-is@~1.5.0
 | 
			
		||||
    - fix `hasbody` to be true for `content-length: 0`
 | 
			
		||||
 | 
			
		||||
1.7.0 / 2014-09-01
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * add `parameterLimit` option to `urlencoded` parser
 | 
			
		||||
  * change `urlencoded` extended array limit to 100
 | 
			
		||||
  * respond with 413 when over `parameterLimit` in `urlencoded`
 | 
			
		||||
 | 
			
		||||
1.6.7 / 2014-08-29
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@2.2.2
 | 
			
		||||
    - Remove unnecessary cloning
 | 
			
		||||
 | 
			
		||||
1.6.6 / 2014-08-27
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@2.2.0
 | 
			
		||||
    - Array parsing fix
 | 
			
		||||
    - Performance improvements
 | 
			
		||||
 | 
			
		||||
1.6.5 / 2014-08-16
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: on-finished@2.1.0
 | 
			
		||||
 | 
			
		||||
1.6.4 / 2014-08-14
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@1.2.2
 | 
			
		||||
 | 
			
		||||
1.6.3 / 2014-08-10
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@1.2.1
 | 
			
		||||
 | 
			
		||||
1.6.2 / 2014-08-07
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@1.2.0
 | 
			
		||||
    - Fix parsing array of objects
 | 
			
		||||
 | 
			
		||||
1.6.1 / 2014-08-06
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@1.1.0
 | 
			
		||||
    - Accept urlencoded square brackets
 | 
			
		||||
    - Accept empty values in implicit array notation
 | 
			
		||||
 | 
			
		||||
1.6.0 / 2014-08-05
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: qs@1.0.2
 | 
			
		||||
    - Complete rewrite
 | 
			
		||||
    - Limits array length to 20
 | 
			
		||||
    - Limits object depth to 5
 | 
			
		||||
    - Limits parameters to 1,000
 | 
			
		||||
 | 
			
		||||
1.5.2 / 2014-07-27
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: depd@0.4.4
 | 
			
		||||
    - Work-around v8 generating empty stack traces
 | 
			
		||||
 | 
			
		||||
1.5.1 / 2014-07-26
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: depd@0.4.3
 | 
			
		||||
    - Fix exception when global `Error.stackTraceLimit` is too low
 | 
			
		||||
 | 
			
		||||
1.5.0 / 2014-07-20
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: depd@0.4.2
 | 
			
		||||
    - Add `TRACE_DEPRECATION` environment variable
 | 
			
		||||
    - Remove non-standard grey color from color output
 | 
			
		||||
    - Support `--no-deprecation` argument
 | 
			
		||||
    - Support `--trace-deprecation` argument
 | 
			
		||||
  * deps: iconv-lite@0.4.4
 | 
			
		||||
    - Added encoding UTF-7
 | 
			
		||||
  * deps: raw-body@1.3.0
 | 
			
		||||
    - deps: iconv-lite@0.4.4
 | 
			
		||||
    - Added encoding UTF-7
 | 
			
		||||
    - Fix `Cannot switch to old mode now` error on Node.js 0.10+
 | 
			
		||||
  * deps: type-is@~1.3.2
 | 
			
		||||
 | 
			
		||||
1.4.3 / 2014-06-19
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: type-is@1.3.1
 | 
			
		||||
    - fix global variable leak
 | 
			
		||||
 | 
			
		||||
1.4.2 / 2014-06-19
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: type-is@1.3.0
 | 
			
		||||
    - improve type parsing
 | 
			
		||||
 | 
			
		||||
1.4.1 / 2014-06-19
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * fix urlencoded extended deprecation message
 | 
			
		||||
 | 
			
		||||
1.4.0 / 2014-06-19
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * add `text` parser
 | 
			
		||||
  * add `raw` parser
 | 
			
		||||
  * check accepted charset in content-type (accepts utf-8)
 | 
			
		||||
  * check accepted encoding in content-encoding (accepts identity)
 | 
			
		||||
  * deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed
 | 
			
		||||
  * deprecate `urlencoded()` without provided `extended` option
 | 
			
		||||
  * lazy-load urlencoded parsers
 | 
			
		||||
  * parsers split into files for reduced mem usage
 | 
			
		||||
  * support gzip and deflate bodies
 | 
			
		||||
    - set `inflate: false` to turn off
 | 
			
		||||
  * deps: raw-body@1.2.2
 | 
			
		||||
    - Support all encodings from `iconv-lite`
 | 
			
		||||
 | 
			
		||||
1.3.1 / 2014-06-11
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: type-is@1.2.1
 | 
			
		||||
    - Switch dependency from mime to mime-types@1.0.0
 | 
			
		||||
 | 
			
		||||
1.3.0 / 2014-05-31
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * add `extended` option to urlencoded parser
 | 
			
		||||
 | 
			
		||||
1.2.2 / 2014-05-27
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * deps: raw-body@1.1.6
 | 
			
		||||
    - assert stream encoding on node.js 0.8
 | 
			
		||||
    - assert stream encoding on node.js < 0.10.6
 | 
			
		||||
    - deps: bytes@1
 | 
			
		||||
 | 
			
		||||
1.2.1 / 2014-05-26
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * invoke `next(err)` after request fully read
 | 
			
		||||
    - prevents hung responses and socket hang ups
 | 
			
		||||
 | 
			
		||||
1.2.0 / 2014-05-11
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * add `verify` option
 | 
			
		||||
  * deps: type-is@1.2.0
 | 
			
		||||
    - support suffix matching
 | 
			
		||||
 | 
			
		||||
1.1.2 / 2014-05-11
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * improve json parser speed
 | 
			
		||||
 | 
			
		||||
1.1.1 / 2014-05-11
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * fix repeated limit parsing with every request
 | 
			
		||||
 | 
			
		||||
1.1.0 / 2014-05-10
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * add `type` option
 | 
			
		||||
  * deps: pin for safety and consistency
 | 
			
		||||
 | 
			
		||||
1.0.2 / 2014-04-14
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * use `type-is` module
 | 
			
		||||
 | 
			
		||||
1.0.1 / 2014-03-20
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
  * lower default limits to 100kb
 | 
			
		||||
							
								
								
									
										23
									
								
								node_modules/body-parser/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								node_modules/body-parser/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
(The MIT License)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
 | 
			
		||||
Copyright (c) 2014-2015 Douglas Christopher Wilson <doug@somethingdoug.com>
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining
 | 
			
		||||
a copy of this software and associated documentation files (the
 | 
			
		||||
'Software'), to deal in the Software without restriction, including
 | 
			
		||||
without limitation the rights to use, copy, modify, merge, publish,
 | 
			
		||||
distribute, sublicense, and/or sell copies of the Software, and to
 | 
			
		||||
permit persons to whom the Software is furnished to do so, subject to
 | 
			
		||||
the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be
 | 
			
		||||
included in all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 | 
			
		||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
			
		||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | 
			
		||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 | 
			
		||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | 
			
		||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | 
			
		||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										464
									
								
								node_modules/body-parser/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										464
									
								
								node_modules/body-parser/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,464 @@
 | 
			
		||||
# body-parser
 | 
			
		||||
 | 
			
		||||
[![NPM Version][npm-image]][npm-url]
 | 
			
		||||
[![NPM Downloads][downloads-image]][downloads-url]
 | 
			
		||||
[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 | 
			
		||||
[![Test Coverage][coveralls-image]][coveralls-url]
 | 
			
		||||
 | 
			
		||||
Node.js body parsing middleware.
 | 
			
		||||
 | 
			
		||||
Parse incoming request bodies in a middleware before your handlers, available
 | 
			
		||||
under the `req.body` property.
 | 
			
		||||
 | 
			
		||||
**Note** As `req.body`'s shape is based on user-controlled input, all
 | 
			
		||||
properties and values in this object are untrusted and should be validated
 | 
			
		||||
before trusting. For example, `req.body.foo.toString()` may fail in multiple
 | 
			
		||||
ways, for example the `foo` property may not be there or may not be a string,
 | 
			
		||||
and `toString` may not be a function and instead a string or other user input.
 | 
			
		||||
 | 
			
		||||
[Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/).
 | 
			
		||||
 | 
			
		||||
_This does not handle multipart bodies_, due to their complex and typically
 | 
			
		||||
large nature. For multipart bodies, you may be interested in the following
 | 
			
		||||
modules:
 | 
			
		||||
 | 
			
		||||
  * [busboy](https://www.npmjs.org/package/busboy#readme) and
 | 
			
		||||
    [connect-busboy](https://www.npmjs.org/package/connect-busboy#readme)
 | 
			
		||||
  * [multiparty](https://www.npmjs.org/package/multiparty#readme) and
 | 
			
		||||
    [connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme)
 | 
			
		||||
  * [formidable](https://www.npmjs.org/package/formidable#readme)
 | 
			
		||||
  * [multer](https://www.npmjs.org/package/multer#readme)
 | 
			
		||||
 | 
			
		||||
This module provides the following parsers:
 | 
			
		||||
 | 
			
		||||
  * [JSON body parser](#bodyparserjsonoptions)
 | 
			
		||||
  * [Raw body parser](#bodyparserrawoptions)
 | 
			
		||||
  * [Text body parser](#bodyparsertextoptions)
 | 
			
		||||
  * [URL-encoded form body parser](#bodyparserurlencodedoptions)
 | 
			
		||||
 | 
			
		||||
Other body parsers you might be interested in:
 | 
			
		||||
 | 
			
		||||
- [body](https://www.npmjs.org/package/body#readme)
 | 
			
		||||
- [co-body](https://www.npmjs.org/package/co-body#readme)
 | 
			
		||||
 | 
			
		||||
## Installation
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
$ npm install body-parser
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## API
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var bodyParser = require('body-parser')
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The `bodyParser` object exposes various factories to create middlewares. All
 | 
			
		||||
middlewares will populate the `req.body` property with the parsed body when
 | 
			
		||||
the `Content-Type` request header matches the `type` option, or an empty
 | 
			
		||||
object (`{}`) if there was no body to parse, the `Content-Type` was not matched,
 | 
			
		||||
or an error occurred.
 | 
			
		||||
 | 
			
		||||
The various errors returned by this module are described in the
 | 
			
		||||
[errors section](#errors).
 | 
			
		||||
 | 
			
		||||
### bodyParser.json([options])
 | 
			
		||||
 | 
			
		||||
Returns middleware that only parses `json` and only looks at requests where
 | 
			
		||||
the `Content-Type` header matches the `type` option. This parser accepts any
 | 
			
		||||
Unicode encoding of the body and supports automatic inflation of `gzip` and
 | 
			
		||||
`deflate` encodings.
 | 
			
		||||
 | 
			
		||||
A new `body` object containing the parsed data is populated on the `request`
 | 
			
		||||
object after the middleware (i.e. `req.body`).
 | 
			
		||||
 | 
			
		||||
#### Options
 | 
			
		||||
 | 
			
		||||
The `json` function takes an optional `options` object that may contain any of
 | 
			
		||||
the following keys:
 | 
			
		||||
 | 
			
		||||
##### inflate
 | 
			
		||||
 | 
			
		||||
When set to `true`, then deflated (compressed) bodies will be inflated; when
 | 
			
		||||
`false`, deflated bodies are rejected. Defaults to `true`.
 | 
			
		||||
 | 
			
		||||
##### limit
 | 
			
		||||
 | 
			
		||||
Controls the maximum request body size. If this is a number, then the value
 | 
			
		||||
specifies the number of bytes; if it is a string, the value is passed to the
 | 
			
		||||
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
 | 
			
		||||
to `'100kb'`.
 | 
			
		||||
 | 
			
		||||
##### reviver
 | 
			
		||||
 | 
			
		||||
The `reviver` option is passed directly to `JSON.parse` as the second
 | 
			
		||||
argument. You can find more information on this argument
 | 
			
		||||
[in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter).
 | 
			
		||||
 | 
			
		||||
##### strict
 | 
			
		||||
 | 
			
		||||
When set to `true`, will only accept arrays and objects; when `false` will
 | 
			
		||||
accept anything `JSON.parse` accepts. Defaults to `true`.
 | 
			
		||||
 | 
			
		||||
##### type
 | 
			
		||||
 | 
			
		||||
The `type` option is used to determine what media type the middleware will
 | 
			
		||||
parse. This option can be a string, array of strings, or a function. If not a
 | 
			
		||||
function, `type` option is passed directly to the
 | 
			
		||||
[type-is](https://www.npmjs.org/package/type-is#readme) library and this can
 | 
			
		||||
be an extension name (like `json`), a mime type (like `application/json`), or
 | 
			
		||||
a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type`
 | 
			
		||||
option is called as `fn(req)` and the request is parsed if it returns a truthy
 | 
			
		||||
value. Defaults to `application/json`.
 | 
			
		||||
 | 
			
		||||
##### verify
 | 
			
		||||
 | 
			
		||||
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
 | 
			
		||||
where `buf` is a `Buffer` of the raw request body and `encoding` is the
 | 
			
		||||
encoding of the request. The parsing can be aborted by throwing an error.
 | 
			
		||||
 | 
			
		||||
### bodyParser.raw([options])
 | 
			
		||||
 | 
			
		||||
Returns middleware that parses all bodies as a `Buffer` and only looks at
 | 
			
		||||
requests where the `Content-Type` header matches the `type` option. This
 | 
			
		||||
parser supports automatic inflation of `gzip` and `deflate` encodings.
 | 
			
		||||
 | 
			
		||||
A new `body` object containing the parsed data is populated on the `request`
 | 
			
		||||
object after the middleware (i.e. `req.body`). This will be a `Buffer` object
 | 
			
		||||
of the body.
 | 
			
		||||
 | 
			
		||||
#### Options
 | 
			
		||||
 | 
			
		||||
The `raw` function takes an optional `options` object that may contain any of
 | 
			
		||||
the following keys:
 | 
			
		||||
 | 
			
		||||
##### inflate
 | 
			
		||||
 | 
			
		||||
When set to `true`, then deflated (compressed) bodies will be inflated; when
 | 
			
		||||
`false`, deflated bodies are rejected. Defaults to `true`.
 | 
			
		||||
 | 
			
		||||
##### limit
 | 
			
		||||
 | 
			
		||||
Controls the maximum request body size. If this is a number, then the value
 | 
			
		||||
specifies the number of bytes; if it is a string, the value is passed to the
 | 
			
		||||
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
 | 
			
		||||
to `'100kb'`.
 | 
			
		||||
 | 
			
		||||
##### type
 | 
			
		||||
 | 
			
		||||
The `type` option is used to determine what media type the middleware will
 | 
			
		||||
parse. This option can be a string, array of strings, or a function.
 | 
			
		||||
If not a function, `type` option is passed directly to the
 | 
			
		||||
[type-is](https://www.npmjs.org/package/type-is#readme) library and this
 | 
			
		||||
can be an extension name (like `bin`), a mime type (like
 | 
			
		||||
`application/octet-stream`), or a mime type with a wildcard (like `*/*` or
 | 
			
		||||
`application/*`). If a function, the `type` option is called as `fn(req)`
 | 
			
		||||
and the request is parsed if it returns a truthy value. Defaults to
 | 
			
		||||
`application/octet-stream`.
 | 
			
		||||
 | 
			
		||||
##### verify
 | 
			
		||||
 | 
			
		||||
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
 | 
			
		||||
where `buf` is a `Buffer` of the raw request body and `encoding` is the
 | 
			
		||||
encoding of the request. The parsing can be aborted by throwing an error.
 | 
			
		||||
 | 
			
		||||
### bodyParser.text([options])
 | 
			
		||||
 | 
			
		||||
Returns middleware that parses all bodies as a string and only looks at
 | 
			
		||||
requests where the `Content-Type` header matches the `type` option. This
 | 
			
		||||
parser supports automatic inflation of `gzip` and `deflate` encodings.
 | 
			
		||||
 | 
			
		||||
A new `body` string containing the parsed data is populated on the `request`
 | 
			
		||||
object after the middleware (i.e. `req.body`). This will be a string of the
 | 
			
		||||
body.
 | 
			
		||||
 | 
			
		||||
#### Options
 | 
			
		||||
 | 
			
		||||
The `text` function takes an optional `options` object that may contain any of
 | 
			
		||||
the following keys:
 | 
			
		||||
 | 
			
		||||
##### defaultCharset
 | 
			
		||||
 | 
			
		||||
Specify the default character set for the text content if the charset is not
 | 
			
		||||
specified in the `Content-Type` header of the request. Defaults to `utf-8`.
 | 
			
		||||
 | 
			
		||||
##### inflate
 | 
			
		||||
 | 
			
		||||
When set to `true`, then deflated (compressed) bodies will be inflated; when
 | 
			
		||||
`false`, deflated bodies are rejected. Defaults to `true`.
 | 
			
		||||
 | 
			
		||||
##### limit
 | 
			
		||||
 | 
			
		||||
Controls the maximum request body size. If this is a number, then the value
 | 
			
		||||
specifies the number of bytes; if it is a string, the value is passed to the
 | 
			
		||||
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
 | 
			
		||||
to `'100kb'`.
 | 
			
		||||
 | 
			
		||||
##### type
 | 
			
		||||
 | 
			
		||||
The `type` option is used to determine what media type the middleware will
 | 
			
		||||
parse. This option can be a string, array of strings, or a function. If not
 | 
			
		||||
a function, `type` option is passed directly to the
 | 
			
		||||
[type-is](https://www.npmjs.org/package/type-is#readme) library and this can
 | 
			
		||||
be an extension name (like `txt`), a mime type (like `text/plain`), or a mime
 | 
			
		||||
type with a wildcard (like `*/*` or `text/*`). If a function, the `type`
 | 
			
		||||
option is called as `fn(req)` and the request is parsed if it returns a
 | 
			
		||||
truthy value. Defaults to `text/plain`.
 | 
			
		||||
 | 
			
		||||
##### verify
 | 
			
		||||
 | 
			
		||||
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
 | 
			
		||||
where `buf` is a `Buffer` of the raw request body and `encoding` is the
 | 
			
		||||
encoding of the request. The parsing can be aborted by throwing an error.
 | 
			
		||||
 | 
			
		||||
### bodyParser.urlencoded([options])
 | 
			
		||||
 | 
			
		||||
Returns middleware that only parses `urlencoded` bodies and only looks at
 | 
			
		||||
requests where the `Content-Type` header matches the `type` option. This
 | 
			
		||||
parser accepts only UTF-8 encoding of the body and supports automatic
 | 
			
		||||
inflation of `gzip` and `deflate` encodings.
 | 
			
		||||
 | 
			
		||||
A new `body` object containing the parsed data is populated on the `request`
 | 
			
		||||
object after the middleware (i.e. `req.body`). This object will contain
 | 
			
		||||
key-value pairs, where the value can be a string or array (when `extended` is
 | 
			
		||||
`false`), or any type (when `extended` is `true`).
 | 
			
		||||
 | 
			
		||||
#### Options
 | 
			
		||||
 | 
			
		||||
The `urlencoded` function takes an optional `options` object that may contain
 | 
			
		||||
any of the following keys:
 | 
			
		||||
 | 
			
		||||
##### extended
 | 
			
		||||
 | 
			
		||||
The `extended` option allows to choose between parsing the URL-encoded data
 | 
			
		||||
with the `querystring` library (when `false`) or the `qs` library (when
 | 
			
		||||
`true`). The "extended" syntax allows for rich objects and arrays to be
 | 
			
		||||
encoded into the URL-encoded format, allowing for a JSON-like experience
 | 
			
		||||
with URL-encoded. For more information, please
 | 
			
		||||
[see the qs library](https://www.npmjs.org/package/qs#readme).
 | 
			
		||||
 | 
			
		||||
Defaults to `true`, but using the default has been deprecated. Please
 | 
			
		||||
research into the difference between `qs` and `querystring` and choose the
 | 
			
		||||
appropriate setting.
 | 
			
		||||
 | 
			
		||||
##### inflate
 | 
			
		||||
 | 
			
		||||
When set to `true`, then deflated (compressed) bodies will be inflated; when
 | 
			
		||||
`false`, deflated bodies are rejected. Defaults to `true`.
 | 
			
		||||
 | 
			
		||||
##### limit
 | 
			
		||||
 | 
			
		||||
Controls the maximum request body size. If this is a number, then the value
 | 
			
		||||
specifies the number of bytes; if it is a string, the value is passed to the
 | 
			
		||||
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
 | 
			
		||||
to `'100kb'`.
 | 
			
		||||
 | 
			
		||||
##### parameterLimit
 | 
			
		||||
 | 
			
		||||
The `parameterLimit` option controls the maximum number of parameters that
 | 
			
		||||
are allowed in the URL-encoded data. If a request contains more parameters
 | 
			
		||||
than this value, a 413 will be returned to the client. Defaults to `1000`.
 | 
			
		||||
 | 
			
		||||
##### type
 | 
			
		||||
 | 
			
		||||
The `type` option is used to determine what media type the middleware will
 | 
			
		||||
parse. This option can be a string, array of strings, or a function. If not
 | 
			
		||||
a function, `type` option is passed directly to the
 | 
			
		||||
[type-is](https://www.npmjs.org/package/type-is#readme) library and this can
 | 
			
		||||
be an extension name (like `urlencoded`), a mime type (like
 | 
			
		||||
`application/x-www-form-urlencoded`), or a mime type with a wildcard (like
 | 
			
		||||
`*/x-www-form-urlencoded`). If a function, the `type` option is called as
 | 
			
		||||
`fn(req)` and the request is parsed if it returns a truthy value. Defaults
 | 
			
		||||
to `application/x-www-form-urlencoded`.
 | 
			
		||||
 | 
			
		||||
##### verify
 | 
			
		||||
 | 
			
		||||
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
 | 
			
		||||
where `buf` is a `Buffer` of the raw request body and `encoding` is the
 | 
			
		||||
encoding of the request. The parsing can be aborted by throwing an error.
 | 
			
		||||
 | 
			
		||||
## Errors
 | 
			
		||||
 | 
			
		||||
The middlewares provided by this module create errors using the
 | 
			
		||||
[`http-errors` module](https://www.npmjs.com/package/http-errors). The errors
 | 
			
		||||
will typically have a `status`/`statusCode` property that contains the suggested
 | 
			
		||||
HTTP response code, an `expose` property to determine if the `message` property
 | 
			
		||||
should be displayed to the client, a `type` property to determine the type of
 | 
			
		||||
error without matching against the `message`, and a `body` property containing
 | 
			
		||||
the read body, if available.
 | 
			
		||||
 | 
			
		||||
The following are the common errors created, though any error can come through
 | 
			
		||||
for various reasons.
 | 
			
		||||
 | 
			
		||||
### content encoding unsupported
 | 
			
		||||
 | 
			
		||||
This error will occur when the request had a `Content-Encoding` header that
 | 
			
		||||
contained an encoding but the "inflation" option was set to `false`. The
 | 
			
		||||
`status` property is set to `415`, the `type` property is set to
 | 
			
		||||
`'encoding.unsupported'`, and the `charset` property will be set to the
 | 
			
		||||
encoding that is unsupported.
 | 
			
		||||
 | 
			
		||||
### entity parse failed
 | 
			
		||||
 | 
			
		||||
This error will occur when the request contained an entity that could not be
 | 
			
		||||
parsed by the middleware. The `status` property is set to `400`, the `type`
 | 
			
		||||
property is set to `'entity.parse.failed'`, and the `body` property is set to
 | 
			
		||||
the entity value that failed parsing.
 | 
			
		||||
 | 
			
		||||
### entity verify failed
 | 
			
		||||
 | 
			
		||||
This error will occur when the request contained an entity that could not be
 | 
			
		||||
failed verification by the defined `verify` option. The `status` property is
 | 
			
		||||
set to `403`, the `type` property is set to `'entity.verify.failed'`, and the
 | 
			
		||||
`body` property is set to the entity value that failed verification.
 | 
			
		||||
 | 
			
		||||
### request aborted
 | 
			
		||||
 | 
			
		||||
This error will occur when the request is aborted by the client before reading
 | 
			
		||||
the body has finished. The `received` property will be set to the number of
 | 
			
		||||
bytes received before the request was aborted and the `expected` property is
 | 
			
		||||
set to the number of expected bytes. The `status` property is set to `400`
 | 
			
		||||
and `type` property is set to `'request.aborted'`.
 | 
			
		||||
 | 
			
		||||
### request entity too large
 | 
			
		||||
 | 
			
		||||
This error will occur when the request body's size is larger than the "limit"
 | 
			
		||||
option. The `limit` property will be set to the byte limit and the `length`
 | 
			
		||||
property will be set to the request body's length. The `status` property is
 | 
			
		||||
set to `413` and the `type` property is set to `'entity.too.large'`.
 | 
			
		||||
 | 
			
		||||
### request size did not match content length
 | 
			
		||||
 | 
			
		||||
This error will occur when the request's length did not match the length from
 | 
			
		||||
the `Content-Length` header. This typically occurs when the request is malformed,
 | 
			
		||||
typically when the `Content-Length` header was calculated based on characters
 | 
			
		||||
instead of bytes. The `status` property is set to `400` and the `type` property
 | 
			
		||||
is set to `'request.size.invalid'`.
 | 
			
		||||
 | 
			
		||||
### stream encoding should not be set
 | 
			
		||||
 | 
			
		||||
This error will occur when something called the `req.setEncoding` method prior
 | 
			
		||||
to this middleware. This module operates directly on bytes only and you cannot
 | 
			
		||||
call `req.setEncoding` when using this module. The `status` property is set to
 | 
			
		||||
`500` and the `type` property is set to `'stream.encoding.set'`.
 | 
			
		||||
 | 
			
		||||
### stream is not readable
 | 
			
		||||
 | 
			
		||||
This error will occur when the request is no longer readable when this middleware
 | 
			
		||||
attempts to read it. This typically means something other than a middleware from
 | 
			
		||||
this module read the request body already and the middleware was also configured to
 | 
			
		||||
read the same request. The `status` property is set to `500` and the `type`
 | 
			
		||||
property is set to `'stream.not.readable'`.
 | 
			
		||||
 | 
			
		||||
### too many parameters
 | 
			
		||||
 | 
			
		||||
This error will occur when the content of the request exceeds the configured
 | 
			
		||||
`parameterLimit` for the `urlencoded` parser. The `status` property is set to
 | 
			
		||||
`413` and the `type` property is set to `'parameters.too.many'`.
 | 
			
		||||
 | 
			
		||||
### unsupported charset "BOGUS"
 | 
			
		||||
 | 
			
		||||
This error will occur when the request had a charset parameter in the
 | 
			
		||||
`Content-Type` header, but the `iconv-lite` module does not support it OR the
 | 
			
		||||
parser does not support it. The charset is contained in the message as well
 | 
			
		||||
as in the `charset` property. The `status` property is set to `415`, the
 | 
			
		||||
`type` property is set to `'charset.unsupported'`, and the `charset` property
 | 
			
		||||
is set to the charset that is unsupported.
 | 
			
		||||
 | 
			
		||||
### unsupported content encoding "bogus"
 | 
			
		||||
 | 
			
		||||
This error will occur when the request had a `Content-Encoding` header that
 | 
			
		||||
contained an unsupported encoding. The encoding is contained in the message
 | 
			
		||||
as well as in the `encoding` property. The `status` property is set to `415`,
 | 
			
		||||
the `type` property is set to `'encoding.unsupported'`, and the `encoding`
 | 
			
		||||
property is set to the encoding that is unsupported.
 | 
			
		||||
 | 
			
		||||
## Examples
 | 
			
		||||
 | 
			
		||||
### Express/Connect top-level generic
 | 
			
		||||
 | 
			
		||||
This example demonstrates adding a generic JSON and URL-encoded parser as a
 | 
			
		||||
top-level middleware, which will parse the bodies of all incoming requests.
 | 
			
		||||
This is the simplest setup.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var bodyParser = require('body-parser')
 | 
			
		||||
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
// parse application/x-www-form-urlencoded
 | 
			
		||||
app.use(bodyParser.urlencoded({ extended: false }))
 | 
			
		||||
 | 
			
		||||
// parse application/json
 | 
			
		||||
app.use(bodyParser.json())
 | 
			
		||||
 | 
			
		||||
app.use(function (req, res) {
 | 
			
		||||
  res.setHeader('Content-Type', 'text/plain')
 | 
			
		||||
  res.write('you posted:\n')
 | 
			
		||||
  res.end(JSON.stringify(req.body, null, 2))
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Express route-specific
 | 
			
		||||
 | 
			
		||||
This example demonstrates adding body parsers specifically to the routes that
 | 
			
		||||
need them. In general, this is the most recommended way to use body-parser with
 | 
			
		||||
Express.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var bodyParser = require('body-parser')
 | 
			
		||||
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
// create application/json parser
 | 
			
		||||
var jsonParser = bodyParser.json()
 | 
			
		||||
 | 
			
		||||
// create application/x-www-form-urlencoded parser
 | 
			
		||||
var urlencodedParser = bodyParser.urlencoded({ extended: false })
 | 
			
		||||
 | 
			
		||||
// POST /login gets urlencoded bodies
 | 
			
		||||
app.post('/login', urlencodedParser, function (req, res) {
 | 
			
		||||
  res.send('welcome, ' + req.body.username)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// POST /api/users gets JSON bodies
 | 
			
		||||
app.post('/api/users', jsonParser, function (req, res) {
 | 
			
		||||
  // create user in req.body
 | 
			
		||||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Change accepted type for parsers
 | 
			
		||||
 | 
			
		||||
All the parsers accept a `type` option which allows you to change the
 | 
			
		||||
`Content-Type` that the middleware will parse.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var express = require('express')
 | 
			
		||||
var bodyParser = require('body-parser')
 | 
			
		||||
 | 
			
		||||
var app = express()
 | 
			
		||||
 | 
			
		||||
// parse various different custom JSON types as JSON
 | 
			
		||||
app.use(bodyParser.json({ type: 'application/*+json' }))
 | 
			
		||||
 | 
			
		||||
// parse some custom thing into a Buffer
 | 
			
		||||
app.use(bodyParser.raw({ type: 'application/vnd.custom-type' }))
 | 
			
		||||
 | 
			
		||||
// parse an HTML body into a string
 | 
			
		||||
app.use(bodyParser.text({ type: 'text/html' }))
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
[MIT](LICENSE)
 | 
			
		||||
 | 
			
		||||
[npm-image]: https://img.shields.io/npm/v/body-parser.svg
 | 
			
		||||
[npm-url]: https://npmjs.org/package/body-parser
 | 
			
		||||
[coveralls-image]: https://img.shields.io/coveralls/expressjs/body-parser/master.svg
 | 
			
		||||
[coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master
 | 
			
		||||
[downloads-image]: https://img.shields.io/npm/dm/body-parser.svg
 | 
			
		||||
[downloads-url]: https://npmjs.org/package/body-parser
 | 
			
		||||
[github-actions-ci-image]: https://img.shields.io/github/workflow/status/expressjs/body-parser/ci/master?label=ci
 | 
			
		||||
[github-actions-ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml
 | 
			
		||||
							
								
								
									
										25
									
								
								node_modules/body-parser/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								node_modules/body-parser/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
# Security Policies and Procedures
 | 
			
		||||
 | 
			
		||||
## Reporting a Bug
 | 
			
		||||
 | 
			
		||||
The Express team and community take all security bugs seriously. Thank you
 | 
			
		||||
for improving the security of Express. We appreciate your efforts and
 | 
			
		||||
responsible disclosure and will make every effort to acknowledge your
 | 
			
		||||
contributions.
 | 
			
		||||
 | 
			
		||||
Report security bugs by emailing the current owner(s) of `body-parser`. This
 | 
			
		||||
information can be found in the npm registry using the command
 | 
			
		||||
`npm owner ls body-parser`.
 | 
			
		||||
If unsure or unable to get the information from the above, open an issue
 | 
			
		||||
in the [project issue tracker](https://github.com/expressjs/body-parser/issues)
 | 
			
		||||
asking for the current contact information.
 | 
			
		||||
 | 
			
		||||
To ensure the timely response to your report, please ensure that the entirety
 | 
			
		||||
of the report is contained within the email body and not solely behind a web
 | 
			
		||||
link or an attachment.
 | 
			
		||||
 | 
			
		||||
At least one owner will acknowledge your email within 48 hours, and will send a
 | 
			
		||||
more detailed response within 48 hours indicating the next steps in handling
 | 
			
		||||
your report. After the initial reply to your report, the owners will
 | 
			
		||||
endeavor to keep you informed of the progress towards a fix and full
 | 
			
		||||
announcement, and may ask for additional information or guidance.
 | 
			
		||||
							
								
								
									
										156
									
								
								node_modules/body-parser/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								node_modules/body-parser/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,156 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * body-parser
 | 
			
		||||
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 | 
			
		||||
 * MIT Licensed
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module dependencies.
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var deprecate = require('depd')('body-parser')
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Cache of loaded parsers.
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var parsers = Object.create(null)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @typedef Parsers
 | 
			
		||||
 * @type {function}
 | 
			
		||||
 * @property {function} json
 | 
			
		||||
 * @property {function} raw
 | 
			
		||||
 * @property {function} text
 | 
			
		||||
 * @property {function} urlencoded
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module exports.
 | 
			
		||||
 * @type {Parsers}
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
exports = module.exports = deprecate.function(bodyParser,
 | 
			
		||||
  'bodyParser: use individual json/urlencoded middlewares')
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * JSON parser.
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, 'json', {
 | 
			
		||||
  configurable: true,
 | 
			
		||||
  enumerable: true,
 | 
			
		||||
  get: createParserGetter('json')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Raw parser.
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, 'raw', {
 | 
			
		||||
  configurable: true,
 | 
			
		||||
  enumerable: true,
 | 
			
		||||
  get: createParserGetter('raw')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Text parser.
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, 'text', {
 | 
			
		||||
  configurable: true,
 | 
			
		||||
  enumerable: true,
 | 
			
		||||
  get: createParserGetter('text')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * URL-encoded parser.
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, 'urlencoded', {
 | 
			
		||||
  configurable: true,
 | 
			
		||||
  enumerable: true,
 | 
			
		||||
  get: createParserGetter('urlencoded')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a middleware to parse json and urlencoded bodies.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} [options]
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 * @deprecated
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function bodyParser (options) {
 | 
			
		||||
  // use default type for parsers
 | 
			
		||||
  var opts = Object.create(options || null, {
 | 
			
		||||
    type: {
 | 
			
		||||
      configurable: true,
 | 
			
		||||
      enumerable: true,
 | 
			
		||||
      value: undefined,
 | 
			
		||||
      writable: true
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  var _urlencoded = exports.urlencoded(opts)
 | 
			
		||||
  var _json = exports.json(opts)
 | 
			
		||||
 | 
			
		||||
  return function bodyParser (req, res, next) {
 | 
			
		||||
    _json(req, res, function (err) {
 | 
			
		||||
      if (err) return next(err)
 | 
			
		||||
      _urlencoded(req, res, next)
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a getter for loading a parser.
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function createParserGetter (name) {
 | 
			
		||||
  return function get () {
 | 
			
		||||
    return loadParser(name)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Load a parser module.
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function loadParser (parserName) {
 | 
			
		||||
  var parser = parsers[parserName]
 | 
			
		||||
 | 
			
		||||
  if (parser !== undefined) {
 | 
			
		||||
    return parser
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // this uses a switch for static require analysis
 | 
			
		||||
  switch (parserName) {
 | 
			
		||||
    case 'json':
 | 
			
		||||
      parser = require('./lib/types/json')
 | 
			
		||||
      break
 | 
			
		||||
    case 'raw':
 | 
			
		||||
      parser = require('./lib/types/raw')
 | 
			
		||||
      break
 | 
			
		||||
    case 'text':
 | 
			
		||||
      parser = require('./lib/types/text')
 | 
			
		||||
      break
 | 
			
		||||
    case 'urlencoded':
 | 
			
		||||
      parser = require('./lib/types/urlencoded')
 | 
			
		||||
      break
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // store to prevent invoking require()
 | 
			
		||||
  return (parsers[parserName] = parser)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										205
									
								
								node_modules/body-parser/lib/read.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										205
									
								
								node_modules/body-parser/lib/read.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,205 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * body-parser
 | 
			
		||||
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 | 
			
		||||
 * MIT Licensed
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module dependencies.
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var createError = require('http-errors')
 | 
			
		||||
var destroy = require('destroy')
 | 
			
		||||
var getBody = require('raw-body')
 | 
			
		||||
var iconv = require('iconv-lite')
 | 
			
		||||
var onFinished = require('on-finished')
 | 
			
		||||
var unpipe = require('unpipe')
 | 
			
		||||
var zlib = require('zlib')
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module exports.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
module.exports = read
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Read a request into a buffer and parse.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} req
 | 
			
		||||
 * @param {object} res
 | 
			
		||||
 * @param {function} next
 | 
			
		||||
 * @param {function} parse
 | 
			
		||||
 * @param {function} debug
 | 
			
		||||
 * @param {object} options
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function read (req, res, next, parse, debug, options) {
 | 
			
		||||
  var length
 | 
			
		||||
  var opts = options
 | 
			
		||||
  var stream
 | 
			
		||||
 | 
			
		||||
  // flag as parsed
 | 
			
		||||
  req._body = true
 | 
			
		||||
 | 
			
		||||
  // read options
 | 
			
		||||
  var encoding = opts.encoding !== null
 | 
			
		||||
    ? opts.encoding
 | 
			
		||||
    : null
 | 
			
		||||
  var verify = opts.verify
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    // get the content stream
 | 
			
		||||
    stream = contentstream(req, debug, opts.inflate)
 | 
			
		||||
    length = stream.length
 | 
			
		||||
    stream.length = undefined
 | 
			
		||||
  } catch (err) {
 | 
			
		||||
    return next(err)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // set raw-body options
 | 
			
		||||
  opts.length = length
 | 
			
		||||
  opts.encoding = verify
 | 
			
		||||
    ? null
 | 
			
		||||
    : encoding
 | 
			
		||||
 | 
			
		||||
  // assert charset is supported
 | 
			
		||||
  if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) {
 | 
			
		||||
    return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
 | 
			
		||||
      charset: encoding.toLowerCase(),
 | 
			
		||||
      type: 'charset.unsupported'
 | 
			
		||||
    }))
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // read body
 | 
			
		||||
  debug('read body')
 | 
			
		||||
  getBody(stream, opts, function (error, body) {
 | 
			
		||||
    if (error) {
 | 
			
		||||
      var _error
 | 
			
		||||
 | 
			
		||||
      if (error.type === 'encoding.unsupported') {
 | 
			
		||||
        // echo back charset
 | 
			
		||||
        _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
 | 
			
		||||
          charset: encoding.toLowerCase(),
 | 
			
		||||
          type: 'charset.unsupported'
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        // set status code on error
 | 
			
		||||
        _error = createError(400, error)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // unpipe from stream and destroy
 | 
			
		||||
      if (stream !== req) {
 | 
			
		||||
        unpipe(req)
 | 
			
		||||
        destroy(stream, true)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // read off entire request
 | 
			
		||||
      dump(req, function onfinished () {
 | 
			
		||||
        next(createError(400, _error))
 | 
			
		||||
      })
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // verify
 | 
			
		||||
    if (verify) {
 | 
			
		||||
      try {
 | 
			
		||||
        debug('verify body')
 | 
			
		||||
        verify(req, res, body, encoding)
 | 
			
		||||
      } catch (err) {
 | 
			
		||||
        next(createError(403, err, {
 | 
			
		||||
          body: body,
 | 
			
		||||
          type: err.type || 'entity.verify.failed'
 | 
			
		||||
        }))
 | 
			
		||||
        return
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // parse
 | 
			
		||||
    var str = body
 | 
			
		||||
    try {
 | 
			
		||||
      debug('parse body')
 | 
			
		||||
      str = typeof body !== 'string' && encoding !== null
 | 
			
		||||
        ? iconv.decode(body, encoding)
 | 
			
		||||
        : body
 | 
			
		||||
      req.body = parse(str)
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      next(createError(400, err, {
 | 
			
		||||
        body: str,
 | 
			
		||||
        type: err.type || 'entity.parse.failed'
 | 
			
		||||
      }))
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    next()
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the content stream of the request.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} req
 | 
			
		||||
 * @param {function} debug
 | 
			
		||||
 * @param {boolean} [inflate=true]
 | 
			
		||||
 * @return {object}
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function contentstream (req, debug, inflate) {
 | 
			
		||||
  var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase()
 | 
			
		||||
  var length = req.headers['content-length']
 | 
			
		||||
  var stream
 | 
			
		||||
 | 
			
		||||
  debug('content-encoding "%s"', encoding)
 | 
			
		||||
 | 
			
		||||
  if (inflate === false && encoding !== 'identity') {
 | 
			
		||||
    throw createError(415, 'content encoding unsupported', {
 | 
			
		||||
      encoding: encoding,
 | 
			
		||||
      type: 'encoding.unsupported'
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  switch (encoding) {
 | 
			
		||||
    case 'deflate':
 | 
			
		||||
      stream = zlib.createInflate()
 | 
			
		||||
      debug('inflate body')
 | 
			
		||||
      req.pipe(stream)
 | 
			
		||||
      break
 | 
			
		||||
    case 'gzip':
 | 
			
		||||
      stream = zlib.createGunzip()
 | 
			
		||||
      debug('gunzip body')
 | 
			
		||||
      req.pipe(stream)
 | 
			
		||||
      break
 | 
			
		||||
    case 'identity':
 | 
			
		||||
      stream = req
 | 
			
		||||
      stream.length = length
 | 
			
		||||
      break
 | 
			
		||||
    default:
 | 
			
		||||
      throw createError(415, 'unsupported content encoding "' + encoding + '"', {
 | 
			
		||||
        encoding: encoding,
 | 
			
		||||
        type: 'encoding.unsupported'
 | 
			
		||||
      })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return stream
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Dump the contents of a request.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} req
 | 
			
		||||
 * @param {function} callback
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function dump (req, callback) {
 | 
			
		||||
  if (onFinished.isFinished(req)) {
 | 
			
		||||
    callback(null)
 | 
			
		||||
  } else {
 | 
			
		||||
    onFinished(req, callback)
 | 
			
		||||
    req.resume()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										236
									
								
								node_modules/body-parser/lib/types/json.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										236
									
								
								node_modules/body-parser/lib/types/json.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,236 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * body-parser
 | 
			
		||||
 * Copyright(c) 2014 Jonathan Ong
 | 
			
		||||
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 | 
			
		||||
 * MIT Licensed
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module dependencies.
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var bytes = require('bytes')
 | 
			
		||||
var contentType = require('content-type')
 | 
			
		||||
var createError = require('http-errors')
 | 
			
		||||
var debug = require('debug')('body-parser:json')
 | 
			
		||||
var read = require('../read')
 | 
			
		||||
var typeis = require('type-is')
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module exports.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
module.exports = json
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * RegExp to match the first non-space in a string.
 | 
			
		||||
 *
 | 
			
		||||
 * Allowed whitespace is defined in RFC 7159:
 | 
			
		||||
 *
 | 
			
		||||
 *    ws = *(
 | 
			
		||||
 *            %x20 /              ; Space
 | 
			
		||||
 *            %x09 /              ; Horizontal tab
 | 
			
		||||
 *            %x0A /              ; Line feed or New line
 | 
			
		||||
 *            %x0D )              ; Carriage return
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a middleware to parse JSON bodies.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} [options]
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function json (options) {
 | 
			
		||||
  var opts = options || {}
 | 
			
		||||
 | 
			
		||||
  var limit = typeof opts.limit !== 'number'
 | 
			
		||||
    ? bytes.parse(opts.limit || '100kb')
 | 
			
		||||
    : opts.limit
 | 
			
		||||
  var inflate = opts.inflate !== false
 | 
			
		||||
  var reviver = opts.reviver
 | 
			
		||||
  var strict = opts.strict !== false
 | 
			
		||||
  var type = opts.type || 'application/json'
 | 
			
		||||
  var verify = opts.verify || false
 | 
			
		||||
 | 
			
		||||
  if (verify !== false && typeof verify !== 'function') {
 | 
			
		||||
    throw new TypeError('option verify must be function')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // create the appropriate type checking function
 | 
			
		||||
  var shouldParse = typeof type !== 'function'
 | 
			
		||||
    ? typeChecker(type)
 | 
			
		||||
    : type
 | 
			
		||||
 | 
			
		||||
  function parse (body) {
 | 
			
		||||
    if (body.length === 0) {
 | 
			
		||||
      // special-case empty json body, as it's a common client-side mistake
 | 
			
		||||
      // TODO: maybe make this configurable or part of "strict" option
 | 
			
		||||
      return {}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (strict) {
 | 
			
		||||
      var first = firstchar(body)
 | 
			
		||||
 | 
			
		||||
      if (first !== '{' && first !== '[') {
 | 
			
		||||
        debug('strict violation')
 | 
			
		||||
        throw createStrictSyntaxError(body, first)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      debug('parse json')
 | 
			
		||||
      return JSON.parse(body, reviver)
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      throw normalizeJsonSyntaxError(e, {
 | 
			
		||||
        message: e.message,
 | 
			
		||||
        stack: e.stack
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return function jsonParser (req, res, next) {
 | 
			
		||||
    if (req._body) {
 | 
			
		||||
      debug('body already parsed')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    req.body = req.body || {}
 | 
			
		||||
 | 
			
		||||
    // skip requests without bodies
 | 
			
		||||
    if (!typeis.hasBody(req)) {
 | 
			
		||||
      debug('skip empty body')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    debug('content-type %j', req.headers['content-type'])
 | 
			
		||||
 | 
			
		||||
    // determine if request should be parsed
 | 
			
		||||
    if (!shouldParse(req)) {
 | 
			
		||||
      debug('skip parsing')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // assert charset per RFC 7159 sec 8.1
 | 
			
		||||
    var charset = getCharset(req) || 'utf-8'
 | 
			
		||||
    if (charset.slice(0, 4) !== 'utf-') {
 | 
			
		||||
      debug('invalid charset')
 | 
			
		||||
      next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
 | 
			
		||||
        charset: charset,
 | 
			
		||||
        type: 'charset.unsupported'
 | 
			
		||||
      }))
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // read
 | 
			
		||||
    read(req, res, next, parse, debug, {
 | 
			
		||||
      encoding: charset,
 | 
			
		||||
      inflate: inflate,
 | 
			
		||||
      limit: limit,
 | 
			
		||||
      verify: verify
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create strict violation syntax error matching native error.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} str
 | 
			
		||||
 * @param {string} char
 | 
			
		||||
 * @return {Error}
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function createStrictSyntaxError (str, char) {
 | 
			
		||||
  var index = str.indexOf(char)
 | 
			
		||||
  var partial = index !== -1
 | 
			
		||||
    ? str.substring(0, index) + '#'
 | 
			
		||||
    : ''
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    return normalizeJsonSyntaxError(e, {
 | 
			
		||||
      message: e.message.replace('#', char),
 | 
			
		||||
      stack: e.stack
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the first non-whitespace character in a string.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} str
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function firstchar (str) {
 | 
			
		||||
  var match = FIRST_CHAR_REGEXP.exec(str)
 | 
			
		||||
 | 
			
		||||
  return match
 | 
			
		||||
    ? match[1]
 | 
			
		||||
    : undefined
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the charset of a request.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} req
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function getCharset (req) {
 | 
			
		||||
  try {
 | 
			
		||||
    return (contentType.parse(req).parameters.charset || '').toLowerCase()
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    return undefined
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Normalize a SyntaxError for JSON.parse.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {SyntaxError} error
 | 
			
		||||
 * @param {object} obj
 | 
			
		||||
 * @return {SyntaxError}
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function normalizeJsonSyntaxError (error, obj) {
 | 
			
		||||
  var keys = Object.getOwnPropertyNames(error)
 | 
			
		||||
 | 
			
		||||
  for (var i = 0; i < keys.length; i++) {
 | 
			
		||||
    var key = keys[i]
 | 
			
		||||
    if (key !== 'stack' && key !== 'message') {
 | 
			
		||||
      delete error[key]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // replace stack before message for Node.js 0.10 and below
 | 
			
		||||
  error.stack = obj.stack.replace(error.message, obj.message)
 | 
			
		||||
  error.message = obj.message
 | 
			
		||||
 | 
			
		||||
  return error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the simple type checker.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} type
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function typeChecker (type) {
 | 
			
		||||
  return function checkType (req) {
 | 
			
		||||
    return Boolean(typeis(req, type))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										101
									
								
								node_modules/body-parser/lib/types/raw.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								node_modules/body-parser/lib/types/raw.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * body-parser
 | 
			
		||||
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 | 
			
		||||
 * MIT Licensed
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module dependencies.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var bytes = require('bytes')
 | 
			
		||||
var debug = require('debug')('body-parser:raw')
 | 
			
		||||
var read = require('../read')
 | 
			
		||||
var typeis = require('type-is')
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module exports.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
module.exports = raw
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a middleware to parse raw bodies.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} [options]
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 * @api public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function raw (options) {
 | 
			
		||||
  var opts = options || {}
 | 
			
		||||
 | 
			
		||||
  var inflate = opts.inflate !== false
 | 
			
		||||
  var limit = typeof opts.limit !== 'number'
 | 
			
		||||
    ? bytes.parse(opts.limit || '100kb')
 | 
			
		||||
    : opts.limit
 | 
			
		||||
  var type = opts.type || 'application/octet-stream'
 | 
			
		||||
  var verify = opts.verify || false
 | 
			
		||||
 | 
			
		||||
  if (verify !== false && typeof verify !== 'function') {
 | 
			
		||||
    throw new TypeError('option verify must be function')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // create the appropriate type checking function
 | 
			
		||||
  var shouldParse = typeof type !== 'function'
 | 
			
		||||
    ? typeChecker(type)
 | 
			
		||||
    : type
 | 
			
		||||
 | 
			
		||||
  function parse (buf) {
 | 
			
		||||
    return buf
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return function rawParser (req, res, next) {
 | 
			
		||||
    if (req._body) {
 | 
			
		||||
      debug('body already parsed')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    req.body = req.body || {}
 | 
			
		||||
 | 
			
		||||
    // skip requests without bodies
 | 
			
		||||
    if (!typeis.hasBody(req)) {
 | 
			
		||||
      debug('skip empty body')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    debug('content-type %j', req.headers['content-type'])
 | 
			
		||||
 | 
			
		||||
    // determine if request should be parsed
 | 
			
		||||
    if (!shouldParse(req)) {
 | 
			
		||||
      debug('skip parsing')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // read
 | 
			
		||||
    read(req, res, next, parse, debug, {
 | 
			
		||||
      encoding: null,
 | 
			
		||||
      inflate: inflate,
 | 
			
		||||
      limit: limit,
 | 
			
		||||
      verify: verify
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the simple type checker.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} type
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function typeChecker (type) {
 | 
			
		||||
  return function checkType (req) {
 | 
			
		||||
    return Boolean(typeis(req, type))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										121
									
								
								node_modules/body-parser/lib/types/text.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								node_modules/body-parser/lib/types/text.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * body-parser
 | 
			
		||||
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 | 
			
		||||
 * MIT Licensed
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module dependencies.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var bytes = require('bytes')
 | 
			
		||||
var contentType = require('content-type')
 | 
			
		||||
var debug = require('debug')('body-parser:text')
 | 
			
		||||
var read = require('../read')
 | 
			
		||||
var typeis = require('type-is')
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module exports.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
module.exports = text
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a middleware to parse text bodies.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} [options]
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 * @api public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function text (options) {
 | 
			
		||||
  var opts = options || {}
 | 
			
		||||
 | 
			
		||||
  var defaultCharset = opts.defaultCharset || 'utf-8'
 | 
			
		||||
  var inflate = opts.inflate !== false
 | 
			
		||||
  var limit = typeof opts.limit !== 'number'
 | 
			
		||||
    ? bytes.parse(opts.limit || '100kb')
 | 
			
		||||
    : opts.limit
 | 
			
		||||
  var type = opts.type || 'text/plain'
 | 
			
		||||
  var verify = opts.verify || false
 | 
			
		||||
 | 
			
		||||
  if (verify !== false && typeof verify !== 'function') {
 | 
			
		||||
    throw new TypeError('option verify must be function')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // create the appropriate type checking function
 | 
			
		||||
  var shouldParse = typeof type !== 'function'
 | 
			
		||||
    ? typeChecker(type)
 | 
			
		||||
    : type
 | 
			
		||||
 | 
			
		||||
  function parse (buf) {
 | 
			
		||||
    return buf
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return function textParser (req, res, next) {
 | 
			
		||||
    if (req._body) {
 | 
			
		||||
      debug('body already parsed')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    req.body = req.body || {}
 | 
			
		||||
 | 
			
		||||
    // skip requests without bodies
 | 
			
		||||
    if (!typeis.hasBody(req)) {
 | 
			
		||||
      debug('skip empty body')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    debug('content-type %j', req.headers['content-type'])
 | 
			
		||||
 | 
			
		||||
    // determine if request should be parsed
 | 
			
		||||
    if (!shouldParse(req)) {
 | 
			
		||||
      debug('skip parsing')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // get charset
 | 
			
		||||
    var charset = getCharset(req) || defaultCharset
 | 
			
		||||
 | 
			
		||||
    // read
 | 
			
		||||
    read(req, res, next, parse, debug, {
 | 
			
		||||
      encoding: charset,
 | 
			
		||||
      inflate: inflate,
 | 
			
		||||
      limit: limit,
 | 
			
		||||
      verify: verify
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the charset of a request.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} req
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function getCharset (req) {
 | 
			
		||||
  try {
 | 
			
		||||
    return (contentType.parse(req).parameters.charset || '').toLowerCase()
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    return undefined
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the simple type checker.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} type
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function typeChecker (type) {
 | 
			
		||||
  return function checkType (req) {
 | 
			
		||||
    return Boolean(typeis(req, type))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										284
									
								
								node_modules/body-parser/lib/types/urlencoded.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										284
									
								
								node_modules/body-parser/lib/types/urlencoded.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,284 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * body-parser
 | 
			
		||||
 * Copyright(c) 2014 Jonathan Ong
 | 
			
		||||
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 | 
			
		||||
 * MIT Licensed
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
'use strict'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module dependencies.
 | 
			
		||||
 * @private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var bytes = require('bytes')
 | 
			
		||||
var contentType = require('content-type')
 | 
			
		||||
var createError = require('http-errors')
 | 
			
		||||
var debug = require('debug')('body-parser:urlencoded')
 | 
			
		||||
var deprecate = require('depd')('body-parser')
 | 
			
		||||
var read = require('../read')
 | 
			
		||||
var typeis = require('type-is')
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Module exports.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
module.exports = urlencoded
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Cache of parser modules.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
var parsers = Object.create(null)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a middleware to parse urlencoded bodies.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} [options]
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 * @public
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function urlencoded (options) {
 | 
			
		||||
  var opts = options || {}
 | 
			
		||||
 | 
			
		||||
  // notice because option default will flip in next major
 | 
			
		||||
  if (opts.extended === undefined) {
 | 
			
		||||
    deprecate('undefined extended: provide extended option')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var extended = opts.extended !== false
 | 
			
		||||
  var inflate = opts.inflate !== false
 | 
			
		||||
  var limit = typeof opts.limit !== 'number'
 | 
			
		||||
    ? bytes.parse(opts.limit || '100kb')
 | 
			
		||||
    : opts.limit
 | 
			
		||||
  var type = opts.type || 'application/x-www-form-urlencoded'
 | 
			
		||||
  var verify = opts.verify || false
 | 
			
		||||
 | 
			
		||||
  if (verify !== false && typeof verify !== 'function') {
 | 
			
		||||
    throw new TypeError('option verify must be function')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // create the appropriate query parser
 | 
			
		||||
  var queryparse = extended
 | 
			
		||||
    ? extendedparser(opts)
 | 
			
		||||
    : simpleparser(opts)
 | 
			
		||||
 | 
			
		||||
  // create the appropriate type checking function
 | 
			
		||||
  var shouldParse = typeof type !== 'function'
 | 
			
		||||
    ? typeChecker(type)
 | 
			
		||||
    : type
 | 
			
		||||
 | 
			
		||||
  function parse (body) {
 | 
			
		||||
    return body.length
 | 
			
		||||
      ? queryparse(body)
 | 
			
		||||
      : {}
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return function urlencodedParser (req, res, next) {
 | 
			
		||||
    if (req._body) {
 | 
			
		||||
      debug('body already parsed')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    req.body = req.body || {}
 | 
			
		||||
 | 
			
		||||
    // skip requests without bodies
 | 
			
		||||
    if (!typeis.hasBody(req)) {
 | 
			
		||||
      debug('skip empty body')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    debug('content-type %j', req.headers['content-type'])
 | 
			
		||||
 | 
			
		||||
    // determine if request should be parsed
 | 
			
		||||
    if (!shouldParse(req)) {
 | 
			
		||||
      debug('skip parsing')
 | 
			
		||||
      next()
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // assert charset
 | 
			
		||||
    var charset = getCharset(req) || 'utf-8'
 | 
			
		||||
    if (charset !== 'utf-8') {
 | 
			
		||||
      debug('invalid charset')
 | 
			
		||||
      next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
 | 
			
		||||
        charset: charset,
 | 
			
		||||
        type: 'charset.unsupported'
 | 
			
		||||
      }))
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // read
 | 
			
		||||
    read(req, res, next, parse, debug, {
 | 
			
		||||
      debug: debug,
 | 
			
		||||
      encoding: charset,
 | 
			
		||||
      inflate: inflate,
 | 
			
		||||
      limit: limit,
 | 
			
		||||
      verify: verify
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the extended query parser.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} options
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function extendedparser (options) {
 | 
			
		||||
  var parameterLimit = options.parameterLimit !== undefined
 | 
			
		||||
    ? options.parameterLimit
 | 
			
		||||
    : 1000
 | 
			
		||||
  var parse = parser('qs')
 | 
			
		||||
 | 
			
		||||
  if (isNaN(parameterLimit) || parameterLimit < 1) {
 | 
			
		||||
    throw new TypeError('option parameterLimit must be a positive number')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (isFinite(parameterLimit)) {
 | 
			
		||||
    parameterLimit = parameterLimit | 0
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return function queryparse (body) {
 | 
			
		||||
    var paramCount = parameterCount(body, parameterLimit)
 | 
			
		||||
 | 
			
		||||
    if (paramCount === undefined) {
 | 
			
		||||
      debug('too many parameters')
 | 
			
		||||
      throw createError(413, 'too many parameters', {
 | 
			
		||||
        type: 'parameters.too.many'
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var arrayLimit = Math.max(100, paramCount)
 | 
			
		||||
 | 
			
		||||
    debug('parse extended urlencoding')
 | 
			
		||||
    return parse(body, {
 | 
			
		||||
      allowPrototypes: true,
 | 
			
		||||
      arrayLimit: arrayLimit,
 | 
			
		||||
      depth: Infinity,
 | 
			
		||||
      parameterLimit: parameterLimit
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the charset of a request.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} req
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function getCharset (req) {
 | 
			
		||||
  try {
 | 
			
		||||
    return (contentType.parse(req).parameters.charset || '').toLowerCase()
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    return undefined
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Count the number of parameters, stopping once limit reached
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} body
 | 
			
		||||
 * @param {number} limit
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function parameterCount (body, limit) {
 | 
			
		||||
  var count = 0
 | 
			
		||||
  var index = 0
 | 
			
		||||
 | 
			
		||||
  while ((index = body.indexOf('&', index)) !== -1) {
 | 
			
		||||
    count++
 | 
			
		||||
    index++
 | 
			
		||||
 | 
			
		||||
    if (count === limit) {
 | 
			
		||||
      return undefined
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return count
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get parser for module name dynamically.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} name
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 * @api private
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function parser (name) {
 | 
			
		||||
  var mod = parsers[name]
 | 
			
		||||
 | 
			
		||||
  if (mod !== undefined) {
 | 
			
		||||
    return mod.parse
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // this uses a switch for static require analysis
 | 
			
		||||
  switch (name) {
 | 
			
		||||
    case 'qs':
 | 
			
		||||
      mod = require('qs')
 | 
			
		||||
      break
 | 
			
		||||
    case 'querystring':
 | 
			
		||||
      mod = require('querystring')
 | 
			
		||||
      break
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // store to prevent invoking require()
 | 
			
		||||
  parsers[name] = mod
 | 
			
		||||
 | 
			
		||||
  return mod.parse
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the simple query parser.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {object} options
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function simpleparser (options) {
 | 
			
		||||
  var parameterLimit = options.parameterLimit !== undefined
 | 
			
		||||
    ? options.parameterLimit
 | 
			
		||||
    : 1000
 | 
			
		||||
  var parse = parser('querystring')
 | 
			
		||||
 | 
			
		||||
  if (isNaN(parameterLimit) || parameterLimit < 1) {
 | 
			
		||||
    throw new TypeError('option parameterLimit must be a positive number')
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (isFinite(parameterLimit)) {
 | 
			
		||||
    parameterLimit = parameterLimit | 0
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return function queryparse (body) {
 | 
			
		||||
    var paramCount = parameterCount(body, parameterLimit)
 | 
			
		||||
 | 
			
		||||
    if (paramCount === undefined) {
 | 
			
		||||
      debug('too many parameters')
 | 
			
		||||
      throw createError(413, 'too many parameters', {
 | 
			
		||||
        type: 'parameters.too.many'
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    debug('parse urlencoding')
 | 
			
		||||
    return parse(body, undefined, undefined, { maxKeys: parameterLimit })
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the simple type checker.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {string} type
 | 
			
		||||
 * @return {function}
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function typeChecker (type) {
 | 
			
		||||
  return function checkType (req) {
 | 
			
		||||
    return Boolean(typeis(req, type))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								node_modules/body-parser/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								node_modules/body-parser/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "body-parser",
 | 
			
		||||
  "description": "Node.js body parsing middleware",
 | 
			
		||||
  "version": "1.20.1",
 | 
			
		||||
  "contributors": [
 | 
			
		||||
    "Douglas Christopher Wilson <doug@somethingdoug.com>",
 | 
			
		||||
    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
 | 
			
		||||
  ],
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "repository": "expressjs/body-parser",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "bytes": "3.1.2",
 | 
			
		||||
    "content-type": "~1.0.4",
 | 
			
		||||
    "debug": "2.6.9",
 | 
			
		||||
    "depd": "2.0.0",
 | 
			
		||||
    "destroy": "1.2.0",
 | 
			
		||||
    "http-errors": "2.0.0",
 | 
			
		||||
    "iconv-lite": "0.4.24",
 | 
			
		||||
    "on-finished": "2.4.1",
 | 
			
		||||
    "qs": "6.11.0",
 | 
			
		||||
    "raw-body": "2.5.1",
 | 
			
		||||
    "type-is": "~1.6.18",
 | 
			
		||||
    "unpipe": "1.0.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "eslint": "8.24.0",
 | 
			
		||||
    "eslint-config-standard": "14.1.1",
 | 
			
		||||
    "eslint-plugin-import": "2.26.0",
 | 
			
		||||
    "eslint-plugin-markdown": "3.0.0",
 | 
			
		||||
    "eslint-plugin-node": "11.1.0",
 | 
			
		||||
    "eslint-plugin-promise": "6.0.1",
 | 
			
		||||
    "eslint-plugin-standard": "4.1.0",
 | 
			
		||||
    "methods": "1.1.2",
 | 
			
		||||
    "mocha": "10.0.0",
 | 
			
		||||
    "nyc": "15.1.0",
 | 
			
		||||
    "safe-buffer": "5.2.1",
 | 
			
		||||
    "supertest": "6.3.0"
 | 
			
		||||
  },
 | 
			
		||||
  "files": [
 | 
			
		||||
    "lib/",
 | 
			
		||||
    "LICENSE",
 | 
			
		||||
    "HISTORY.md",
 | 
			
		||||
    "SECURITY.md",
 | 
			
		||||
    "index.js"
 | 
			
		||||
  ],
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": ">= 0.8",
 | 
			
		||||
    "npm": "1.2.8000 || >= 1.4.16"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "lint": "eslint .",
 | 
			
		||||
    "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/",
 | 
			
		||||
    "test-ci": "nyc --reporter=lcov --reporter=text npm test",
 | 
			
		||||
    "test-cov": "nyc --reporter=html --reporter=text npm test"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user