speaker-calibration 2.1.6 → 2.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/dist/main.js +1110 -912
  2. package/dist/package-lock.json +1018 -1018
  3. package/dist/package.json +18 -18
  4. package/package.json +1 -1
  5. package/src/tasks/volume/volume.js +28 -1
  6. package/dist/node_modules/.bin/mime +0 -12
  7. package/dist/node_modules/.bin/mime.cmd +0 -17
  8. package/dist/node_modules/.bin/mime.ps1 +0 -28
  9. package/dist/node_modules/.package-lock.json +0 -584
  10. package/dist/node_modules/accepts/HISTORY.md +0 -243
  11. package/dist/node_modules/accepts/LICENSE +0 -23
  12. package/dist/node_modules/accepts/README.md +0 -140
  13. package/dist/node_modules/accepts/index.js +0 -238
  14. package/dist/node_modules/accepts/package.json +0 -47
  15. package/dist/node_modules/array-flatten/LICENSE +0 -21
  16. package/dist/node_modules/array-flatten/README.md +0 -43
  17. package/dist/node_modules/array-flatten/array-flatten.js +0 -64
  18. package/dist/node_modules/array-flatten/package.json +0 -39
  19. package/dist/node_modules/body-parser/HISTORY.md +0 -657
  20. package/dist/node_modules/body-parser/LICENSE +0 -23
  21. package/dist/node_modules/body-parser/README.md +0 -464
  22. package/dist/node_modules/body-parser/SECURITY.md +0 -25
  23. package/dist/node_modules/body-parser/index.js +0 -156
  24. package/dist/node_modules/body-parser/lib/read.js +0 -205
  25. package/dist/node_modules/body-parser/lib/types/json.js +0 -236
  26. package/dist/node_modules/body-parser/lib/types/raw.js +0 -101
  27. package/dist/node_modules/body-parser/lib/types/text.js +0 -121
  28. package/dist/node_modules/body-parser/lib/types/urlencoded.js +0 -284
  29. package/dist/node_modules/body-parser/package.json +0 -56
  30. package/dist/node_modules/bytes/History.md +0 -97
  31. package/dist/node_modules/bytes/LICENSE +0 -23
  32. package/dist/node_modules/bytes/Readme.md +0 -152
  33. package/dist/node_modules/bytes/index.js +0 -170
  34. package/dist/node_modules/bytes/package.json +0 -42
  35. package/dist/node_modules/call-bind/.eslintignore +0 -1
  36. package/dist/node_modules/call-bind/.eslintrc +0 -17
  37. package/dist/node_modules/call-bind/.github/FUNDING.yml +0 -12
  38. package/dist/node_modules/call-bind/.nycrc +0 -13
  39. package/dist/node_modules/call-bind/CHANGELOG.md +0 -42
  40. package/dist/node_modules/call-bind/LICENSE +0 -21
  41. package/dist/node_modules/call-bind/README.md +0 -2
  42. package/dist/node_modules/call-bind/callBound.js +0 -15
  43. package/dist/node_modules/call-bind/index.js +0 -47
  44. package/dist/node_modules/call-bind/package.json +0 -80
  45. package/dist/node_modules/call-bind/test/callBound.js +0 -55
  46. package/dist/node_modules/call-bind/test/index.js +0 -66
  47. package/dist/node_modules/content-disposition/HISTORY.md +0 -60
  48. package/dist/node_modules/content-disposition/LICENSE +0 -22
  49. package/dist/node_modules/content-disposition/README.md +0 -142
  50. package/dist/node_modules/content-disposition/index.js +0 -458
  51. package/dist/node_modules/content-disposition/package.json +0 -44
  52. package/dist/node_modules/content-type/HISTORY.md +0 -24
  53. package/dist/node_modules/content-type/LICENSE +0 -22
  54. package/dist/node_modules/content-type/README.md +0 -92
  55. package/dist/node_modules/content-type/index.js +0 -222
  56. package/dist/node_modules/content-type/package.json +0 -40
  57. package/dist/node_modules/cookie/HISTORY.md +0 -142
  58. package/dist/node_modules/cookie/LICENSE +0 -24
  59. package/dist/node_modules/cookie/README.md +0 -302
  60. package/dist/node_modules/cookie/SECURITY.md +0 -25
  61. package/dist/node_modules/cookie/index.js +0 -270
  62. package/dist/node_modules/cookie/package.json +0 -44
  63. package/dist/node_modules/cookie-signature/History.md +0 -38
  64. package/dist/node_modules/cookie-signature/Readme.md +0 -42
  65. package/dist/node_modules/cookie-signature/index.js +0 -51
  66. package/dist/node_modules/cookie-signature/package.json +0 -18
  67. package/dist/node_modules/debug/.coveralls.yml +0 -1
  68. package/dist/node_modules/debug/.eslintrc +0 -11
  69. package/dist/node_modules/debug/.travis.yml +0 -14
  70. package/dist/node_modules/debug/CHANGELOG.md +0 -362
  71. package/dist/node_modules/debug/LICENSE +0 -19
  72. package/dist/node_modules/debug/Makefile +0 -50
  73. package/dist/node_modules/debug/README.md +0 -312
  74. package/dist/node_modules/debug/component.json +0 -19
  75. package/dist/node_modules/debug/karma.conf.js +0 -70
  76. package/dist/node_modules/debug/node.js +0 -1
  77. package/dist/node_modules/debug/package.json +0 -49
  78. package/dist/node_modules/debug/src/browser.js +0 -185
  79. package/dist/node_modules/debug/src/debug.js +0 -202
  80. package/dist/node_modules/debug/src/index.js +0 -10
  81. package/dist/node_modules/debug/src/inspector-log.js +0 -15
  82. package/dist/node_modules/debug/src/node.js +0 -248
  83. package/dist/node_modules/depd/History.md +0 -103
  84. package/dist/node_modules/depd/LICENSE +0 -22
  85. package/dist/node_modules/depd/Readme.md +0 -280
  86. package/dist/node_modules/depd/index.js +0 -538
  87. package/dist/node_modules/depd/lib/browser/index.js +0 -77
  88. package/dist/node_modules/depd/package.json +0 -45
  89. package/dist/node_modules/destroy/LICENSE +0 -23
  90. package/dist/node_modules/destroy/README.md +0 -63
  91. package/dist/node_modules/destroy/index.js +0 -209
  92. package/dist/node_modules/destroy/package.json +0 -48
  93. package/dist/node_modules/ee-first/LICENSE +0 -22
  94. package/dist/node_modules/ee-first/README.md +0 -80
  95. package/dist/node_modules/ee-first/index.js +0 -95
  96. package/dist/node_modules/ee-first/package.json +0 -29
  97. package/dist/node_modules/encodeurl/HISTORY.md +0 -14
  98. package/dist/node_modules/encodeurl/LICENSE +0 -22
  99. package/dist/node_modules/encodeurl/README.md +0 -128
  100. package/dist/node_modules/encodeurl/index.js +0 -60
  101. package/dist/node_modules/encodeurl/package.json +0 -40
  102. package/dist/node_modules/escape-html/LICENSE +0 -24
  103. package/dist/node_modules/escape-html/Readme.md +0 -43
  104. package/dist/node_modules/escape-html/index.js +0 -78
  105. package/dist/node_modules/escape-html/package.json +0 -24
  106. package/dist/node_modules/etag/HISTORY.md +0 -83
  107. package/dist/node_modules/etag/LICENSE +0 -22
  108. package/dist/node_modules/etag/README.md +0 -159
  109. package/dist/node_modules/etag/index.js +0 -131
  110. package/dist/node_modules/etag/package.json +0 -47
  111. package/dist/node_modules/express/History.md +0 -3588
  112. package/dist/node_modules/express/LICENSE +0 -24
  113. package/dist/node_modules/express/Readme.md +0 -166
  114. package/dist/node_modules/express/index.js +0 -11
  115. package/dist/node_modules/express/lib/application.js +0 -661
  116. package/dist/node_modules/express/lib/express.js +0 -116
  117. package/dist/node_modules/express/lib/middleware/init.js +0 -43
  118. package/dist/node_modules/express/lib/middleware/query.js +0 -47
  119. package/dist/node_modules/express/lib/request.js +0 -525
  120. package/dist/node_modules/express/lib/response.js +0 -1169
  121. package/dist/node_modules/express/lib/router/index.js +0 -673
  122. package/dist/node_modules/express/lib/router/layer.js +0 -181
  123. package/dist/node_modules/express/lib/router/route.js +0 -225
  124. package/dist/node_modules/express/lib/utils.js +0 -304
  125. package/dist/node_modules/express/lib/view.js +0 -182
  126. package/dist/node_modules/express/package.json +0 -99
  127. package/dist/node_modules/finalhandler/HISTORY.md +0 -195
  128. package/dist/node_modules/finalhandler/LICENSE +0 -22
  129. package/dist/node_modules/finalhandler/README.md +0 -147
  130. package/dist/node_modules/finalhandler/SECURITY.md +0 -25
  131. package/dist/node_modules/finalhandler/index.js +0 -336
  132. package/dist/node_modules/finalhandler/package.json +0 -46
  133. package/dist/node_modules/forwarded/HISTORY.md +0 -21
  134. package/dist/node_modules/forwarded/LICENSE +0 -22
  135. package/dist/node_modules/forwarded/README.md +0 -57
  136. package/dist/node_modules/forwarded/index.js +0 -90
  137. package/dist/node_modules/forwarded/package.json +0 -45
  138. package/dist/node_modules/fresh/HISTORY.md +0 -70
  139. package/dist/node_modules/fresh/LICENSE +0 -23
  140. package/dist/node_modules/fresh/README.md +0 -119
  141. package/dist/node_modules/fresh/index.js +0 -137
  142. package/dist/node_modules/fresh/package.json +0 -46
  143. package/dist/node_modules/function-bind/.editorconfig +0 -20
  144. package/dist/node_modules/function-bind/.eslintrc +0 -15
  145. package/dist/node_modules/function-bind/.jscs.json +0 -176
  146. package/dist/node_modules/function-bind/.travis.yml +0 -168
  147. package/dist/node_modules/function-bind/LICENSE +0 -20
  148. package/dist/node_modules/function-bind/README.md +0 -48
  149. package/dist/node_modules/function-bind/implementation.js +0 -52
  150. package/dist/node_modules/function-bind/index.js +0 -5
  151. package/dist/node_modules/function-bind/package.json +0 -63
  152. package/dist/node_modules/function-bind/test/.eslintrc +0 -9
  153. package/dist/node_modules/function-bind/test/index.js +0 -252
  154. package/dist/node_modules/get-intrinsic/.eslintrc +0 -37
  155. package/dist/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
  156. package/dist/node_modules/get-intrinsic/.nycrc +0 -9
  157. package/dist/node_modules/get-intrinsic/CHANGELOG.md +0 -98
  158. package/dist/node_modules/get-intrinsic/LICENSE +0 -21
  159. package/dist/node_modules/get-intrinsic/README.md +0 -71
  160. package/dist/node_modules/get-intrinsic/index.js +0 -334
  161. package/dist/node_modules/get-intrinsic/package.json +0 -91
  162. package/dist/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
  163. package/dist/node_modules/has/LICENSE-MIT +0 -22
  164. package/dist/node_modules/has/README.md +0 -18
  165. package/dist/node_modules/has/package.json +0 -48
  166. package/dist/node_modules/has/src/index.js +0 -5
  167. package/dist/node_modules/has/test/index.js +0 -10
  168. package/dist/node_modules/has-symbols/.eslintrc +0 -11
  169. package/dist/node_modules/has-symbols/.github/FUNDING.yml +0 -12
  170. package/dist/node_modules/has-symbols/.nycrc +0 -9
  171. package/dist/node_modules/has-symbols/CHANGELOG.md +0 -75
  172. package/dist/node_modules/has-symbols/LICENSE +0 -21
  173. package/dist/node_modules/has-symbols/README.md +0 -46
  174. package/dist/node_modules/has-symbols/index.js +0 -13
  175. package/dist/node_modules/has-symbols/package.json +0 -101
  176. package/dist/node_modules/has-symbols/shams.js +0 -42
  177. package/dist/node_modules/has-symbols/test/index.js +0 -22
  178. package/dist/node_modules/has-symbols/test/shams/core-js.js +0 -28
  179. package/dist/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -28
  180. package/dist/node_modules/has-symbols/test/tests.js +0 -56
  181. package/dist/node_modules/http-errors/HISTORY.md +0 -180
  182. package/dist/node_modules/http-errors/LICENSE +0 -23
  183. package/dist/node_modules/http-errors/README.md +0 -169
  184. package/dist/node_modules/http-errors/index.js +0 -289
  185. package/dist/node_modules/http-errors/package.json +0 -50
  186. package/dist/node_modules/iconv-lite/Changelog.md +0 -162
  187. package/dist/node_modules/iconv-lite/LICENSE +0 -21
  188. package/dist/node_modules/iconv-lite/README.md +0 -156
  189. package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
  190. package/dist/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
  191. package/dist/node_modules/iconv-lite/encodings/index.js +0 -22
  192. package/dist/node_modules/iconv-lite/encodings/internal.js +0 -188
  193. package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
  194. package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
  195. package/dist/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
  196. package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
  197. package/dist/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
  198. package/dist/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
  199. package/dist/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
  200. package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
  201. package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
  202. package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
  203. package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
  204. package/dist/node_modules/iconv-lite/encodings/utf16.js +0 -177
  205. package/dist/node_modules/iconv-lite/encodings/utf7.js +0 -290
  206. package/dist/node_modules/iconv-lite/lib/bom-handling.js +0 -52
  207. package/dist/node_modules/iconv-lite/lib/extend-node.js +0 -217
  208. package/dist/node_modules/iconv-lite/lib/index.d.ts +0 -24
  209. package/dist/node_modules/iconv-lite/lib/index.js +0 -153
  210. package/dist/node_modules/iconv-lite/lib/streams.js +0 -121
  211. package/dist/node_modules/iconv-lite/package.json +0 -46
  212. package/dist/node_modules/inherits/LICENSE +0 -16
  213. package/dist/node_modules/inherits/README.md +0 -42
  214. package/dist/node_modules/inherits/inherits.js +0 -9
  215. package/dist/node_modules/inherits/inherits_browser.js +0 -27
  216. package/dist/node_modules/inherits/package.json +0 -29
  217. package/dist/node_modules/ipaddr.js/LICENSE +0 -19
  218. package/dist/node_modules/ipaddr.js/README.md +0 -233
  219. package/dist/node_modules/ipaddr.js/ipaddr.min.js +0 -1
  220. package/dist/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
  221. package/dist/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
  222. package/dist/node_modules/ipaddr.js/package.json +0 -35
  223. package/dist/node_modules/media-typer/HISTORY.md +0 -22
  224. package/dist/node_modules/media-typer/LICENSE +0 -22
  225. package/dist/node_modules/media-typer/README.md +0 -81
  226. package/dist/node_modules/media-typer/index.js +0 -270
  227. package/dist/node_modules/media-typer/package.json +0 -26
  228. package/dist/node_modules/merge-descriptors/HISTORY.md +0 -21
  229. package/dist/node_modules/merge-descriptors/LICENSE +0 -23
  230. package/dist/node_modules/merge-descriptors/README.md +0 -48
  231. package/dist/node_modules/merge-descriptors/index.js +0 -60
  232. package/dist/node_modules/merge-descriptors/package.json +0 -32
  233. package/dist/node_modules/methods/HISTORY.md +0 -29
  234. package/dist/node_modules/methods/LICENSE +0 -24
  235. package/dist/node_modules/methods/README.md +0 -51
  236. package/dist/node_modules/methods/index.js +0 -69
  237. package/dist/node_modules/methods/package.json +0 -36
  238. package/dist/node_modules/mime/CHANGELOG.md +0 -164
  239. package/dist/node_modules/mime/LICENSE +0 -21
  240. package/dist/node_modules/mime/README.md +0 -90
  241. package/dist/node_modules/mime/cli.js +0 -8
  242. package/dist/node_modules/mime/mime.js +0 -108
  243. package/dist/node_modules/mime/package.json +0 -44
  244. package/dist/node_modules/mime/src/build.js +0 -53
  245. package/dist/node_modules/mime/src/test.js +0 -60
  246. package/dist/node_modules/mime/types.json +0 -1
  247. package/dist/node_modules/mime-db/HISTORY.md +0 -507
  248. package/dist/node_modules/mime-db/LICENSE +0 -23
  249. package/dist/node_modules/mime-db/README.md +0 -100
  250. package/dist/node_modules/mime-db/db.json +0 -8519
  251. package/dist/node_modules/mime-db/index.js +0 -12
  252. package/dist/node_modules/mime-db/package.json +0 -60
  253. package/dist/node_modules/mime-types/HISTORY.md +0 -397
  254. package/dist/node_modules/mime-types/LICENSE +0 -23
  255. package/dist/node_modules/mime-types/README.md +0 -113
  256. package/dist/node_modules/mime-types/index.js +0 -188
  257. package/dist/node_modules/mime-types/package.json +0 -44
  258. package/dist/node_modules/ms/index.js +0 -152
  259. package/dist/node_modules/ms/license.md +0 -21
  260. package/dist/node_modules/ms/package.json +0 -37
  261. package/dist/node_modules/ms/readme.md +0 -51
  262. package/dist/node_modules/negotiator/HISTORY.md +0 -108
  263. package/dist/node_modules/negotiator/LICENSE +0 -24
  264. package/dist/node_modules/negotiator/README.md +0 -203
  265. package/dist/node_modules/negotiator/index.js +0 -82
  266. package/dist/node_modules/negotiator/lib/charset.js +0 -169
  267. package/dist/node_modules/negotiator/lib/encoding.js +0 -184
  268. package/dist/node_modules/negotiator/lib/language.js +0 -179
  269. package/dist/node_modules/negotiator/lib/mediaType.js +0 -294
  270. package/dist/node_modules/negotiator/package.json +0 -42
  271. package/dist/node_modules/object-inspect/.eslintrc +0 -53
  272. package/dist/node_modules/object-inspect/.github/FUNDING.yml +0 -12
  273. package/dist/node_modules/object-inspect/.nycrc +0 -13
  274. package/dist/node_modules/object-inspect/CHANGELOG.md +0 -360
  275. package/dist/node_modules/object-inspect/LICENSE +0 -21
  276. package/dist/node_modules/object-inspect/example/all.js +0 -23
  277. package/dist/node_modules/object-inspect/example/circular.js +0 -6
  278. package/dist/node_modules/object-inspect/example/fn.js +0 -5
  279. package/dist/node_modules/object-inspect/example/inspect.js +0 -10
  280. package/dist/node_modules/object-inspect/index.js +0 -512
  281. package/dist/node_modules/object-inspect/package-support.json +0 -20
  282. package/dist/node_modules/object-inspect/package.json +0 -94
  283. package/dist/node_modules/object-inspect/readme.markdown +0 -86
  284. package/dist/node_modules/object-inspect/test/bigint.js +0 -58
  285. package/dist/node_modules/object-inspect/test/browser/dom.js +0 -15
  286. package/dist/node_modules/object-inspect/test/circular.js +0 -16
  287. package/dist/node_modules/object-inspect/test/deep.js +0 -12
  288. package/dist/node_modules/object-inspect/test/element.js +0 -53
  289. package/dist/node_modules/object-inspect/test/err.js +0 -48
  290. package/dist/node_modules/object-inspect/test/fakes.js +0 -29
  291. package/dist/node_modules/object-inspect/test/fn.js +0 -76
  292. package/dist/node_modules/object-inspect/test/has.js +0 -15
  293. package/dist/node_modules/object-inspect/test/holes.js +0 -15
  294. package/dist/node_modules/object-inspect/test/indent-option.js +0 -271
  295. package/dist/node_modules/object-inspect/test/inspect.js +0 -139
  296. package/dist/node_modules/object-inspect/test/lowbyte.js +0 -12
  297. package/dist/node_modules/object-inspect/test/number.js +0 -58
  298. package/dist/node_modules/object-inspect/test/quoteStyle.js +0 -17
  299. package/dist/node_modules/object-inspect/test/toStringTag.js +0 -40
  300. package/dist/node_modules/object-inspect/test/undef.js +0 -12
  301. package/dist/node_modules/object-inspect/test/values.js +0 -211
  302. package/dist/node_modules/object-inspect/test-core-js.js +0 -26
  303. package/dist/node_modules/object-inspect/util.inspect.js +0 -1
  304. package/dist/node_modules/on-finished/HISTORY.md +0 -98
  305. package/dist/node_modules/on-finished/LICENSE +0 -23
  306. package/dist/node_modules/on-finished/README.md +0 -162
  307. package/dist/node_modules/on-finished/index.js +0 -234
  308. package/dist/node_modules/on-finished/package.json +0 -39
  309. package/dist/node_modules/parseurl/HISTORY.md +0 -58
  310. package/dist/node_modules/parseurl/LICENSE +0 -24
  311. package/dist/node_modules/parseurl/README.md +0 -133
  312. package/dist/node_modules/parseurl/index.js +0 -158
  313. package/dist/node_modules/parseurl/package.json +0 -40
  314. package/dist/node_modules/path-to-regexp/History.md +0 -36
  315. package/dist/node_modules/path-to-regexp/LICENSE +0 -21
  316. package/dist/node_modules/path-to-regexp/Readme.md +0 -35
  317. package/dist/node_modules/path-to-regexp/index.js +0 -129
  318. package/dist/node_modules/path-to-regexp/package.json +0 -30
  319. package/dist/node_modules/proxy-addr/HISTORY.md +0 -161
  320. package/dist/node_modules/proxy-addr/LICENSE +0 -22
  321. package/dist/node_modules/proxy-addr/README.md +0 -139
  322. package/dist/node_modules/proxy-addr/index.js +0 -327
  323. package/dist/node_modules/proxy-addr/package.json +0 -47
  324. package/dist/node_modules/qs/.editorconfig +0 -43
  325. package/dist/node_modules/qs/.eslintrc +0 -38
  326. package/dist/node_modules/qs/.github/FUNDING.yml +0 -12
  327. package/dist/node_modules/qs/.nycrc +0 -13
  328. package/dist/node_modules/qs/CHANGELOG.md +0 -546
  329. package/dist/node_modules/qs/LICENSE.md +0 -29
  330. package/dist/node_modules/qs/README.md +0 -625
  331. package/dist/node_modules/qs/dist/qs.js +0 -2054
  332. package/dist/node_modules/qs/lib/formats.js +0 -23
  333. package/dist/node_modules/qs/lib/index.js +0 -11
  334. package/dist/node_modules/qs/lib/parse.js +0 -263
  335. package/dist/node_modules/qs/lib/stringify.js +0 -326
  336. package/dist/node_modules/qs/lib/utils.js +0 -252
  337. package/dist/node_modules/qs/package.json +0 -77
  338. package/dist/node_modules/qs/test/parse.js +0 -855
  339. package/dist/node_modules/qs/test/stringify.js +0 -909
  340. package/dist/node_modules/qs/test/utils.js +0 -136
  341. package/dist/node_modules/range-parser/HISTORY.md +0 -56
  342. package/dist/node_modules/range-parser/LICENSE +0 -23
  343. package/dist/node_modules/range-parser/README.md +0 -84
  344. package/dist/node_modules/range-parser/index.js +0 -162
  345. package/dist/node_modules/range-parser/package.json +0 -44
  346. package/dist/node_modules/raw-body/HISTORY.md +0 -303
  347. package/dist/node_modules/raw-body/LICENSE +0 -22
  348. package/dist/node_modules/raw-body/README.md +0 -223
  349. package/dist/node_modules/raw-body/SECURITY.md +0 -24
  350. package/dist/node_modules/raw-body/index.d.ts +0 -87
  351. package/dist/node_modules/raw-body/index.js +0 -329
  352. package/dist/node_modules/raw-body/package.json +0 -49
  353. package/dist/node_modules/safe-buffer/LICENSE +0 -21
  354. package/dist/node_modules/safe-buffer/README.md +0 -584
  355. package/dist/node_modules/safe-buffer/index.d.ts +0 -187
  356. package/dist/node_modules/safe-buffer/index.js +0 -65
  357. package/dist/node_modules/safe-buffer/package.json +0 -51
  358. package/dist/node_modules/safer-buffer/LICENSE +0 -21
  359. package/dist/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  360. package/dist/node_modules/safer-buffer/Readme.md +0 -156
  361. package/dist/node_modules/safer-buffer/dangerous.js +0 -58
  362. package/dist/node_modules/safer-buffer/package.json +0 -34
  363. package/dist/node_modules/safer-buffer/safer.js +0 -77
  364. package/dist/node_modules/safer-buffer/tests.js +0 -406
  365. package/dist/node_modules/send/HISTORY.md +0 -521
  366. package/dist/node_modules/send/LICENSE +0 -23
  367. package/dist/node_modules/send/README.md +0 -327
  368. package/dist/node_modules/send/SECURITY.md +0 -24
  369. package/dist/node_modules/send/index.js +0 -1143
  370. package/dist/node_modules/send/node_modules/ms/index.js +0 -162
  371. package/dist/node_modules/send/node_modules/ms/license.md +0 -21
  372. package/dist/node_modules/send/node_modules/ms/package.json +0 -38
  373. package/dist/node_modules/send/node_modules/ms/readme.md +0 -59
  374. package/dist/node_modules/send/package.json +0 -62
  375. package/dist/node_modules/serve-static/HISTORY.md +0 -471
  376. package/dist/node_modules/serve-static/LICENSE +0 -25
  377. package/dist/node_modules/serve-static/README.md +0 -257
  378. package/dist/node_modules/serve-static/index.js +0 -210
  379. package/dist/node_modules/serve-static/package.json +0 -42
  380. package/dist/node_modules/setprototypeof/LICENSE +0 -13
  381. package/dist/node_modules/setprototypeof/README.md +0 -31
  382. package/dist/node_modules/setprototypeof/index.d.ts +0 -2
  383. package/dist/node_modules/setprototypeof/index.js +0 -17
  384. package/dist/node_modules/setprototypeof/package.json +0 -38
  385. package/dist/node_modules/setprototypeof/test/index.js +0 -24
  386. package/dist/node_modules/side-channel/.eslintignore +0 -1
  387. package/dist/node_modules/side-channel/.eslintrc +0 -11
  388. package/dist/node_modules/side-channel/.github/FUNDING.yml +0 -12
  389. package/dist/node_modules/side-channel/.nycrc +0 -13
  390. package/dist/node_modules/side-channel/CHANGELOG.md +0 -65
  391. package/dist/node_modules/side-channel/LICENSE +0 -21
  392. package/dist/node_modules/side-channel/README.md +0 -2
  393. package/dist/node_modules/side-channel/index.js +0 -124
  394. package/dist/node_modules/side-channel/package.json +0 -67
  395. package/dist/node_modules/side-channel/test/index.js +0 -78
  396. package/dist/node_modules/statuses/HISTORY.md +0 -82
  397. package/dist/node_modules/statuses/LICENSE +0 -23
  398. package/dist/node_modules/statuses/README.md +0 -136
  399. package/dist/node_modules/statuses/codes.json +0 -65
  400. package/dist/node_modules/statuses/index.js +0 -146
  401. package/dist/node_modules/statuses/package.json +0 -49
  402. package/dist/node_modules/toidentifier/HISTORY.md +0 -9
  403. package/dist/node_modules/toidentifier/LICENSE +0 -21
  404. package/dist/node_modules/toidentifier/README.md +0 -61
  405. package/dist/node_modules/toidentifier/index.js +0 -32
  406. package/dist/node_modules/toidentifier/package.json +0 -38
  407. package/dist/node_modules/type-is/HISTORY.md +0 -259
  408. package/dist/node_modules/type-is/LICENSE +0 -23
  409. package/dist/node_modules/type-is/README.md +0 -170
  410. package/dist/node_modules/type-is/index.js +0 -266
  411. package/dist/node_modules/type-is/package.json +0 -45
  412. package/dist/node_modules/unpipe/HISTORY.md +0 -4
  413. package/dist/node_modules/unpipe/LICENSE +0 -22
  414. package/dist/node_modules/unpipe/README.md +0 -43
  415. package/dist/node_modules/unpipe/index.js +0 -69
  416. package/dist/node_modules/unpipe/package.json +0 -27
  417. package/dist/node_modules/utils-merge/LICENSE +0 -20
  418. package/dist/node_modules/utils-merge/README.md +0 -34
  419. package/dist/node_modules/utils-merge/index.js +0 -23
  420. package/dist/node_modules/utils-merge/package.json +0 -40
  421. package/dist/node_modules/vary/HISTORY.md +0 -39
  422. package/dist/node_modules/vary/LICENSE +0 -22
  423. package/dist/node_modules/vary/README.md +0 -101
  424. package/dist/node_modules/vary/index.js +0 -149
  425. package/dist/node_modules/vary/package.json +0 -43
