speaker-calibration 2.1.6 → 2.1.8

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 (427) 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/server/PythonServerAPI.js +2 -2
  6. package/src/tasks/impulse-response/impulseResponse.js +8 -1
  7. package/src/tasks/volume/volume.js +28 -1
  8. package/dist/node_modules/.bin/mime +0 -12
  9. package/dist/node_modules/.bin/mime.cmd +0 -17
  10. package/dist/node_modules/.bin/mime.ps1 +0 -28
  11. package/dist/node_modules/.package-lock.json +0 -584
  12. package/dist/node_modules/accepts/HISTORY.md +0 -243
  13. package/dist/node_modules/accepts/LICENSE +0 -23
  14. package/dist/node_modules/accepts/README.md +0 -140
  15. package/dist/node_modules/accepts/index.js +0 -238
  16. package/dist/node_modules/accepts/package.json +0 -47
  17. package/dist/node_modules/array-flatten/LICENSE +0 -21
  18. package/dist/node_modules/array-flatten/README.md +0 -43
  19. package/dist/node_modules/array-flatten/array-flatten.js +0 -64
  20. package/dist/node_modules/array-flatten/package.json +0 -39
  21. package/dist/node_modules/body-parser/HISTORY.md +0 -657
  22. package/dist/node_modules/body-parser/LICENSE +0 -23
  23. package/dist/node_modules/body-parser/README.md +0 -464
  24. package/dist/node_modules/body-parser/SECURITY.md +0 -25
  25. package/dist/node_modules/body-parser/index.js +0 -156
  26. package/dist/node_modules/body-parser/lib/read.js +0 -205
  27. package/dist/node_modules/body-parser/lib/types/json.js +0 -236
  28. package/dist/node_modules/body-parser/lib/types/raw.js +0 -101
  29. package/dist/node_modules/body-parser/lib/types/text.js +0 -121
  30. package/dist/node_modules/body-parser/lib/types/urlencoded.js +0 -284
  31. package/dist/node_modules/body-parser/package.json +0 -56
  32. package/dist/node_modules/bytes/History.md +0 -97
  33. package/dist/node_modules/bytes/LICENSE +0 -23
  34. package/dist/node_modules/bytes/Readme.md +0 -152
  35. package/dist/node_modules/bytes/index.js +0 -170
  36. package/dist/node_modules/bytes/package.json +0 -42
  37. package/dist/node_modules/call-bind/.eslintignore +0 -1
  38. package/dist/node_modules/call-bind/.eslintrc +0 -17
  39. package/dist/node_modules/call-bind/.github/FUNDING.yml +0 -12
  40. package/dist/node_modules/call-bind/.nycrc +0 -13
  41. package/dist/node_modules/call-bind/CHANGELOG.md +0 -42
  42. package/dist/node_modules/call-bind/LICENSE +0 -21
  43. package/dist/node_modules/call-bind/README.md +0 -2
  44. package/dist/node_modules/call-bind/callBound.js +0 -15
  45. package/dist/node_modules/call-bind/index.js +0 -47
  46. package/dist/node_modules/call-bind/package.json +0 -80
  47. package/dist/node_modules/call-bind/test/callBound.js +0 -55
  48. package/dist/node_modules/call-bind/test/index.js +0 -66
  49. package/dist/node_modules/content-disposition/HISTORY.md +0 -60
  50. package/dist/node_modules/content-disposition/LICENSE +0 -22
  51. package/dist/node_modules/content-disposition/README.md +0 -142
  52. package/dist/node_modules/content-disposition/index.js +0 -458
  53. package/dist/node_modules/content-disposition/package.json +0 -44
  54. package/dist/node_modules/content-type/HISTORY.md +0 -24
  55. package/dist/node_modules/content-type/LICENSE +0 -22
  56. package/dist/node_modules/content-type/README.md +0 -92
  57. package/dist/node_modules/content-type/index.js +0 -222
  58. package/dist/node_modules/content-type/package.json +0 -40
  59. package/dist/node_modules/cookie/HISTORY.md +0 -142
  60. package/dist/node_modules/cookie/LICENSE +0 -24
  61. package/dist/node_modules/cookie/README.md +0 -302
  62. package/dist/node_modules/cookie/SECURITY.md +0 -25
  63. package/dist/node_modules/cookie/index.js +0 -270
  64. package/dist/node_modules/cookie/package.json +0 -44
  65. package/dist/node_modules/cookie-signature/History.md +0 -38
  66. package/dist/node_modules/cookie-signature/Readme.md +0 -42
  67. package/dist/node_modules/cookie-signature/index.js +0 -51
  68. package/dist/node_modules/cookie-signature/package.json +0 -18
  69. package/dist/node_modules/debug/.coveralls.yml +0 -1
  70. package/dist/node_modules/debug/.eslintrc +0 -11
  71. package/dist/node_modules/debug/.travis.yml +0 -14
  72. package/dist/node_modules/debug/CHANGELOG.md +0 -362
  73. package/dist/node_modules/debug/LICENSE +0 -19
  74. package/dist/node_modules/debug/Makefile +0 -50
  75. package/dist/node_modules/debug/README.md +0 -312
  76. package/dist/node_modules/debug/component.json +0 -19
  77. package/dist/node_modules/debug/karma.conf.js +0 -70
  78. package/dist/node_modules/debug/node.js +0 -1
  79. package/dist/node_modules/debug/package.json +0 -49
  80. package/dist/node_modules/debug/src/browser.js +0 -185
  81. package/dist/node_modules/debug/src/debug.js +0 -202
  82. package/dist/node_modules/debug/src/index.js +0 -10
  83. package/dist/node_modules/debug/src/inspector-log.js +0 -15
  84. package/dist/node_modules/debug/src/node.js +0 -248
  85. package/dist/node_modules/depd/History.md +0 -103
  86. package/dist/node_modules/depd/LICENSE +0 -22
  87. package/dist/node_modules/depd/Readme.md +0 -280
  88. package/dist/node_modules/depd/index.js +0 -538
  89. package/dist/node_modules/depd/lib/browser/index.js +0 -77
  90. package/dist/node_modules/depd/package.json +0 -45
  91. package/dist/node_modules/destroy/LICENSE +0 -23
  92. package/dist/node_modules/destroy/README.md +0 -63
  93. package/dist/node_modules/destroy/index.js +0 -209
  94. package/dist/node_modules/destroy/package.json +0 -48
  95. package/dist/node_modules/ee-first/LICENSE +0 -22
  96. package/dist/node_modules/ee-first/README.md +0 -80
  97. package/dist/node_modules/ee-first/index.js +0 -95
  98. package/dist/node_modules/ee-first/package.json +0 -29
  99. package/dist/node_modules/encodeurl/HISTORY.md +0 -14
  100. package/dist/node_modules/encodeurl/LICENSE +0 -22
  101. package/dist/node_modules/encodeurl/README.md +0 -128
  102. package/dist/node_modules/encodeurl/index.js +0 -60
  103. package/dist/node_modules/encodeurl/package.json +0 -40
  104. package/dist/node_modules/escape-html/LICENSE +0 -24
  105. package/dist/node_modules/escape-html/Readme.md +0 -43
  106. package/dist/node_modules/escape-html/index.js +0 -78
  107. package/dist/node_modules/escape-html/package.json +0 -24
  108. package/dist/node_modules/etag/HISTORY.md +0 -83
  109. package/dist/node_modules/etag/LICENSE +0 -22
  110. package/dist/node_modules/etag/README.md +0 -159
  111. package/dist/node_modules/etag/index.js +0 -131
  112. package/dist/node_modules/etag/package.json +0 -47
  113. package/dist/node_modules/express/History.md +0 -3588
  114. package/dist/node_modules/express/LICENSE +0 -24
  115. package/dist/node_modules/express/Readme.md +0 -166
  116. package/dist/node_modules/express/index.js +0 -11
  117. package/dist/node_modules/express/lib/application.js +0 -661
  118. package/dist/node_modules/express/lib/express.js +0 -116
  119. package/dist/node_modules/express/lib/middleware/init.js +0 -43
  120. package/dist/node_modules/express/lib/middleware/query.js +0 -47
  121. package/dist/node_modules/express/lib/request.js +0 -525
  122. package/dist/node_modules/express/lib/response.js +0 -1169
  123. package/dist/node_modules/express/lib/router/index.js +0 -673
  124. package/dist/node_modules/express/lib/router/layer.js +0 -181
  125. package/dist/node_modules/express/lib/router/route.js +0 -225
  126. package/dist/node_modules/express/lib/utils.js +0 -304
  127. package/dist/node_modules/express/lib/view.js +0 -182
  128. package/dist/node_modules/express/package.json +0 -99
  129. package/dist/node_modules/finalhandler/HISTORY.md +0 -195
  130. package/dist/node_modules/finalhandler/LICENSE +0 -22
  131. package/dist/node_modules/finalhandler/README.md +0 -147
  132. package/dist/node_modules/finalhandler/SECURITY.md +0 -25
  133. package/dist/node_modules/finalhandler/index.js +0 -336
  134. package/dist/node_modules/finalhandler/package.json +0 -46
  135. package/dist/node_modules/forwarded/HISTORY.md +0 -21
  136. package/dist/node_modules/forwarded/LICENSE +0 -22
  137. package/dist/node_modules/forwarded/README.md +0 -57
  138. package/dist/node_modules/forwarded/index.js +0 -90
  139. package/dist/node_modules/forwarded/package.json +0 -45
  140. package/dist/node_modules/fresh/HISTORY.md +0 -70
  141. package/dist/node_modules/fresh/LICENSE +0 -23
  142. package/dist/node_modules/fresh/README.md +0 -119
  143. package/dist/node_modules/fresh/index.js +0 -137
  144. package/dist/node_modules/fresh/package.json +0 -46
  145. package/dist/node_modules/function-bind/.editorconfig +0 -20
  146. package/dist/node_modules/function-bind/.eslintrc +0 -15
  147. package/dist/node_modules/function-bind/.jscs.json +0 -176
  148. package/dist/node_modules/function-bind/.travis.yml +0 -168
  149. package/dist/node_modules/function-bind/LICENSE +0 -20
  150. package/dist/node_modules/function-bind/README.md +0 -48
  151. package/dist/node_modules/function-bind/implementation.js +0 -52
  152. package/dist/node_modules/function-bind/index.js +0 -5
  153. package/dist/node_modules/function-bind/package.json +0 -63
  154. package/dist/node_modules/function-bind/test/.eslintrc +0 -9
  155. package/dist/node_modules/function-bind/test/index.js +0 -252
  156. package/dist/node_modules/get-intrinsic/.eslintrc +0 -37
  157. package/dist/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
  158. package/dist/node_modules/get-intrinsic/.nycrc +0 -9
  159. package/dist/node_modules/get-intrinsic/CHANGELOG.md +0 -98
  160. package/dist/node_modules/get-intrinsic/LICENSE +0 -21
  161. package/dist/node_modules/get-intrinsic/README.md +0 -71
  162. package/dist/node_modules/get-intrinsic/index.js +0 -334
  163. package/dist/node_modules/get-intrinsic/package.json +0 -91
  164. package/dist/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
  165. package/dist/node_modules/has/LICENSE-MIT +0 -22
  166. package/dist/node_modules/has/README.md +0 -18
  167. package/dist/node_modules/has/package.json +0 -48
  168. package/dist/node_modules/has/src/index.js +0 -5
  169. package/dist/node_modules/has/test/index.js +0 -10
  170. package/dist/node_modules/has-symbols/.eslintrc +0 -11
  171. package/dist/node_modules/has-symbols/.github/FUNDING.yml +0 -12
  172. package/dist/node_modules/has-symbols/.nycrc +0 -9
  173. package/dist/node_modules/has-symbols/CHANGELOG.md +0 -75
  174. package/dist/node_modules/has-symbols/LICENSE +0 -21
  175. package/dist/node_modules/has-symbols/README.md +0 -46
  176. package/dist/node_modules/has-symbols/index.js +0 -13
  177. package/dist/node_modules/has-symbols/package.json +0 -101
  178. package/dist/node_modules/has-symbols/shams.js +0 -42
  179. package/dist/node_modules/has-symbols/test/index.js +0 -22
  180. package/dist/node_modules/has-symbols/test/shams/core-js.js +0 -28
  181. package/dist/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -28
  182. package/dist/node_modules/has-symbols/test/tests.js +0 -56
  183. package/dist/node_modules/http-errors/HISTORY.md +0 -180
  184. package/dist/node_modules/http-errors/LICENSE +0 -23
  185. package/dist/node_modules/http-errors/README.md +0 -169
  186. package/dist/node_modules/http-errors/index.js +0 -289
  187. package/dist/node_modules/http-errors/package.json +0 -50
  188. package/dist/node_modules/iconv-lite/Changelog.md +0 -162
  189. package/dist/node_modules/iconv-lite/LICENSE +0 -21
  190. package/dist/node_modules/iconv-lite/README.md +0 -156
  191. package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
  192. package/dist/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
  193. package/dist/node_modules/iconv-lite/encodings/index.js +0 -22
  194. package/dist/node_modules/iconv-lite/encodings/internal.js +0 -188
  195. package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
  196. package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
  197. package/dist/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
  198. package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
  199. package/dist/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
  200. package/dist/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
  201. package/dist/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
  202. package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
  203. package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
  204. package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
  205. package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
  206. package/dist/node_modules/iconv-lite/encodings/utf16.js +0 -177
  207. package/dist/node_modules/iconv-lite/encodings/utf7.js +0 -290
  208. package/dist/node_modules/iconv-lite/lib/bom-handling.js +0 -52
  209. package/dist/node_modules/iconv-lite/lib/extend-node.js +0 -217
  210. package/dist/node_modules/iconv-lite/lib/index.d.ts +0 -24
  211. package/dist/node_modules/iconv-lite/lib/index.js +0 -153
  212. package/dist/node_modules/iconv-lite/lib/streams.js +0 -121
  213. package/dist/node_modules/iconv-lite/package.json +0 -46
  214. package/dist/node_modules/inherits/LICENSE +0 -16
  215. package/dist/node_modules/inherits/README.md +0 -42
  216. package/dist/node_modules/inherits/inherits.js +0 -9
  217. package/dist/node_modules/inherits/inherits_browser.js +0 -27
  218. package/dist/node_modules/inherits/package.json +0 -29
  219. package/dist/node_modules/ipaddr.js/LICENSE +0 -19
  220. package/dist/node_modules/ipaddr.js/README.md +0 -233
  221. package/dist/node_modules/ipaddr.js/ipaddr.min.js +0 -1
  222. package/dist/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
  223. package/dist/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
  224. package/dist/node_modules/ipaddr.js/package.json +0 -35
  225. package/dist/node_modules/media-typer/HISTORY.md +0 -22
  226. package/dist/node_modules/media-typer/LICENSE +0 -22
  227. package/dist/node_modules/media-typer/README.md +0 -81
  228. package/dist/node_modules/media-typer/index.js +0 -270
  229. package/dist/node_modules/media-typer/package.json +0 -26
  230. package/dist/node_modules/merge-descriptors/HISTORY.md +0 -21
  231. package/dist/node_modules/merge-descriptors/LICENSE +0 -23
  232. package/dist/node_modules/merge-descriptors/README.md +0 -48
  233. package/dist/node_modules/merge-descriptors/index.js +0 -60
  234. package/dist/node_modules/merge-descriptors/package.json +0 -32
  235. package/dist/node_modules/methods/HISTORY.md +0 -29
  236. package/dist/node_modules/methods/LICENSE +0 -24
  237. package/dist/node_modules/methods/README.md +0 -51
  238. package/dist/node_modules/methods/index.js +0 -69
  239. package/dist/node_modules/methods/package.json +0 -36
  240. package/dist/node_modules/mime/CHANGELOG.md +0 -164
  241. package/dist/node_modules/mime/LICENSE +0 -21
  242. package/dist/node_modules/mime/README.md +0 -90
  243. package/dist/node_modules/mime/cli.js +0 -8
  244. package/dist/node_modules/mime/mime.js +0 -108
  245. package/dist/node_modules/mime/package.json +0 -44
  246. package/dist/node_modules/mime/src/build.js +0 -53
  247. package/dist/node_modules/mime/src/test.js +0 -60
  248. package/dist/node_modules/mime/types.json +0 -1
  249. package/dist/node_modules/mime-db/HISTORY.md +0 -507
  250. package/dist/node_modules/mime-db/LICENSE +0 -23
  251. package/dist/node_modules/mime-db/README.md +0 -100
  252. package/dist/node_modules/mime-db/db.json +0 -8519
  253. package/dist/node_modules/mime-db/index.js +0 -12
  254. package/dist/node_modules/mime-db/package.json +0 -60
  255. package/dist/node_modules/mime-types/HISTORY.md +0 -397
  256. package/dist/node_modules/mime-types/LICENSE +0 -23
  257. package/dist/node_modules/mime-types/README.md +0 -113
  258. package/dist/node_modules/mime-types/index.js +0 -188
  259. package/dist/node_modules/mime-types/package.json +0 -44
  260. package/dist/node_modules/ms/index.js +0 -152
  261. package/dist/node_modules/ms/license.md +0 -21
  262. package/dist/node_modules/ms/package.json +0 -37
  263. package/dist/node_modules/ms/readme.md +0 -51
  264. package/dist/node_modules/negotiator/HISTORY.md +0 -108
  265. package/dist/node_modules/negotiator/LICENSE +0 -24
  266. package/dist/node_modules/negotiator/README.md +0 -203
  267. package/dist/node_modules/negotiator/index.js +0 -82
  268. package/dist/node_modules/negotiator/lib/charset.js +0 -169
  269. package/dist/node_modules/negotiator/lib/encoding.js +0 -184
  270. package/dist/node_modules/negotiator/lib/language.js +0 -179
  271. package/dist/node_modules/negotiator/lib/mediaType.js +0 -294
  272. package/dist/node_modules/negotiator/package.json +0 -42
  273. package/dist/node_modules/object-inspect/.eslintrc +0 -53
  274. package/dist/node_modules/object-inspect/.github/FUNDING.yml +0 -12
  275. package/dist/node_modules/object-inspect/.nycrc +0 -13
  276. package/dist/node_modules/object-inspect/CHANGELOG.md +0 -360
  277. package/dist/node_modules/object-inspect/LICENSE +0 -21
  278. package/dist/node_modules/object-inspect/example/all.js +0 -23
  279. package/dist/node_modules/object-inspect/example/circular.js +0 -6
  280. package/dist/node_modules/object-inspect/example/fn.js +0 -5
  281. package/dist/node_modules/object-inspect/example/inspect.js +0 -10
  282. package/dist/node_modules/object-inspect/index.js +0 -512
  283. package/dist/node_modules/object-inspect/package-support.json +0 -20
  284. package/dist/node_modules/object-inspect/package.json +0 -94
  285. package/dist/node_modules/object-inspect/readme.markdown +0 -86
  286. package/dist/node_modules/object-inspect/test/bigint.js +0 -58
  287. package/dist/node_modules/object-inspect/test/browser/dom.js +0 -15
  288. package/dist/node_modules/object-inspect/test/circular.js +0 -16
  289. package/dist/node_modules/object-inspect/test/deep.js +0 -12
  290. package/dist/node_modules/object-inspect/test/element.js +0 -53
  291. package/dist/node_modules/object-inspect/test/err.js +0 -48
  292. package/dist/node_modules/object-inspect/test/fakes.js +0 -29
  293. package/dist/node_modules/object-inspect/test/fn.js +0 -76
  294. package/dist/node_modules/object-inspect/test/has.js +0 -15
  295. package/dist/node_modules/object-inspect/test/holes.js +0 -15
  296. package/dist/node_modules/object-inspect/test/indent-option.js +0 -271
  297. package/dist/node_modules/object-inspect/test/inspect.js +0 -139
  298. package/dist/node_modules/object-inspect/test/lowbyte.js +0 -12
  299. package/dist/node_modules/object-inspect/test/number.js +0 -58
  300. package/dist/node_modules/object-inspect/test/quoteStyle.js +0 -17
  301. package/dist/node_modules/object-inspect/test/toStringTag.js +0 -40
  302. package/dist/node_modules/object-inspect/test/undef.js +0 -12
  303. package/dist/node_modules/object-inspect/test/values.js +0 -211
  304. package/dist/node_modules/object-inspect/test-core-js.js +0 -26
  305. package/dist/node_modules/object-inspect/util.inspect.js +0 -1
  306. package/dist/node_modules/on-finished/HISTORY.md +0 -98
  307. package/dist/node_modules/on-finished/LICENSE +0 -23
  308. package/dist/node_modules/on-finished/README.md +0 -162
  309. package/dist/node_modules/on-finished/index.js +0 -234
  310. package/dist/node_modules/on-finished/package.json +0 -39
  311. package/dist/node_modules/parseurl/HISTORY.md +0 -58
  312. package/dist/node_modules/parseurl/LICENSE +0 -24
  313. package/dist/node_modules/parseurl/README.md +0 -133
  314. package/dist/node_modules/parseurl/index.js +0 -158
  315. package/dist/node_modules/parseurl/package.json +0 -40
  316. package/dist/node_modules/path-to-regexp/History.md +0 -36
  317. package/dist/node_modules/path-to-regexp/LICENSE +0 -21
  318. package/dist/node_modules/path-to-regexp/Readme.md +0 -35
  319. package/dist/node_modules/path-to-regexp/index.js +0 -129
  320. package/dist/node_modules/path-to-regexp/package.json +0 -30
  321. package/dist/node_modules/proxy-addr/HISTORY.md +0 -161
  322. package/dist/node_modules/proxy-addr/LICENSE +0 -22
  323. package/dist/node_modules/proxy-addr/README.md +0 -139
  324. package/dist/node_modules/proxy-addr/index.js +0 -327
  325. package/dist/node_modules/proxy-addr/package.json +0 -47
  326. package/dist/node_modules/qs/.editorconfig +0 -43
  327. package/dist/node_modules/qs/.eslintrc +0 -38
  328. package/dist/node_modules/qs/.github/FUNDING.yml +0 -12
  329. package/dist/node_modules/qs/.nycrc +0 -13
  330. package/dist/node_modules/qs/CHANGELOG.md +0 -546
  331. package/dist/node_modules/qs/LICENSE.md +0 -29
  332. package/dist/node_modules/qs/README.md +0 -625
  333. package/dist/node_modules/qs/dist/qs.js +0 -2054
  334. package/dist/node_modules/qs/lib/formats.js +0 -23
  335. package/dist/node_modules/qs/lib/index.js +0 -11
  336. package/dist/node_modules/qs/lib/parse.js +0 -263
  337. package/dist/node_modules/qs/lib/stringify.js +0 -326
  338. package/dist/node_modules/qs/lib/utils.js +0 -252
  339. package/dist/node_modules/qs/package.json +0 -77
  340. package/dist/node_modules/qs/test/parse.js +0 -855
  341. package/dist/node_modules/qs/test/stringify.js +0 -909
  342. package/dist/node_modules/qs/test/utils.js +0 -136
  343. package/dist/node_modules/range-parser/HISTORY.md +0 -56
  344. package/dist/node_modules/range-parser/LICENSE +0 -23
  345. package/dist/node_modules/range-parser/README.md +0 -84
  346. package/dist/node_modules/range-parser/index.js +0 -162
  347. package/dist/node_modules/range-parser/package.json +0 -44
  348. package/dist/node_modules/raw-body/HISTORY.md +0 -303
  349. package/dist/node_modules/raw-body/LICENSE +0 -22
  350. package/dist/node_modules/raw-body/README.md +0 -223
  351. package/dist/node_modules/raw-body/SECURITY.md +0 -24
  352. package/dist/node_modules/raw-body/index.d.ts +0 -87
  353. package/dist/node_modules/raw-body/index.js +0 -329
  354. package/dist/node_modules/raw-body/package.json +0 -49
  355. package/dist/node_modules/safe-buffer/LICENSE +0 -21
  356. package/dist/node_modules/safe-buffer/README.md +0 -584
  357. package/dist/node_modules/safe-buffer/index.d.ts +0 -187
  358. package/dist/node_modules/safe-buffer/index.js +0 -65
  359. package/dist/node_modules/safe-buffer/package.json +0 -51
  360. package/dist/node_modules/safer-buffer/LICENSE +0 -21
  361. package/dist/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  362. package/dist/node_modules/safer-buffer/Readme.md +0 -156
  363. package/dist/node_modules/safer-buffer/dangerous.js +0 -58
  364. package/dist/node_modules/safer-buffer/package.json +0 -34
  365. package/dist/node_modules/safer-buffer/safer.js +0 -77
  366. package/dist/node_modules/safer-buffer/tests.js +0 -406
  367. package/dist/node_modules/send/HISTORY.md +0 -521
  368. package/dist/node_modules/send/LICENSE +0 -23
  369. package/dist/node_modules/send/README.md +0 -327
  370. package/dist/node_modules/send/SECURITY.md +0 -24
  371. package/dist/node_modules/send/index.js +0 -1143
  372. package/dist/node_modules/send/node_modules/ms/index.js +0 -162
  373. package/dist/node_modules/send/node_modules/ms/license.md +0 -21
  374. package/dist/node_modules/send/node_modules/ms/package.json +0 -38
  375. package/dist/node_modules/send/node_modules/ms/readme.md +0 -59
  376. package/dist/node_modules/send/package.json +0 -62
  377. package/dist/node_modules/serve-static/HISTORY.md +0 -471
  378. package/dist/node_modules/serve-static/LICENSE +0 -25
  379. package/dist/node_modules/serve-static/README.md +0 -257
  380. package/dist/node_modules/serve-static/index.js +0 -210
  381. package/dist/node_modules/serve-static/package.json +0 -42
  382. package/dist/node_modules/setprototypeof/LICENSE +0 -13
  383. package/dist/node_modules/setprototypeof/README.md +0 -31
  384. package/dist/node_modules/setprototypeof/index.d.ts +0 -2
  385. package/dist/node_modules/setprototypeof/index.js +0 -17
  386. package/dist/node_modules/setprototypeof/package.json +0 -38
  387. package/dist/node_modules/setprototypeof/test/index.js +0 -24
  388. package/dist/node_modules/side-channel/.eslintignore +0 -1
  389. package/dist/node_modules/side-channel/.eslintrc +0 -11
  390. package/dist/node_modules/side-channel/.github/FUNDING.yml +0 -12
  391. package/dist/node_modules/side-channel/.nycrc +0 -13
  392. package/dist/node_modules/side-channel/CHANGELOG.md +0 -65
  393. package/dist/node_modules/side-channel/LICENSE +0 -21
  394. package/dist/node_modules/side-channel/README.md +0 -2
  395. package/dist/node_modules/side-channel/index.js +0 -124
  396. package/dist/node_modules/side-channel/package.json +0 -67
  397. package/dist/node_modules/side-channel/test/index.js +0 -78
  398. package/dist/node_modules/statuses/HISTORY.md +0 -82
  399. package/dist/node_modules/statuses/LICENSE +0 -23
  400. package/dist/node_modules/statuses/README.md +0 -136
  401. package/dist/node_modules/statuses/codes.json +0 -65
  402. package/dist/node_modules/statuses/index.js +0 -146
  403. package/dist/node_modules/statuses/package.json +0 -49
  404. package/dist/node_modules/toidentifier/HISTORY.md +0 -9
  405. package/dist/node_modules/toidentifier/LICENSE +0 -21
  406. package/dist/node_modules/toidentifier/README.md +0 -61
  407. package/dist/node_modules/toidentifier/index.js +0 -32
  408. package/dist/node_modules/toidentifier/package.json +0 -38
  409. package/dist/node_modules/type-is/HISTORY.md +0 -259
  410. package/dist/node_modules/type-is/LICENSE +0 -23
  411. package/dist/node_modules/type-is/README.md +0 -170
  412. package/dist/node_modules/type-is/index.js +0 -266
  413. package/dist/node_modules/type-is/package.json +0 -45
  414. package/dist/node_modules/unpipe/HISTORY.md +0 -4
  415. package/dist/node_modules/unpipe/LICENSE +0 -22
  416. package/dist/node_modules/unpipe/README.md +0 -43
  417. package/dist/node_modules/unpipe/index.js +0 -69
  418. package/dist/node_modules/unpipe/package.json +0 -27
  419. package/dist/node_modules/utils-merge/LICENSE +0 -20
  420. package/dist/node_modules/utils-merge/README.md +0 -34
  421. package/dist/node_modules/utils-merge/index.js +0 -23
  422. package/dist/node_modules/utils-merge/package.json +0 -40
  423. package/dist/node_modules/vary/HISTORY.md +0 -39
  424. package/dist/node_modules/vary/LICENSE +0 -22
  425. package/dist/node_modules/vary/README.md +0 -101
  426. package/dist/node_modules/vary/index.js +0 -149
  427. 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
- });