dcs8 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 (597) hide show
  1. package/index.html +314 -0
  2. package/mod/douban-proxy.js +98 -0
  3. package/mod/node_modules/.package-lock.json +845 -0
  4. package/mod/node_modules/accepts/HISTORY.md +250 -0
  5. package/mod/node_modules/accepts/LICENSE +23 -0
  6. package/mod/node_modules/accepts/README.md +140 -0
  7. package/mod/node_modules/accepts/index.js +238 -0
  8. package/mod/node_modules/accepts/package.json +47 -0
  9. package/mod/node_modules/body-parser/LICENSE +23 -0
  10. package/mod/node_modules/body-parser/README.md +494 -0
  11. package/mod/node_modules/body-parser/index.js +71 -0
  12. package/mod/node_modules/body-parser/lib/read.js +247 -0
  13. package/mod/node_modules/body-parser/lib/types/json.js +158 -0
  14. package/mod/node_modules/body-parser/lib/types/raw.js +42 -0
  15. package/mod/node_modules/body-parser/lib/types/text.js +36 -0
  16. package/mod/node_modules/body-parser/lib/types/urlencoded.js +142 -0
  17. package/mod/node_modules/body-parser/lib/utils.js +98 -0
  18. package/mod/node_modules/body-parser/package.json +52 -0
  19. package/mod/node_modules/bytes/History.md +97 -0
  20. package/mod/node_modules/bytes/LICENSE +23 -0
  21. package/mod/node_modules/bytes/Readme.md +152 -0
  22. package/mod/node_modules/bytes/index.js +170 -0
  23. package/mod/node_modules/bytes/package.json +42 -0
  24. package/mod/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  25. package/mod/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  26. package/mod/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  27. package/mod/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  28. package/mod/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  29. package/mod/node_modules/call-bind-apply-helpers/README.md +62 -0
  30. package/mod/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  31. package/mod/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  32. package/mod/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  33. package/mod/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  34. package/mod/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  35. package/mod/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  36. package/mod/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  37. package/mod/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  38. package/mod/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  39. package/mod/node_modules/call-bind-apply-helpers/index.js +15 -0
  40. package/mod/node_modules/call-bind-apply-helpers/package.json +85 -0
  41. package/mod/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  42. package/mod/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  43. package/mod/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  44. package/mod/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  45. package/mod/node_modules/call-bound/.eslintrc +13 -0
  46. package/mod/node_modules/call-bound/.github/FUNDING.yml +12 -0
  47. package/mod/node_modules/call-bound/.nycrc +9 -0
  48. package/mod/node_modules/call-bound/CHANGELOG.md +42 -0
  49. package/mod/node_modules/call-bound/LICENSE +21 -0
  50. package/mod/node_modules/call-bound/README.md +53 -0
  51. package/mod/node_modules/call-bound/index.d.ts +94 -0
  52. package/mod/node_modules/call-bound/index.js +19 -0
  53. package/mod/node_modules/call-bound/package.json +99 -0
  54. package/mod/node_modules/call-bound/test/index.js +61 -0
  55. package/mod/node_modules/call-bound/tsconfig.json +10 -0
  56. package/mod/node_modules/content-disposition/HISTORY.md +72 -0
  57. package/mod/node_modules/content-disposition/LICENSE +22 -0
  58. package/mod/node_modules/content-disposition/README.md +142 -0
  59. package/mod/node_modules/content-disposition/index.js +458 -0
  60. package/mod/node_modules/content-disposition/package.json +43 -0
  61. package/mod/node_modules/content-type/HISTORY.md +29 -0
  62. package/mod/node_modules/content-type/LICENSE +22 -0
  63. package/mod/node_modules/content-type/README.md +94 -0
  64. package/mod/node_modules/content-type/index.js +225 -0
  65. package/mod/node_modules/content-type/package.json +42 -0
  66. package/mod/node_modules/cookie/LICENSE +24 -0
  67. package/mod/node_modules/cookie/README.md +317 -0
  68. package/mod/node_modules/cookie/SECURITY.md +25 -0
  69. package/mod/node_modules/cookie/index.js +335 -0
  70. package/mod/node_modules/cookie/package.json +44 -0
  71. package/mod/node_modules/cookie-signature/History.md +70 -0
  72. package/mod/node_modules/cookie-signature/LICENSE +22 -0
  73. package/mod/node_modules/cookie-signature/Readme.md +23 -0
  74. package/mod/node_modules/cookie-signature/index.js +47 -0
  75. package/mod/node_modules/cookie-signature/package.json +24 -0
  76. package/mod/node_modules/cors/LICENSE +22 -0
  77. package/mod/node_modules/cors/README.md +277 -0
  78. package/mod/node_modules/cors/lib/index.js +238 -0
  79. package/mod/node_modules/cors/package.json +42 -0
  80. package/mod/node_modules/debug/LICENSE +20 -0
  81. package/mod/node_modules/debug/README.md +481 -0
  82. package/mod/node_modules/debug/package.json +64 -0
  83. package/mod/node_modules/debug/src/browser.js +272 -0
  84. package/mod/node_modules/debug/src/common.js +292 -0
  85. package/mod/node_modules/debug/src/index.js +10 -0
  86. package/mod/node_modules/debug/src/node.js +263 -0
  87. package/mod/node_modules/depd/History.md +103 -0
  88. package/mod/node_modules/depd/LICENSE +22 -0
  89. package/mod/node_modules/depd/Readme.md +280 -0
  90. package/mod/node_modules/depd/index.js +538 -0
  91. package/mod/node_modules/depd/lib/browser/index.js +77 -0
  92. package/mod/node_modules/depd/package.json +45 -0
  93. package/mod/node_modules/dunder-proto/.eslintrc +5 -0
  94. package/mod/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  95. package/mod/node_modules/dunder-proto/.nycrc +13 -0
  96. package/mod/node_modules/dunder-proto/CHANGELOG.md +24 -0
  97. package/mod/node_modules/dunder-proto/LICENSE +21 -0
  98. package/mod/node_modules/dunder-proto/README.md +54 -0
  99. package/mod/node_modules/dunder-proto/get.d.ts +5 -0
  100. package/mod/node_modules/dunder-proto/get.js +30 -0
  101. package/mod/node_modules/dunder-proto/package.json +76 -0
  102. package/mod/node_modules/dunder-proto/set.d.ts +5 -0
  103. package/mod/node_modules/dunder-proto/set.js +35 -0
  104. package/mod/node_modules/dunder-proto/test/get.js +34 -0
  105. package/mod/node_modules/dunder-proto/test/index.js +4 -0
  106. package/mod/node_modules/dunder-proto/test/set.js +50 -0
  107. package/mod/node_modules/dunder-proto/tsconfig.json +9 -0
  108. package/mod/node_modules/ee-first/LICENSE +22 -0
  109. package/mod/node_modules/ee-first/README.md +80 -0
  110. package/mod/node_modules/ee-first/index.js +95 -0
  111. package/mod/node_modules/ee-first/package.json +29 -0
  112. package/mod/node_modules/encodeurl/LICENSE +22 -0
  113. package/mod/node_modules/encodeurl/README.md +109 -0
  114. package/mod/node_modules/encodeurl/index.js +60 -0
  115. package/mod/node_modules/encodeurl/package.json +40 -0
  116. package/mod/node_modules/es-define-property/.eslintrc +13 -0
  117. package/mod/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  118. package/mod/node_modules/es-define-property/.nycrc +9 -0
  119. package/mod/node_modules/es-define-property/CHANGELOG.md +29 -0
  120. package/mod/node_modules/es-define-property/LICENSE +21 -0
  121. package/mod/node_modules/es-define-property/README.md +49 -0
  122. package/mod/node_modules/es-define-property/index.d.ts +3 -0
  123. package/mod/node_modules/es-define-property/index.js +14 -0
  124. package/mod/node_modules/es-define-property/package.json +81 -0
  125. package/mod/node_modules/es-define-property/test/index.js +56 -0
  126. package/mod/node_modules/es-define-property/tsconfig.json +10 -0
  127. package/mod/node_modules/es-errors/.eslintrc +5 -0
  128. package/mod/node_modules/es-errors/.github/FUNDING.yml +12 -0
  129. package/mod/node_modules/es-errors/CHANGELOG.md +40 -0
  130. package/mod/node_modules/es-errors/LICENSE +21 -0
  131. package/mod/node_modules/es-errors/README.md +55 -0
  132. package/mod/node_modules/es-errors/eval.d.ts +3 -0
  133. package/mod/node_modules/es-errors/eval.js +4 -0
  134. package/mod/node_modules/es-errors/index.d.ts +3 -0
  135. package/mod/node_modules/es-errors/index.js +4 -0
  136. package/mod/node_modules/es-errors/package.json +80 -0
  137. package/mod/node_modules/es-errors/range.d.ts +3 -0
  138. package/mod/node_modules/es-errors/range.js +4 -0
  139. package/mod/node_modules/es-errors/ref.d.ts +3 -0
  140. package/mod/node_modules/es-errors/ref.js +4 -0
  141. package/mod/node_modules/es-errors/syntax.d.ts +3 -0
  142. package/mod/node_modules/es-errors/syntax.js +4 -0
  143. package/mod/node_modules/es-errors/test/index.js +19 -0
  144. package/mod/node_modules/es-errors/tsconfig.json +49 -0
  145. package/mod/node_modules/es-errors/type.d.ts +3 -0
  146. package/mod/node_modules/es-errors/type.js +4 -0
  147. package/mod/node_modules/es-errors/uri.d.ts +3 -0
  148. package/mod/node_modules/es-errors/uri.js +4 -0
  149. package/mod/node_modules/es-object-atoms/.eslintrc +16 -0
  150. package/mod/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  151. package/mod/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  152. package/mod/node_modules/es-object-atoms/LICENSE +21 -0
  153. package/mod/node_modules/es-object-atoms/README.md +63 -0
  154. package/mod/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  155. package/mod/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  156. package/mod/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  157. package/mod/node_modules/es-object-atoms/ToObject.js +10 -0
  158. package/mod/node_modules/es-object-atoms/index.d.ts +3 -0
  159. package/mod/node_modules/es-object-atoms/index.js +4 -0
  160. package/mod/node_modules/es-object-atoms/isObject.d.ts +3 -0
  161. package/mod/node_modules/es-object-atoms/isObject.js +6 -0
  162. package/mod/node_modules/es-object-atoms/package.json +80 -0
  163. package/mod/node_modules/es-object-atoms/test/index.js +38 -0
  164. package/mod/node_modules/es-object-atoms/tsconfig.json +6 -0
  165. package/mod/node_modules/escape-html/LICENSE +24 -0
  166. package/mod/node_modules/escape-html/Readme.md +43 -0
  167. package/mod/node_modules/escape-html/index.js +78 -0
  168. package/mod/node_modules/escape-html/package.json +24 -0
  169. package/mod/node_modules/etag/HISTORY.md +83 -0
  170. package/mod/node_modules/etag/LICENSE +22 -0
  171. package/mod/node_modules/etag/README.md +159 -0
  172. package/mod/node_modules/etag/index.js +131 -0
  173. package/mod/node_modules/etag/package.json +47 -0
  174. package/mod/node_modules/express/LICENSE +24 -0
  175. package/mod/node_modules/express/Readme.md +276 -0
  176. package/mod/node_modules/express/index.js +11 -0
  177. package/mod/node_modules/express/lib/application.js +631 -0
  178. package/mod/node_modules/express/lib/express.js +81 -0
  179. package/mod/node_modules/express/lib/request.js +514 -0
  180. package/mod/node_modules/express/lib/response.js +1053 -0
  181. package/mod/node_modules/express/lib/utils.js +271 -0
  182. package/mod/node_modules/express/lib/view.js +205 -0
  183. package/mod/node_modules/express/package.json +99 -0
  184. package/mod/node_modules/finalhandler/HISTORY.md +239 -0
  185. package/mod/node_modules/finalhandler/LICENSE +22 -0
  186. package/mod/node_modules/finalhandler/README.md +150 -0
  187. package/mod/node_modules/finalhandler/index.js +293 -0
  188. package/mod/node_modules/finalhandler/package.json +47 -0
  189. package/mod/node_modules/forwarded/HISTORY.md +21 -0
  190. package/mod/node_modules/forwarded/LICENSE +22 -0
  191. package/mod/node_modules/forwarded/README.md +57 -0
  192. package/mod/node_modules/forwarded/index.js +90 -0
  193. package/mod/node_modules/forwarded/package.json +45 -0
  194. package/mod/node_modules/fresh/HISTORY.md +80 -0
  195. package/mod/node_modules/fresh/LICENSE +23 -0
  196. package/mod/node_modules/fresh/README.md +117 -0
  197. package/mod/node_modules/fresh/index.js +136 -0
  198. package/mod/node_modules/fresh/package.json +46 -0
  199. package/mod/node_modules/function-bind/.eslintrc +21 -0
  200. package/mod/node_modules/function-bind/.github/FUNDING.yml +12 -0
  201. package/mod/node_modules/function-bind/.github/SECURITY.md +3 -0
  202. package/mod/node_modules/function-bind/.nycrc +13 -0
  203. package/mod/node_modules/function-bind/CHANGELOG.md +136 -0
  204. package/mod/node_modules/function-bind/LICENSE +20 -0
  205. package/mod/node_modules/function-bind/README.md +46 -0
  206. package/mod/node_modules/function-bind/implementation.js +84 -0
  207. package/mod/node_modules/function-bind/index.js +5 -0
  208. package/mod/node_modules/function-bind/package.json +87 -0
  209. package/mod/node_modules/function-bind/test/.eslintrc +9 -0
  210. package/mod/node_modules/function-bind/test/index.js +252 -0
  211. package/mod/node_modules/get-intrinsic/.eslintrc +42 -0
  212. package/mod/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  213. package/mod/node_modules/get-intrinsic/.nycrc +9 -0
  214. package/mod/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  215. package/mod/node_modules/get-intrinsic/LICENSE +21 -0
  216. package/mod/node_modules/get-intrinsic/README.md +71 -0
  217. package/mod/node_modules/get-intrinsic/index.js +378 -0
  218. package/mod/node_modules/get-intrinsic/package.json +97 -0
  219. package/mod/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  220. package/mod/node_modules/get-proto/.eslintrc +10 -0
  221. package/mod/node_modules/get-proto/.github/FUNDING.yml +12 -0
  222. package/mod/node_modules/get-proto/.nycrc +9 -0
  223. package/mod/node_modules/get-proto/CHANGELOG.md +21 -0
  224. package/mod/node_modules/get-proto/LICENSE +21 -0
  225. package/mod/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  226. package/mod/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  227. package/mod/node_modules/get-proto/README.md +50 -0
  228. package/mod/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  229. package/mod/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  230. package/mod/node_modules/get-proto/index.d.ts +5 -0
  231. package/mod/node_modules/get-proto/index.js +27 -0
  232. package/mod/node_modules/get-proto/package.json +81 -0
  233. package/mod/node_modules/get-proto/test/index.js +68 -0
  234. package/mod/node_modules/get-proto/tsconfig.json +9 -0
  235. package/mod/node_modules/gopd/.eslintrc +16 -0
  236. package/mod/node_modules/gopd/.github/FUNDING.yml +12 -0
  237. package/mod/node_modules/gopd/CHANGELOG.md +45 -0
  238. package/mod/node_modules/gopd/LICENSE +21 -0
  239. package/mod/node_modules/gopd/README.md +40 -0
  240. package/mod/node_modules/gopd/gOPD.d.ts +1 -0
  241. package/mod/node_modules/gopd/gOPD.js +4 -0
  242. package/mod/node_modules/gopd/index.d.ts +5 -0
  243. package/mod/node_modules/gopd/index.js +15 -0
  244. package/mod/node_modules/gopd/package.json +77 -0
  245. package/mod/node_modules/gopd/test/index.js +36 -0
  246. package/mod/node_modules/gopd/tsconfig.json +9 -0
  247. package/mod/node_modules/has-symbols/.eslintrc +11 -0
  248. package/mod/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  249. package/mod/node_modules/has-symbols/.nycrc +9 -0
  250. package/mod/node_modules/has-symbols/CHANGELOG.md +91 -0
  251. package/mod/node_modules/has-symbols/LICENSE +21 -0
  252. package/mod/node_modules/has-symbols/README.md +46 -0
  253. package/mod/node_modules/has-symbols/index.d.ts +3 -0
  254. package/mod/node_modules/has-symbols/index.js +14 -0
  255. package/mod/node_modules/has-symbols/package.json +111 -0
  256. package/mod/node_modules/has-symbols/shams.d.ts +3 -0
  257. package/mod/node_modules/has-symbols/shams.js +45 -0
  258. package/mod/node_modules/has-symbols/test/index.js +22 -0
  259. package/mod/node_modules/has-symbols/test/shams/core-js.js +29 -0
  260. package/mod/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  261. package/mod/node_modules/has-symbols/test/tests.js +58 -0
  262. package/mod/node_modules/has-symbols/tsconfig.json +10 -0
  263. package/mod/node_modules/hasown/.eslintrc +5 -0
  264. package/mod/node_modules/hasown/.github/FUNDING.yml +12 -0
  265. package/mod/node_modules/hasown/.nycrc +13 -0
  266. package/mod/node_modules/hasown/CHANGELOG.md +40 -0
  267. package/mod/node_modules/hasown/LICENSE +21 -0
  268. package/mod/node_modules/hasown/README.md +40 -0
  269. package/mod/node_modules/hasown/index.d.ts +3 -0
  270. package/mod/node_modules/hasown/index.js +8 -0
  271. package/mod/node_modules/hasown/package.json +92 -0
  272. package/mod/node_modules/hasown/tsconfig.json +6 -0
  273. package/mod/node_modules/http-errors/HISTORY.md +186 -0
  274. package/mod/node_modules/http-errors/LICENSE +23 -0
  275. package/mod/node_modules/http-errors/README.md +169 -0
  276. package/mod/node_modules/http-errors/index.js +290 -0
  277. package/mod/node_modules/http-errors/package.json +54 -0
  278. package/mod/node_modules/iconv-lite/LICENSE +21 -0
  279. package/mod/node_modules/iconv-lite/README.md +138 -0
  280. package/mod/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
  281. package/mod/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
  282. package/mod/node_modules/iconv-lite/encodings/index.js +23 -0
  283. package/mod/node_modules/iconv-lite/encodings/internal.js +218 -0
  284. package/mod/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
  285. package/mod/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  286. package/mod/node_modules/iconv-lite/encodings/sbcs-data.js +178 -0
  287. package/mod/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  288. package/mod/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  289. package/mod/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  290. package/mod/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  291. package/mod/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  292. package/mod/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  293. package/mod/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  294. package/mod/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  295. package/mod/node_modules/iconv-lite/encodings/utf16.js +187 -0
  296. package/mod/node_modules/iconv-lite/encodings/utf32.js +307 -0
  297. package/mod/node_modules/iconv-lite/encodings/utf7.js +283 -0
  298. package/mod/node_modules/iconv-lite/lib/bom-handling.js +48 -0
  299. package/mod/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
  300. package/mod/node_modules/iconv-lite/lib/index.d.ts +129 -0
  301. package/mod/node_modules/iconv-lite/lib/index.js +182 -0
  302. package/mod/node_modules/iconv-lite/lib/streams.js +105 -0
  303. package/mod/node_modules/iconv-lite/package.json +70 -0
  304. package/mod/node_modules/iconv-lite/types/encodings.d.ts +423 -0
  305. package/mod/node_modules/inherits/LICENSE +16 -0
  306. package/mod/node_modules/inherits/README.md +42 -0
  307. package/mod/node_modules/inherits/inherits.js +9 -0
  308. package/mod/node_modules/inherits/inherits_browser.js +27 -0
  309. package/mod/node_modules/inherits/package.json +29 -0
  310. package/mod/node_modules/ipaddr.js/LICENSE +19 -0
  311. package/mod/node_modules/ipaddr.js/README.md +233 -0
  312. package/mod/node_modules/ipaddr.js/ipaddr.min.js +1 -0
  313. package/mod/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
  314. package/mod/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
  315. package/mod/node_modules/ipaddr.js/package.json +35 -0
  316. package/mod/node_modules/is-promise/LICENSE +19 -0
  317. package/mod/node_modules/is-promise/index.d.ts +2 -0
  318. package/mod/node_modules/is-promise/index.js +6 -0
  319. package/mod/node_modules/is-promise/index.mjs +3 -0
  320. package/mod/node_modules/is-promise/package.json +30 -0
  321. package/mod/node_modules/is-promise/readme.md +33 -0
  322. package/mod/node_modules/math-intrinsics/.eslintrc +16 -0
  323. package/mod/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  324. package/mod/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  325. package/mod/node_modules/math-intrinsics/LICENSE +21 -0
  326. package/mod/node_modules/math-intrinsics/README.md +50 -0
  327. package/mod/node_modules/math-intrinsics/abs.d.ts +1 -0
  328. package/mod/node_modules/math-intrinsics/abs.js +4 -0
  329. package/mod/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  330. package/mod/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  331. package/mod/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  332. package/mod/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  333. package/mod/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  334. package/mod/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  335. package/mod/node_modules/math-intrinsics/floor.d.ts +1 -0
  336. package/mod/node_modules/math-intrinsics/floor.js +4 -0
  337. package/mod/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  338. package/mod/node_modules/math-intrinsics/isFinite.js +12 -0
  339. package/mod/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  340. package/mod/node_modules/math-intrinsics/isInteger.js +16 -0
  341. package/mod/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  342. package/mod/node_modules/math-intrinsics/isNaN.js +6 -0
  343. package/mod/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  344. package/mod/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  345. package/mod/node_modules/math-intrinsics/max.d.ts +1 -0
  346. package/mod/node_modules/math-intrinsics/max.js +4 -0
  347. package/mod/node_modules/math-intrinsics/min.d.ts +1 -0
  348. package/mod/node_modules/math-intrinsics/min.js +4 -0
  349. package/mod/node_modules/math-intrinsics/mod.d.ts +3 -0
  350. package/mod/node_modules/math-intrinsics/mod.js +9 -0
  351. package/mod/node_modules/math-intrinsics/package.json +86 -0
  352. package/mod/node_modules/math-intrinsics/pow.d.ts +1 -0
  353. package/mod/node_modules/math-intrinsics/pow.js +4 -0
  354. package/mod/node_modules/math-intrinsics/round.d.ts +1 -0
  355. package/mod/node_modules/math-intrinsics/round.js +4 -0
  356. package/mod/node_modules/math-intrinsics/sign.d.ts +3 -0
  357. package/mod/node_modules/math-intrinsics/sign.js +11 -0
  358. package/mod/node_modules/math-intrinsics/test/index.js +192 -0
  359. package/mod/node_modules/math-intrinsics/tsconfig.json +3 -0
  360. package/mod/node_modules/media-typer/HISTORY.md +50 -0
  361. package/mod/node_modules/media-typer/LICENSE +22 -0
  362. package/mod/node_modules/media-typer/README.md +93 -0
  363. package/mod/node_modules/media-typer/index.js +143 -0
  364. package/mod/node_modules/media-typer/package.json +33 -0
  365. package/mod/node_modules/merge-descriptors/index.d.ts +11 -0
  366. package/mod/node_modules/merge-descriptors/index.js +26 -0
  367. package/mod/node_modules/merge-descriptors/license +11 -0
  368. package/mod/node_modules/merge-descriptors/package.json +50 -0
  369. package/mod/node_modules/merge-descriptors/readme.md +55 -0
  370. package/mod/node_modules/mime-db/HISTORY.md +541 -0
  371. package/mod/node_modules/mime-db/LICENSE +23 -0
  372. package/mod/node_modules/mime-db/README.md +109 -0
  373. package/mod/node_modules/mime-db/db.json +9342 -0
  374. package/mod/node_modules/mime-db/index.js +12 -0
  375. package/mod/node_modules/mime-db/package.json +56 -0
  376. package/mod/node_modules/mime-types/HISTORY.md +428 -0
  377. package/mod/node_modules/mime-types/LICENSE +23 -0
  378. package/mod/node_modules/mime-types/README.md +126 -0
  379. package/mod/node_modules/mime-types/index.js +211 -0
  380. package/mod/node_modules/mime-types/mimeScore.js +57 -0
  381. package/mod/node_modules/mime-types/package.json +49 -0
  382. package/mod/node_modules/ms/index.js +162 -0
  383. package/mod/node_modules/ms/license.md +21 -0
  384. package/mod/node_modules/ms/package.json +38 -0
  385. package/mod/node_modules/ms/readme.md +59 -0
  386. package/mod/node_modules/negotiator/HISTORY.md +114 -0
  387. package/mod/node_modules/negotiator/LICENSE +24 -0
  388. package/mod/node_modules/negotiator/README.md +212 -0
  389. package/mod/node_modules/negotiator/index.js +83 -0
  390. package/mod/node_modules/negotiator/lib/charset.js +169 -0
  391. package/mod/node_modules/negotiator/lib/encoding.js +205 -0
  392. package/mod/node_modules/negotiator/lib/language.js +179 -0
  393. package/mod/node_modules/negotiator/lib/mediaType.js +294 -0
  394. package/mod/node_modules/negotiator/package.json +43 -0
  395. package/mod/node_modules/object-assign/index.js +90 -0
  396. package/mod/node_modules/object-assign/license +21 -0
  397. package/mod/node_modules/object-assign/package.json +42 -0
  398. package/mod/node_modules/object-assign/readme.md +61 -0
  399. package/mod/node_modules/object-inspect/.eslintrc +53 -0
  400. package/mod/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  401. package/mod/node_modules/object-inspect/.nycrc +13 -0
  402. package/mod/node_modules/object-inspect/CHANGELOG.md +424 -0
  403. package/mod/node_modules/object-inspect/LICENSE +21 -0
  404. package/mod/node_modules/object-inspect/example/all.js +23 -0
  405. package/mod/node_modules/object-inspect/example/circular.js +6 -0
  406. package/mod/node_modules/object-inspect/example/fn.js +5 -0
  407. package/mod/node_modules/object-inspect/example/inspect.js +10 -0
  408. package/mod/node_modules/object-inspect/index.js +544 -0
  409. package/mod/node_modules/object-inspect/package-support.json +20 -0
  410. package/mod/node_modules/object-inspect/package.json +105 -0
  411. package/mod/node_modules/object-inspect/readme.markdown +84 -0
  412. package/mod/node_modules/object-inspect/test/bigint.js +58 -0
  413. package/mod/node_modules/object-inspect/test/browser/dom.js +15 -0
  414. package/mod/node_modules/object-inspect/test/circular.js +16 -0
  415. package/mod/node_modules/object-inspect/test/deep.js +12 -0
  416. package/mod/node_modules/object-inspect/test/element.js +53 -0
  417. package/mod/node_modules/object-inspect/test/err.js +48 -0
  418. package/mod/node_modules/object-inspect/test/fakes.js +29 -0
  419. package/mod/node_modules/object-inspect/test/fn.js +76 -0
  420. package/mod/node_modules/object-inspect/test/global.js +17 -0
  421. package/mod/node_modules/object-inspect/test/has.js +15 -0
  422. package/mod/node_modules/object-inspect/test/holes.js +15 -0
  423. package/mod/node_modules/object-inspect/test/indent-option.js +271 -0
  424. package/mod/node_modules/object-inspect/test/inspect.js +139 -0
  425. package/mod/node_modules/object-inspect/test/lowbyte.js +12 -0
  426. package/mod/node_modules/object-inspect/test/number.js +58 -0
  427. package/mod/node_modules/object-inspect/test/quoteStyle.js +26 -0
  428. package/mod/node_modules/object-inspect/test/toStringTag.js +40 -0
  429. package/mod/node_modules/object-inspect/test/undef.js +12 -0
  430. package/mod/node_modules/object-inspect/test/values.js +261 -0
  431. package/mod/node_modules/object-inspect/test-core-js.js +26 -0
  432. package/mod/node_modules/object-inspect/util.inspect.js +1 -0
  433. package/mod/node_modules/on-finished/HISTORY.md +98 -0
  434. package/mod/node_modules/on-finished/LICENSE +23 -0
  435. package/mod/node_modules/on-finished/README.md +162 -0
  436. package/mod/node_modules/on-finished/index.js +234 -0
  437. package/mod/node_modules/on-finished/package.json +39 -0
  438. package/mod/node_modules/once/LICENSE +15 -0
  439. package/mod/node_modules/once/README.md +79 -0
  440. package/mod/node_modules/once/once.js +42 -0
  441. package/mod/node_modules/once/package.json +33 -0
  442. package/mod/node_modules/parseurl/HISTORY.md +58 -0
  443. package/mod/node_modules/parseurl/LICENSE +24 -0
  444. package/mod/node_modules/parseurl/README.md +133 -0
  445. package/mod/node_modules/parseurl/index.js +158 -0
  446. package/mod/node_modules/parseurl/package.json +40 -0
  447. package/mod/node_modules/path-to-regexp/LICENSE +21 -0
  448. package/mod/node_modules/path-to-regexp/Readme.md +224 -0
  449. package/mod/node_modules/path-to-regexp/dist/index.d.ts +144 -0
  450. package/mod/node_modules/path-to-regexp/dist/index.js +409 -0
  451. package/mod/node_modules/path-to-regexp/dist/index.js.map +1 -0
  452. package/mod/node_modules/path-to-regexp/package.json +64 -0
  453. package/mod/node_modules/proxy-addr/HISTORY.md +161 -0
  454. package/mod/node_modules/proxy-addr/LICENSE +22 -0
  455. package/mod/node_modules/proxy-addr/README.md +139 -0
  456. package/mod/node_modules/proxy-addr/index.js +327 -0
  457. package/mod/node_modules/proxy-addr/package.json +47 -0
  458. package/mod/node_modules/qs/.editorconfig +46 -0
  459. package/mod/node_modules/qs/.github/FUNDING.yml +12 -0
  460. package/mod/node_modules/qs/.github/SECURITY.md +11 -0
  461. package/mod/node_modules/qs/.github/THREAT_MODEL.md +78 -0
  462. package/mod/node_modules/qs/.nycrc +13 -0
  463. package/mod/node_modules/qs/CHANGELOG.md +631 -0
  464. package/mod/node_modules/qs/LICENSE.md +29 -0
  465. package/mod/node_modules/qs/README.md +733 -0
  466. package/mod/node_modules/qs/dist/qs.js +141 -0
  467. package/mod/node_modules/qs/eslint.config.mjs +56 -0
  468. package/mod/node_modules/qs/lib/formats.js +23 -0
  469. package/mod/node_modules/qs/lib/index.js +11 -0
  470. package/mod/node_modules/qs/lib/parse.js +360 -0
  471. package/mod/node_modules/qs/lib/stringify.js +356 -0
  472. package/mod/node_modules/qs/lib/utils.js +320 -0
  473. package/mod/node_modules/qs/package.json +94 -0
  474. package/mod/node_modules/qs/test/empty-keys-cases.js +267 -0
  475. package/mod/node_modules/qs/test/parse.js +1396 -0
  476. package/mod/node_modules/qs/test/stringify.js +1310 -0
  477. package/mod/node_modules/qs/test/utils.js +381 -0
  478. package/mod/node_modules/range-parser/HISTORY.md +56 -0
  479. package/mod/node_modules/range-parser/LICENSE +23 -0
  480. package/mod/node_modules/range-parser/README.md +84 -0
  481. package/mod/node_modules/range-parser/index.js +162 -0
  482. package/mod/node_modules/range-parser/package.json +44 -0
  483. package/mod/node_modules/raw-body/LICENSE +22 -0
  484. package/mod/node_modules/raw-body/README.md +223 -0
  485. package/mod/node_modules/raw-body/index.d.ts +85 -0
  486. package/mod/node_modules/raw-body/index.js +336 -0
  487. package/mod/node_modules/raw-body/package.json +46 -0
  488. package/mod/node_modules/router/HISTORY.md +228 -0
  489. package/mod/node_modules/router/LICENSE +23 -0
  490. package/mod/node_modules/router/README.md +416 -0
  491. package/mod/node_modules/router/index.js +748 -0
  492. package/mod/node_modules/router/lib/layer.js +247 -0
  493. package/mod/node_modules/router/lib/route.js +242 -0
  494. package/mod/node_modules/router/package.json +44 -0
  495. package/mod/node_modules/safer-buffer/LICENSE +21 -0
  496. package/mod/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  497. package/mod/node_modules/safer-buffer/Readme.md +156 -0
  498. package/mod/node_modules/safer-buffer/dangerous.js +58 -0
  499. package/mod/node_modules/safer-buffer/package.json +34 -0
  500. package/mod/node_modules/safer-buffer/safer.js +77 -0
  501. package/mod/node_modules/safer-buffer/tests.js +406 -0
  502. package/mod/node_modules/send/LICENSE +23 -0
  503. package/mod/node_modules/send/README.md +317 -0
  504. package/mod/node_modules/send/index.js +997 -0
  505. package/mod/node_modules/send/package.json +63 -0
  506. package/mod/node_modules/serve-static/LICENSE +25 -0
  507. package/mod/node_modules/serve-static/README.md +253 -0
  508. package/mod/node_modules/serve-static/index.js +208 -0
  509. package/mod/node_modules/serve-static/package.json +44 -0
  510. package/mod/node_modules/setprototypeof/LICENSE +13 -0
  511. package/mod/node_modules/setprototypeof/README.md +31 -0
  512. package/mod/node_modules/setprototypeof/index.d.ts +2 -0
  513. package/mod/node_modules/setprototypeof/index.js +17 -0
  514. package/mod/node_modules/setprototypeof/package.json +38 -0
  515. package/mod/node_modules/setprototypeof/test/index.js +24 -0
  516. package/mod/node_modules/side-channel/.editorconfig +9 -0
  517. package/mod/node_modules/side-channel/.eslintrc +12 -0
  518. package/mod/node_modules/side-channel/.github/FUNDING.yml +12 -0
  519. package/mod/node_modules/side-channel/.nycrc +13 -0
  520. package/mod/node_modules/side-channel/CHANGELOG.md +110 -0
  521. package/mod/node_modules/side-channel/LICENSE +21 -0
  522. package/mod/node_modules/side-channel/README.md +61 -0
  523. package/mod/node_modules/side-channel/index.d.ts +14 -0
  524. package/mod/node_modules/side-channel/index.js +43 -0
  525. package/mod/node_modules/side-channel/package.json +85 -0
  526. package/mod/node_modules/side-channel/test/index.js +104 -0
  527. package/mod/node_modules/side-channel/tsconfig.json +9 -0
  528. package/mod/node_modules/side-channel-list/.editorconfig +9 -0
  529. package/mod/node_modules/side-channel-list/.eslintrc +11 -0
  530. package/mod/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
  531. package/mod/node_modules/side-channel-list/.nycrc +13 -0
  532. package/mod/node_modules/side-channel-list/CHANGELOG.md +15 -0
  533. package/mod/node_modules/side-channel-list/LICENSE +21 -0
  534. package/mod/node_modules/side-channel-list/README.md +62 -0
  535. package/mod/node_modules/side-channel-list/index.d.ts +13 -0
  536. package/mod/node_modules/side-channel-list/index.js +113 -0
  537. package/mod/node_modules/side-channel-list/list.d.ts +14 -0
  538. package/mod/node_modules/side-channel-list/package.json +77 -0
  539. package/mod/node_modules/side-channel-list/test/index.js +104 -0
  540. package/mod/node_modules/side-channel-list/tsconfig.json +9 -0
  541. package/mod/node_modules/side-channel-map/.editorconfig +9 -0
  542. package/mod/node_modules/side-channel-map/.eslintrc +11 -0
  543. package/mod/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
  544. package/mod/node_modules/side-channel-map/.nycrc +13 -0
  545. package/mod/node_modules/side-channel-map/CHANGELOG.md +22 -0
  546. package/mod/node_modules/side-channel-map/LICENSE +21 -0
  547. package/mod/node_modules/side-channel-map/README.md +62 -0
  548. package/mod/node_modules/side-channel-map/index.d.ts +15 -0
  549. package/mod/node_modules/side-channel-map/index.js +68 -0
  550. package/mod/node_modules/side-channel-map/package.json +80 -0
  551. package/mod/node_modules/side-channel-map/test/index.js +114 -0
  552. package/mod/node_modules/side-channel-map/tsconfig.json +9 -0
  553. package/mod/node_modules/side-channel-weakmap/.editorconfig +9 -0
  554. package/mod/node_modules/side-channel-weakmap/.eslintrc +12 -0
  555. package/mod/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  556. package/mod/node_modules/side-channel-weakmap/.nycrc +13 -0
  557. package/mod/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  558. package/mod/node_modules/side-channel-weakmap/LICENSE +21 -0
  559. package/mod/node_modules/side-channel-weakmap/README.md +62 -0
  560. package/mod/node_modules/side-channel-weakmap/index.d.ts +15 -0
  561. package/mod/node_modules/side-channel-weakmap/index.js +84 -0
  562. package/mod/node_modules/side-channel-weakmap/package.json +87 -0
  563. package/mod/node_modules/side-channel-weakmap/test/index.js +114 -0
  564. package/mod/node_modules/side-channel-weakmap/tsconfig.json +9 -0
  565. package/mod/node_modules/statuses/HISTORY.md +87 -0
  566. package/mod/node_modules/statuses/LICENSE +23 -0
  567. package/mod/node_modules/statuses/README.md +139 -0
  568. package/mod/node_modules/statuses/codes.json +65 -0
  569. package/mod/node_modules/statuses/index.js +146 -0
  570. package/mod/node_modules/statuses/package.json +49 -0
  571. package/mod/node_modules/toidentifier/HISTORY.md +9 -0
  572. package/mod/node_modules/toidentifier/LICENSE +21 -0
  573. package/mod/node_modules/toidentifier/README.md +61 -0
  574. package/mod/node_modules/toidentifier/index.js +32 -0
  575. package/mod/node_modules/toidentifier/package.json +38 -0
  576. package/mod/node_modules/type-is/HISTORY.md +292 -0
  577. package/mod/node_modules/type-is/LICENSE +23 -0
  578. package/mod/node_modules/type-is/README.md +198 -0
  579. package/mod/node_modules/type-is/index.js +250 -0
  580. package/mod/node_modules/type-is/package.json +47 -0
  581. package/mod/node_modules/unpipe/HISTORY.md +4 -0
  582. package/mod/node_modules/unpipe/LICENSE +22 -0
  583. package/mod/node_modules/unpipe/README.md +43 -0
  584. package/mod/node_modules/unpipe/index.js +69 -0
  585. package/mod/node_modules/unpipe/package.json +27 -0
  586. package/mod/node_modules/vary/HISTORY.md +39 -0
  587. package/mod/node_modules/vary/LICENSE +22 -0
  588. package/mod/node_modules/vary/README.md +101 -0
  589. package/mod/node_modules/vary/index.js +149 -0
  590. package/mod/node_modules/vary/package.json +43 -0
  591. package/mod/node_modules/wrappy/LICENSE +15 -0
  592. package/mod/node_modules/wrappy/README.md +36 -0
  593. package/mod/node_modules/wrappy/package.json +29 -0
  594. package/mod/node_modules/wrappy/wrappy.js +33 -0
  595. package/mod/package-lock.json +854 -0
  596. package/mod/package.json +16 -0
  597. package/package.json +19 -0