@@ -1,855 +0,0 @@
1
- 'use strict';
2
-
3
- var test = require('tape');
4
- var qs = require('../');
5
- var utils = require('../lib/utils');
6
- var iconv = require('iconv-lite');
7
- var SaferBuffer = require('safer-buffer').Buffer;
8
-
9
- test('parse()', function (t) {
10
- t.test('parses a simple string', function (st) {
11
- st.deepEqual(qs.parse('0=foo'), { 0: 'foo' });
12
- st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' });
13
- st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } });
14
- st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } });
15
- st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } });
16
- st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null });
17
- st.deepEqual(qs.parse('foo'), { foo: '' });
18
- st.deepEqual(qs.parse('foo='), { foo: '' });
19
- st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' });
20
- st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' });
21
- st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' });
22
- st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' });
23
- st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' });
24
- st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null });
25
- st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' });
26
- st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), {
27
- cht: 'p3',
28
- chd: 't:60,40',
29
- chs: '250x100',
30
- chl: 'Hello|World'
31
- });
32
- st.end();
33
- });
34
-
35
- t.test('arrayFormat: brackets allows only explicit arrays', function (st) {
36
- st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
37
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
38
- st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'brackets' }), { a: 'b,c' });
39
- st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
40
- st.end();
41
- });
42
-
43
- t.test('arrayFormat: indices allows only indexed arrays', function (st) {
44
- st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
45
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
46
- st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'indices' }), { a: 'b,c' });
47
- st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
48
- st.end();
49
- });
50
-
51
- t.test('arrayFormat: comma allows only comma-separated arrays', function (st) {
52
- st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
53
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
54
- st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'comma' }), { a: 'b,c' });
55
- st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
56
- st.end();
57
- });
58
-
59
- t.test('arrayFormat: repeat allows only repeated values', function (st) {
60
- st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
61
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
62
- st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'repeat' }), { a: 'b,c' });
63
- st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
64
- st.end();
65
- });
66
-
67
- t.test('allows enabling dot notation', function (st) {
68
- st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' });
69
- st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } });
70
- st.end();
71
- });
72
-
73
- t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string');
74
- t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string');
75
- t.deepEqual(
76
- qs.parse('a[b][c][d][e][f][g][h]=i'),
77
- { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } },
78
- 'defaults to a depth of 5'
79
- );
80
-
81
- t.test('only parses one level when depth = 1', function (st) {
82
- st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } });
83
- st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } });
84
- st.end();
85
- });
86
-
87
- t.test('uses original key when depth = 0', function (st) {
88
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: 0 }), { 'a[0]': 'b', 'a[1]': 'c' });
89
- st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: 0 }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' });
90
- st.end();
91
- });
92
-
93
- t.test('uses original key when depth = false', function (st) {
94
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: false }), { 'a[0]': 'b', 'a[1]': 'c' });
95
- st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: false }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' });
96
- st.end();
97
- });
98
-
99
- t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array');
100
-
101
- t.test('parses an explicit array', function (st) {
102
- st.deepEqual(qs.parse('a[]=b'), { a: ['b'] });
103
- st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] });
104
- st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] });
105
- st.end();
106
- });
107
-
108
- t.test('parses a mix of simple and explicit arrays', function (st) {
109
- st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
110
- st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
111
- st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] });
112
- st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] });
113
-
114
- st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] });
115
- st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] });
116
- st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
117
-
118
- st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] });
119
- st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] });
120
- st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
121
-
122
- st.end();
123
- });
124
-
125
- t.test('parses a nested array', function (st) {
126
- st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } });
127
- st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } });
128
- st.end();
129
- });
130
-
131
- t.test('allows to specify array indices', function (st) {
132
- st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] });
133
- st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] });
134
- st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 20 }), { a: ['c'] });
135
- st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 0 }), { a: { 1: 'c' } });
136
- st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] });
137
- st.end();
138
- });
139
-
140
- t.test('limits specific array indices to arrayLimit', function (st) {
141
- st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] });
142
- st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } });
143
-
144
- st.deepEqual(qs.parse('a[20]=a'), { a: ['a'] });
145
- st.deepEqual(qs.parse('a[21]=a'), { a: { 21: 'a' } });
146
- st.end();
147
- });
148
-
149
- t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number');
150
-
151
- t.test('supports encoded = signs', function (st) {
152
- st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' });
153
- st.end();
154
- });
155
-
156
- t.test('is ok with url encoded strings', function (st) {
157
- st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } });
158
- st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } });
159
- st.end();
160
- });
161
-
162
- t.test('allows brackets in the value', function (st) {
163
- st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' });
164
- st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' });
165
- st.end();
166
- });
167
-
168
- t.test('allows empty values', function (st) {
169
- st.deepEqual(qs.parse(''), {});
170
- st.deepEqual(qs.parse(null), {});
171
- st.deepEqual(qs.parse(undefined), {});
172
- st.end();
173
- });
174
-
175
- t.test('transforms arrays to objects', function (st) {
176
- st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } });
177
- st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', 0: 'bar' } });
178
- st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', 0: 'bar' } });
179
- st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } });
180
- st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } });
181
- st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
182
-
183
- st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: false }), { a: { 0: 'b', t: 'u' } });
184
- st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: true }), { a: { 0: 'b', t: 'u', hasOwnProperty: 'c' } });
185
- st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: false }), { a: { 0: 'b', x: 'y' } });
186
- st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: true }), { a: { 0: 'b', hasOwnProperty: 'c', x: 'y' } });
187
- st.end();
188
- });
189
-
190
- t.test('transforms arrays to objects (dot notation)', function (st) {
191
- st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } });
192
- st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } });
193
- st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } });
194
- st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] });
195
- st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] });
196
- st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } });
197
- st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } });
198
- st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { 0: 'bar', bad: 'baz' } });
199
- st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } });
200
- st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
201
- st.end();
202
- });
203
-
204
- t.test('correctly prunes undefined values when converting an array to an object', function (st) {
205
- st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { 2: 'b', 99999999: 'c' } });
206
- st.end();
207
- });
208
-
209
- t.test('supports malformed uri characters', function (st) {
210
- st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null });
211
- st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' });
212
- st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' });
213
- st.end();
214
- });
215
-
216
- t.test('doesn\'t produce empty keys', function (st) {
217
- st.deepEqual(qs.parse('_r=1&'), { _r: '1' });
218
- st.end();
219
- });
220
-
221
- t.test('cannot access Object prototype', function (st) {
222
- qs.parse('constructor[prototype][bad]=bad');
223
- qs.parse('bad[constructor][prototype][bad]=bad');
224
- st.equal(typeof Object.prototype.bad, 'undefined');
225
- st.end();
226
- });
227
-
228
- t.test('parses arrays of objects', function (st) {
229
- st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
230
- st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] });
231
- st.end();
232
- });
233
-
234
- t.test('allows for empty strings in arrays', function (st) {
235
- st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] });
236
-
237
- st.deepEqual(
238
- qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true, arrayLimit: 20 }),
239
- { a: ['b', null, 'c', ''] },
240
- 'with arrayLimit 20 + array indices: null then empty string works'
241
- );
242
- st.deepEqual(
243
- qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }),
244
- { a: ['b', null, 'c', ''] },
245
- 'with arrayLimit 0 + array brackets: null then empty string works'
246
- );
247
-
248
- st.deepEqual(
249
- qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true, arrayLimit: 20 }),
250
- { a: ['b', '', 'c', null] },
251
- 'with arrayLimit 20 + array indices: empty string then null works'
252
- );
253
- st.deepEqual(
254
- qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }),
255
- { a: ['b', '', 'c', null] },
256
- 'with arrayLimit 0 + array brackets: empty string then null works'
257
- );
258
-
259
- st.deepEqual(
260
- qs.parse('a[]=&a[]=b&a[]=c'),
261
- { a: ['', 'b', 'c'] },
262
- 'array brackets: empty strings work'
263
- );
264
- st.end();
265
- });
266
-
267
- t.test('compacts sparse arrays', function (st) {
268
- st.deepEqual(qs.parse('a[10]=1&a[2]=2', { arrayLimit: 20 }), { a: ['2', '1'] });
269
- st.deepEqual(qs.parse('a[1][b][2][c]=1', { arrayLimit: 20 }), { a: [{ b: [{ c: '1' }] }] });
270
- st.deepEqual(qs.parse('a[1][2][3][c]=1', { arrayLimit: 20 }), { a: [[[{ c: '1' }]]] });
271
- st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { arrayLimit: 20 }), { a: [[[{ c: ['1'] }]]] });
272
- st.end();
273
- });
274
-
275
- t.test('parses sparse arrays', function (st) {
276
- /* eslint no-sparse-arrays: 0 */
277
- st.deepEqual(qs.parse('a[4]=1&a[1]=2', { allowSparse: true }), { a: [, '2', , , '1'] });
278
- st.deepEqual(qs.parse('a[1][b][2][c]=1', { allowSparse: true }), { a: [, { b: [, , { c: '1' }] }] });
279
- st.deepEqual(qs.parse('a[1][2][3][c]=1', { allowSparse: true }), { a: [, [, , [, , , { c: '1' }]]] });
280
- st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { allowSparse: true }), { a: [, [, , [, , , { c: [, '1'] }]]] });
281
- st.end();
282
- });
283
-
284
- t.test('parses semi-parsed strings', function (st) {
285
- st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } });
286
- st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } });
287
- st.end();
288
- });
289
-
290
- t.test('parses buffers correctly', function (st) {
291
- var b = SaferBuffer.from('test');
292
- st.deepEqual(qs.parse({ a: b }), { a: b });
293
- st.end();
294
- });
295
-
296
- t.test('parses jquery-param strings', function (st) {
297
- // readable = 'filter[0][]=int1&filter[0][]==&filter[0][]=77&filter[]=and&filter[2][]=int2&filter[2][]==&filter[2][]=8'
298
- var encoded = 'filter%5B0%5D%5B%5D=int1&filter%5B0%5D%5B%5D=%3D&filter%5B0%5D%5B%5D=77&filter%5B%5D=and&filter%5B2%5D%5B%5D=int2&filter%5B2%5D%5B%5D=%3D&filter%5B2%5D%5B%5D=8';
299
- var expected = { filter: [['int1', '=', '77'], 'and', ['int2', '=', '8']] };
300
- st.deepEqual(qs.parse(encoded), expected);
301
- st.end();
302
- });
303
-
304
- t.test('continues parsing when no parent is found', function (st) {
305
- st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' });
306
- st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' });
307
- st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' });
308
- st.end();
309
- });
310
-
311
- t.test('does not error when parsing a very long array', function (st) {
312
- var str = 'a[]=a';
313
- while (Buffer.byteLength(str) < 128 * 1024) {
314
- str = str + '&' + str;
315
- }
316
-
317
- st.doesNotThrow(function () {
318
- qs.parse(str);
319
- });
320
-
321
- st.end();
322
- });
323
-
324
- t.test('should not throw when a native prototype has an enumerable property', function (st) {
325
- Object.prototype.crash = '';
326
- Array.prototype.crash = '';
327
- st.doesNotThrow(qs.parse.bind(null, 'a=b'));
328
- st.deepEqual(qs.parse('a=b'), { a: 'b' });
329
- st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c'));
330
- st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
331
- delete Object.prototype.crash;
332
- delete Array.prototype.crash;
333
- st.end();
334
- });
335
-
336
- t.test('parses a string with an alternative string delimiter', function (st) {
337
- st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' });
338
- st.end();
339
- });
340
-
341
- t.test('parses a string with an alternative RegExp delimiter', function (st) {
342
- st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' });
343
- st.end();
344
- });
345
-
346
- t.test('does not use non-splittable objects as delimiters', function (st) {
347
- st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' });
348
- st.end();
349
- });
350
-
351
- t.test('allows overriding parameter limit', function (st) {
352
- st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' });
353
- st.end();
354
- });
355
-
356
- t.test('allows setting the parameter limit to Infinity', function (st) {
357
- st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' });
358
- st.end();
359
- });
360
-
361
- t.test('allows overriding array limit', function (st) {
362
- st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } });
363
- st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } });
364
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } });
365
- st.end();
366
- });
367
-
368
- t.test('allows disabling array parsing', function (st) {
369
- var indices = qs.parse('a[0]=b&a[1]=c', { parseArrays: false });
370
- st.deepEqual(indices, { a: { 0: 'b', 1: 'c' } });
371
- st.equal(Array.isArray(indices.a), false, 'parseArrays:false, indices case is not an array');
372
-
373
- var emptyBrackets = qs.parse('a[]=b', { parseArrays: false });
374
- st.deepEqual(emptyBrackets, { a: { 0: 'b' } });
375
- st.equal(Array.isArray(emptyBrackets.a), false, 'parseArrays:false, empty brackets case is not an array');
376
-
377
- st.end();
378
- });
379
-
380
- t.test('allows for query string prefix', function (st) {
381
- st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
382
- st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
383
- st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' });
384
-
385
- st.end();
386
- });
387
-
388
- t.test('parses an object', function (st) {
389
- var input = {
390
- 'user[name]': { 'pop[bob]': 3 },
391
- 'user[email]': null
392
- };
393
-
394
- var expected = {
395
- user: {
396
- name: { 'pop[bob]': 3 },
397
- email: null
398
- }
399
- };
400
-
401
- var result = qs.parse(input);
402
-
403
- st.deepEqual(result, expected);
404
- st.end();
405
- });
406
-
407
- t.test('parses string with comma as array divider', function (st) {
408
- st.deepEqual(qs.parse('foo=bar,tee', { comma: true }), { foo: ['bar', 'tee'] });
409
- st.deepEqual(qs.parse('foo[bar]=coffee,tee', { comma: true }), { foo: { bar: ['coffee', 'tee'] } });
410
- st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' });
411
- st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' });
412
- st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null });
413
-
414
- // test cases inversed from from stringify tests
415
- st.deepEqual(qs.parse('a[0]=c'), { a: ['c'] });
416
- st.deepEqual(qs.parse('a[]=c'), { a: ['c'] });
417
- st.deepEqual(qs.parse('a[]=c', { comma: true }), { a: ['c'] });
418
-
419
- st.deepEqual(qs.parse('a[0]=c&a[1]=d'), { a: ['c', 'd'] });
420
- st.deepEqual(qs.parse('a[]=c&a[]=d'), { a: ['c', 'd'] });
421
- st.deepEqual(qs.parse('a=c,d', { comma: true }), { a: ['c', 'd'] });
422
-
423
- st.end();
424
- });
425
-
426
- t.test('parses values with comma as array divider', function (st) {
427
- st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: false }), { foo: 'bar,tee' });
428
- st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: true }), { foo: ['bar', 'tee'] });
429
- st.end();
430
- });
431
-
432
- t.test('use number decoder, parses string that has one number with comma option enabled', function (st) {
433
- var decoder = function (str, defaultDecoder, charset, type) {
434
- if (!isNaN(Number(str))) {
435
- return parseFloat(str);
436
- }
437
- return defaultDecoder(str, defaultDecoder, charset, type);
438
- };
439
-
440
- st.deepEqual(qs.parse('foo=1', { comma: true, decoder: decoder }), { foo: 1 });
441
- st.deepEqual(qs.parse('foo=0', { comma: true, decoder: decoder }), { foo: 0 });
442
-
443
- st.end();
444
- });
445
-
446
- t.test('parses brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) {
447
- st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] });
448
- st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=', { comma: true }), { foo: [['1', '2', '3'], ''] });
449
- st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] });
450
- st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] });
451
-
452
- st.end();
453
- });
454
-
455
- t.test('parses comma delimited array while having percent-encoded comma treated as normal text', function (st) {
456
- st.deepEqual(qs.parse('foo=a%2Cb', { comma: true }), { foo: 'a,b' });
457
- st.deepEqual(qs.parse('foo=a%2C%20b,d', { comma: true }), { foo: ['a, b', 'd'] });
458
- st.deepEqual(qs.parse('foo=a%2C%20b,c%2C%20d', { comma: true }), { foo: ['a, b', 'c, d'] });
459
-
460
- st.end();
461
- });
462
-
463
- t.test('parses an object in dot notation', function (st) {
464
- var input = {
465
- 'user.name': { 'pop[bob]': 3 },
466
- 'user.email.': null
467
- };
468
-
469
- var expected = {
470
- user: {
471
- name: { 'pop[bob]': 3 },
472
- email: null
473
- }
474
- };
475
-
476
- var result = qs.parse(input, { allowDots: true });
477
-
478
- st.deepEqual(result, expected);
479
- st.end();
480
- });
481
-
482
- t.test('parses an object and not child values', function (st) {
483
- var input = {
484
- 'user[name]': { 'pop[bob]': { test: 3 } },
485
- 'user[email]': null
486
- };
487
-
488
- var expected = {
489
- user: {
490
- name: { 'pop[bob]': { test: 3 } },
491
- email: null
492
- }
493
- };
494
-
495
- var result = qs.parse(input);
496
-
497
- st.deepEqual(result, expected);
498
- st.end();
499
- });
500
-
501
- t.test('does not blow up when Buffer global is missing', function (st) {
502
- var tempBuffer = global.Buffer;
503
- delete global.Buffer;
504
- var result = qs.parse('a=b&c=d');
505
- global.Buffer = tempBuffer;
506
- st.deepEqual(result, { a: 'b', c: 'd' });
507
- st.end();
508
- });
509
-
510
- t.test('does not crash when parsing circular references', function (st) {
511
- var a = {};
512
- a.b = a;
513
-
514
- var parsed;
515
-
516
- st.doesNotThrow(function () {
517
- parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a });
518
- });
519
-
520
- st.equal('foo' in parsed, true, 'parsed has "foo" property');
521
- st.equal('bar' in parsed.foo, true);
522
- st.equal('baz' in parsed.foo, true);
523
- st.equal(parsed.foo.bar, 'baz');
524
- st.deepEqual(parsed.foo.baz, a);
525
- st.end();
526
- });
527
-
528
- t.test('does not crash when parsing deep objects', function (st) {
529
- var parsed;
530
- var str = 'foo';
531
-
532
- for (var i = 0; i < 5000; i++) {
533
- str += '[p]';
534
- }
535
-
536
- str += '=bar';
537
-
538
- st.doesNotThrow(function () {
539
- parsed = qs.parse(str, { depth: 5000 });
540
- });
541
-
542
- st.equal('foo' in parsed, true, 'parsed has "foo" property');
543
-
544
- var depth = 0;
545
- var ref = parsed.foo;
546
- while ((ref = ref.p)) {
547
- depth += 1;
548
- }
549
-
550
- st.equal(depth, 5000, 'parsed is 5000 properties deep');
551
-
552
- st.end();
553
- });
554
-
555
- t.test('parses null objects correctly', { skip: !Object.create }, function (st) {
556
- var a = Object.create(null);
557
- a.b = 'c';
558
-
559
- st.deepEqual(qs.parse(a), { b: 'c' });
560
- var result = qs.parse({ a: a });
561
- st.equal('a' in result, true, 'result has "a" property');
562
- st.deepEqual(result.a, a);
563
- st.end();
564
- });
565
-
566
- t.test('parses dates correctly', function (st) {
567
- var now = new Date();
568
- st.deepEqual(qs.parse({ a: now }), { a: now });
569
- st.end();
570
- });
571
-
572
- t.test('parses regular expressions correctly', function (st) {
573
- var re = /^test$/;
574
- st.deepEqual(qs.parse({ a: re }), { a: re });
575
- st.end();
576
- });
577
-
578
- t.test('does not allow overwriting prototype properties', function (st) {
579
- st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: false }), {});
580
- st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: false }), {});
581
-
582
- st.deepEqual(
583
- qs.parse('toString', { allowPrototypes: false }),
584
- {},
585
- 'bare "toString" results in {}'
586
- );
587
-
588
- st.end();
589
- });
590
-
591
- t.test('can allow overwriting prototype properties', function (st) {
592
- st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } });
593
- st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' });
594
-
595
- st.deepEqual(
596
- qs.parse('toString', { allowPrototypes: true }),
597
- { toString: '' },
598
- 'bare "toString" results in { toString: "" }'
599
- );
600
-
601
- st.end();
602
- });
603
-
604
- t.test('params starting with a closing bracket', function (st) {
605
- st.deepEqual(qs.parse(']=toString'), { ']': 'toString' });
606
- st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' });
607
- st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' });
608
- st.end();
609
- });
610
-
611
- t.test('params starting with a starting bracket', function (st) {
612
- st.deepEqual(qs.parse('[=toString'), { '[': 'toString' });
613
- st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' });
614
- st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' });
615
- st.end();
616
- });
617
-
618
- t.test('add keys to objects', function (st) {
619
- st.deepEqual(
620
- qs.parse('a[b]=c&a=d'),
621
- { a: { b: 'c', d: true } },
622
- 'can add keys to objects'
623
- );
624
-
625
- st.deepEqual(
626
- qs.parse('a[b]=c&a=toString'),
627
- { a: { b: 'c' } },
628
- 'can not overwrite prototype'
629
- );
630
-
631
- st.deepEqual(
632
- qs.parse('a[b]=c&a=toString', { allowPrototypes: true }),
633
- { a: { b: 'c', toString: true } },
634
- 'can overwrite prototype with allowPrototypes true'
635
- );
636
-
637
- st.deepEqual(
638
- qs.parse('a[b]=c&a=toString', { plainObjects: true }),
639
- { __proto__: null, a: { __proto__: null, b: 'c', toString: true } },
640
- 'can overwrite prototype with plainObjects true'
641
- );
642
-
643
- st.end();
644
- });
645
-
646
- t.test('dunder proto is ignored', function (st) {
647
- var payload = 'categories[__proto__]=login&categories[__proto__]&categories[length]=42';
648
- var result = qs.parse(payload, { allowPrototypes: true });
649
-
650
- st.deepEqual(
651
- result,
652
- {
653
- categories: {
654
- length: '42'
655
- }
656
- },
657
- 'silent [[Prototype]] payload'
658
- );
659
-
660
- var plainResult = qs.parse(payload, { allowPrototypes: true, plainObjects: true });
661
-
662
- st.deepEqual(
663
- plainResult,
664
- {
665
- __proto__: null,
666
- categories: {
667
- __proto__: null,
668
- length: '42'
669
- }
670
- },
671
- 'silent [[Prototype]] payload: plain objects'
672
- );
673
-
674
- var query = qs.parse('categories[__proto__]=cats&categories[__proto__]=dogs&categories[some][json]=toInject', { allowPrototypes: true });
675
-
676
- st.notOk(Array.isArray(query.categories), 'is not an array');
677
- st.notOk(query.categories instanceof Array, 'is not instanceof an array');
678
- st.deepEqual(query.categories, { some: { json: 'toInject' } });
679
- st.equal(JSON.stringify(query.categories), '{"some":{"json":"toInject"}}', 'stringifies as a non-array');
680
-
681
- st.deepEqual(
682
- qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true }),
683
- {
684
- foo: {
685
- bar: 'stuffs'
686
- }
687
- },
688
- 'hidden values'
689
- );
690
-
691
- st.deepEqual(
692
- qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true, plainObjects: true }),
693
- {
694
- __proto__: null,
695
- foo: {
696
- __proto__: null,
697
- bar: 'stuffs'
698
- }
699
- },
700
- 'hidden values: plain objects'
701
- );
702
-
703
- st.end();
704
- });
705
-
706
- t.test('can return null objects', { skip: !Object.create }, function (st) {
707
- var expected = Object.create(null);
708
- expected.a = Object.create(null);
709
- expected.a.b = 'c';
710
- expected.a.hasOwnProperty = 'd';
711
- st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected);
712
- st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null));
713
- var expectedArray = Object.create(null);
714
- expectedArray.a = Object.create(null);
715
- expectedArray.a[0] = 'b';
716
- expectedArray.a.c = 'd';
717
- st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray);
718
- st.end();
719
- });
720
-
721
- t.test('can parse with custom encoding', function (st) {
722
- st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', {
723
- decoder: function (str) {
724
- var reg = /%([0-9A-F]{2})/ig;
725
- var result = [];
726
- var parts = reg.exec(str);
727
- while (parts) {
728
- result.push(parseInt(parts[1], 16));
729
- parts = reg.exec(str);
730
- }
731
- return String(iconv.decode(SaferBuffer.from(result), 'shift_jis'));
732
- }
733
- }), { 県: '大阪府' });
734
- st.end();
735
- });
736
-
737
- t.test('receives the default decoder as a second argument', function (st) {
738
- st.plan(1);
739
- qs.parse('a', {
740
- decoder: function (str, defaultDecoder) {
741
- st.equal(defaultDecoder, utils.decode);
742
- }
743
- });
744
- st.end();
745
- });
746
-
747
- t.test('throws error with wrong decoder', function (st) {
748
- st['throws'](function () {
749
- qs.parse({}, { decoder: 'string' });
750
- }, new TypeError('Decoder has to be a function.'));
751
- st.end();
752
- });
753
-
754
- t.test('does not mutate the options argument', function (st) {
755
- var options = {};
756
- qs.parse('a[b]=true', options);
757
- st.deepEqual(options, {});
758
- st.end();
759
- });
760
-
761
- t.test('throws if an invalid charset is specified', function (st) {
762
- st['throws'](function () {
763
- qs.parse('a=b', { charset: 'foobar' });
764
- }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'));
765
- st.end();
766
- });
767
-
768
- t.test('parses an iso-8859-1 string if asked to', function (st) {
769
- st.deepEqual(qs.parse('%A2=%BD', { charset: 'iso-8859-1' }), { '¢': '½' });
770
- st.end();
771
- });
772
-
773
- var urlEncodedCheckmarkInUtf8 = '%E2%9C%93';
774
- var urlEncodedOSlashInUtf8 = '%C3%B8';
775
- var urlEncodedNumCheckmark = '%26%2310003%3B';
776
- var urlEncodedNumSmiley = '%26%239786%3B';
777
-
778
- t.test('prefers an utf-8 charset specified by the utf8 sentinel to a default charset of iso-8859-1', function (st) {
779
- st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'iso-8859-1' }), { ø: 'ø' });
780
- st.end();
781
- });
782
-
783
- t.test('prefers an iso-8859-1 charset specified by the utf8 sentinel to a default charset of utf-8', function (st) {
784
- st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { 'ø': 'ø' });
785
- st.end();
786
- });
787
-
788
- t.test('does not require the utf8 sentinel to be defined before the parameters whose decoding it affects', function (st) {
789
- st.deepEqual(qs.parse('a=' + urlEncodedOSlashInUtf8 + '&utf8=' + urlEncodedNumCheckmark, { charsetSentinel: true, charset: 'utf-8' }), { a: 'ø' });
790
- st.end();
791
- });
792
-
793
- t.test('should ignore an utf8 sentinel with an unknown value', function (st) {
794
- st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { ø: 'ø' });
795
- st.end();
796
- });
797
-
798
- t.test('uses the utf8 sentinel to switch to utf-8 when no default charset is given', function (st) {
799
- st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { ø: 'ø' });
800
- st.end();
801
- });
802
-
803
- t.test('uses the utf8 sentinel to switch to iso-8859-1 when no default charset is given', function (st) {
804
- st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { 'ø': 'ø' });
805
- st.end();
806
- });
807
-
808
- t.test('interprets numeric entities in iso-8859-1 when `interpretNumericEntities`', function (st) {
809
- st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1', interpretNumericEntities: true }), { foo: '☺' });
810
- st.end();
811
- });
812
-
813
- t.test('handles a custom decoder returning `null`, in the `iso-8859-1` charset, when `interpretNumericEntities`', function (st) {
814
- st.deepEqual(qs.parse('foo=&bar=' + urlEncodedNumSmiley, {
815
- charset: 'iso-8859-1',
816
- decoder: function (str, defaultDecoder, charset) {
817
- return str ? defaultDecoder(str, defaultDecoder, charset) : null;
818
- },
819
- interpretNumericEntities: true
820
- }), { foo: null, bar: '☺' });
821
- st.end();
822
- });
823
-
824
- t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) {
825
- st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '&#9786;' });
826
- st.end();
827
- });
828
-
829
- t.test('does not interpret numeric entities when the charset is utf-8, even when `interpretNumericEntities`', function (st) {
830
- st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'utf-8', interpretNumericEntities: true }), { foo: '&#9786;' });
831
- st.end();
832
- });
833
-
834
- t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) {
835
- st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' });
836
- st.end();
837
- });
838
-
839
- t.test('allows for decoding keys and values differently', function (st) {
840
- var decoder = function (str, defaultDecoder, charset, type) {
841
- if (type === 'key') {
842
- return defaultDecoder(str, defaultDecoder, charset, type).toLowerCase();
843
- }
844
- if (type === 'value') {
845
- return defaultDecoder(str, defaultDecoder, charset, type).toUpperCase();
846
- }
847
- throw 'this should never happen! type: ' + type;
848
- };
849
-
850
- st.deepEqual(qs.parse('KeY=vAlUe', { decoder: decoder }), { key: 'VALUE' });
851
- st.end();
852
- });
853
-
854
- t.end();
855
- });