ppi-sdk 1.0.0 → 1.1.0

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 (642) hide show
  1. package/README.md +22 -0
  2. package/console.log(' +0 -0
  3. package/console.log('Import +0 -0
  4. package/package.json +2 -1
  5. package/src/README.md +13 -0
  6. package/{ppi-api/node_modules/.package-lock.json → tools/package-lock.json} +827 -847
  7. package/tools/package.json +17 -0
  8. package/tools/playground-static/index.html +666 -0
  9. package/tools/ppi-bridge.js +268 -0
  10. package/tools/ppi-playground-server.js +273 -0
  11. package/tools/ppi-playground.js +260 -91
  12. package/tools/simple-server.js +66 -0
  13. package/ppi-api/node_modules/.bin/mime +0 -16
  14. package/ppi-api/node_modules/.bin/mime.cmd +0 -17
  15. package/ppi-api/node_modules/.bin/mime.ps1 +0 -28
  16. package/ppi-api/node_modules/accepts/HISTORY.md +0 -243
  17. package/ppi-api/node_modules/accepts/LICENSE +0 -23
  18. package/ppi-api/node_modules/accepts/README.md +0 -140
  19. package/ppi-api/node_modules/accepts/index.js +0 -238
  20. package/ppi-api/node_modules/accepts/package.json +0 -47
  21. package/ppi-api/node_modules/array-flatten/LICENSE +0 -21
  22. package/ppi-api/node_modules/array-flatten/README.md +0 -43
  23. package/ppi-api/node_modules/array-flatten/array-flatten.js +0 -64
  24. package/ppi-api/node_modules/array-flatten/package.json +0 -39
  25. package/ppi-api/node_modules/body-parser/HISTORY.md +0 -672
  26. package/ppi-api/node_modules/body-parser/LICENSE +0 -23
  27. package/ppi-api/node_modules/body-parser/README.md +0 -476
  28. package/ppi-api/node_modules/body-parser/SECURITY.md +0 -25
  29. package/ppi-api/node_modules/body-parser/index.js +0 -156
  30. package/ppi-api/node_modules/body-parser/lib/read.js +0 -205
  31. package/ppi-api/node_modules/body-parser/lib/types/json.js +0 -247
  32. package/ppi-api/node_modules/body-parser/lib/types/raw.js +0 -101
  33. package/ppi-api/node_modules/body-parser/lib/types/text.js +0 -121
  34. package/ppi-api/node_modules/body-parser/lib/types/urlencoded.js +0 -307
  35. package/ppi-api/node_modules/body-parser/package.json +0 -56
  36. package/ppi-api/node_modules/bytes/History.md +0 -97
  37. package/ppi-api/node_modules/bytes/LICENSE +0 -23
  38. package/ppi-api/node_modules/bytes/Readme.md +0 -152
  39. package/ppi-api/node_modules/bytes/index.js +0 -170
  40. package/ppi-api/node_modules/bytes/package.json +0 -42
  41. package/ppi-api/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
  42. package/ppi-api/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
  43. package/ppi-api/node_modules/call-bind-apply-helpers/.nycrc +0 -9
  44. package/ppi-api/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
  45. package/ppi-api/node_modules/call-bind-apply-helpers/LICENSE +0 -21
  46. package/ppi-api/node_modules/call-bind-apply-helpers/README.md +0 -62
  47. package/ppi-api/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
  48. package/ppi-api/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
  49. package/ppi-api/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
  50. package/ppi-api/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
  51. package/ppi-api/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
  52. package/ppi-api/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
  53. package/ppi-api/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
  54. package/ppi-api/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
  55. package/ppi-api/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
  56. package/ppi-api/node_modules/call-bind-apply-helpers/index.js +0 -15
  57. package/ppi-api/node_modules/call-bind-apply-helpers/package.json +0 -85
  58. package/ppi-api/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
  59. package/ppi-api/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
  60. package/ppi-api/node_modules/call-bind-apply-helpers/test/index.js +0 -63
  61. package/ppi-api/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
  62. package/ppi-api/node_modules/call-bound/.eslintrc +0 -13
  63. package/ppi-api/node_modules/call-bound/.github/FUNDING.yml +0 -12
  64. package/ppi-api/node_modules/call-bound/.nycrc +0 -9
  65. package/ppi-api/node_modules/call-bound/CHANGELOG.md +0 -42
  66. package/ppi-api/node_modules/call-bound/LICENSE +0 -21
  67. package/ppi-api/node_modules/call-bound/README.md +0 -53
  68. package/ppi-api/node_modules/call-bound/index.d.ts +0 -94
  69. package/ppi-api/node_modules/call-bound/index.js +0 -19
  70. package/ppi-api/node_modules/call-bound/package.json +0 -99
  71. package/ppi-api/node_modules/call-bound/test/index.js +0 -61
  72. package/ppi-api/node_modules/call-bound/tsconfig.json +0 -10
  73. package/ppi-api/node_modules/content-disposition/HISTORY.md +0 -60
  74. package/ppi-api/node_modules/content-disposition/LICENSE +0 -22
  75. package/ppi-api/node_modules/content-disposition/README.md +0 -142
  76. package/ppi-api/node_modules/content-disposition/index.js +0 -458
  77. package/ppi-api/node_modules/content-disposition/package.json +0 -44
  78. package/ppi-api/node_modules/content-type/HISTORY.md +0 -29
  79. package/ppi-api/node_modules/content-type/LICENSE +0 -22
  80. package/ppi-api/node_modules/content-type/README.md +0 -94
  81. package/ppi-api/node_modules/content-type/index.js +0 -225
  82. package/ppi-api/node_modules/content-type/package.json +0 -42
  83. package/ppi-api/node_modules/cookie/LICENSE +0 -24
  84. package/ppi-api/node_modules/cookie/README.md +0 -317
  85. package/ppi-api/node_modules/cookie/SECURITY.md +0 -25
  86. package/ppi-api/node_modules/cookie/index.js +0 -334
  87. package/ppi-api/node_modules/cookie/package.json +0 -44
  88. package/ppi-api/node_modules/cookie-signature/History.md +0 -38
  89. package/ppi-api/node_modules/cookie-signature/Readme.md +0 -42
  90. package/ppi-api/node_modules/cookie-signature/index.js +0 -51
  91. package/ppi-api/node_modules/cookie-signature/package.json +0 -18
  92. package/ppi-api/node_modules/cors/CONTRIBUTING.md +0 -33
  93. package/ppi-api/node_modules/cors/HISTORY.md +0 -58
  94. package/ppi-api/node_modules/cors/LICENSE +0 -22
  95. package/ppi-api/node_modules/cors/README.md +0 -243
  96. package/ppi-api/node_modules/cors/lib/index.js +0 -238
  97. package/ppi-api/node_modules/cors/package.json +0 -41
  98. package/ppi-api/node_modules/debug/.coveralls.yml +0 -1
  99. package/ppi-api/node_modules/debug/.eslintrc +0 -11
  100. package/ppi-api/node_modules/debug/.travis.yml +0 -14
  101. package/ppi-api/node_modules/debug/CHANGELOG.md +0 -362
  102. package/ppi-api/node_modules/debug/LICENSE +0 -19
  103. package/ppi-api/node_modules/debug/Makefile +0 -50
  104. package/ppi-api/node_modules/debug/README.md +0 -312
  105. package/ppi-api/node_modules/debug/component.json +0 -19
  106. package/ppi-api/node_modules/debug/karma.conf.js +0 -70
  107. package/ppi-api/node_modules/debug/node.js +0 -1
  108. package/ppi-api/node_modules/debug/package.json +0 -49
  109. package/ppi-api/node_modules/debug/src/browser.js +0 -185
  110. package/ppi-api/node_modules/debug/src/debug.js +0 -202
  111. package/ppi-api/node_modules/debug/src/index.js +0 -10
  112. package/ppi-api/node_modules/debug/src/inspector-log.js +0 -15
  113. package/ppi-api/node_modules/debug/src/node.js +0 -248
  114. package/ppi-api/node_modules/depd/History.md +0 -103
  115. package/ppi-api/node_modules/depd/LICENSE +0 -22
  116. package/ppi-api/node_modules/depd/Readme.md +0 -280
  117. package/ppi-api/node_modules/depd/index.js +0 -538
  118. package/ppi-api/node_modules/depd/lib/browser/index.js +0 -77
  119. package/ppi-api/node_modules/depd/package.json +0 -45
  120. package/ppi-api/node_modules/destroy/LICENSE +0 -23
  121. package/ppi-api/node_modules/destroy/README.md +0 -63
  122. package/ppi-api/node_modules/destroy/index.js +0 -209
  123. package/ppi-api/node_modules/destroy/package.json +0 -48
  124. package/ppi-api/node_modules/dunder-proto/.eslintrc +0 -5
  125. package/ppi-api/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
  126. package/ppi-api/node_modules/dunder-proto/.nycrc +0 -13
  127. package/ppi-api/node_modules/dunder-proto/CHANGELOG.md +0 -24
  128. package/ppi-api/node_modules/dunder-proto/LICENSE +0 -21
  129. package/ppi-api/node_modules/dunder-proto/README.md +0 -54
  130. package/ppi-api/node_modules/dunder-proto/get.d.ts +0 -5
  131. package/ppi-api/node_modules/dunder-proto/get.js +0 -30
  132. package/ppi-api/node_modules/dunder-proto/package.json +0 -76
  133. package/ppi-api/node_modules/dunder-proto/set.d.ts +0 -5
  134. package/ppi-api/node_modules/dunder-proto/set.js +0 -35
  135. package/ppi-api/node_modules/dunder-proto/test/get.js +0 -34
  136. package/ppi-api/node_modules/dunder-proto/test/index.js +0 -4
  137. package/ppi-api/node_modules/dunder-proto/test/set.js +0 -50
  138. package/ppi-api/node_modules/dunder-proto/tsconfig.json +0 -9
  139. package/ppi-api/node_modules/ee-first/LICENSE +0 -22
  140. package/ppi-api/node_modules/ee-first/README.md +0 -80
  141. package/ppi-api/node_modules/ee-first/index.js +0 -95
  142. package/ppi-api/node_modules/ee-first/package.json +0 -29
  143. package/ppi-api/node_modules/encodeurl/LICENSE +0 -22
  144. package/ppi-api/node_modules/encodeurl/README.md +0 -109
  145. package/ppi-api/node_modules/encodeurl/index.js +0 -60
  146. package/ppi-api/node_modules/encodeurl/package.json +0 -40
  147. package/ppi-api/node_modules/es-define-property/.eslintrc +0 -13
  148. package/ppi-api/node_modules/es-define-property/.github/FUNDING.yml +0 -12
  149. package/ppi-api/node_modules/es-define-property/.nycrc +0 -9
  150. package/ppi-api/node_modules/es-define-property/CHANGELOG.md +0 -29
  151. package/ppi-api/node_modules/es-define-property/LICENSE +0 -21
  152. package/ppi-api/node_modules/es-define-property/README.md +0 -49
  153. package/ppi-api/node_modules/es-define-property/index.d.ts +0 -3
  154. package/ppi-api/node_modules/es-define-property/index.js +0 -14
  155. package/ppi-api/node_modules/es-define-property/package.json +0 -81
  156. package/ppi-api/node_modules/es-define-property/test/index.js +0 -56
  157. package/ppi-api/node_modules/es-define-property/tsconfig.json +0 -10
  158. package/ppi-api/node_modules/es-errors/.eslintrc +0 -5
  159. package/ppi-api/node_modules/es-errors/.github/FUNDING.yml +0 -12
  160. package/ppi-api/node_modules/es-errors/CHANGELOG.md +0 -40
  161. package/ppi-api/node_modules/es-errors/LICENSE +0 -21
  162. package/ppi-api/node_modules/es-errors/README.md +0 -55
  163. package/ppi-api/node_modules/es-errors/eval.d.ts +0 -3
  164. package/ppi-api/node_modules/es-errors/eval.js +0 -4
  165. package/ppi-api/node_modules/es-errors/index.d.ts +0 -3
  166. package/ppi-api/node_modules/es-errors/index.js +0 -4
  167. package/ppi-api/node_modules/es-errors/package.json +0 -80
  168. package/ppi-api/node_modules/es-errors/range.d.ts +0 -3
  169. package/ppi-api/node_modules/es-errors/range.js +0 -4
  170. package/ppi-api/node_modules/es-errors/ref.d.ts +0 -3
  171. package/ppi-api/node_modules/es-errors/ref.js +0 -4
  172. package/ppi-api/node_modules/es-errors/syntax.d.ts +0 -3
  173. package/ppi-api/node_modules/es-errors/syntax.js +0 -4
  174. package/ppi-api/node_modules/es-errors/test/index.js +0 -19
  175. package/ppi-api/node_modules/es-errors/tsconfig.json +0 -49
  176. package/ppi-api/node_modules/es-errors/type.d.ts +0 -3
  177. package/ppi-api/node_modules/es-errors/type.js +0 -4
  178. package/ppi-api/node_modules/es-errors/uri.d.ts +0 -3
  179. package/ppi-api/node_modules/es-errors/uri.js +0 -4
  180. package/ppi-api/node_modules/es-object-atoms/.eslintrc +0 -16
  181. package/ppi-api/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
  182. package/ppi-api/node_modules/es-object-atoms/CHANGELOG.md +0 -37
  183. package/ppi-api/node_modules/es-object-atoms/LICENSE +0 -21
  184. package/ppi-api/node_modules/es-object-atoms/README.md +0 -63
  185. package/ppi-api/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
  186. package/ppi-api/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
  187. package/ppi-api/node_modules/es-object-atoms/ToObject.d.ts +0 -7
  188. package/ppi-api/node_modules/es-object-atoms/ToObject.js +0 -10
  189. package/ppi-api/node_modules/es-object-atoms/index.d.ts +0 -3
  190. package/ppi-api/node_modules/es-object-atoms/index.js +0 -4
  191. package/ppi-api/node_modules/es-object-atoms/isObject.d.ts +0 -3
  192. package/ppi-api/node_modules/es-object-atoms/isObject.js +0 -6
  193. package/ppi-api/node_modules/es-object-atoms/package.json +0 -80
  194. package/ppi-api/node_modules/es-object-atoms/test/index.js +0 -38
  195. package/ppi-api/node_modules/es-object-atoms/tsconfig.json +0 -6
  196. package/ppi-api/node_modules/escape-html/LICENSE +0 -24
  197. package/ppi-api/node_modules/escape-html/Readme.md +0 -43
  198. package/ppi-api/node_modules/escape-html/index.js +0 -78
  199. package/ppi-api/node_modules/escape-html/package.json +0 -24
  200. package/ppi-api/node_modules/etag/HISTORY.md +0 -83
  201. package/ppi-api/node_modules/etag/LICENSE +0 -22
  202. package/ppi-api/node_modules/etag/README.md +0 -159
  203. package/ppi-api/node_modules/etag/index.js +0 -131
  204. package/ppi-api/node_modules/etag/package.json +0 -47
  205. package/ppi-api/node_modules/express/History.md +0 -3656
  206. package/ppi-api/node_modules/express/LICENSE +0 -24
  207. package/ppi-api/node_modules/express/Readme.md +0 -260
  208. package/ppi-api/node_modules/express/index.js +0 -11
  209. package/ppi-api/node_modules/express/lib/application.js +0 -661
  210. package/ppi-api/node_modules/express/lib/express.js +0 -116
  211. package/ppi-api/node_modules/express/lib/middleware/init.js +0 -43
  212. package/ppi-api/node_modules/express/lib/middleware/query.js +0 -47
  213. package/ppi-api/node_modules/express/lib/request.js +0 -525
  214. package/ppi-api/node_modules/express/lib/response.js +0 -1179
  215. package/ppi-api/node_modules/express/lib/router/index.js +0 -673
  216. package/ppi-api/node_modules/express/lib/router/layer.js +0 -181
  217. package/ppi-api/node_modules/express/lib/router/route.js +0 -230
  218. package/ppi-api/node_modules/express/lib/utils.js +0 -303
  219. package/ppi-api/node_modules/express/lib/view.js +0 -182
  220. package/ppi-api/node_modules/express/package.json +0 -102
  221. package/ppi-api/node_modules/finalhandler/HISTORY.md +0 -210
  222. package/ppi-api/node_modules/finalhandler/LICENSE +0 -22
  223. package/ppi-api/node_modules/finalhandler/README.md +0 -147
  224. package/ppi-api/node_modules/finalhandler/SECURITY.md +0 -25
  225. package/ppi-api/node_modules/finalhandler/index.js +0 -341
  226. package/ppi-api/node_modules/finalhandler/package.json +0 -47
  227. package/ppi-api/node_modules/forwarded/HISTORY.md +0 -21
  228. package/ppi-api/node_modules/forwarded/LICENSE +0 -22
  229. package/ppi-api/node_modules/forwarded/README.md +0 -57
  230. package/ppi-api/node_modules/forwarded/index.js +0 -90
  231. package/ppi-api/node_modules/forwarded/package.json +0 -45
  232. package/ppi-api/node_modules/fresh/HISTORY.md +0 -70
  233. package/ppi-api/node_modules/fresh/LICENSE +0 -23
  234. package/ppi-api/node_modules/fresh/README.md +0 -119
  235. package/ppi-api/node_modules/fresh/index.js +0 -137
  236. package/ppi-api/node_modules/fresh/package.json +0 -46
  237. package/ppi-api/node_modules/function-bind/.eslintrc +0 -21
  238. package/ppi-api/node_modules/function-bind/.github/FUNDING.yml +0 -12
  239. package/ppi-api/node_modules/function-bind/.github/SECURITY.md +0 -3
  240. package/ppi-api/node_modules/function-bind/.nycrc +0 -13
  241. package/ppi-api/node_modules/function-bind/CHANGELOG.md +0 -136
  242. package/ppi-api/node_modules/function-bind/LICENSE +0 -20
  243. package/ppi-api/node_modules/function-bind/README.md +0 -46
  244. package/ppi-api/node_modules/function-bind/implementation.js +0 -84
  245. package/ppi-api/node_modules/function-bind/index.js +0 -5
  246. package/ppi-api/node_modules/function-bind/package.json +0 -87
  247. package/ppi-api/node_modules/function-bind/test/.eslintrc +0 -9
  248. package/ppi-api/node_modules/function-bind/test/index.js +0 -252
  249. package/ppi-api/node_modules/get-intrinsic/.eslintrc +0 -42
  250. package/ppi-api/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
  251. package/ppi-api/node_modules/get-intrinsic/.nycrc +0 -9
  252. package/ppi-api/node_modules/get-intrinsic/CHANGELOG.md +0 -186
  253. package/ppi-api/node_modules/get-intrinsic/LICENSE +0 -21
  254. package/ppi-api/node_modules/get-intrinsic/README.md +0 -71
  255. package/ppi-api/node_modules/get-intrinsic/index.js +0 -378
  256. package/ppi-api/node_modules/get-intrinsic/package.json +0 -97
  257. package/ppi-api/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
  258. package/ppi-api/node_modules/get-proto/.eslintrc +0 -10
  259. package/ppi-api/node_modules/get-proto/.github/FUNDING.yml +0 -12
  260. package/ppi-api/node_modules/get-proto/.nycrc +0 -9
  261. package/ppi-api/node_modules/get-proto/CHANGELOG.md +0 -21
  262. package/ppi-api/node_modules/get-proto/LICENSE +0 -21
  263. package/ppi-api/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
  264. package/ppi-api/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
  265. package/ppi-api/node_modules/get-proto/README.md +0 -50
  266. package/ppi-api/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
  267. package/ppi-api/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
  268. package/ppi-api/node_modules/get-proto/index.d.ts +0 -5
  269. package/ppi-api/node_modules/get-proto/index.js +0 -27
  270. package/ppi-api/node_modules/get-proto/package.json +0 -81
  271. package/ppi-api/node_modules/get-proto/test/index.js +0 -68
  272. package/ppi-api/node_modules/get-proto/tsconfig.json +0 -9
  273. package/ppi-api/node_modules/gopd/.eslintrc +0 -16
  274. package/ppi-api/node_modules/gopd/.github/FUNDING.yml +0 -12
  275. package/ppi-api/node_modules/gopd/CHANGELOG.md +0 -45
  276. package/ppi-api/node_modules/gopd/LICENSE +0 -21
  277. package/ppi-api/node_modules/gopd/README.md +0 -40
  278. package/ppi-api/node_modules/gopd/gOPD.d.ts +0 -1
  279. package/ppi-api/node_modules/gopd/gOPD.js +0 -4
  280. package/ppi-api/node_modules/gopd/index.d.ts +0 -5
  281. package/ppi-api/node_modules/gopd/index.js +0 -15
  282. package/ppi-api/node_modules/gopd/package.json +0 -77
  283. package/ppi-api/node_modules/gopd/test/index.js +0 -36
  284. package/ppi-api/node_modules/gopd/tsconfig.json +0 -9
  285. package/ppi-api/node_modules/has-symbols/.eslintrc +0 -11
  286. package/ppi-api/node_modules/has-symbols/.github/FUNDING.yml +0 -12
  287. package/ppi-api/node_modules/has-symbols/.nycrc +0 -9
  288. package/ppi-api/node_modules/has-symbols/CHANGELOG.md +0 -91
  289. package/ppi-api/node_modules/has-symbols/LICENSE +0 -21
  290. package/ppi-api/node_modules/has-symbols/README.md +0 -46
  291. package/ppi-api/node_modules/has-symbols/index.d.ts +0 -3
  292. package/ppi-api/node_modules/has-symbols/index.js +0 -14
  293. package/ppi-api/node_modules/has-symbols/package.json +0 -111
  294. package/ppi-api/node_modules/has-symbols/shams.d.ts +0 -3
  295. package/ppi-api/node_modules/has-symbols/shams.js +0 -45
  296. package/ppi-api/node_modules/has-symbols/test/index.js +0 -22
  297. package/ppi-api/node_modules/has-symbols/test/shams/core-js.js +0 -29
  298. package/ppi-api/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
  299. package/ppi-api/node_modules/has-symbols/test/tests.js +0 -58
  300. package/ppi-api/node_modules/has-symbols/tsconfig.json +0 -10
  301. package/ppi-api/node_modules/hasown/.eslintrc +0 -5
  302. package/ppi-api/node_modules/hasown/.github/FUNDING.yml +0 -12
  303. package/ppi-api/node_modules/hasown/.nycrc +0 -13
  304. package/ppi-api/node_modules/hasown/CHANGELOG.md +0 -40
  305. package/ppi-api/node_modules/hasown/LICENSE +0 -21
  306. package/ppi-api/node_modules/hasown/README.md +0 -40
  307. package/ppi-api/node_modules/hasown/index.d.ts +0 -3
  308. package/ppi-api/node_modules/hasown/index.js +0 -8
  309. package/ppi-api/node_modules/hasown/package.json +0 -92
  310. package/ppi-api/node_modules/hasown/tsconfig.json +0 -6
  311. package/ppi-api/node_modules/http-errors/HISTORY.md +0 -180
  312. package/ppi-api/node_modules/http-errors/LICENSE +0 -23
  313. package/ppi-api/node_modules/http-errors/README.md +0 -169
  314. package/ppi-api/node_modules/http-errors/index.js +0 -289
  315. package/ppi-api/node_modules/http-errors/package.json +0 -50
  316. package/ppi-api/node_modules/iconv-lite/Changelog.md +0 -162
  317. package/ppi-api/node_modules/iconv-lite/LICENSE +0 -21
  318. package/ppi-api/node_modules/iconv-lite/README.md +0 -156
  319. package/ppi-api/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
  320. package/ppi-api/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
  321. package/ppi-api/node_modules/iconv-lite/encodings/index.js +0 -22
  322. package/ppi-api/node_modules/iconv-lite/encodings/internal.js +0 -188
  323. package/ppi-api/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
  324. package/ppi-api/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
  325. package/ppi-api/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
  326. package/ppi-api/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
  327. package/ppi-api/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
  328. package/ppi-api/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
  329. package/ppi-api/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
  330. package/ppi-api/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
  331. package/ppi-api/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
  332. package/ppi-api/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
  333. package/ppi-api/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
  334. package/ppi-api/node_modules/iconv-lite/encodings/utf16.js +0 -177
  335. package/ppi-api/node_modules/iconv-lite/encodings/utf7.js +0 -290
  336. package/ppi-api/node_modules/iconv-lite/lib/bom-handling.js +0 -52
  337. package/ppi-api/node_modules/iconv-lite/lib/extend-node.js +0 -217
  338. package/ppi-api/node_modules/iconv-lite/lib/index.d.ts +0 -24
  339. package/ppi-api/node_modules/iconv-lite/lib/index.js +0 -153
  340. package/ppi-api/node_modules/iconv-lite/lib/streams.js +0 -121
  341. package/ppi-api/node_modules/iconv-lite/package.json +0 -46
  342. package/ppi-api/node_modules/inherits/LICENSE +0 -16
  343. package/ppi-api/node_modules/inherits/README.md +0 -42
  344. package/ppi-api/node_modules/inherits/inherits.js +0 -9
  345. package/ppi-api/node_modules/inherits/inherits_browser.js +0 -27
  346. package/ppi-api/node_modules/inherits/package.json +0 -29
  347. package/ppi-api/node_modules/ipaddr.js/LICENSE +0 -19
  348. package/ppi-api/node_modules/ipaddr.js/README.md +0 -233
  349. package/ppi-api/node_modules/ipaddr.js/ipaddr.min.js +0 -1
  350. package/ppi-api/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
  351. package/ppi-api/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
  352. package/ppi-api/node_modules/ipaddr.js/package.json +0 -35
  353. package/ppi-api/node_modules/math-intrinsics/.eslintrc +0 -16
  354. package/ppi-api/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
  355. package/ppi-api/node_modules/math-intrinsics/CHANGELOG.md +0 -24
  356. package/ppi-api/node_modules/math-intrinsics/LICENSE +0 -21
  357. package/ppi-api/node_modules/math-intrinsics/README.md +0 -50
  358. package/ppi-api/node_modules/math-intrinsics/abs.d.ts +0 -1
  359. package/ppi-api/node_modules/math-intrinsics/abs.js +0 -4
  360. package/ppi-api/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
  361. package/ppi-api/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
  362. package/ppi-api/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
  363. package/ppi-api/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
  364. package/ppi-api/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
  365. package/ppi-api/node_modules/math-intrinsics/constants/maxValue.js +0 -5
  366. package/ppi-api/node_modules/math-intrinsics/floor.d.ts +0 -1
  367. package/ppi-api/node_modules/math-intrinsics/floor.js +0 -4
  368. package/ppi-api/node_modules/math-intrinsics/isFinite.d.ts +0 -3
  369. package/ppi-api/node_modules/math-intrinsics/isFinite.js +0 -12
  370. package/ppi-api/node_modules/math-intrinsics/isInteger.d.ts +0 -3
  371. package/ppi-api/node_modules/math-intrinsics/isInteger.js +0 -16
  372. package/ppi-api/node_modules/math-intrinsics/isNaN.d.ts +0 -1
  373. package/ppi-api/node_modules/math-intrinsics/isNaN.js +0 -6
  374. package/ppi-api/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
  375. package/ppi-api/node_modules/math-intrinsics/isNegativeZero.js +0 -6
  376. package/ppi-api/node_modules/math-intrinsics/max.d.ts +0 -1
  377. package/ppi-api/node_modules/math-intrinsics/max.js +0 -4
  378. package/ppi-api/node_modules/math-intrinsics/min.d.ts +0 -1
  379. package/ppi-api/node_modules/math-intrinsics/min.js +0 -4
  380. package/ppi-api/node_modules/math-intrinsics/mod.d.ts +0 -3
  381. package/ppi-api/node_modules/math-intrinsics/mod.js +0 -9
  382. package/ppi-api/node_modules/math-intrinsics/package.json +0 -86
  383. package/ppi-api/node_modules/math-intrinsics/pow.d.ts +0 -1
  384. package/ppi-api/node_modules/math-intrinsics/pow.js +0 -4
  385. package/ppi-api/node_modules/math-intrinsics/round.d.ts +0 -1
  386. package/ppi-api/node_modules/math-intrinsics/round.js +0 -4
  387. package/ppi-api/node_modules/math-intrinsics/sign.d.ts +0 -3
  388. package/ppi-api/node_modules/math-intrinsics/sign.js +0 -11
  389. package/ppi-api/node_modules/math-intrinsics/test/index.js +0 -192
  390. package/ppi-api/node_modules/math-intrinsics/tsconfig.json +0 -3
  391. package/ppi-api/node_modules/media-typer/HISTORY.md +0 -22
  392. package/ppi-api/node_modules/media-typer/LICENSE +0 -22
  393. package/ppi-api/node_modules/media-typer/README.md +0 -81
  394. package/ppi-api/node_modules/media-typer/index.js +0 -270
  395. package/ppi-api/node_modules/media-typer/package.json +0 -26
  396. package/ppi-api/node_modules/merge-descriptors/HISTORY.md +0 -21
  397. package/ppi-api/node_modules/merge-descriptors/LICENSE +0 -23
  398. package/ppi-api/node_modules/merge-descriptors/README.md +0 -49
  399. package/ppi-api/node_modules/merge-descriptors/index.js +0 -60
  400. package/ppi-api/node_modules/merge-descriptors/package.json +0 -39
  401. package/ppi-api/node_modules/methods/HISTORY.md +0 -29
  402. package/ppi-api/node_modules/methods/LICENSE +0 -24
  403. package/ppi-api/node_modules/methods/README.md +0 -51
  404. package/ppi-api/node_modules/methods/index.js +0 -69
  405. package/ppi-api/node_modules/methods/package.json +0 -36
  406. package/ppi-api/node_modules/mime/CHANGELOG.md +0 -164
  407. package/ppi-api/node_modules/mime/LICENSE +0 -21
  408. package/ppi-api/node_modules/mime/README.md +0 -90
  409. package/ppi-api/node_modules/mime/cli.js +0 -8
  410. package/ppi-api/node_modules/mime/mime.js +0 -108
  411. package/ppi-api/node_modules/mime/package.json +0 -44
  412. package/ppi-api/node_modules/mime/src/build.js +0 -53
  413. package/ppi-api/node_modules/mime/src/test.js +0 -60
  414. package/ppi-api/node_modules/mime/types.json +0 -1
  415. package/ppi-api/node_modules/mime-db/HISTORY.md +0 -507
  416. package/ppi-api/node_modules/mime-db/LICENSE +0 -23
  417. package/ppi-api/node_modules/mime-db/README.md +0 -100
  418. package/ppi-api/node_modules/mime-db/db.json +0 -8519
  419. package/ppi-api/node_modules/mime-db/index.js +0 -12
  420. package/ppi-api/node_modules/mime-db/package.json +0 -60
  421. package/ppi-api/node_modules/mime-types/HISTORY.md +0 -397
  422. package/ppi-api/node_modules/mime-types/LICENSE +0 -23
  423. package/ppi-api/node_modules/mime-types/README.md +0 -113
  424. package/ppi-api/node_modules/mime-types/index.js +0 -188
  425. package/ppi-api/node_modules/mime-types/package.json +0 -44
  426. package/ppi-api/node_modules/ms/index.js +0 -152
  427. package/ppi-api/node_modules/ms/license.md +0 -21
  428. package/ppi-api/node_modules/ms/package.json +0 -37
  429. package/ppi-api/node_modules/ms/readme.md +0 -51
  430. package/ppi-api/node_modules/negotiator/HISTORY.md +0 -108
  431. package/ppi-api/node_modules/negotiator/LICENSE +0 -24
  432. package/ppi-api/node_modules/negotiator/README.md +0 -203
  433. package/ppi-api/node_modules/negotiator/index.js +0 -82
  434. package/ppi-api/node_modules/negotiator/lib/charset.js +0 -169
  435. package/ppi-api/node_modules/negotiator/lib/encoding.js +0 -184
  436. package/ppi-api/node_modules/negotiator/lib/language.js +0 -179
  437. package/ppi-api/node_modules/negotiator/lib/mediaType.js +0 -294
  438. package/ppi-api/node_modules/negotiator/package.json +0 -42
  439. package/ppi-api/node_modules/object-assign/index.js +0 -90
  440. package/ppi-api/node_modules/object-assign/license +0 -21
  441. package/ppi-api/node_modules/object-assign/package.json +0 -42
  442. package/ppi-api/node_modules/object-assign/readme.md +0 -61
  443. package/ppi-api/node_modules/object-inspect/.eslintrc +0 -53
  444. package/ppi-api/node_modules/object-inspect/.github/FUNDING.yml +0 -12
  445. package/ppi-api/node_modules/object-inspect/.nycrc +0 -13
  446. package/ppi-api/node_modules/object-inspect/CHANGELOG.md +0 -424
  447. package/ppi-api/node_modules/object-inspect/LICENSE +0 -21
  448. package/ppi-api/node_modules/object-inspect/example/all.js +0 -23
  449. package/ppi-api/node_modules/object-inspect/example/circular.js +0 -6
  450. package/ppi-api/node_modules/object-inspect/example/fn.js +0 -5
  451. package/ppi-api/node_modules/object-inspect/example/inspect.js +0 -10
  452. package/ppi-api/node_modules/object-inspect/index.js +0 -544
  453. package/ppi-api/node_modules/object-inspect/package-support.json +0 -20
  454. package/ppi-api/node_modules/object-inspect/package.json +0 -105
  455. package/ppi-api/node_modules/object-inspect/readme.markdown +0 -84
  456. package/ppi-api/node_modules/object-inspect/test/bigint.js +0 -58
  457. package/ppi-api/node_modules/object-inspect/test/browser/dom.js +0 -15
  458. package/ppi-api/node_modules/object-inspect/test/circular.js +0 -16
  459. package/ppi-api/node_modules/object-inspect/test/deep.js +0 -12
  460. package/ppi-api/node_modules/object-inspect/test/element.js +0 -53
  461. package/ppi-api/node_modules/object-inspect/test/err.js +0 -48
  462. package/ppi-api/node_modules/object-inspect/test/fakes.js +0 -29
  463. package/ppi-api/node_modules/object-inspect/test/fn.js +0 -76
  464. package/ppi-api/node_modules/object-inspect/test/global.js +0 -17
  465. package/ppi-api/node_modules/object-inspect/test/has.js +0 -15
  466. package/ppi-api/node_modules/object-inspect/test/holes.js +0 -15
  467. package/ppi-api/node_modules/object-inspect/test/indent-option.js +0 -271
  468. package/ppi-api/node_modules/object-inspect/test/inspect.js +0 -139
  469. package/ppi-api/node_modules/object-inspect/test/lowbyte.js +0 -12
  470. package/ppi-api/node_modules/object-inspect/test/number.js +0 -58
  471. package/ppi-api/node_modules/object-inspect/test/quoteStyle.js +0 -26
  472. package/ppi-api/node_modules/object-inspect/test/toStringTag.js +0 -40
  473. package/ppi-api/node_modules/object-inspect/test/undef.js +0 -12
  474. package/ppi-api/node_modules/object-inspect/test/values.js +0 -261
  475. package/ppi-api/node_modules/object-inspect/test-core-js.js +0 -26
  476. package/ppi-api/node_modules/object-inspect/util.inspect.js +0 -1
  477. package/ppi-api/node_modules/on-finished/HISTORY.md +0 -98
  478. package/ppi-api/node_modules/on-finished/LICENSE +0 -23
  479. package/ppi-api/node_modules/on-finished/README.md +0 -162
  480. package/ppi-api/node_modules/on-finished/index.js +0 -234
  481. package/ppi-api/node_modules/on-finished/package.json +0 -39
  482. package/ppi-api/node_modules/parseurl/HISTORY.md +0 -58
  483. package/ppi-api/node_modules/parseurl/LICENSE +0 -24
  484. package/ppi-api/node_modules/parseurl/README.md +0 -133
  485. package/ppi-api/node_modules/parseurl/index.js +0 -158
  486. package/ppi-api/node_modules/parseurl/package.json +0 -40
  487. package/ppi-api/node_modules/path-to-regexp/LICENSE +0 -21
  488. package/ppi-api/node_modules/path-to-regexp/Readme.md +0 -35
  489. package/ppi-api/node_modules/path-to-regexp/index.js +0 -156
  490. package/ppi-api/node_modules/path-to-regexp/package.json +0 -30
  491. package/ppi-api/node_modules/proxy-addr/HISTORY.md +0 -161
  492. package/ppi-api/node_modules/proxy-addr/LICENSE +0 -22
  493. package/ppi-api/node_modules/proxy-addr/README.md +0 -139
  494. package/ppi-api/node_modules/proxy-addr/index.js +0 -327
  495. package/ppi-api/node_modules/proxy-addr/package.json +0 -47
  496. package/ppi-api/node_modules/qs/.editorconfig +0 -46
  497. package/ppi-api/node_modules/qs/.eslintrc +0 -38
  498. package/ppi-api/node_modules/qs/.github/FUNDING.yml +0 -12
  499. package/ppi-api/node_modules/qs/.nycrc +0 -13
  500. package/ppi-api/node_modules/qs/CHANGELOG.md +0 -600
  501. package/ppi-api/node_modules/qs/LICENSE.md +0 -29
  502. package/ppi-api/node_modules/qs/README.md +0 -709
  503. package/ppi-api/node_modules/qs/dist/qs.js +0 -90
  504. package/ppi-api/node_modules/qs/lib/formats.js +0 -23
  505. package/ppi-api/node_modules/qs/lib/index.js +0 -11
  506. package/ppi-api/node_modules/qs/lib/parse.js +0 -296
  507. package/ppi-api/node_modules/qs/lib/stringify.js +0 -351
  508. package/ppi-api/node_modules/qs/lib/utils.js +0 -265
  509. package/ppi-api/node_modules/qs/package.json +0 -91
  510. package/ppi-api/node_modules/qs/test/empty-keys-cases.js +0 -267
  511. package/ppi-api/node_modules/qs/test/parse.js +0 -1170
  512. package/ppi-api/node_modules/qs/test/stringify.js +0 -1298
  513. package/ppi-api/node_modules/qs/test/utils.js +0 -136
  514. package/ppi-api/node_modules/range-parser/HISTORY.md +0 -56
  515. package/ppi-api/node_modules/range-parser/LICENSE +0 -23
  516. package/ppi-api/node_modules/range-parser/README.md +0 -84
  517. package/ppi-api/node_modules/range-parser/index.js +0 -162
  518. package/ppi-api/node_modules/range-parser/package.json +0 -44
  519. package/ppi-api/node_modules/raw-body/HISTORY.md +0 -308
  520. package/ppi-api/node_modules/raw-body/LICENSE +0 -22
  521. package/ppi-api/node_modules/raw-body/README.md +0 -223
  522. package/ppi-api/node_modules/raw-body/SECURITY.md +0 -24
  523. package/ppi-api/node_modules/raw-body/index.d.ts +0 -87
  524. package/ppi-api/node_modules/raw-body/index.js +0 -336
  525. package/ppi-api/node_modules/raw-body/package.json +0 -49
  526. package/ppi-api/node_modules/safe-buffer/LICENSE +0 -21
  527. package/ppi-api/node_modules/safe-buffer/README.md +0 -584
  528. package/ppi-api/node_modules/safe-buffer/index.d.ts +0 -187
  529. package/ppi-api/node_modules/safe-buffer/index.js +0 -65
  530. package/ppi-api/node_modules/safe-buffer/package.json +0 -51
  531. package/ppi-api/node_modules/safer-buffer/LICENSE +0 -21
  532. package/ppi-api/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  533. package/ppi-api/node_modules/safer-buffer/Readme.md +0 -156
  534. package/ppi-api/node_modules/safer-buffer/dangerous.js +0 -58
  535. package/ppi-api/node_modules/safer-buffer/package.json +0 -34
  536. package/ppi-api/node_modules/safer-buffer/safer.js +0 -77
  537. package/ppi-api/node_modules/safer-buffer/tests.js +0 -406
  538. package/ppi-api/node_modules/send/HISTORY.md +0 -526
  539. package/ppi-api/node_modules/send/LICENSE +0 -23
  540. package/ppi-api/node_modules/send/README.md +0 -327
  541. package/ppi-api/node_modules/send/SECURITY.md +0 -24
  542. package/ppi-api/node_modules/send/index.js +0 -1142
  543. package/ppi-api/node_modules/send/node_modules/encodeurl/HISTORY.md +0 -14
  544. package/ppi-api/node_modules/send/node_modules/encodeurl/LICENSE +0 -22
  545. package/ppi-api/node_modules/send/node_modules/encodeurl/README.md +0 -128
  546. package/ppi-api/node_modules/send/node_modules/encodeurl/index.js +0 -60
  547. package/ppi-api/node_modules/send/node_modules/encodeurl/package.json +0 -40
  548. package/ppi-api/node_modules/send/node_modules/ms/index.js +0 -162
  549. package/ppi-api/node_modules/send/node_modules/ms/license.md +0 -21
  550. package/ppi-api/node_modules/send/node_modules/ms/package.json +0 -38
  551. package/ppi-api/node_modules/send/node_modules/ms/readme.md +0 -59
  552. package/ppi-api/node_modules/send/package.json +0 -62
  553. package/ppi-api/node_modules/serve-static/HISTORY.md +0 -487
  554. package/ppi-api/node_modules/serve-static/LICENSE +0 -25
  555. package/ppi-api/node_modules/serve-static/README.md +0 -257
  556. package/ppi-api/node_modules/serve-static/index.js +0 -209
  557. package/ppi-api/node_modules/serve-static/package.json +0 -42
  558. package/ppi-api/node_modules/setprototypeof/LICENSE +0 -13
  559. package/ppi-api/node_modules/setprototypeof/README.md +0 -31
  560. package/ppi-api/node_modules/setprototypeof/index.d.ts +0 -2
  561. package/ppi-api/node_modules/setprototypeof/index.js +0 -17
  562. package/ppi-api/node_modules/setprototypeof/package.json +0 -38
  563. package/ppi-api/node_modules/setprototypeof/test/index.js +0 -24
  564. package/ppi-api/node_modules/side-channel/.editorconfig +0 -9
  565. package/ppi-api/node_modules/side-channel/.eslintrc +0 -12
  566. package/ppi-api/node_modules/side-channel/.github/FUNDING.yml +0 -12
  567. package/ppi-api/node_modules/side-channel/.nycrc +0 -13
  568. package/ppi-api/node_modules/side-channel/CHANGELOG.md +0 -110
  569. package/ppi-api/node_modules/side-channel/LICENSE +0 -21
  570. package/ppi-api/node_modules/side-channel/README.md +0 -61
  571. package/ppi-api/node_modules/side-channel/index.d.ts +0 -14
  572. package/ppi-api/node_modules/side-channel/index.js +0 -43
  573. package/ppi-api/node_modules/side-channel/package.json +0 -85
  574. package/ppi-api/node_modules/side-channel/test/index.js +0 -104
  575. package/ppi-api/node_modules/side-channel/tsconfig.json +0 -9
  576. package/ppi-api/node_modules/side-channel-list/.editorconfig +0 -9
  577. package/ppi-api/node_modules/side-channel-list/.eslintrc +0 -11
  578. package/ppi-api/node_modules/side-channel-list/.github/FUNDING.yml +0 -12
  579. package/ppi-api/node_modules/side-channel-list/.nycrc +0 -13
  580. package/ppi-api/node_modules/side-channel-list/CHANGELOG.md +0 -15
  581. package/ppi-api/node_modules/side-channel-list/LICENSE +0 -21
  582. package/ppi-api/node_modules/side-channel-list/README.md +0 -62
  583. package/ppi-api/node_modules/side-channel-list/index.d.ts +0 -13
  584. package/ppi-api/node_modules/side-channel-list/index.js +0 -113
  585. package/ppi-api/node_modules/side-channel-list/list.d.ts +0 -14
  586. package/ppi-api/node_modules/side-channel-list/package.json +0 -77
  587. package/ppi-api/node_modules/side-channel-list/test/index.js +0 -104
  588. package/ppi-api/node_modules/side-channel-list/tsconfig.json +0 -9
  589. package/ppi-api/node_modules/side-channel-map/.editorconfig +0 -9
  590. package/ppi-api/node_modules/side-channel-map/.eslintrc +0 -11
  591. package/ppi-api/node_modules/side-channel-map/.github/FUNDING.yml +0 -12
  592. package/ppi-api/node_modules/side-channel-map/.nycrc +0 -13
  593. package/ppi-api/node_modules/side-channel-map/CHANGELOG.md +0 -22
  594. package/ppi-api/node_modules/side-channel-map/LICENSE +0 -21
  595. package/ppi-api/node_modules/side-channel-map/README.md +0 -62
  596. package/ppi-api/node_modules/side-channel-map/index.d.ts +0 -15
  597. package/ppi-api/node_modules/side-channel-map/index.js +0 -68
  598. package/ppi-api/node_modules/side-channel-map/package.json +0 -80
  599. package/ppi-api/node_modules/side-channel-map/test/index.js +0 -114
  600. package/ppi-api/node_modules/side-channel-map/tsconfig.json +0 -9
  601. package/ppi-api/node_modules/side-channel-weakmap/.editorconfig +0 -9
  602. package/ppi-api/node_modules/side-channel-weakmap/.eslintrc +0 -12
  603. package/ppi-api/node_modules/side-channel-weakmap/.github/FUNDING.yml +0 -12
  604. package/ppi-api/node_modules/side-channel-weakmap/.nycrc +0 -13
  605. package/ppi-api/node_modules/side-channel-weakmap/CHANGELOG.md +0 -28
  606. package/ppi-api/node_modules/side-channel-weakmap/LICENSE +0 -21
  607. package/ppi-api/node_modules/side-channel-weakmap/README.md +0 -62
  608. package/ppi-api/node_modules/side-channel-weakmap/index.d.ts +0 -15
  609. package/ppi-api/node_modules/side-channel-weakmap/index.js +0 -84
  610. package/ppi-api/node_modules/side-channel-weakmap/package.json +0 -87
  611. package/ppi-api/node_modules/side-channel-weakmap/test/index.js +0 -114
  612. package/ppi-api/node_modules/side-channel-weakmap/tsconfig.json +0 -9
  613. package/ppi-api/node_modules/statuses/HISTORY.md +0 -82
  614. package/ppi-api/node_modules/statuses/LICENSE +0 -23
  615. package/ppi-api/node_modules/statuses/README.md +0 -136
  616. package/ppi-api/node_modules/statuses/codes.json +0 -65
  617. package/ppi-api/node_modules/statuses/index.js +0 -146
  618. package/ppi-api/node_modules/statuses/package.json +0 -49
  619. package/ppi-api/node_modules/toidentifier/HISTORY.md +0 -9
  620. package/ppi-api/node_modules/toidentifier/LICENSE +0 -21
  621. package/ppi-api/node_modules/toidentifier/README.md +0 -61
  622. package/ppi-api/node_modules/toidentifier/index.js +0 -32
  623. package/ppi-api/node_modules/toidentifier/package.json +0 -38
  624. package/ppi-api/node_modules/type-is/HISTORY.md +0 -259
  625. package/ppi-api/node_modules/type-is/LICENSE +0 -23
  626. package/ppi-api/node_modules/type-is/README.md +0 -170
  627. package/ppi-api/node_modules/type-is/index.js +0 -266
  628. package/ppi-api/node_modules/type-is/package.json +0 -45
  629. package/ppi-api/node_modules/unpipe/HISTORY.md +0 -4
  630. package/ppi-api/node_modules/unpipe/LICENSE +0 -22
  631. package/ppi-api/node_modules/unpipe/README.md +0 -43
  632. package/ppi-api/node_modules/unpipe/index.js +0 -69
  633. package/ppi-api/node_modules/unpipe/package.json +0 -27
  634. package/ppi-api/node_modules/utils-merge/LICENSE +0 -20
  635. package/ppi-api/node_modules/utils-merge/README.md +0 -34
  636. package/ppi-api/node_modules/utils-merge/index.js +0 -23
  637. package/ppi-api/node_modules/utils-merge/package.json +0 -40
  638. package/ppi-api/node_modules/vary/HISTORY.md +0 -39
  639. package/ppi-api/node_modules/vary/LICENSE +0 -22
  640. package/ppi-api/node_modules/vary/README.md +0 -101
  641. package/ppi-api/node_modules/vary/index.js +0 -149
  642. package/ppi-api/node_modules/vary/package.json +0 -43
@@ -1,1170 +0,0 @@
1
- 'use strict';
2
-
3
- var test = require('tape');
4
- var hasPropertyDescriptors = require('has-property-descriptors')();
5
- var iconv = require('iconv-lite');
6
- var mockProperty = require('mock-property');
7
- var hasOverrideMistake = require('has-override-mistake')();
8
- var SaferBuffer = require('safer-buffer').Buffer;
9
- var v = require('es-value-fixtures');
10
- var inspect = require('object-inspect');
11
- var emptyTestCases = require('./empty-keys-cases').emptyTestCases;
12
-
13
- var qs = require('../');
14
- var utils = require('../lib/utils');
15
-
16
- test('parse()', function (t) {
17
- t.test('parses a simple string', function (st) {
18
- st.deepEqual(qs.parse('0=foo'), { 0: 'foo' });
19
- st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' });
20
- st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } });
21
- st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } });
22
- st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } });
23
- st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null });
24
- st.deepEqual(qs.parse('foo'), { foo: '' });
25
- st.deepEqual(qs.parse('foo='), { foo: '' });
26
- st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' });
27
- st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' });
28
- st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' });
29
- st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' });
30
- st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' });
31
- st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null });
32
- st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' });
33
- st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), {
34
- cht: 'p3',
35
- chd: 't:60,40',
36
- chs: '250x100',
37
- chl: 'Hello|World'
38
- });
39
- st.end();
40
- });
41
-
42
- t.test('comma: false', function (st) {
43
- st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] });
44
- st.deepEqual(qs.parse('a[0]=b&a[1]=c'), { a: ['b', 'c'] });
45
- st.deepEqual(qs.parse('a=b,c'), { a: 'b,c' });
46
- st.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] });
47
- st.end();
48
- });
49
-
50
- t.test('comma: true', function (st) {
51
- st.deepEqual(qs.parse('a[]=b&a[]=c', { comma: true }), { a: ['b', 'c'] });
52
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { comma: true }), { a: ['b', 'c'] });
53
- st.deepEqual(qs.parse('a=b,c', { comma: true }), { a: ['b', 'c'] });
54
- st.deepEqual(qs.parse('a=b&a=c', { comma: true }), { a: ['b', 'c'] });
55
- st.end();
56
- });
57
-
58
- t.test('allows enabling dot notation', function (st) {
59
- st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' });
60
- st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } });
61
-
62
- st.end();
63
- });
64
-
65
- t.test('decode dot keys correctly', function (st) {
66
- st.deepEqual(
67
- qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: false, decodeDotInKeys: false }),
68
- { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' },
69
- 'with allowDots false and decodeDotInKeys false'
70
- );
71
- st.deepEqual(
72
- qs.parse('name.obj.first=John&name.obj.last=Doe', { allowDots: true, decodeDotInKeys: false }),
73
- { name: { obj: { first: 'John', last: 'Doe' } } },
74
- 'with allowDots false and decodeDotInKeys false'
75
- );
76
- st.deepEqual(
77
- qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: false }),
78
- { 'name%2Eobj': { first: 'John', last: 'Doe' } },
79
- 'with allowDots true and decodeDotInKeys false'
80
- );
81
- st.deepEqual(
82
- qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: true }),
83
- { 'name.obj': { first: 'John', last: 'Doe' } },
84
- 'with allowDots true and decodeDotInKeys true'
85
- );
86
-
87
- st.deepEqual(
88
- qs.parse(
89
- 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe',
90
- { allowDots: false, decodeDotInKeys: false }
91
- ),
92
- { 'name%2Eobj%2Esubobject.first%2Egodly%2Ename': 'John', 'name%2Eobj%2Esubobject.last': 'Doe' },
93
- 'with allowDots false and decodeDotInKeys false'
94
- );
95
- st.deepEqual(
96
- qs.parse(
97
- 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe',
98
- { allowDots: true, decodeDotInKeys: false }
99
- ),
100
- { name: { obj: { subobject: { first: { godly: { name: 'John' } }, last: 'Doe' } } } },
101
- 'with allowDots true and decodeDotInKeys false'
102
- );
103
- st.deepEqual(
104
- qs.parse(
105
- 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe',
106
- { allowDots: true, decodeDotInKeys: true }
107
- ),
108
- { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } },
109
- 'with allowDots true and decodeDotInKeys true'
110
- );
111
- st.deepEqual(
112
- qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe'),
113
- { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' },
114
- 'with allowDots and decodeDotInKeys undefined'
115
- );
116
-
117
- st.end();
118
- });
119
-
120
- t.test('should decode dot in key of object, and allow enabling dot notation when decodeDotInKeys is set to true and allowDots is undefined', function (st) {
121
- st.deepEqual(
122
- qs.parse(
123
- 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe',
124
- { decodeDotInKeys: true }
125
- ),
126
- { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } },
127
- 'with allowDots undefined and decodeDotInKeys true'
128
- );
129
-
130
- st.end();
131
- });
132
-
133
- t.test('should throw when decodeDotInKeys is not of type boolean', function (st) {
134
- st['throws'](
135
- function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 'foobar' }); },
136
- TypeError
137
- );
138
-
139
- st['throws'](
140
- function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 0 }); },
141
- TypeError
142
- );
143
- st['throws'](
144
- function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: NaN }); },
145
- TypeError
146
- );
147
-
148
- st['throws'](
149
- function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: null }); },
150
- TypeError
151
- );
152
-
153
- st.end();
154
- });
155
-
156
- t.test('allows empty arrays in obj values', function (st) {
157
- st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }), { foo: [], bar: 'baz' });
158
- st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: false }), { foo: [''], bar: 'baz' });
159
-
160
- st.end();
161
- });
162
-
163
- t.test('should throw when allowEmptyArrays is not of type boolean', function (st) {
164
- st['throws'](
165
- function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 'foobar' }); },
166
- TypeError
167
- );
168
-
169
- st['throws'](
170
- function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 0 }); },
171
- TypeError
172
- );
173
- st['throws'](
174
- function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: NaN }); },
175
- TypeError
176
- );
177
-
178
- st['throws'](
179
- function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: null }); },
180
- TypeError
181
- );
182
-
183
- st.end();
184
- });
185
-
186
- t.test('allowEmptyArrays + strictNullHandling', function (st) {
187
- st.deepEqual(
188
- qs.parse('testEmptyArray[]', { strictNullHandling: true, allowEmptyArrays: true }),
189
- { testEmptyArray: [] }
190
- );
191
-
192
- st.end();
193
- });
194
-
195
- t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string');
196
- t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string');
197
- t.deepEqual(
198
- qs.parse('a[b][c][d][e][f][g][h]=i'),
199
- { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } },
200
- 'defaults to a depth of 5'
201
- );
202
-
203
- t.test('only parses one level when depth = 1', function (st) {
204
- st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } });
205
- st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } });
206
- st.end();
207
- });
208
-
209
- t.test('uses original key when depth = 0', function (st) {
210
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: 0 }), { 'a[0]': 'b', 'a[1]': 'c' });
211
- 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' });
212
- st.end();
213
- });
214
-
215
- t.test('uses original key when depth = false', function (st) {
216
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: false }), { 'a[0]': 'b', 'a[1]': 'c' });
217
- 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' });
218
- st.end();
219
- });
220
-
221
- t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array');
222
-
223
- t.test('parses an explicit array', function (st) {
224
- st.deepEqual(qs.parse('a[]=b'), { a: ['b'] });
225
- st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] });
226
- st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] });
227
- st.end();
228
- });
229
-
230
- t.test('parses a mix of simple and explicit arrays', function (st) {
231
- st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
232
- st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
233
- st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] });
234
- st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] });
235
-
236
- st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] });
237
- st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] });
238
- st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
239
-
240
- st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] });
241
- st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] });
242
- st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
243
-
244
- st.end();
245
- });
246
-
247
- t.test('parses a nested array', function (st) {
248
- st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } });
249
- st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } });
250
- st.end();
251
- });
252
-
253
- t.test('allows to specify array indices', function (st) {
254
- st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] });
255
- st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] });
256
- st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 20 }), { a: ['c'] });
257
- st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 0 }), { a: { 1: 'c' } });
258
- st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] });
259
- st.end();
260
- });
261
-
262
- t.test('limits specific array indices to arrayLimit', function (st) {
263
- st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] });
264
- st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } });
265
-
266
- st.deepEqual(qs.parse('a[20]=a'), { a: ['a'] });
267
- st.deepEqual(qs.parse('a[21]=a'), { a: { 21: 'a' } });
268
- st.end();
269
- });
270
-
271
- t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number');
272
-
273
- t.test('supports encoded = signs', function (st) {
274
- st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' });
275
- st.end();
276
- });
277
-
278
- t.test('is ok with url encoded strings', function (st) {
279
- st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } });
280
- st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } });
281
- st.end();
282
- });
283
-
284
- t.test('allows brackets in the value', function (st) {
285
- st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' });
286
- st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' });
287
- st.end();
288
- });
289
-
290
- t.test('allows empty values', function (st) {
291
- st.deepEqual(qs.parse(''), {});
292
- st.deepEqual(qs.parse(null), {});
293
- st.deepEqual(qs.parse(undefined), {});
294
- st.end();
295
- });
296
-
297
- t.test('transforms arrays to objects', function (st) {
298
- st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } });
299
- st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', 0: 'bar' } });
300
- st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', 0: 'bar' } });
301
- st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } });
302
- st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } });
303
- 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' }] });
304
-
305
- st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: false }), { a: { 0: 'b', t: 'u' } });
306
- st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: true }), { a: { 0: 'b', t: 'u', hasOwnProperty: 'c' } });
307
- st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: false }), { a: { 0: 'b', x: 'y' } });
308
- st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: true }), { a: { 0: 'b', hasOwnProperty: 'c', x: 'y' } });
309
- st.end();
310
- });
311
-
312
- t.test('transforms arrays to objects (dot notation)', function (st) {
313
- st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } });
314
- st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } });
315
- st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } });
316
- st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] });
317
- 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' }] });
318
- st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } });
319
- st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } });
320
- st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { 0: 'bar', bad: 'baz' } });
321
- st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } });
322
- 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' }] });
323
- st.end();
324
- });
325
-
326
- t.test('correctly prunes undefined values when converting an array to an object', function (st) {
327
- st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { 2: 'b', 99999999: 'c' } });
328
- st.end();
329
- });
330
-
331
- t.test('supports malformed uri characters', function (st) {
332
- st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null });
333
- st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' });
334
- st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' });
335
- st.end();
336
- });
337
-
338
- t.test('doesn\'t produce empty keys', function (st) {
339
- st.deepEqual(qs.parse('_r=1&'), { _r: '1' });
340
- st.end();
341
- });
342
-
343
- t.test('cannot access Object prototype', function (st) {
344
- qs.parse('constructor[prototype][bad]=bad');
345
- qs.parse('bad[constructor][prototype][bad]=bad');
346
- st.equal(typeof Object.prototype.bad, 'undefined');
347
- st.end();
348
- });
349
-
350
- t.test('parses arrays of objects', function (st) {
351
- st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
352
- st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] });
353
- st.end();
354
- });
355
-
356
- t.test('allows for empty strings in arrays', function (st) {
357
- st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] });
358
-
359
- st.deepEqual(
360
- qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true, arrayLimit: 20 }),
361
- { a: ['b', null, 'c', ''] },
362
- 'with arrayLimit 20 + array indices: null then empty string works'
363
- );
364
- st.deepEqual(
365
- qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }),
366
- { a: ['b', null, 'c', ''] },
367
- 'with arrayLimit 0 + array brackets: null then empty string works'
368
- );
369
-
370
- st.deepEqual(
371
- qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true, arrayLimit: 20 }),
372
- { a: ['b', '', 'c', null] },
373
- 'with arrayLimit 20 + array indices: empty string then null works'
374
- );
375
- st.deepEqual(
376
- qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }),
377
- { a: ['b', '', 'c', null] },
378
- 'with arrayLimit 0 + array brackets: empty string then null works'
379
- );
380
-
381
- st.deepEqual(
382
- qs.parse('a[]=&a[]=b&a[]=c'),
383
- { a: ['', 'b', 'c'] },
384
- 'array brackets: empty strings work'
385
- );
386
- st.end();
387
- });
388
-
389
- t.test('compacts sparse arrays', function (st) {
390
- st.deepEqual(qs.parse('a[10]=1&a[2]=2', { arrayLimit: 20 }), { a: ['2', '1'] });
391
- st.deepEqual(qs.parse('a[1][b][2][c]=1', { arrayLimit: 20 }), { a: [{ b: [{ c: '1' }] }] });
392
- st.deepEqual(qs.parse('a[1][2][3][c]=1', { arrayLimit: 20 }), { a: [[[{ c: '1' }]]] });
393
- st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { arrayLimit: 20 }), { a: [[[{ c: ['1'] }]]] });
394
- st.end();
395
- });
396
-
397
- t.test('parses sparse arrays', function (st) {
398
- /* eslint no-sparse-arrays: 0 */
399
- st.deepEqual(qs.parse('a[4]=1&a[1]=2', { allowSparse: true }), { a: [, '2', , , '1'] });
400
- st.deepEqual(qs.parse('a[1][b][2][c]=1', { allowSparse: true }), { a: [, { b: [, , { c: '1' }] }] });
401
- st.deepEqual(qs.parse('a[1][2][3][c]=1', { allowSparse: true }), { a: [, [, , [, , , { c: '1' }]]] });
402
- st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { allowSparse: true }), { a: [, [, , [, , , { c: [, '1'] }]]] });
403
- st.end();
404
- });
405
-
406
- t.test('parses semi-parsed strings', function (st) {
407
- st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } });
408
- st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } });
409
- st.end();
410
- });
411
-
412
- t.test('parses buffers correctly', function (st) {
413
- var b = SaferBuffer.from('test');
414
- st.deepEqual(qs.parse({ a: b }), { a: b });
415
- st.end();
416
- });
417
-
418
- t.test('parses jquery-param strings', function (st) {
419
- // readable = 'filter[0][]=int1&filter[0][]==&filter[0][]=77&filter[]=and&filter[2][]=int2&filter[2][]==&filter[2][]=8'
420
- 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';
421
- var expected = { filter: [['int1', '=', '77'], 'and', ['int2', '=', '8']] };
422
- st.deepEqual(qs.parse(encoded), expected);
423
- st.end();
424
- });
425
-
426
- t.test('continues parsing when no parent is found', function (st) {
427
- st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' });
428
- st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' });
429
- st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' });
430
- st.end();
431
- });
432
-
433
- t.test('does not error when parsing a very long array', function (st) {
434
- var str = 'a[]=a';
435
- while (Buffer.byteLength(str) < 128 * 1024) {
436
- str = str + '&' + str;
437
- }
438
-
439
- st.doesNotThrow(function () {
440
- qs.parse(str);
441
- });
442
-
443
- st.end();
444
- });
445
-
446
- t.test('should not throw when a native prototype has an enumerable property', function (st) {
447
- st.intercept(Object.prototype, 'crash', { value: '' });
448
- st.intercept(Array.prototype, 'crash', { value: '' });
449
-
450
- st.doesNotThrow(qs.parse.bind(null, 'a=b'));
451
- st.deepEqual(qs.parse('a=b'), { a: 'b' });
452
- st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c'));
453
- st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
454
-
455
- st.end();
456
- });
457
-
458
- t.test('parses a string with an alternative string delimiter', function (st) {
459
- st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' });
460
- st.end();
461
- });
462
-
463
- t.test('parses a string with an alternative RegExp delimiter', function (st) {
464
- st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' });
465
- st.end();
466
- });
467
-
468
- t.test('does not use non-splittable objects as delimiters', function (st) {
469
- st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' });
470
- st.end();
471
- });
472
-
473
- t.test('allows overriding parameter limit', function (st) {
474
- st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' });
475
- st.end();
476
- });
477
-
478
- t.test('allows setting the parameter limit to Infinity', function (st) {
479
- st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' });
480
- st.end();
481
- });
482
-
483
- t.test('allows overriding array limit', function (st) {
484
- st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } });
485
- st.deepEqual(qs.parse('a[0]=b', { arrayLimit: 0 }), { a: ['b'] });
486
-
487
- st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } });
488
- st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: 0 }), { a: { '-1': 'b' } });
489
-
490
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: -1 }), { a: { 0: 'b', 1: 'c' } });
491
- st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } });
492
-
493
- st.end();
494
- });
495
-
496
- t.test('allows disabling array parsing', function (st) {
497
- var indices = qs.parse('a[0]=b&a[1]=c', { parseArrays: false });
498
- st.deepEqual(indices, { a: { 0: 'b', 1: 'c' } });
499
- st.equal(Array.isArray(indices.a), false, 'parseArrays:false, indices case is not an array');
500
-
501
- var emptyBrackets = qs.parse('a[]=b', { parseArrays: false });
502
- st.deepEqual(emptyBrackets, { a: { 0: 'b' } });
503
- st.equal(Array.isArray(emptyBrackets.a), false, 'parseArrays:false, empty brackets case is not an array');
504
-
505
- st.end();
506
- });
507
-
508
- t.test('allows for query string prefix', function (st) {
509
- st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
510
- st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
511
- st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' });
512
-
513
- st.end();
514
- });
515
-
516
- t.test('parses an object', function (st) {
517
- var input = {
518
- 'user[name]': { 'pop[bob]': 3 },
519
- 'user[email]': null
520
- };
521
-
522
- var expected = {
523
- user: {
524
- name: { 'pop[bob]': 3 },
525
- email: null
526
- }
527
- };
528
-
529
- var result = qs.parse(input);
530
-
531
- st.deepEqual(result, expected);
532
- st.end();
533
- });
534
-
535
- t.test('parses string with comma as array divider', function (st) {
536
- st.deepEqual(qs.parse('foo=bar,tee', { comma: true }), { foo: ['bar', 'tee'] });
537
- st.deepEqual(qs.parse('foo[bar]=coffee,tee', { comma: true }), { foo: { bar: ['coffee', 'tee'] } });
538
- st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' });
539
- st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' });
540
- st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null });
541
-
542
- // test cases inversed from from stringify tests
543
- st.deepEqual(qs.parse('a[0]=c'), { a: ['c'] });
544
- st.deepEqual(qs.parse('a[]=c'), { a: ['c'] });
545
- st.deepEqual(qs.parse('a[]=c', { comma: true }), { a: ['c'] });
546
-
547
- st.deepEqual(qs.parse('a[0]=c&a[1]=d'), { a: ['c', 'd'] });
548
- st.deepEqual(qs.parse('a[]=c&a[]=d'), { a: ['c', 'd'] });
549
- st.deepEqual(qs.parse('a=c,d', { comma: true }), { a: ['c', 'd'] });
550
-
551
- st.end();
552
- });
553
-
554
- t.test('parses values with comma as array divider', function (st) {
555
- st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: false }), { foo: 'bar,tee' });
556
- st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: true }), { foo: ['bar', 'tee'] });
557
- st.end();
558
- });
559
-
560
- t.test('use number decoder, parses string that has one number with comma option enabled', function (st) {
561
- var decoder = function (str, defaultDecoder, charset, type) {
562
- if (!isNaN(Number(str))) {
563
- return parseFloat(str);
564
- }
565
- return defaultDecoder(str, defaultDecoder, charset, type);
566
- };
567
-
568
- st.deepEqual(qs.parse('foo=1', { comma: true, decoder: decoder }), { foo: 1 });
569
- st.deepEqual(qs.parse('foo=0', { comma: true, decoder: decoder }), { foo: 0 });
570
-
571
- st.end();
572
- });
573
-
574
- t.test('parses brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) {
575
- st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] });
576
- st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=', { comma: true }), { foo: [['1', '2', '3'], ''] });
577
- st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] });
578
- st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] });
579
-
580
- st.end();
581
- });
582
-
583
- t.test('parses url-encoded brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) {
584
- st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] });
585
- st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=', { comma: true }), { foo: [['1', '2', '3'], ''] });
586
- st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] });
587
- st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] });
588
-
589
- st.end();
590
- });
591
-
592
- t.test('parses comma delimited array while having percent-encoded comma treated as normal text', function (st) {
593
- st.deepEqual(qs.parse('foo=a%2Cb', { comma: true }), { foo: 'a,b' });
594
- st.deepEqual(qs.parse('foo=a%2C%20b,d', { comma: true }), { foo: ['a, b', 'd'] });
595
- st.deepEqual(qs.parse('foo=a%2C%20b,c%2C%20d', { comma: true }), { foo: ['a, b', 'c, d'] });
596
-
597
- st.end();
598
- });
599
-
600
- t.test('parses an object in dot notation', function (st) {
601
- var input = {
602
- 'user.name': { 'pop[bob]': 3 },
603
- 'user.email.': null
604
- };
605
-
606
- var expected = {
607
- user: {
608
- name: { 'pop[bob]': 3 },
609
- email: null
610
- }
611
- };
612
-
613
- var result = qs.parse(input, { allowDots: true });
614
-
615
- st.deepEqual(result, expected);
616
- st.end();
617
- });
618
-
619
- t.test('parses an object and not child values', function (st) {
620
- var input = {
621
- 'user[name]': { 'pop[bob]': { test: 3 } },
622
- 'user[email]': null
623
- };
624
-
625
- var expected = {
626
- user: {
627
- name: { 'pop[bob]': { test: 3 } },
628
- email: null
629
- }
630
- };
631
-
632
- var result = qs.parse(input);
633
-
634
- st.deepEqual(result, expected);
635
- st.end();
636
- });
637
-
638
- t.test('does not blow up when Buffer global is missing', function (st) {
639
- var restore = mockProperty(global, 'Buffer', { 'delete': true });
640
-
641
- var result = qs.parse('a=b&c=d');
642
-
643
- restore();
644
-
645
- st.deepEqual(result, { a: 'b', c: 'd' });
646
- st.end();
647
- });
648
-
649
- t.test('does not crash when parsing circular references', function (st) {
650
- var a = {};
651
- a.b = a;
652
-
653
- var parsed;
654
-
655
- st.doesNotThrow(function () {
656
- parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a });
657
- });
658
-
659
- st.equal('foo' in parsed, true, 'parsed has "foo" property');
660
- st.equal('bar' in parsed.foo, true);
661
- st.equal('baz' in parsed.foo, true);
662
- st.equal(parsed.foo.bar, 'baz');
663
- st.deepEqual(parsed.foo.baz, a);
664
- st.end();
665
- });
666
-
667
- t.test('does not crash when parsing deep objects', function (st) {
668
- var parsed;
669
- var str = 'foo';
670
-
671
- for (var i = 0; i < 5000; i++) {
672
- str += '[p]';
673
- }
674
-
675
- str += '=bar';
676
-
677
- st.doesNotThrow(function () {
678
- parsed = qs.parse(str, { depth: 5000 });
679
- });
680
-
681
- st.equal('foo' in parsed, true, 'parsed has "foo" property');
682
-
683
- var depth = 0;
684
- var ref = parsed.foo;
685
- while ((ref = ref.p)) {
686
- depth += 1;
687
- }
688
-
689
- st.equal(depth, 5000, 'parsed is 5000 properties deep');
690
-
691
- st.end();
692
- });
693
-
694
- t.test('parses null objects correctly', { skip: !Object.create }, function (st) {
695
- var a = Object.create(null);
696
- a.b = 'c';
697
-
698
- st.deepEqual(qs.parse(a), { b: 'c' });
699
- var result = qs.parse({ a: a });
700
- st.equal('a' in result, true, 'result has "a" property');
701
- st.deepEqual(result.a, a);
702
- st.end();
703
- });
704
-
705
- t.test('parses dates correctly', function (st) {
706
- var now = new Date();
707
- st.deepEqual(qs.parse({ a: now }), { a: now });
708
- st.end();
709
- });
710
-
711
- t.test('parses regular expressions correctly', function (st) {
712
- var re = /^test$/;
713
- st.deepEqual(qs.parse({ a: re }), { a: re });
714
- st.end();
715
- });
716
-
717
- t.test('does not allow overwriting prototype properties', function (st) {
718
- st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: false }), {});
719
- st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: false }), {});
720
-
721
- st.deepEqual(
722
- qs.parse('toString', { allowPrototypes: false }),
723
- {},
724
- 'bare "toString" results in {}'
725
- );
726
-
727
- st.end();
728
- });
729
-
730
- t.test('can allow overwriting prototype properties', function (st) {
731
- st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } });
732
- st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' });
733
-
734
- st.deepEqual(
735
- qs.parse('toString', { allowPrototypes: true }),
736
- { toString: '' },
737
- 'bare "toString" results in { toString: "" }'
738
- );
739
-
740
- st.end();
741
- });
742
-
743
- t.test('does not crash when the global Object prototype is frozen', { skip: !hasPropertyDescriptors || !hasOverrideMistake }, function (st) {
744
- // We can't actually freeze the global Object prototype as that will interfere with other tests, and once an object is frozen, it
745
- // can't be unfrozen. Instead, we add a new non-writable property to simulate this.
746
- st.teardown(mockProperty(Object.prototype, 'frozenProp', { value: 'foo', nonWritable: true, nonEnumerable: true }));
747
-
748
- st['throws'](
749
- function () {
750
- var obj = {};
751
- obj.frozenProp = 'bar';
752
- },
753
- // node < 6 has a different error message
754
- /^TypeError: Cannot assign to read only property 'frozenProp' of (?:object '#<Object>'|#<Object>)/,
755
- 'regular assignment of an inherited non-writable property throws'
756
- );
757
-
758
- var parsed;
759
- st.doesNotThrow(
760
- function () {
761
- parsed = qs.parse('frozenProp', { allowPrototypes: false });
762
- },
763
- 'parsing a nonwritable Object.prototype property does not throw'
764
- );
765
-
766
- st.deepEqual(parsed, {}, 'bare "frozenProp" results in {}');
767
-
768
- st.end();
769
- });
770
-
771
- t.test('params starting with a closing bracket', function (st) {
772
- st.deepEqual(qs.parse(']=toString'), { ']': 'toString' });
773
- st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' });
774
- st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' });
775
- st.end();
776
- });
777
-
778
- t.test('params starting with a starting bracket', function (st) {
779
- st.deepEqual(qs.parse('[=toString'), { '[': 'toString' });
780
- st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' });
781
- st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' });
782
- st.end();
783
- });
784
-
785
- t.test('add keys to objects', function (st) {
786
- st.deepEqual(
787
- qs.parse('a[b]=c&a=d'),
788
- { a: { b: 'c', d: true } },
789
- 'can add keys to objects'
790
- );
791
-
792
- st.deepEqual(
793
- qs.parse('a[b]=c&a=toString'),
794
- { a: { b: 'c' } },
795
- 'can not overwrite prototype'
796
- );
797
-
798
- st.deepEqual(
799
- qs.parse('a[b]=c&a=toString', { allowPrototypes: true }),
800
- { a: { b: 'c', toString: true } },
801
- 'can overwrite prototype with allowPrototypes true'
802
- );
803
-
804
- st.deepEqual(
805
- qs.parse('a[b]=c&a=toString', { plainObjects: true }),
806
- { __proto__: null, a: { __proto__: null, b: 'c', toString: true } },
807
- 'can overwrite prototype with plainObjects true'
808
- );
809
-
810
- st.end();
811
- });
812
-
813
- t.test('dunder proto is ignored', function (st) {
814
- var payload = 'categories[__proto__]=login&categories[__proto__]&categories[length]=42';
815
- var result = qs.parse(payload, { allowPrototypes: true });
816
-
817
- st.deepEqual(
818
- result,
819
- {
820
- categories: {
821
- length: '42'
822
- }
823
- },
824
- 'silent [[Prototype]] payload'
825
- );
826
-
827
- var plainResult = qs.parse(payload, { allowPrototypes: true, plainObjects: true });
828
-
829
- st.deepEqual(
830
- plainResult,
831
- {
832
- __proto__: null,
833
- categories: {
834
- __proto__: null,
835
- length: '42'
836
- }
837
- },
838
- 'silent [[Prototype]] payload: plain objects'
839
- );
840
-
841
- var query = qs.parse('categories[__proto__]=cats&categories[__proto__]=dogs&categories[some][json]=toInject', { allowPrototypes: true });
842
-
843
- st.notOk(Array.isArray(query.categories), 'is not an array');
844
- st.notOk(query.categories instanceof Array, 'is not instanceof an array');
845
- st.deepEqual(query.categories, { some: { json: 'toInject' } });
846
- st.equal(JSON.stringify(query.categories), '{"some":{"json":"toInject"}}', 'stringifies as a non-array');
847
-
848
- st.deepEqual(
849
- qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true }),
850
- {
851
- foo: {
852
- bar: 'stuffs'
853
- }
854
- },
855
- 'hidden values'
856
- );
857
-
858
- st.deepEqual(
859
- qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true, plainObjects: true }),
860
- {
861
- __proto__: null,
862
- foo: {
863
- __proto__: null,
864
- bar: 'stuffs'
865
- }
866
- },
867
- 'hidden values: plain objects'
868
- );
869
-
870
- st.end();
871
- });
872
-
873
- t.test('can return null objects', { skip: !Object.create }, function (st) {
874
- var expected = Object.create(null);
875
- expected.a = Object.create(null);
876
- expected.a.b = 'c';
877
- expected.a.hasOwnProperty = 'd';
878
- st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected);
879
- st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null));
880
- var expectedArray = Object.create(null);
881
- expectedArray.a = Object.create(null);
882
- expectedArray.a[0] = 'b';
883
- expectedArray.a.c = 'd';
884
- st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray);
885
- st.end();
886
- });
887
-
888
- t.test('can parse with custom encoding', function (st) {
889
- st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', {
890
- decoder: function (str) {
891
- var reg = /%([0-9A-F]{2})/ig;
892
- var result = [];
893
- var parts = reg.exec(str);
894
- while (parts) {
895
- result.push(parseInt(parts[1], 16));
896
- parts = reg.exec(str);
897
- }
898
- return String(iconv.decode(SaferBuffer.from(result), 'shift_jis'));
899
- }
900
- }), { 県: '大阪府' });
901
- st.end();
902
- });
903
-
904
- t.test('receives the default decoder as a second argument', function (st) {
905
- st.plan(1);
906
- qs.parse('a', {
907
- decoder: function (str, defaultDecoder) {
908
- st.equal(defaultDecoder, utils.decode);
909
- }
910
- });
911
- st.end();
912
- });
913
-
914
- t.test('throws error with wrong decoder', function (st) {
915
- st['throws'](function () {
916
- qs.parse({}, { decoder: 'string' });
917
- }, new TypeError('Decoder has to be a function.'));
918
- st.end();
919
- });
920
-
921
- t.test('does not mutate the options argument', function (st) {
922
- var options = {};
923
- qs.parse('a[b]=true', options);
924
- st.deepEqual(options, {});
925
- st.end();
926
- });
927
-
928
- t.test('throws if an invalid charset is specified', function (st) {
929
- st['throws'](function () {
930
- qs.parse('a=b', { charset: 'foobar' });
931
- }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'));
932
- st.end();
933
- });
934
-
935
- t.test('parses an iso-8859-1 string if asked to', function (st) {
936
- st.deepEqual(qs.parse('%A2=%BD', { charset: 'iso-8859-1' }), { '¢': '½' });
937
- st.end();
938
- });
939
-
940
- var urlEncodedCheckmarkInUtf8 = '%E2%9C%93';
941
- var urlEncodedOSlashInUtf8 = '%C3%B8';
942
- var urlEncodedNumCheckmark = '%26%2310003%3B';
943
- var urlEncodedNumSmiley = '%26%239786%3B';
944
-
945
- t.test('prefers an utf-8 charset specified by the utf8 sentinel to a default charset of iso-8859-1', function (st) {
946
- st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'iso-8859-1' }), { ø: 'ø' });
947
- st.end();
948
- });
949
-
950
- t.test('prefers an iso-8859-1 charset specified by the utf8 sentinel to a default charset of utf-8', function (st) {
951
- st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { 'ø': 'ø' });
952
- st.end();
953
- });
954
-
955
- t.test('does not require the utf8 sentinel to be defined before the parameters whose decoding it affects', function (st) {
956
- st.deepEqual(qs.parse('a=' + urlEncodedOSlashInUtf8 + '&utf8=' + urlEncodedNumCheckmark, { charsetSentinel: true, charset: 'utf-8' }), { a: 'ø' });
957
- st.end();
958
- });
959
-
960
- t.test('should ignore an utf8 sentinel with an unknown value', function (st) {
961
- st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { ø: 'ø' });
962
- st.end();
963
- });
964
-
965
- t.test('uses the utf8 sentinel to switch to utf-8 when no default charset is given', function (st) {
966
- st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { ø: 'ø' });
967
- st.end();
968
- });
969
-
970
- t.test('uses the utf8 sentinel to switch to iso-8859-1 when no default charset is given', function (st) {
971
- st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { 'ø': 'ø' });
972
- st.end();
973
- });
974
-
975
- t.test('interprets numeric entities in iso-8859-1 when `interpretNumericEntities`', function (st) {
976
- st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1', interpretNumericEntities: true }), { foo: '☺' });
977
- st.end();
978
- });
979
-
980
- t.test('handles a custom decoder returning `null`, in the `iso-8859-1` charset, when `interpretNumericEntities`', function (st) {
981
- st.deepEqual(qs.parse('foo=&bar=' + urlEncodedNumSmiley, {
982
- charset: 'iso-8859-1',
983
- decoder: function (str, defaultDecoder, charset) {
984
- return str ? defaultDecoder(str, defaultDecoder, charset) : null;
985
- },
986
- interpretNumericEntities: true
987
- }), { foo: null, bar: '☺' });
988
- st.end();
989
- });
990
-
991
- t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) {
992
- st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '&#9786;' });
993
- st.end();
994
- });
995
-
996
- t.test('does not interpret numeric entities when the charset is utf-8, even when `interpretNumericEntities`', function (st) {
997
- st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'utf-8', interpretNumericEntities: true }), { foo: '&#9786;' });
998
- st.end();
999
- });
1000
-
1001
- t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) {
1002
- st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' });
1003
- st.end();
1004
- });
1005
-
1006
- t.test('allows for decoding keys and values differently', function (st) {
1007
- var decoder = function (str, defaultDecoder, charset, type) {
1008
- if (type === 'key') {
1009
- return defaultDecoder(str, defaultDecoder, charset, type).toLowerCase();
1010
- }
1011
- if (type === 'value') {
1012
- return defaultDecoder(str, defaultDecoder, charset, type).toUpperCase();
1013
- }
1014
- throw 'this should never happen! type: ' + type;
1015
- };
1016
-
1017
- st.deepEqual(qs.parse('KeY=vAlUe', { decoder: decoder }), { key: 'VALUE' });
1018
- st.end();
1019
- });
1020
-
1021
- t.end();
1022
- });
1023
-
1024
- test('parses empty keys', function (t) {
1025
- emptyTestCases.forEach(function (testCase) {
1026
- t.test('skips empty string key with ' + testCase.input, function (st) {
1027
- st.deepEqual(qs.parse(testCase.input), testCase.noEmptyKeys);
1028
-
1029
- st.end();
1030
- });
1031
- });
1032
- });
1033
-
1034
- test('`duplicates` option', function (t) {
1035
- v.nonStrings.concat('not a valid option').forEach(function (invalidOption) {
1036
- if (typeof invalidOption !== 'undefined') {
1037
- t['throws'](
1038
- function () { qs.parse('', { duplicates: invalidOption }); },
1039
- TypeError,
1040
- 'throws on invalid option: ' + inspect(invalidOption)
1041
- );
1042
- }
1043
- });
1044
-
1045
- t.deepEqual(
1046
- qs.parse('foo=bar&foo=baz'),
1047
- { foo: ['bar', 'baz'] },
1048
- 'duplicates: default, combine'
1049
- );
1050
-
1051
- t.deepEqual(
1052
- qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }),
1053
- { foo: ['bar', 'baz'] },
1054
- 'duplicates: combine'
1055
- );
1056
-
1057
- t.deepEqual(
1058
- qs.parse('foo=bar&foo=baz', { duplicates: 'first' }),
1059
- { foo: 'bar' },
1060
- 'duplicates: first'
1061
- );
1062
-
1063
- t.deepEqual(
1064
- qs.parse('foo=bar&foo=baz', { duplicates: 'last' }),
1065
- { foo: 'baz' },
1066
- 'duplicates: last'
1067
- );
1068
-
1069
- t.end();
1070
- });
1071
-
1072
- test('qs strictDepth option - throw cases', function (t) {
1073
- t.test('throws an exception when depth exceeds the limit with strictDepth: true', function (st) {
1074
- st['throws'](
1075
- function () {
1076
- qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true });
1077
- },
1078
- RangeError,
1079
- 'Should throw RangeError'
1080
- );
1081
- st.end();
1082
- });
1083
-
1084
- t.test('throws an exception for multiple nested arrays with strictDepth: true', function (st) {
1085
- st['throws'](
1086
- function () {
1087
- qs.parse('a[0][1][2][3][4]=b', { depth: 3, strictDepth: true });
1088
- },
1089
- RangeError,
1090
- 'Should throw RangeError'
1091
- );
1092
- st.end();
1093
- });
1094
-
1095
- t.test('throws an exception for nested objects and arrays with strictDepth: true', function (st) {
1096
- st['throws'](
1097
- function () {
1098
- qs.parse('a[b][c][0][d][e]=f', { depth: 3, strictDepth: true });
1099
- },
1100
- RangeError,
1101
- 'Should throw RangeError'
1102
- );
1103
- st.end();
1104
- });
1105
-
1106
- t.test('throws an exception for different types of values with strictDepth: true', function (st) {
1107
- st['throws'](
1108
- function () {
1109
- qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 3, strictDepth: true });
1110
- },
1111
- RangeError,
1112
- 'Should throw RangeError'
1113
- );
1114
- st.end();
1115
- });
1116
-
1117
- });
1118
-
1119
- test('qs strictDepth option - non-throw cases', function (t) {
1120
- t.test('when depth is 0 and strictDepth true, do not throw', function (st) {
1121
- st.doesNotThrow(
1122
- function () {
1123
- qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 0, strictDepth: true });
1124
- },
1125
- RangeError,
1126
- 'Should not throw RangeError'
1127
- );
1128
- st.end();
1129
- });
1130
-
1131
- t.test('parses successfully when depth is within the limit with strictDepth: true', function (st) {
1132
- st.doesNotThrow(
1133
- function () {
1134
- var result = qs.parse('a[b]=c', { depth: 1, strictDepth: true });
1135
- st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly');
1136
- }
1137
- );
1138
- st.end();
1139
- });
1140
-
1141
- t.test('does not throw an exception when depth exceeds the limit with strictDepth: false', function (st) {
1142
- st.doesNotThrow(
1143
- function () {
1144
- var result = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 });
1145
- st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'Should parse with depth limit');
1146
- }
1147
- );
1148
- st.end();
1149
- });
1150
-
1151
- t.test('parses successfully when depth is within the limit with strictDepth: false', function (st) {
1152
- st.doesNotThrow(
1153
- function () {
1154
- var result = qs.parse('a[b]=c', { depth: 1 });
1155
- st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly');
1156
- }
1157
- );
1158
- st.end();
1159
- });
1160
-
1161
- t.test('does not throw when depth is exactly at the limit with strictDepth: true', function (st) {
1162
- st.doesNotThrow(
1163
- function () {
1164
- var result = qs.parse('a[b][c]=d', { depth: 2, strictDepth: true });
1165
- st.deepEqual(result, { a: { b: { c: 'd' } } }, 'Should parse correctly');
1166
- }
1167
- );
1168
- st.end();
1169
- });
1170
- });