@@ -0,0 +1,997 @@
1
+ /*!
2
+ * send
3
+ * Copyright(c) 2012 TJ Holowaychuk
4
+ * Copyright(c) 2014-2022 Douglas Christopher Wilson
5
+ * MIT Licensed
6
+ */
7
+
8
+ 'use strict'
9
+
10
+ /**
11
+ * Module dependencies.
12
+ * @private
13
+ */
14
+
15
+ var createError = require('http-errors')
16
+ var debug = require('debug')('send')
17
+ var encodeUrl = require('encodeurl')
18
+ var escapeHtml = require('escape-html')
19
+ var etag = require('etag')
20
+ var fresh = require('fresh')
21
+ var fs = require('fs')
22
+ var mime = require('mime-types')
23
+ var ms = require('ms')
24
+ var onFinished = require('on-finished')
25
+ var parseRange = require('range-parser')
26
+ var path = require('path')
27
+ var statuses = require('statuses')
28
+ var Stream = require('stream')
29
+ var util = require('util')
30
+
31
+ /**
32
+ * Path function references.
33
+ * @private
34
+ */
35
+
36
+ var extname = path.extname
37
+ var join = path.join
38
+ var normalize = path.normalize
39
+ var resolve = path.resolve
40
+ var sep = path.sep
41
+
42
+ /**
43
+ * Regular expression for identifying a bytes Range header.
44
+ * @private
45
+ */
46
+
47
+ var BYTES_RANGE_REGEXP = /^ *bytes=/
48
+
49
+ /**
50
+ * Maximum value allowed for the max age.
51
+ * @private
52
+ */
53
+
54
+ var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year
55
+
56
+ /**
57
+ * Regular expression to match a path with a directory up component.
58
+ * @private
59
+ */
60
+
61
+ var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/
62
+
63
+ /**
64
+ * Module exports.
65
+ * @public
66
+ */
67
+
68
+ module.exports = send
69
+
70
+ /**
71
+ * Return a `SendStream` for `req` and `path`.
72
+ *
73
+ * @param {object} req
74
+ * @param {string} path
75
+ * @param {object} [options]
76
+ * @return {SendStream}
77
+ * @public
78
+ */
79
+
80
+ function send (req, path, options) {
81
+ return new SendStream(req, path, options)
82
+ }
83
+
84
+ /**
85
+ * Initialize a `SendStream` with the given `path`.
86
+ *
87
+ * @param {Request} req
88
+ * @param {String} path
89
+ * @param {object} [options]
90
+ * @private
91
+ */
92
+
93
+ function SendStream (req, path, options) {
94
+ Stream.call(this)
95
+
96
+ var opts = options || {}
97
+
98
+ this.options = opts
99
+ this.path = path
100
+ this.req = req
101
+
102
+ this._acceptRanges = opts.acceptRanges !== undefined
103
+ ? Boolean(opts.acceptRanges)
104
+ : true
105
+
106
+ this._cacheControl = opts.cacheControl !== undefined
107
+ ? Boolean(opts.cacheControl)
108
+ : true
109
+
110
+ this._etag = opts.etag !== undefined
111
+ ? Boolean(opts.etag)
112
+ : true
113
+
114
+ this._dotfiles = opts.dotfiles !== undefined
115
+ ? opts.dotfiles
116
+ : 'ignore'
117
+
118
+ if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') {
119
+ throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"')
120
+ }
121
+
122
+ this._extensions = opts.extensions !== undefined
123
+ ? normalizeList(opts.extensions, 'extensions option')
124
+ : []
125
+
126
+ this._immutable = opts.immutable !== undefined
127
+ ? Boolean(opts.immutable)
128
+ : false
129
+
130
+ this._index = opts.index !== undefined
131
+ ? normalizeList(opts.index, 'index option')
132
+ : ['index.html']
133
+
134
+ this._lastModified = opts.lastModified !== undefined
135
+ ? Boolean(opts.lastModified)
136
+ : true
137
+
138
+ this._maxage = opts.maxAge || opts.maxage
139
+ this._maxage = typeof this._maxage === 'string'
140
+ ? ms(this._maxage)
141
+ : Number(this._maxage)
142
+ this._maxage = !isNaN(this._maxage)
143
+ ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)
144
+ : 0
145
+
146
+ this._root = opts.root
147
+ ? resolve(opts.root)
148
+ : null
149
+ }
150
+
151
+ /**
152
+ * Inherits from `Stream`.
153
+ */
154
+
155
+ util.inherits(SendStream, Stream)
156
+
157
+ /**
158
+ * Emit error with `status`.
159
+ *
160
+ * @param {number} status
161
+ * @param {Error} [err]
162
+ * @private
163
+ */
164
+
165
+ SendStream.prototype.error = function error (status, err) {
166
+ // emit if listeners instead of responding
167
+ if (hasListeners(this, 'error')) {
168
+ return this.emit('error', createHttpError(status, err))
169
+ }
170
+
171
+ var res = this.res
172
+ var msg = statuses.message[status] || String(status)
173
+ var doc = createHtmlDocument('Error', escapeHtml(msg))
174
+
175
+ // clear existing headers
176
+ clearHeaders(res)
177
+
178
+ // add error headers
179
+ if (err && err.headers) {
180
+ setHeaders(res, err.headers)
181
+ }
182
+
183
+ // send basic response
184
+ res.statusCode = status
185
+ res.setHeader('Content-Type', 'text/html; charset=UTF-8')
186
+ res.setHeader('Content-Length', Buffer.byteLength(doc))
187
+ res.setHeader('Content-Security-Policy', "default-src 'none'")
188
+ res.setHeader('X-Content-Type-Options', 'nosniff')
189
+ res.end(doc)
190
+ }
191
+
192
+ /**
193
+ * Check if the pathname ends with "/".
194
+ *
195
+ * @return {boolean}
196
+ * @private
197
+ */
198
+
199
+ SendStream.prototype.hasTrailingSlash = function hasTrailingSlash () {
200
+ return this.path[this.path.length - 1] === '/'
201
+ }
202
+
203
+ /**
204
+ * Check if this is a conditional GET request.
205
+ *
206
+ * @return {Boolean}
207
+ * @api private
208
+ */
209
+
210
+ SendStream.prototype.isConditionalGET = function isConditionalGET () {
211
+ return this.req.headers['if-match'] ||
212
+ this.req.headers['if-unmodified-since'] ||
213
+ this.req.headers['if-none-match'] ||
214
+ this.req.headers['if-modified-since']
215
+ }
216
+
217
+ /**
218
+ * Check if the request preconditions failed.
219
+ *
220
+ * @return {boolean}
221
+ * @private
222
+ */
223
+
224
+ SendStream.prototype.isPreconditionFailure = function isPreconditionFailure () {
225
+ var req = this.req
226
+ var res = this.res
227
+
228
+ // if-match
229
+ var match = req.headers['if-match']
230
+ if (match) {
231
+ var etag = res.getHeader('ETag')
232
+ return !etag || (match !== '*' && parseTokenList(match).every(function (match) {
233
+ return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag
234
+ }))
235
+ }
236
+
237
+ // if-unmodified-since
238
+ var unmodifiedSince = parseHttpDate(req.headers['if-unmodified-since'])
239
+ if (!isNaN(unmodifiedSince)) {
240
+ var lastModified = parseHttpDate(res.getHeader('Last-Modified'))
241
+ return isNaN(lastModified) || lastModified > unmodifiedSince
242
+ }
243
+
244
+ return false
245
+ }
246
+
247
+ /**
248
+ * Strip various content header fields for a change in entity.
249
+ *
250
+ * @private
251
+ */
252
+
253
+ SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () {
254
+ var res = this.res
255
+
256
+ res.removeHeader('Content-Encoding')
257
+ res.removeHeader('Content-Language')
258
+ res.removeHeader('Content-Length')
259
+ res.removeHeader('Content-Range')
260
+ res.removeHeader('Content-Type')
261
+ }
262
+
263
+ /**
264
+ * Respond with 304 not modified.
265
+ *
266
+ * @api private
267
+ */
268
+
269
+ SendStream.prototype.notModified = function notModified () {
270
+ var res = this.res
271
+ debug('not modified')
272
+ this.removeContentHeaderFields()
273
+ res.statusCode = 304
274
+ res.end()
275
+ }
276
+
277
+ /**
278
+ * Raise error that headers already sent.
279
+ *
280
+ * @api private
281
+ */
282
+
283
+ SendStream.prototype.headersAlreadySent = function headersAlreadySent () {
284
+ var err = new Error('Can\'t set headers after they are sent.')
285
+ debug('headers already sent')
286
+ this.error(500, err)
287
+ }
288
+
289
+ /**
290
+ * Check if the request is cacheable, aka
291
+ * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}).
292
+ *
293
+ * @return {Boolean}
294
+ * @api private
295
+ */
296
+
297
+ SendStream.prototype.isCachable = function isCachable () {
298
+ var statusCode = this.res.statusCode
299
+ return (statusCode >= 200 && statusCode < 300) ||
300
+ statusCode === 304
301
+ }
302
+
303
+ /**
304
+ * Handle stat() error.
305
+ *
306
+ * @param {Error} error
307
+ * @private
308
+ */
309
+
310
+ SendStream.prototype.onStatError = function onStatError (error) {
311
+ switch (error.code) {
312
+ case 'ENAMETOOLONG':
313
+ case 'ENOENT':
314
+ case 'ENOTDIR':
315
+ this.error(404, error)
316
+ break
317
+ default:
318
+ this.error(500, error)
319
+ break
320
+ }
321
+ }
322
+
323
+ /**
324
+ * Check if the cache is fresh.
325
+ *
326
+ * @return {Boolean}
327
+ * @api private
328
+ */
329
+
330
+ SendStream.prototype.isFresh = function isFresh () {
331
+ return fresh(this.req.headers, {
332
+ etag: this.res.getHeader('ETag'),
333
+ 'last-modified': this.res.getHeader('Last-Modified')
334
+ })
335
+ }
336
+
337
+ /**
338
+ * Check if the range is fresh.
339
+ *
340
+ * @return {Boolean}
341
+ * @api private
342
+ */
343
+
344
+ SendStream.prototype.isRangeFresh = function isRangeFresh () {
345
+ var ifRange = this.req.headers['if-range']
346
+
347
+ if (!ifRange) {
348
+ return true
349
+ }
350
+
351
+ // if-range as etag
352
+ if (ifRange.indexOf('"') !== -1) {
353
+ var etag = this.res.getHeader('ETag')
354
+ return Boolean(etag && ifRange.indexOf(etag) !== -1)
355
+ }
356
+
357
+ // if-range as modified date
358
+ var lastModified = this.res.getHeader('Last-Modified')
359
+ return parseHttpDate(lastModified) <= parseHttpDate(ifRange)
360
+ }
361
+
362
+ /**
363
+ * Redirect to path.
364
+ *
365
+ * @param {string} path
366
+ * @private
367
+ */
368
+
369
+ SendStream.prototype.redirect = function redirect (path) {
370
+ var res = this.res
371
+
372
+ if (hasListeners(this, 'directory')) {
373
+ this.emit('directory', res, path)
374
+ return
375
+ }
376
+
377
+ if (this.hasTrailingSlash()) {
378
+ this.error(403)
379
+ return
380
+ }
381
+
382
+ var loc = encodeUrl(collapseLeadingSlashes(this.path + '/'))
383
+ var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc))
384
+
385
+ // redirect
386
+ res.statusCode = 301
387
+ res.setHeader('Content-Type', 'text/html; charset=UTF-8')
388
+ res.setHeader('Content-Length', Buffer.byteLength(doc))
389
+ res.setHeader('Content-Security-Policy', "default-src 'none'")
390
+ res.setHeader('X-Content-Type-Options', 'nosniff')
391
+ res.setHeader('Location', loc)
392
+ res.end(doc)
393
+ }
394
+
395
+ /**
396
+ * Pipe to `res.
397
+ *
398
+ * @param {Stream} res
399
+ * @return {Stream} res
400
+ * @api public
401
+ */
402
+
403
+ SendStream.prototype.pipe = function pipe (res) {
404
+ // root path
405
+ var root = this._root
406
+
407
+ // references
408
+ this.res = res
409
+
410
+ // decode the path
411
+ var path = decode(this.path)
412
+ if (path === -1) {
413
+ this.error(400)
414
+ return res
415
+ }
416
+
417
+ // null byte(s)
418
+ if (~path.indexOf('\0')) {
419
+ this.error(400)
420
+ return res
421
+ }
422
+
423
+ var parts
424
+ if (root !== null) {
425
+ // normalize
426
+ if (path) {
427
+ path = normalize('.' + sep + path)
428
+ }
429
+
430
+ // malicious path
431
+ if (UP_PATH_REGEXP.test(path)) {
432
+ debug('malicious path "%s"', path)
433
+ this.error(403)
434
+ return res
435
+ }
436
+
437
+ // explode path parts
438
+ parts = path.split(sep)
439
+
440
+ // join / normalize from optional root dir
441
+ path = normalize(join(root, path))
442
+ } else {
443
+ // ".." is malicious without "root"
444
+ if (UP_PATH_REGEXP.test(path)) {
445
+ debug('malicious path "%s"', path)
446
+ this.error(403)
447
+ return res
448
+ }
449
+
450
+ // explode path parts
451
+ parts = normalize(path).split(sep)
452
+
453
+ // resolve the path
454
+ path = resolve(path)
455
+ }
456
+
457
+ // dotfile handling
458
+ if (containsDotFile(parts)) {
459
+ debug('%s dotfile "%s"', this._dotfiles, path)
460
+ switch (this._dotfiles) {
461
+ case 'allow':
462
+ break
463
+ case 'deny':
464
+ this.error(403)
465
+ return res
466
+ case 'ignore':
467
+ default:
468
+ this.error(404)
469
+ return res
470
+ }
471
+ }
472
+
473
+ // index file support
474
+ if (this._index.length && this.hasTrailingSlash()) {
475
+ this.sendIndex(path)
476
+ return res
477
+ }
478
+
479
+ this.sendFile(path)
480
+ return res
481
+ }
482
+
483
+ /**
484
+ * Transfer `path`.
485
+ *
486
+ * @param {String} path
487
+ * @api public
488
+ */
489
+
490
+ SendStream.prototype.send = function send (path, stat) {
491
+ var len = stat.size
492
+ var options = this.options
493
+ var opts = {}
494
+ var res = this.res
495
+ var req = this.req
496
+ var ranges = req.headers.range
497
+ var offset = options.start || 0
498
+
499
+ if (res.headersSent) {
500
+ // impossible to send now
501
+ this.headersAlreadySent()
502
+ return
503
+ }
504
+
505
+ debug('pipe "%s"', path)
506
+
507
+ // set header fields
508
+ this.setHeader(path, stat)
509
+
510
+ // set content-type
511
+ this.type(path)
512
+
513
+ // conditional GET support
514
+ if (this.isConditionalGET()) {
515
+ if (this.isPreconditionFailure()) {
516
+ this.error(412)
517
+ return
518
+ }
519
+
520
+ if (this.isCachable() && this.isFresh()) {
521
+ this.notModified()
522
+ return
523
+ }
524
+ }
525
+
526
+ // adjust len to start/end options
527
+ len = Math.max(0, len - offset)
528
+ if (options.end !== undefined) {
529
+ var bytes = options.end - offset + 1
530
+ if (len > bytes) len = bytes
531
+ }
532
+
533
+ // Range support
534
+ if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) {
535
+ // parse
536
+ ranges = parseRange(len, ranges, {
537
+ combine: true
538
+ })
539
+
540
+ // If-Range support
541
+ if (!this.isRangeFresh()) {
542
+ debug('range stale')
543
+ ranges = -2
544
+ }
545
+
546
+ // unsatisfiable
547
+ if (ranges === -1) {
548
+ debug('range unsatisfiable')
549
+
550
+ // Content-Range
551
+ res.setHeader('Content-Range', contentRange('bytes', len))
552
+
553
+ // 416 Requested Range Not Satisfiable
554
+ return this.error(416, {
555
+ headers: { 'Content-Range': res.getHeader('Content-Range') }
556
+ })
557
+ }
558
+
559
+ // valid (syntactically invalid/multiple ranges are treated as a regular response)
560
+ if (ranges !== -2 && ranges.length === 1) {
561
+ debug('range %j', ranges)
562
+
563
+ // Content-Range
564
+ res.statusCode = 206
565
+ res.setHeader('Content-Range', contentRange('bytes', len, ranges[0]))
566
+
567
+ // adjust for requested range
568
+ offset += ranges[0].start
569
+ len = ranges[0].end - ranges[0].start + 1
570
+ }
571
+ }
572
+
573
+ // clone options
574
+ for (var prop in options) {
575
+ opts[prop] = options[prop]
576
+ }
577
+
578
+ // set read options
579
+ opts.start = offset
580
+ opts.end = Math.max(offset, offset + len - 1)
581
+
582
+ // content-length
583
+ res.setHeader('Content-Length', len)
584
+
585
+ // HEAD support
586
+ if (req.method === 'HEAD') {
587
+ res.end()
588
+ return
589
+ }
590
+
591
+ this.stream(path, opts)
592
+ }
593
+
594
+ /**
595
+ * Transfer file for `path`.
596
+ *
597
+ * @param {String} path
598
+ * @api private
599
+ */
600
+ SendStream.prototype.sendFile = function sendFile (path) {
601
+ var i = 0
602
+ var self = this
603
+
604
+ debug('stat "%s"', path)
605
+ fs.stat(path, function onstat (err, stat) {
606
+ var pathEndsWithSep = path[path.length - 1] === sep
607
+ if (err && err.code === 'ENOENT' && !extname(path) && !pathEndsWithSep) {
608
+ // not found, check extensions
609
+ return next(err)
610
+ }
611
+ if (err) return self.onStatError(err)
612
+ if (stat.isDirectory()) return self.redirect(path)
613
+ if (pathEndsWithSep) return self.error(404)
614
+ self.emit('file', path, stat)
615
+ self.send(path, stat)
616
+ })
617
+
618
+ function next (err) {
619
+ if (self._extensions.length <= i) {
620
+ return err
621
+ ? self.onStatError(err)
622
+ : self.error(404)
623
+ }
624
+
625
+ var p = path + '.' + self._extensions[i++]
626
+
627
+ debug('stat "%s"', p)
628
+ fs.stat(p, function (err, stat) {
629
+ if (err) return next(err)
630
+ if (stat.isDirectory()) return next()
631
+ self.emit('file', p, stat)
632
+ self.send(p, stat)
633
+ })
634
+ }
635
+ }
636
+
637
+ /**
638
+ * Transfer index for `path`.
639
+ *
640
+ * @param {String} path
641
+ * @api private
642
+ */
643
+ SendStream.prototype.sendIndex = function sendIndex (path) {
644
+ var i = -1
645
+ var self = this
646
+
647
+ function next (err) {
648
+ if (++i >= self._index.length) {
649
+ if (err) return self.onStatError(err)
650
+ return self.error(404)
651
+ }
652
+
653
+ var p = join(path, self._index[i])
654
+
655
+ debug('stat "%s"', p)
656
+ fs.stat(p, function (err, stat) {
657
+ if (err) return next(err)
658
+ if (stat.isDirectory()) return next()
659
+ self.emit('file', p, stat)
660
+ self.send(p, stat)
661
+ })
662
+ }
663
+
664
+ next()
665
+ }
666
+
667
+ /**
668
+ * Stream `path` to the response.
669
+ *
670
+ * @param {String} path
671
+ * @param {Object} options
672
+ * @api private
673
+ */
674
+
675
+ SendStream.prototype.stream = function stream (path, options) {
676
+ var self = this
677
+ var res = this.res
678
+
679
+ // pipe
680
+ var stream = fs.createReadStream(path, options)
681
+ this.emit('stream', stream)
682
+ stream.pipe(res)
683
+
684
+ // cleanup
685
+ function cleanup () {
686
+ stream.destroy()
687
+ }
688
+
689
+ // response finished, cleanup
690
+ onFinished(res, cleanup)
691
+
692
+ // error handling
693
+ stream.on('error', function onerror (err) {
694
+ // clean up stream early
695
+ cleanup()
696
+
697
+ // error
698
+ self.onStatError(err)
699
+ })
700
+
701
+ // end
702
+ stream.on('end', function onend () {
703
+ self.emit('end')
704
+ })
705
+ }
706
+
707
+ /**
708
+ * Set content-type based on `path`
709
+ * if it hasn't been explicitly set.
710
+ *
711
+ * @param {String} path
712
+ * @api private
713
+ */
714
+
715
+ SendStream.prototype.type = function type (path) {
716
+ var res = this.res
717
+
718
+ if (res.getHeader('Content-Type')) return
719
+
720
+ var ext = extname(path)
721
+ var type = mime.contentType(ext) || 'application/octet-stream'
722
+
723
+ debug('content-type %s', type)
724
+ res.setHeader('Content-Type', type)
725
+ }
726
+
727
+ /**
728
+ * Set response header fields, most
729
+ * fields may be pre-defined.
730
+ *
731
+ * @param {String} path
732
+ * @param {Object} stat
733
+ * @api private
734
+ */
735
+
736
+ SendStream.prototype.setHeader = function setHeader (path, stat) {
737
+ var res = this.res
738
+
739
+ this.emit('headers', res, path, stat)
740
+
741
+ if (this._acceptRanges && !res.getHeader('Accept-Ranges')) {
742
+ debug('accept ranges')
743
+ res.setHeader('Accept-Ranges', 'bytes')
744
+ }
745
+
746
+ if (this._cacheControl && !res.getHeader('Cache-Control')) {
747
+ var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000)
748
+
749
+ if (this._immutable) {
750
+ cacheControl += ', immutable'
751
+ }
752
+
753
+ debug('cache-control %s', cacheControl)
754
+ res.setHeader('Cache-Control', cacheControl)
755
+ }
756
+
757
+ if (this._lastModified && !res.getHeader('Last-Modified')) {
758
+ var modified = stat.mtime.toUTCString()
759
+ debug('modified %s', modified)
760
+ res.setHeader('Last-Modified', modified)
761
+ }
762
+
763
+ if (this._etag && !res.getHeader('ETag')) {
764
+ var val = etag(stat)
765
+ debug('etag %s', val)
766
+ res.setHeader('ETag', val)
767
+ }
768
+ }
769
+
770
+ /**
771
+ * Clear all headers from a response.
772
+ *
773
+ * @param {object} res
774
+ * @private
775
+ */
776
+
777
+ function clearHeaders (res) {
778
+ for (const header of res.getHeaderNames()) {
779
+ res.removeHeader(header)
780
+ }
781
+ }
782
+
783
+ /**
784
+ * Collapse all leading slashes into a single slash
785
+ *
786
+ * @param {string} str
787
+ * @private
788
+ */
789
+ function collapseLeadingSlashes (str) {
790
+ for (var i = 0; i < str.length; i++) {
791
+ if (str[i] !== '/') {
792
+ break
793
+ }
794
+ }
795
+
796
+ return i > 1
797
+ ? '/' + str.substr(i)
798
+ : str
799
+ }
800
+
801
+ /**
802
+ * Determine if path parts contain a dotfile.
803
+ *
804
+ * @api private
805
+ */
806
+
807
+ function containsDotFile (parts) {
808
+ for (var i = 0; i < parts.length; i++) {
809
+ var part = parts[i]
810
+ if (part.length > 1 && part[0] === '.') {
811
+ return true
812
+ }
813
+ }
814
+
815
+ return false
816
+ }
817
+
818
+ /**
819
+ * Create a Content-Range header.
820
+ *
821
+ * @param {string} type
822
+ * @param {number} size
823
+ * @param {array} [range]
824
+ */
825
+
826
+ function contentRange (type, size, range) {
827
+ return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size
828
+ }
829
+
830
+ /**
831
+ * Create a minimal HTML document.
832
+ *
833
+ * @param {string} title
834
+ * @param {string} body
835
+ * @private
836
+ */
837
+
838
+ function createHtmlDocument (title, body) {
839
+ return '<!DOCTYPE html>\n' +
840
+ '<html lang="en">\n' +
841
+ '<head>\n' +
842
+ '<meta charset="utf-8">\n' +
843
+ '<title>' + title + '</title>\n' +
844
+ '</head>\n' +
845
+ '<body>\n' +
846
+ '<pre>' + body + '</pre>\n' +
847
+ '</body>\n' +
848
+ '</html>\n'
849
+ }
850
+
851
+ /**
852
+ * Create a HttpError object from simple arguments.
853
+ *
854
+ * @param {number} status
855
+ * @param {Error|object} err
856
+ * @private
857
+ */
858
+
859
+ function createHttpError (status, err) {
860
+ if (!err) {
861
+ return createError(status)
862
+ }
863
+
864
+ return err instanceof Error
865
+ ? createError(status, err, { expose: false })
866
+ : createError(status, err)
867
+ }
868
+
869
+ /**
870
+ * decodeURIComponent.
871
+ *
872
+ * Allows V8 to only deoptimize this fn instead of all
873
+ * of send().
874
+ *
875
+ * @param {String} path
876
+ * @api private
877
+ */
878
+
879
+ function decode (path) {
880
+ try {
881
+ return decodeURIComponent(path)
882
+ } catch (err) {
883
+ return -1
884
+ }
885
+ }
886
+
887
+ /**
888
+ * Determine if emitter has listeners of a given type.
889
+ *
890
+ * The way to do this check is done three different ways in Node.js >= 0.10
891
+ * so this consolidates them into a minimal set using instance methods.
892
+ *
893
+ * @param {EventEmitter} emitter
894
+ * @param {string} type
895
+ * @returns {boolean}
896
+ * @private
897
+ */
898
+
899
+ function hasListeners (emitter, type) {
900
+ var count = typeof emitter.listenerCount !== 'function'
901
+ ? emitter.listeners(type).length
902
+ : emitter.listenerCount(type)
903
+
904
+ return count > 0
905
+ }
906
+
907
+ /**
908
+ * Normalize the index option into an array.
909
+ *
910
+ * @param {boolean|string|array} val
911
+ * @param {string} name
912
+ * @private
913
+ */
914
+
915
+ function normalizeList (val, name) {
916
+ var list = [].concat(val || [])
917
+
918
+ for (var i = 0; i < list.length; i++) {
919
+ if (typeof list[i] !== 'string') {
920
+ throw new TypeError(name + ' must be array of strings or false')
921
+ }
922
+ }
923
+
924
+ return list
925
+ }
926
+
927
+ /**
928
+ * Parse an HTTP Date into a number.
929
+ *
930
+ * @param {string} date
931
+ * @private
932
+ */
933
+
934
+ function parseHttpDate (date) {
935
+ var timestamp = date && Date.parse(date)
936
+
937
+ return typeof timestamp === 'number'
938
+ ? timestamp
939
+ : NaN
940
+ }
941
+
942
+ /**
943
+ * Parse a HTTP token list.
944
+ *
945
+ * @param {string} str
946
+ * @private
947
+ */
948
+
949
+ function parseTokenList (str) {
950
+ var end = 0
951
+ var list = []
952
+ var start = 0
953
+
954
+ // gather tokens
955
+ for (var i = 0, len = str.length; i < len; i++) {
956
+ switch (str.charCodeAt(i)) {
957
+ case 0x20: /* */
958
+ if (start === end) {
959
+ start = end = i + 1
960
+ }
961
+ break
962
+ case 0x2c: /* , */
963
+ if (start !== end) {
964
+ list.push(str.substring(start, end))
965
+ }
966
+ start = end = i + 1
967
+ break
968
+ default:
969
+ end = i + 1
970
+ break
971
+ }
972
+ }
973
+
974
+ // final token
975
+ if (start !== end) {
976
+ list.push(str.substring(start, end))
977
+ }
978
+
979
+ return list
980
+ }
981
+
982
+ /**
983
+ * Set an object of headers on a response.
984
+ *
985
+ * @param {object} res
986
+ * @param {object} headers
987
+ * @private
988
+ */
989
+
990
+ function setHeaders (res, headers) {
991
+ var keys = Object.keys(headers)
992
+
993
+ for (var i = 0; i < keys.length; i++) {
994
+ var key = keys[i]
995
+ res.setHeader(key, headers[key])
996
+ }
997
+ }