coupeeeez 0.0.1

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 (881) hide show
  1. package/LICENSE.MD +7 -0
  2. package/command +18 -0
  3. package/makeApp.ts +17 -0
  4. package/package.json +41 -0
  5. package/stream-api/Message.ts +6 -0
  6. package/stream-api/SSEInjected.ts +3 -0
  7. package/stream-api/SSEServer.ts +37 -0
  8. package/stream-api/SSEServers.ts +36 -0
  9. package/stream-api/StreamApi.ts +39 -0
  10. package/stream-api/app.ts +14 -0
  11. package/stream-api/index.ts +1 -0
  12. package/stream-api/node_modules/.package-lock.json +971 -0
  13. package/stream-api/node_modules/@types/body-parser/LICENSE +21 -0
  14. package/stream-api/node_modules/@types/body-parser/README.md +15 -0
  15. package/stream-api/node_modules/@types/body-parser/index.d.ts +95 -0
  16. package/stream-api/node_modules/@types/body-parser/package.json +64 -0
  17. package/stream-api/node_modules/@types/connect/LICENSE +21 -0
  18. package/stream-api/node_modules/@types/connect/README.md +15 -0
  19. package/stream-api/node_modules/@types/connect/index.d.ts +91 -0
  20. package/stream-api/node_modules/@types/connect/package.json +32 -0
  21. package/stream-api/node_modules/@types/express/LICENSE +21 -0
  22. package/stream-api/node_modules/@types/express/README.md +15 -0
  23. package/stream-api/node_modules/@types/express/index.d.ts +122 -0
  24. package/stream-api/node_modules/@types/express/package.json +45 -0
  25. package/stream-api/node_modules/@types/express-serve-static-core/LICENSE +21 -0
  26. package/stream-api/node_modules/@types/express-serve-static-core/README.md +15 -0
  27. package/stream-api/node_modules/@types/express-serve-static-core/index.d.ts +1244 -0
  28. package/stream-api/node_modules/@types/express-serve-static-core/package.json +51 -0
  29. package/stream-api/node_modules/@types/http-errors/LICENSE +21 -0
  30. package/stream-api/node_modules/@types/http-errors/README.md +15 -0
  31. package/stream-api/node_modules/@types/http-errors/index.d.ts +77 -0
  32. package/stream-api/node_modules/@types/http-errors/package.json +36 -0
  33. package/stream-api/node_modules/@types/mime/LICENSE +21 -0
  34. package/stream-api/node_modules/@types/mime/Mime.d.ts +10 -0
  35. package/stream-api/node_modules/@types/mime/README.md +15 -0
  36. package/stream-api/node_modules/@types/mime/index.d.ts +31 -0
  37. package/stream-api/node_modules/@types/mime/lite.d.ts +7 -0
  38. package/stream-api/node_modules/@types/mime/package.json +30 -0
  39. package/stream-api/node_modules/@types/node/LICENSE +21 -0
  40. package/stream-api/node_modules/@types/node/README.md +15 -0
  41. package/stream-api/node_modules/@types/node/assert/strict.d.ts +111 -0
  42. package/stream-api/node_modules/@types/node/assert.d.ts +1115 -0
  43. package/stream-api/node_modules/@types/node/async_hooks.d.ts +623 -0
  44. package/stream-api/node_modules/@types/node/buffer.buffer.d.ts +472 -0
  45. package/stream-api/node_modules/@types/node/buffer.d.ts +1934 -0
  46. package/stream-api/node_modules/@types/node/child_process.d.ts +1476 -0
  47. package/stream-api/node_modules/@types/node/cluster.d.ts +578 -0
  48. package/stream-api/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  49. package/stream-api/node_modules/@types/node/console.d.ts +453 -0
  50. package/stream-api/node_modules/@types/node/constants.d.ts +21 -0
  51. package/stream-api/node_modules/@types/node/crypto.d.ts +5417 -0
  52. package/stream-api/node_modules/@types/node/dgram.d.ts +600 -0
  53. package/stream-api/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  54. package/stream-api/node_modules/@types/node/dns/promises.d.ts +503 -0
  55. package/stream-api/node_modules/@types/node/dns.d.ts +923 -0
  56. package/stream-api/node_modules/@types/node/domain.d.ts +170 -0
  57. package/stream-api/node_modules/@types/node/events.d.ts +976 -0
  58. package/stream-api/node_modules/@types/node/fs/promises.d.ts +1317 -0
  59. package/stream-api/node_modules/@types/node/fs.d.ts +4714 -0
  60. package/stream-api/node_modules/@types/node/globals.d.ts +170 -0
  61. package/stream-api/node_modules/@types/node/globals.typedarray.d.ts +41 -0
  62. package/stream-api/node_modules/@types/node/http.d.ts +2134 -0
  63. package/stream-api/node_modules/@types/node/http2.d.ts +2756 -0
  64. package/stream-api/node_modules/@types/node/https.d.ts +579 -0
  65. package/stream-api/node_modules/@types/node/index.d.ts +101 -0
  66. package/stream-api/node_modules/@types/node/inspector.d.ts +277 -0
  67. package/stream-api/node_modules/@types/node/inspector.generated.d.ts +4233 -0
  68. package/stream-api/node_modules/@types/node/module.d.ts +894 -0
  69. package/stream-api/node_modules/@types/node/net.d.ts +1054 -0
  70. package/stream-api/node_modules/@types/node/os.d.ts +507 -0
  71. package/stream-api/node_modules/@types/node/package.json +155 -0
  72. package/stream-api/node_modules/@types/node/path.d.ts +200 -0
  73. package/stream-api/node_modules/@types/node/perf_hooks.d.ts +982 -0
  74. package/stream-api/node_modules/@types/node/process.d.ts +2069 -0
  75. package/stream-api/node_modules/@types/node/punycode.d.ts +117 -0
  76. package/stream-api/node_modules/@types/node/querystring.d.ts +152 -0
  77. package/stream-api/node_modules/@types/node/readline/promises.d.ts +161 -0
  78. package/stream-api/node_modules/@types/node/readline.d.ts +594 -0
  79. package/stream-api/node_modules/@types/node/repl.d.ts +438 -0
  80. package/stream-api/node_modules/@types/node/sea.d.ts +162 -0
  81. package/stream-api/node_modules/@types/node/sqlite.d.ts +937 -0
  82. package/stream-api/node_modules/@types/node/stream/consumers.d.ts +38 -0
  83. package/stream-api/node_modules/@types/node/stream/promises.d.ts +90 -0
  84. package/stream-api/node_modules/@types/node/stream/web.d.ts +573 -0
  85. package/stream-api/node_modules/@types/node/stream.d.ts +1683 -0
  86. package/stream-api/node_modules/@types/node/string_decoder.d.ts +67 -0
  87. package/stream-api/node_modules/@types/node/test.d.ts +2339 -0
  88. package/stream-api/node_modules/@types/node/timers/promises.d.ts +108 -0
  89. package/stream-api/node_modules/@types/node/timers.d.ts +285 -0
  90. package/stream-api/node_modules/@types/node/tls.d.ts +1269 -0
  91. package/stream-api/node_modules/@types/node/trace_events.d.ts +197 -0
  92. package/stream-api/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  93. package/stream-api/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  94. package/stream-api/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  95. package/stream-api/node_modules/@types/node/ts5.6/index.d.ts +103 -0
  96. package/stream-api/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  97. package/stream-api/node_modules/@types/node/ts5.7/index.d.ts +103 -0
  98. package/stream-api/node_modules/@types/node/tty.d.ts +208 -0
  99. package/stream-api/node_modules/@types/node/url.d.ts +1057 -0
  100. package/stream-api/node_modules/@types/node/util.d.ts +2325 -0
  101. package/stream-api/node_modules/@types/node/v8.d.ts +952 -0
  102. package/stream-api/node_modules/@types/node/vm.d.ts +1180 -0
  103. package/stream-api/node_modules/@types/node/wasi.d.ts +202 -0
  104. package/stream-api/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  105. package/stream-api/node_modules/@types/node/web-globals/crypto.d.ts +32 -0
  106. package/stream-api/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  107. package/stream-api/node_modules/@types/node/web-globals/events.d.ts +97 -0
  108. package/stream-api/node_modules/@types/node/web-globals/fetch.d.ts +50 -0
  109. package/stream-api/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  110. package/stream-api/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  111. package/stream-api/node_modules/@types/node/web-globals/streams.d.ts +22 -0
  112. package/stream-api/node_modules/@types/node/worker_threads.d.ts +896 -0
  113. package/stream-api/node_modules/@types/node/zlib.d.ts +681 -0
  114. package/stream-api/node_modules/@types/qs/LICENSE +21 -0
  115. package/stream-api/node_modules/@types/qs/README.md +15 -0
  116. package/stream-api/node_modules/@types/qs/index.d.ts +82 -0
  117. package/stream-api/node_modules/@types/qs/package.json +66 -0
  118. package/stream-api/node_modules/@types/range-parser/LICENSE +21 -0
  119. package/stream-api/node_modules/@types/range-parser/README.md +53 -0
  120. package/stream-api/node_modules/@types/range-parser/index.d.ts +34 -0
  121. package/stream-api/node_modules/@types/range-parser/package.json +25 -0
  122. package/stream-api/node_modules/@types/send/LICENSE +21 -0
  123. package/stream-api/node_modules/@types/send/README.md +15 -0
  124. package/stream-api/node_modules/@types/send/index.d.ts +187 -0
  125. package/stream-api/node_modules/@types/send/package.json +38 -0
  126. package/stream-api/node_modules/@types/serve-static/LICENSE +21 -0
  127. package/stream-api/node_modules/@types/serve-static/README.md +15 -0
  128. package/stream-api/node_modules/@types/serve-static/index.d.ts +107 -0
  129. package/stream-api/node_modules/@types/serve-static/node_modules/@types/send/LICENSE +21 -0
  130. package/stream-api/node_modules/@types/serve-static/node_modules/@types/send/README.md +15 -0
  131. package/stream-api/node_modules/@types/serve-static/node_modules/@types/send/index.d.ts +225 -0
  132. package/stream-api/node_modules/@types/serve-static/node_modules/@types/send/package.json +39 -0
  133. package/stream-api/node_modules/@types/serve-static/package.json +45 -0
  134. package/stream-api/node_modules/accepts/HISTORY.md +250 -0
  135. package/stream-api/node_modules/accepts/LICENSE +23 -0
  136. package/stream-api/node_modules/accepts/README.md +140 -0
  137. package/stream-api/node_modules/accepts/index.js +238 -0
  138. package/stream-api/node_modules/accepts/package.json +47 -0
  139. package/stream-api/node_modules/any-base/LICENSE +21 -0
  140. package/stream-api/node_modules/any-base/README.md +55 -0
  141. package/stream-api/node_modules/any-base/dist/any-base.js +94 -0
  142. package/stream-api/node_modules/any-base/dist/any-base.min.js +1 -0
  143. package/stream-api/node_modules/any-base/index.js +30 -0
  144. package/stream-api/node_modules/any-base/package.json +40 -0
  145. package/stream-api/node_modules/any-base/src/converter.js +80 -0
  146. package/stream-api/node_modules/body-parser/LICENSE +23 -0
  147. package/stream-api/node_modules/body-parser/README.md +494 -0
  148. package/stream-api/node_modules/body-parser/index.js +80 -0
  149. package/stream-api/node_modules/body-parser/lib/read.js +250 -0
  150. package/stream-api/node_modules/body-parser/lib/types/json.js +166 -0
  151. package/stream-api/node_modules/body-parser/lib/types/raw.js +43 -0
  152. package/stream-api/node_modules/body-parser/lib/types/text.js +37 -0
  153. package/stream-api/node_modules/body-parser/lib/types/urlencoded.js +142 -0
  154. package/stream-api/node_modules/body-parser/lib/utils.js +96 -0
  155. package/stream-api/node_modules/body-parser/package.json +52 -0
  156. package/stream-api/node_modules/bytes/History.md +97 -0
  157. package/stream-api/node_modules/bytes/LICENSE +23 -0
  158. package/stream-api/node_modules/bytes/Readme.md +152 -0
  159. package/stream-api/node_modules/bytes/index.js +170 -0
  160. package/stream-api/node_modules/bytes/package.json +42 -0
  161. package/stream-api/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  162. package/stream-api/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  163. package/stream-api/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  164. package/stream-api/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  165. package/stream-api/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  166. package/stream-api/node_modules/call-bind-apply-helpers/README.md +62 -0
  167. package/stream-api/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  168. package/stream-api/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  169. package/stream-api/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  170. package/stream-api/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  171. package/stream-api/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  172. package/stream-api/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  173. package/stream-api/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  174. package/stream-api/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  175. package/stream-api/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  176. package/stream-api/node_modules/call-bind-apply-helpers/index.js +15 -0
  177. package/stream-api/node_modules/call-bind-apply-helpers/package.json +85 -0
  178. package/stream-api/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  179. package/stream-api/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  180. package/stream-api/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  181. package/stream-api/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  182. package/stream-api/node_modules/call-bound/.eslintrc +13 -0
  183. package/stream-api/node_modules/call-bound/.github/FUNDING.yml +12 -0
  184. package/stream-api/node_modules/call-bound/.nycrc +9 -0
  185. package/stream-api/node_modules/call-bound/CHANGELOG.md +42 -0
  186. package/stream-api/node_modules/call-bound/LICENSE +21 -0
  187. package/stream-api/node_modules/call-bound/README.md +53 -0
  188. package/stream-api/node_modules/call-bound/index.d.ts +94 -0
  189. package/stream-api/node_modules/call-bound/index.js +19 -0
  190. package/stream-api/node_modules/call-bound/package.json +99 -0
  191. package/stream-api/node_modules/call-bound/test/index.js +61 -0
  192. package/stream-api/node_modules/call-bound/tsconfig.json +10 -0
  193. package/stream-api/node_modules/commander/LICENSE +22 -0
  194. package/stream-api/node_modules/commander/Readme.md +1159 -0
  195. package/stream-api/node_modules/commander/esm.mjs +16 -0
  196. package/stream-api/node_modules/commander/index.js +24 -0
  197. package/stream-api/node_modules/commander/lib/argument.js +150 -0
  198. package/stream-api/node_modules/commander/lib/command.js +2777 -0
  199. package/stream-api/node_modules/commander/lib/error.js +39 -0
  200. package/stream-api/node_modules/commander/lib/help.js +747 -0
  201. package/stream-api/node_modules/commander/lib/option.js +380 -0
  202. package/stream-api/node_modules/commander/lib/suggestSimilar.js +101 -0
  203. package/stream-api/node_modules/commander/package-support.json +16 -0
  204. package/stream-api/node_modules/commander/package.json +82 -0
  205. package/stream-api/node_modules/commander/typings/esm.d.mts +3 -0
  206. package/stream-api/node_modules/commander/typings/index.d.ts +1113 -0
  207. package/stream-api/node_modules/content-disposition/HISTORY.md +72 -0
  208. package/stream-api/node_modules/content-disposition/LICENSE +22 -0
  209. package/stream-api/node_modules/content-disposition/README.md +142 -0
  210. package/stream-api/node_modules/content-disposition/index.js +458 -0
  211. package/stream-api/node_modules/content-disposition/package.json +43 -0
  212. package/stream-api/node_modules/content-type/HISTORY.md +29 -0
  213. package/stream-api/node_modules/content-type/LICENSE +22 -0
  214. package/stream-api/node_modules/content-type/README.md +94 -0
  215. package/stream-api/node_modules/content-type/index.js +225 -0
  216. package/stream-api/node_modules/content-type/package.json +42 -0
  217. package/stream-api/node_modules/cookie/LICENSE +24 -0
  218. package/stream-api/node_modules/cookie/README.md +317 -0
  219. package/stream-api/node_modules/cookie/SECURITY.md +25 -0
  220. package/stream-api/node_modules/cookie/index.js +335 -0
  221. package/stream-api/node_modules/cookie/package.json +44 -0
  222. package/stream-api/node_modules/cookie-signature/History.md +70 -0
  223. package/stream-api/node_modules/cookie-signature/LICENSE +22 -0
  224. package/stream-api/node_modules/cookie-signature/Readme.md +23 -0
  225. package/stream-api/node_modules/cookie-signature/index.js +47 -0
  226. package/stream-api/node_modules/cookie-signature/package.json +24 -0
  227. package/stream-api/node_modules/debug/LICENSE +20 -0
  228. package/stream-api/node_modules/debug/README.md +481 -0
  229. package/stream-api/node_modules/debug/package.json +64 -0
  230. package/stream-api/node_modules/debug/src/browser.js +272 -0
  231. package/stream-api/node_modules/debug/src/common.js +292 -0
  232. package/stream-api/node_modules/debug/src/index.js +10 -0
  233. package/stream-api/node_modules/debug/src/node.js +263 -0
  234. package/stream-api/node_modules/depd/History.md +103 -0
  235. package/stream-api/node_modules/depd/LICENSE +22 -0
  236. package/stream-api/node_modules/depd/Readme.md +280 -0
  237. package/stream-api/node_modules/depd/index.js +538 -0
  238. package/stream-api/node_modules/depd/lib/browser/index.js +77 -0
  239. package/stream-api/node_modules/depd/package.json +45 -0
  240. package/stream-api/node_modules/dunder-proto/.eslintrc +5 -0
  241. package/stream-api/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  242. package/stream-api/node_modules/dunder-proto/.nycrc +13 -0
  243. package/stream-api/node_modules/dunder-proto/CHANGELOG.md +24 -0
  244. package/stream-api/node_modules/dunder-proto/LICENSE +21 -0
  245. package/stream-api/node_modules/dunder-proto/README.md +54 -0
  246. package/stream-api/node_modules/dunder-proto/get.d.ts +5 -0
  247. package/stream-api/node_modules/dunder-proto/get.js +30 -0
  248. package/stream-api/node_modules/dunder-proto/package.json +76 -0
  249. package/stream-api/node_modules/dunder-proto/set.d.ts +5 -0
  250. package/stream-api/node_modules/dunder-proto/set.js +35 -0
  251. package/stream-api/node_modules/dunder-proto/test/get.js +34 -0
  252. package/stream-api/node_modules/dunder-proto/test/index.js +4 -0
  253. package/stream-api/node_modules/dunder-proto/test/set.js +50 -0
  254. package/stream-api/node_modules/dunder-proto/tsconfig.json +9 -0
  255. package/stream-api/node_modules/ee-first/LICENSE +22 -0
  256. package/stream-api/node_modules/ee-first/README.md +80 -0
  257. package/stream-api/node_modules/ee-first/index.js +95 -0
  258. package/stream-api/node_modules/ee-first/package.json +29 -0
  259. package/stream-api/node_modules/encodeurl/LICENSE +22 -0
  260. package/stream-api/node_modules/encodeurl/README.md +109 -0
  261. package/stream-api/node_modules/encodeurl/index.js +60 -0
  262. package/stream-api/node_modules/encodeurl/package.json +40 -0
  263. package/stream-api/node_modules/es-define-property/.eslintrc +13 -0
  264. package/stream-api/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  265. package/stream-api/node_modules/es-define-property/.nycrc +9 -0
  266. package/stream-api/node_modules/es-define-property/CHANGELOG.md +29 -0
  267. package/stream-api/node_modules/es-define-property/LICENSE +21 -0
  268. package/stream-api/node_modules/es-define-property/README.md +49 -0
  269. package/stream-api/node_modules/es-define-property/index.d.ts +3 -0
  270. package/stream-api/node_modules/es-define-property/index.js +14 -0
  271. package/stream-api/node_modules/es-define-property/package.json +81 -0
  272. package/stream-api/node_modules/es-define-property/test/index.js +56 -0
  273. package/stream-api/node_modules/es-define-property/tsconfig.json +10 -0
  274. package/stream-api/node_modules/es-errors/.eslintrc +5 -0
  275. package/stream-api/node_modules/es-errors/.github/FUNDING.yml +12 -0
  276. package/stream-api/node_modules/es-errors/CHANGELOG.md +40 -0
  277. package/stream-api/node_modules/es-errors/LICENSE +21 -0
  278. package/stream-api/node_modules/es-errors/README.md +55 -0
  279. package/stream-api/node_modules/es-errors/eval.d.ts +3 -0
  280. package/stream-api/node_modules/es-errors/eval.js +4 -0
  281. package/stream-api/node_modules/es-errors/index.d.ts +3 -0
  282. package/stream-api/node_modules/es-errors/index.js +4 -0
  283. package/stream-api/node_modules/es-errors/package.json +80 -0
  284. package/stream-api/node_modules/es-errors/range.d.ts +3 -0
  285. package/stream-api/node_modules/es-errors/range.js +4 -0
  286. package/stream-api/node_modules/es-errors/ref.d.ts +3 -0
  287. package/stream-api/node_modules/es-errors/ref.js +4 -0
  288. package/stream-api/node_modules/es-errors/syntax.d.ts +3 -0
  289. package/stream-api/node_modules/es-errors/syntax.js +4 -0
  290. package/stream-api/node_modules/es-errors/test/index.js +19 -0
  291. package/stream-api/node_modules/es-errors/tsconfig.json +49 -0
  292. package/stream-api/node_modules/es-errors/type.d.ts +3 -0
  293. package/stream-api/node_modules/es-errors/type.js +4 -0
  294. package/stream-api/node_modules/es-errors/uri.d.ts +3 -0
  295. package/stream-api/node_modules/es-errors/uri.js +4 -0
  296. package/stream-api/node_modules/es-object-atoms/.eslintrc +16 -0
  297. package/stream-api/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  298. package/stream-api/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  299. package/stream-api/node_modules/es-object-atoms/LICENSE +21 -0
  300. package/stream-api/node_modules/es-object-atoms/README.md +63 -0
  301. package/stream-api/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  302. package/stream-api/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  303. package/stream-api/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  304. package/stream-api/node_modules/es-object-atoms/ToObject.js +10 -0
  305. package/stream-api/node_modules/es-object-atoms/index.d.ts +3 -0
  306. package/stream-api/node_modules/es-object-atoms/index.js +4 -0
  307. package/stream-api/node_modules/es-object-atoms/isObject.d.ts +3 -0
  308. package/stream-api/node_modules/es-object-atoms/isObject.js +6 -0
  309. package/stream-api/node_modules/es-object-atoms/package.json +80 -0
  310. package/stream-api/node_modules/es-object-atoms/test/index.js +38 -0
  311. package/stream-api/node_modules/es-object-atoms/tsconfig.json +6 -0
  312. package/stream-api/node_modules/escape-html/LICENSE +24 -0
  313. package/stream-api/node_modules/escape-html/Readme.md +43 -0
  314. package/stream-api/node_modules/escape-html/index.js +78 -0
  315. package/stream-api/node_modules/escape-html/package.json +24 -0
  316. package/stream-api/node_modules/etag/HISTORY.md +83 -0
  317. package/stream-api/node_modules/etag/LICENSE +22 -0
  318. package/stream-api/node_modules/etag/README.md +159 -0
  319. package/stream-api/node_modules/etag/index.js +131 -0
  320. package/stream-api/node_modules/etag/package.json +47 -0
  321. package/stream-api/node_modules/express/History.md +3858 -0
  322. package/stream-api/node_modules/express/LICENSE +24 -0
  323. package/stream-api/node_modules/express/Readme.md +266 -0
  324. package/stream-api/node_modules/express/index.js +11 -0
  325. package/stream-api/node_modules/express/lib/application.js +631 -0
  326. package/stream-api/node_modules/express/lib/express.js +81 -0
  327. package/stream-api/node_modules/express/lib/request.js +515 -0
  328. package/stream-api/node_modules/express/lib/response.js +1039 -0
  329. package/stream-api/node_modules/express/lib/utils.js +269 -0
  330. package/stream-api/node_modules/express/lib/view.js +205 -0
  331. package/stream-api/node_modules/express/package.json +98 -0
  332. package/stream-api/node_modules/finalhandler/HISTORY.md +233 -0
  333. package/stream-api/node_modules/finalhandler/LICENSE +22 -0
  334. package/stream-api/node_modules/finalhandler/README.md +147 -0
  335. package/stream-api/node_modules/finalhandler/index.js +293 -0
  336. package/stream-api/node_modules/finalhandler/package.json +43 -0
  337. package/stream-api/node_modules/forwarded/HISTORY.md +21 -0
  338. package/stream-api/node_modules/forwarded/LICENSE +22 -0
  339. package/stream-api/node_modules/forwarded/README.md +57 -0
  340. package/stream-api/node_modules/forwarded/index.js +90 -0
  341. package/stream-api/node_modules/forwarded/package.json +45 -0
  342. package/stream-api/node_modules/fresh/HISTORY.md +80 -0
  343. package/stream-api/node_modules/fresh/LICENSE +23 -0
  344. package/stream-api/node_modules/fresh/README.md +117 -0
  345. package/stream-api/node_modules/fresh/index.js +136 -0
  346. package/stream-api/node_modules/fresh/package.json +46 -0
  347. package/stream-api/node_modules/function-bind/.eslintrc +21 -0
  348. package/stream-api/node_modules/function-bind/.github/FUNDING.yml +12 -0
  349. package/stream-api/node_modules/function-bind/.github/SECURITY.md +3 -0
  350. package/stream-api/node_modules/function-bind/.nycrc +13 -0
  351. package/stream-api/node_modules/function-bind/CHANGELOG.md +136 -0
  352. package/stream-api/node_modules/function-bind/LICENSE +20 -0
  353. package/stream-api/node_modules/function-bind/README.md +46 -0
  354. package/stream-api/node_modules/function-bind/implementation.js +84 -0
  355. package/stream-api/node_modules/function-bind/index.js +5 -0
  356. package/stream-api/node_modules/function-bind/package.json +87 -0
  357. package/stream-api/node_modules/function-bind/test/.eslintrc +9 -0
  358. package/stream-api/node_modules/function-bind/test/index.js +252 -0
  359. package/stream-api/node_modules/get-intrinsic/.eslintrc +42 -0
  360. package/stream-api/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  361. package/stream-api/node_modules/get-intrinsic/.nycrc +9 -0
  362. package/stream-api/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  363. package/stream-api/node_modules/get-intrinsic/LICENSE +21 -0
  364. package/stream-api/node_modules/get-intrinsic/README.md +71 -0
  365. package/stream-api/node_modules/get-intrinsic/index.js +378 -0
  366. package/stream-api/node_modules/get-intrinsic/package.json +97 -0
  367. package/stream-api/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  368. package/stream-api/node_modules/get-proto/.eslintrc +10 -0
  369. package/stream-api/node_modules/get-proto/.github/FUNDING.yml +12 -0
  370. package/stream-api/node_modules/get-proto/.nycrc +9 -0
  371. package/stream-api/node_modules/get-proto/CHANGELOG.md +21 -0
  372. package/stream-api/node_modules/get-proto/LICENSE +21 -0
  373. package/stream-api/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  374. package/stream-api/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  375. package/stream-api/node_modules/get-proto/README.md +50 -0
  376. package/stream-api/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  377. package/stream-api/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  378. package/stream-api/node_modules/get-proto/index.d.ts +5 -0
  379. package/stream-api/node_modules/get-proto/index.js +27 -0
  380. package/stream-api/node_modules/get-proto/package.json +81 -0
  381. package/stream-api/node_modules/get-proto/test/index.js +68 -0
  382. package/stream-api/node_modules/get-proto/tsconfig.json +9 -0
  383. package/stream-api/node_modules/gopd/.eslintrc +16 -0
  384. package/stream-api/node_modules/gopd/.github/FUNDING.yml +12 -0
  385. package/stream-api/node_modules/gopd/CHANGELOG.md +45 -0
  386. package/stream-api/node_modules/gopd/LICENSE +21 -0
  387. package/stream-api/node_modules/gopd/README.md +40 -0
  388. package/stream-api/node_modules/gopd/gOPD.d.ts +1 -0
  389. package/stream-api/node_modules/gopd/gOPD.js +4 -0
  390. package/stream-api/node_modules/gopd/index.d.ts +5 -0
  391. package/stream-api/node_modules/gopd/index.js +15 -0
  392. package/stream-api/node_modules/gopd/package.json +77 -0
  393. package/stream-api/node_modules/gopd/test/index.js +36 -0
  394. package/stream-api/node_modules/gopd/tsconfig.json +9 -0
  395. package/stream-api/node_modules/has-symbols/.eslintrc +11 -0
  396. package/stream-api/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  397. package/stream-api/node_modules/has-symbols/.nycrc +9 -0
  398. package/stream-api/node_modules/has-symbols/CHANGELOG.md +91 -0
  399. package/stream-api/node_modules/has-symbols/LICENSE +21 -0
  400. package/stream-api/node_modules/has-symbols/README.md +46 -0
  401. package/stream-api/node_modules/has-symbols/index.d.ts +3 -0
  402. package/stream-api/node_modules/has-symbols/index.js +14 -0
  403. package/stream-api/node_modules/has-symbols/package.json +111 -0
  404. package/stream-api/node_modules/has-symbols/shams.d.ts +3 -0
  405. package/stream-api/node_modules/has-symbols/shams.js +45 -0
  406. package/stream-api/node_modules/has-symbols/test/index.js +22 -0
  407. package/stream-api/node_modules/has-symbols/test/shams/core-js.js +29 -0
  408. package/stream-api/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  409. package/stream-api/node_modules/has-symbols/test/tests.js +58 -0
  410. package/stream-api/node_modules/has-symbols/tsconfig.json +10 -0
  411. package/stream-api/node_modules/hasown/.eslintrc +5 -0
  412. package/stream-api/node_modules/hasown/.github/FUNDING.yml +12 -0
  413. package/stream-api/node_modules/hasown/.nycrc +13 -0
  414. package/stream-api/node_modules/hasown/CHANGELOG.md +40 -0
  415. package/stream-api/node_modules/hasown/LICENSE +21 -0
  416. package/stream-api/node_modules/hasown/README.md +40 -0
  417. package/stream-api/node_modules/hasown/index.d.ts +3 -0
  418. package/stream-api/node_modules/hasown/index.js +8 -0
  419. package/stream-api/node_modules/hasown/package.json +92 -0
  420. package/stream-api/node_modules/hasown/tsconfig.json +6 -0
  421. package/stream-api/node_modules/http-errors/HISTORY.md +186 -0
  422. package/stream-api/node_modules/http-errors/LICENSE +23 -0
  423. package/stream-api/node_modules/http-errors/README.md +169 -0
  424. package/stream-api/node_modules/http-errors/index.js +290 -0
  425. package/stream-api/node_modules/http-errors/package.json +54 -0
  426. package/stream-api/node_modules/iconv-lite/Changelog.md +236 -0
  427. package/stream-api/node_modules/iconv-lite/LICENSE +21 -0
  428. package/stream-api/node_modules/iconv-lite/README.md +138 -0
  429. package/stream-api/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
  430. package/stream-api/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
  431. package/stream-api/node_modules/iconv-lite/encodings/index.js +23 -0
  432. package/stream-api/node_modules/iconv-lite/encodings/internal.js +218 -0
  433. package/stream-api/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
  434. package/stream-api/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  435. package/stream-api/node_modules/iconv-lite/encodings/sbcs-data.js +178 -0
  436. package/stream-api/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  437. package/stream-api/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  438. package/stream-api/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  439. package/stream-api/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  440. package/stream-api/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  441. package/stream-api/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  442. package/stream-api/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  443. package/stream-api/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  444. package/stream-api/node_modules/iconv-lite/encodings/utf16.js +187 -0
  445. package/stream-api/node_modules/iconv-lite/encodings/utf32.js +307 -0
  446. package/stream-api/node_modules/iconv-lite/encodings/utf7.js +283 -0
  447. package/stream-api/node_modules/iconv-lite/lib/bom-handling.js +48 -0
  448. package/stream-api/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
  449. package/stream-api/node_modules/iconv-lite/lib/index.d.ts +41 -0
  450. package/stream-api/node_modules/iconv-lite/lib/index.js +183 -0
  451. package/stream-api/node_modules/iconv-lite/lib/streams.js +105 -0
  452. package/stream-api/node_modules/iconv-lite/package.json +59 -0
  453. package/stream-api/node_modules/inherits/LICENSE +16 -0
  454. package/stream-api/node_modules/inherits/README.md +42 -0
  455. package/stream-api/node_modules/inherits/inherits.js +9 -0
  456. package/stream-api/node_modules/inherits/inherits_browser.js +27 -0
  457. package/stream-api/node_modules/inherits/package.json +29 -0
  458. package/stream-api/node_modules/ipaddr.js/LICENSE +19 -0
  459. package/stream-api/node_modules/ipaddr.js/README.md +233 -0
  460. package/stream-api/node_modules/ipaddr.js/ipaddr.min.js +1 -0
  461. package/stream-api/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
  462. package/stream-api/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
  463. package/stream-api/node_modules/ipaddr.js/package.json +35 -0
  464. package/stream-api/node_modules/is-promise/LICENSE +19 -0
  465. package/stream-api/node_modules/is-promise/index.d.ts +2 -0
  466. package/stream-api/node_modules/is-promise/index.js +6 -0
  467. package/stream-api/node_modules/is-promise/index.mjs +3 -0
  468. package/stream-api/node_modules/is-promise/package.json +30 -0
  469. package/stream-api/node_modules/is-promise/readme.md +33 -0
  470. package/stream-api/node_modules/math-intrinsics/.eslintrc +16 -0
  471. package/stream-api/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  472. package/stream-api/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  473. package/stream-api/node_modules/math-intrinsics/LICENSE +21 -0
  474. package/stream-api/node_modules/math-intrinsics/README.md +50 -0
  475. package/stream-api/node_modules/math-intrinsics/abs.d.ts +1 -0
  476. package/stream-api/node_modules/math-intrinsics/abs.js +4 -0
  477. package/stream-api/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  478. package/stream-api/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  479. package/stream-api/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  480. package/stream-api/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  481. package/stream-api/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  482. package/stream-api/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  483. package/stream-api/node_modules/math-intrinsics/floor.d.ts +1 -0
  484. package/stream-api/node_modules/math-intrinsics/floor.js +4 -0
  485. package/stream-api/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  486. package/stream-api/node_modules/math-intrinsics/isFinite.js +12 -0
  487. package/stream-api/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  488. package/stream-api/node_modules/math-intrinsics/isInteger.js +16 -0
  489. package/stream-api/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  490. package/stream-api/node_modules/math-intrinsics/isNaN.js +6 -0
  491. package/stream-api/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  492. package/stream-api/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  493. package/stream-api/node_modules/math-intrinsics/max.d.ts +1 -0
  494. package/stream-api/node_modules/math-intrinsics/max.js +4 -0
  495. package/stream-api/node_modules/math-intrinsics/min.d.ts +1 -0
  496. package/stream-api/node_modules/math-intrinsics/min.js +4 -0
  497. package/stream-api/node_modules/math-intrinsics/mod.d.ts +3 -0
  498. package/stream-api/node_modules/math-intrinsics/mod.js +9 -0
  499. package/stream-api/node_modules/math-intrinsics/package.json +86 -0
  500. package/stream-api/node_modules/math-intrinsics/pow.d.ts +1 -0
  501. package/stream-api/node_modules/math-intrinsics/pow.js +4 -0
  502. package/stream-api/node_modules/math-intrinsics/round.d.ts +1 -0
  503. package/stream-api/node_modules/math-intrinsics/round.js +4 -0
  504. package/stream-api/node_modules/math-intrinsics/sign.d.ts +3 -0
  505. package/stream-api/node_modules/math-intrinsics/sign.js +11 -0
  506. package/stream-api/node_modules/math-intrinsics/test/index.js +192 -0
  507. package/stream-api/node_modules/math-intrinsics/tsconfig.json +3 -0
  508. package/stream-api/node_modules/media-typer/HISTORY.md +50 -0
  509. package/stream-api/node_modules/media-typer/LICENSE +22 -0
  510. package/stream-api/node_modules/media-typer/README.md +93 -0
  511. package/stream-api/node_modules/media-typer/index.js +143 -0
  512. package/stream-api/node_modules/media-typer/package.json +33 -0
  513. package/stream-api/node_modules/merge-descriptors/index.d.ts +11 -0
  514. package/stream-api/node_modules/merge-descriptors/index.js +26 -0
  515. package/stream-api/node_modules/merge-descriptors/license +11 -0
  516. package/stream-api/node_modules/merge-descriptors/package.json +50 -0
  517. package/stream-api/node_modules/merge-descriptors/readme.md +55 -0
  518. package/stream-api/node_modules/mime-db/HISTORY.md +541 -0
  519. package/stream-api/node_modules/mime-db/LICENSE +23 -0
  520. package/stream-api/node_modules/mime-db/README.md +109 -0
  521. package/stream-api/node_modules/mime-db/db.json +9342 -0
  522. package/stream-api/node_modules/mime-db/index.js +12 -0
  523. package/stream-api/node_modules/mime-db/package.json +56 -0
  524. package/stream-api/node_modules/mime-types/HISTORY.md +428 -0
  525. package/stream-api/node_modules/mime-types/LICENSE +23 -0
  526. package/stream-api/node_modules/mime-types/README.md +126 -0
  527. package/stream-api/node_modules/mime-types/index.js +211 -0
  528. package/stream-api/node_modules/mime-types/mimeScore.js +57 -0
  529. package/stream-api/node_modules/mime-types/package.json +49 -0
  530. package/stream-api/node_modules/ms/index.js +162 -0
  531. package/stream-api/node_modules/ms/license.md +21 -0
  532. package/stream-api/node_modules/ms/package.json +38 -0
  533. package/stream-api/node_modules/ms/readme.md +59 -0
  534. package/stream-api/node_modules/negotiator/HISTORY.md +114 -0
  535. package/stream-api/node_modules/negotiator/LICENSE +24 -0
  536. package/stream-api/node_modules/negotiator/README.md +212 -0
  537. package/stream-api/node_modules/negotiator/index.js +83 -0
  538. package/stream-api/node_modules/negotiator/lib/charset.js +169 -0
  539. package/stream-api/node_modules/negotiator/lib/encoding.js +205 -0
  540. package/stream-api/node_modules/negotiator/lib/language.js +179 -0
  541. package/stream-api/node_modules/negotiator/lib/mediaType.js +294 -0
  542. package/stream-api/node_modules/negotiator/package.json +43 -0
  543. package/stream-api/node_modules/object-inspect/.eslintrc +53 -0
  544. package/stream-api/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  545. package/stream-api/node_modules/object-inspect/.nycrc +13 -0
  546. package/stream-api/node_modules/object-inspect/CHANGELOG.md +424 -0
  547. package/stream-api/node_modules/object-inspect/LICENSE +21 -0
  548. package/stream-api/node_modules/object-inspect/example/all.js +23 -0
  549. package/stream-api/node_modules/object-inspect/example/circular.js +6 -0
  550. package/stream-api/node_modules/object-inspect/example/fn.js +5 -0
  551. package/stream-api/node_modules/object-inspect/example/inspect.js +10 -0
  552. package/stream-api/node_modules/object-inspect/index.js +544 -0
  553. package/stream-api/node_modules/object-inspect/package-support.json +20 -0
  554. package/stream-api/node_modules/object-inspect/package.json +105 -0
  555. package/stream-api/node_modules/object-inspect/readme.markdown +84 -0
  556. package/stream-api/node_modules/object-inspect/test/bigint.js +58 -0
  557. package/stream-api/node_modules/object-inspect/test/browser/dom.js +15 -0
  558. package/stream-api/node_modules/object-inspect/test/circular.js +16 -0
  559. package/stream-api/node_modules/object-inspect/test/deep.js +12 -0
  560. package/stream-api/node_modules/object-inspect/test/element.js +53 -0
  561. package/stream-api/node_modules/object-inspect/test/err.js +48 -0
  562. package/stream-api/node_modules/object-inspect/test/fakes.js +29 -0
  563. package/stream-api/node_modules/object-inspect/test/fn.js +76 -0
  564. package/stream-api/node_modules/object-inspect/test/global.js +17 -0
  565. package/stream-api/node_modules/object-inspect/test/has.js +15 -0
  566. package/stream-api/node_modules/object-inspect/test/holes.js +15 -0
  567. package/stream-api/node_modules/object-inspect/test/indent-option.js +271 -0
  568. package/stream-api/node_modules/object-inspect/test/inspect.js +139 -0
  569. package/stream-api/node_modules/object-inspect/test/lowbyte.js +12 -0
  570. package/stream-api/node_modules/object-inspect/test/number.js +58 -0
  571. package/stream-api/node_modules/object-inspect/test/quoteStyle.js +26 -0
  572. package/stream-api/node_modules/object-inspect/test/toStringTag.js +40 -0
  573. package/stream-api/node_modules/object-inspect/test/undef.js +12 -0
  574. package/stream-api/node_modules/object-inspect/test/values.js +261 -0
  575. package/stream-api/node_modules/object-inspect/test-core-js.js +26 -0
  576. package/stream-api/node_modules/object-inspect/util.inspect.js +1 -0
  577. package/stream-api/node_modules/on-finished/HISTORY.md +98 -0
  578. package/stream-api/node_modules/on-finished/LICENSE +23 -0
  579. package/stream-api/node_modules/on-finished/README.md +162 -0
  580. package/stream-api/node_modules/on-finished/index.js +234 -0
  581. package/stream-api/node_modules/on-finished/package.json +39 -0
  582. package/stream-api/node_modules/once/LICENSE +15 -0
  583. package/stream-api/node_modules/once/README.md +79 -0
  584. package/stream-api/node_modules/once/once.js +42 -0
  585. package/stream-api/node_modules/once/package.json +33 -0
  586. package/stream-api/node_modules/parseurl/HISTORY.md +58 -0
  587. package/stream-api/node_modules/parseurl/LICENSE +24 -0
  588. package/stream-api/node_modules/parseurl/README.md +133 -0
  589. package/stream-api/node_modules/parseurl/index.js +158 -0
  590. package/stream-api/node_modules/parseurl/package.json +40 -0
  591. package/stream-api/node_modules/path-to-regexp/LICENSE +21 -0
  592. package/stream-api/node_modules/path-to-regexp/Readme.md +224 -0
  593. package/stream-api/node_modules/path-to-regexp/dist/index.d.ts +144 -0
  594. package/stream-api/node_modules/path-to-regexp/dist/index.js +409 -0
  595. package/stream-api/node_modules/path-to-regexp/dist/index.js.map +1 -0
  596. package/stream-api/node_modules/path-to-regexp/package.json +64 -0
  597. package/stream-api/node_modules/proxy-addr/HISTORY.md +161 -0
  598. package/stream-api/node_modules/proxy-addr/LICENSE +22 -0
  599. package/stream-api/node_modules/proxy-addr/README.md +139 -0
  600. package/stream-api/node_modules/proxy-addr/index.js +327 -0
  601. package/stream-api/node_modules/proxy-addr/package.json +47 -0
  602. package/stream-api/node_modules/qs/.editorconfig +46 -0
  603. package/stream-api/node_modules/qs/.eslintrc +39 -0
  604. package/stream-api/node_modules/qs/.github/FUNDING.yml +12 -0
  605. package/stream-api/node_modules/qs/.nycrc +13 -0
  606. package/stream-api/node_modules/qs/CHANGELOG.md +622 -0
  607. package/stream-api/node_modules/qs/LICENSE.md +29 -0
  608. package/stream-api/node_modules/qs/README.md +733 -0
  609. package/stream-api/node_modules/qs/dist/qs.js +141 -0
  610. package/stream-api/node_modules/qs/lib/formats.js +23 -0
  611. package/stream-api/node_modules/qs/lib/index.js +11 -0
  612. package/stream-api/node_modules/qs/lib/parse.js +328 -0
  613. package/stream-api/node_modules/qs/lib/stringify.js +356 -0
  614. package/stream-api/node_modules/qs/lib/utils.js +268 -0
  615. package/stream-api/node_modules/qs/package.json +93 -0
  616. package/stream-api/node_modules/qs/test/empty-keys-cases.js +267 -0
  617. package/stream-api/node_modules/qs/test/parse.js +1276 -0
  618. package/stream-api/node_modules/qs/test/stringify.js +1306 -0
  619. package/stream-api/node_modules/qs/test/utils.js +262 -0
  620. package/stream-api/node_modules/range-parser/HISTORY.md +56 -0
  621. package/stream-api/node_modules/range-parser/LICENSE +23 -0
  622. package/stream-api/node_modules/range-parser/README.md +84 -0
  623. package/stream-api/node_modules/range-parser/index.js +162 -0
  624. package/stream-api/node_modules/range-parser/package.json +44 -0
  625. package/stream-api/node_modules/raw-body/LICENSE +22 -0
  626. package/stream-api/node_modules/raw-body/README.md +223 -0
  627. package/stream-api/node_modules/raw-body/index.d.ts +85 -0
  628. package/stream-api/node_modules/raw-body/index.js +336 -0
  629. package/stream-api/node_modules/raw-body/package.json +46 -0
  630. package/stream-api/node_modules/router/HISTORY.md +228 -0
  631. package/stream-api/node_modules/router/LICENSE +23 -0
  632. package/stream-api/node_modules/router/README.md +416 -0
  633. package/stream-api/node_modules/router/index.js +748 -0
  634. package/stream-api/node_modules/router/lib/layer.js +247 -0
  635. package/stream-api/node_modules/router/lib/route.js +242 -0
  636. package/stream-api/node_modules/router/package.json +44 -0
  637. package/stream-api/node_modules/safer-buffer/LICENSE +21 -0
  638. package/stream-api/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  639. package/stream-api/node_modules/safer-buffer/Readme.md +156 -0
  640. package/stream-api/node_modules/safer-buffer/dangerous.js +58 -0
  641. package/stream-api/node_modules/safer-buffer/package.json +34 -0
  642. package/stream-api/node_modules/safer-buffer/safer.js +77 -0
  643. package/stream-api/node_modules/safer-buffer/tests.js +406 -0
  644. package/stream-api/node_modules/send/HISTORY.md +580 -0
  645. package/stream-api/node_modules/send/LICENSE +23 -0
  646. package/stream-api/node_modules/send/README.md +317 -0
  647. package/stream-api/node_modules/send/index.js +997 -0
  648. package/stream-api/node_modules/send/package.json +60 -0
  649. package/stream-api/node_modules/serve-static/HISTORY.md +516 -0
  650. package/stream-api/node_modules/serve-static/LICENSE +25 -0
  651. package/stream-api/node_modules/serve-static/README.md +253 -0
  652. package/stream-api/node_modules/serve-static/index.js +208 -0
  653. package/stream-api/node_modules/serve-static/package.json +41 -0
  654. package/stream-api/node_modules/setprototypeof/LICENSE +13 -0
  655. package/stream-api/node_modules/setprototypeof/README.md +31 -0
  656. package/stream-api/node_modules/setprototypeof/index.d.ts +2 -0
  657. package/stream-api/node_modules/setprototypeof/index.js +17 -0
  658. package/stream-api/node_modules/setprototypeof/package.json +38 -0
  659. package/stream-api/node_modules/setprototypeof/test/index.js +24 -0
  660. package/stream-api/node_modules/short-uuid/.codeclimate.yml +21 -0
  661. package/stream-api/node_modules/short-uuid/.csslintrc +2 -0
  662. package/stream-api/node_modules/short-uuid/.editorconfig +11 -0
  663. package/stream-api/node_modules/short-uuid/.eslintrc.js +15 -0
  664. package/stream-api/node_modules/short-uuid/.github/workflows/node.js.yml +31 -0
  665. package/stream-api/node_modules/short-uuid/.nyc_output/3a60ecc2-69fc-4d0a-81dd-ad79b6071e14.json +1 -0
  666. package/stream-api/node_modules/short-uuid/.nyc_output/3f261446-c11a-4630-b995-4f5dbc1395ef.json +1 -0
  667. package/stream-api/node_modules/short-uuid/.nyc_output/processinfo/3a60ecc2-69fc-4d0a-81dd-ad79b6071e14.json +1 -0
  668. package/stream-api/node_modules/short-uuid/.nyc_output/processinfo/3f261446-c11a-4630-b995-4f5dbc1395ef.json +1 -0
  669. package/stream-api/node_modules/short-uuid/.nyc_output/processinfo/index.json +1 -0
  670. package/stream-api/node_modules/short-uuid/CHANGELOG.md +237 -0
  671. package/stream-api/node_modules/short-uuid/LICENSE +21 -0
  672. package/stream-api/node_modules/short-uuid/README.md +128 -0
  673. package/stream-api/node_modules/short-uuid/index.d.ts +51 -0
  674. package/stream-api/node_modules/short-uuid/index.js +157 -0
  675. package/stream-api/node_modules/short-uuid/package.json +41 -0
  676. package/stream-api/node_modules/short-uuid/revisions.md +193 -0
  677. package/stream-api/node_modules/short-uuid/test/index.js +339 -0
  678. package/stream-api/node_modules/short-uuid/test/uuid25examples.js +74 -0
  679. package/stream-api/node_modules/side-channel/.editorconfig +9 -0
  680. package/stream-api/node_modules/side-channel/.eslintrc +12 -0
  681. package/stream-api/node_modules/side-channel/.github/FUNDING.yml +12 -0
  682. package/stream-api/node_modules/side-channel/.nycrc +13 -0
  683. package/stream-api/node_modules/side-channel/CHANGELOG.md +110 -0
  684. package/stream-api/node_modules/side-channel/LICENSE +21 -0
  685. package/stream-api/node_modules/side-channel/README.md +61 -0
  686. package/stream-api/node_modules/side-channel/index.d.ts +14 -0
  687. package/stream-api/node_modules/side-channel/index.js +43 -0
  688. package/stream-api/node_modules/side-channel/package.json +85 -0
  689. package/stream-api/node_modules/side-channel/test/index.js +104 -0
  690. package/stream-api/node_modules/side-channel/tsconfig.json +9 -0
  691. package/stream-api/node_modules/side-channel-list/.editorconfig +9 -0
  692. package/stream-api/node_modules/side-channel-list/.eslintrc +11 -0
  693. package/stream-api/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
  694. package/stream-api/node_modules/side-channel-list/.nycrc +13 -0
  695. package/stream-api/node_modules/side-channel-list/CHANGELOG.md +15 -0
  696. package/stream-api/node_modules/side-channel-list/LICENSE +21 -0
  697. package/stream-api/node_modules/side-channel-list/README.md +62 -0
  698. package/stream-api/node_modules/side-channel-list/index.d.ts +13 -0
  699. package/stream-api/node_modules/side-channel-list/index.js +113 -0
  700. package/stream-api/node_modules/side-channel-list/list.d.ts +14 -0
  701. package/stream-api/node_modules/side-channel-list/package.json +77 -0
  702. package/stream-api/node_modules/side-channel-list/test/index.js +104 -0
  703. package/stream-api/node_modules/side-channel-list/tsconfig.json +9 -0
  704. package/stream-api/node_modules/side-channel-map/.editorconfig +9 -0
  705. package/stream-api/node_modules/side-channel-map/.eslintrc +11 -0
  706. package/stream-api/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
  707. package/stream-api/node_modules/side-channel-map/.nycrc +13 -0
  708. package/stream-api/node_modules/side-channel-map/CHANGELOG.md +22 -0
  709. package/stream-api/node_modules/side-channel-map/LICENSE +21 -0
  710. package/stream-api/node_modules/side-channel-map/README.md +62 -0
  711. package/stream-api/node_modules/side-channel-map/index.d.ts +15 -0
  712. package/stream-api/node_modules/side-channel-map/index.js +68 -0
  713. package/stream-api/node_modules/side-channel-map/package.json +80 -0
  714. package/stream-api/node_modules/side-channel-map/test/index.js +114 -0
  715. package/stream-api/node_modules/side-channel-map/tsconfig.json +9 -0
  716. package/stream-api/node_modules/side-channel-weakmap/.editorconfig +9 -0
  717. package/stream-api/node_modules/side-channel-weakmap/.eslintrc +12 -0
  718. package/stream-api/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  719. package/stream-api/node_modules/side-channel-weakmap/.nycrc +13 -0
  720. package/stream-api/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  721. package/stream-api/node_modules/side-channel-weakmap/LICENSE +21 -0
  722. package/stream-api/node_modules/side-channel-weakmap/README.md +62 -0
  723. package/stream-api/node_modules/side-channel-weakmap/index.d.ts +15 -0
  724. package/stream-api/node_modules/side-channel-weakmap/index.js +84 -0
  725. package/stream-api/node_modules/side-channel-weakmap/package.json +87 -0
  726. package/stream-api/node_modules/side-channel-weakmap/test/index.js +114 -0
  727. package/stream-api/node_modules/side-channel-weakmap/tsconfig.json +9 -0
  728. package/stream-api/node_modules/statuses/HISTORY.md +87 -0
  729. package/stream-api/node_modules/statuses/LICENSE +23 -0
  730. package/stream-api/node_modules/statuses/README.md +139 -0
  731. package/stream-api/node_modules/statuses/codes.json +65 -0
  732. package/stream-api/node_modules/statuses/index.js +146 -0
  733. package/stream-api/node_modules/statuses/package.json +49 -0
  734. package/stream-api/node_modules/toidentifier/HISTORY.md +9 -0
  735. package/stream-api/node_modules/toidentifier/LICENSE +21 -0
  736. package/stream-api/node_modules/toidentifier/README.md +61 -0
  737. package/stream-api/node_modules/toidentifier/index.js +32 -0
  738. package/stream-api/node_modules/toidentifier/package.json +38 -0
  739. package/stream-api/node_modules/type-is/HISTORY.md +292 -0
  740. package/stream-api/node_modules/type-is/LICENSE +23 -0
  741. package/stream-api/node_modules/type-is/README.md +198 -0
  742. package/stream-api/node_modules/type-is/index.js +250 -0
  743. package/stream-api/node_modules/type-is/package.json +47 -0
  744. package/stream-api/node_modules/undici-types/LICENSE +21 -0
  745. package/stream-api/node_modules/undici-types/README.md +6 -0
  746. package/stream-api/node_modules/undici-types/agent.d.ts +32 -0
  747. package/stream-api/node_modules/undici-types/api.d.ts +43 -0
  748. package/stream-api/node_modules/undici-types/balanced-pool.d.ts +29 -0
  749. package/stream-api/node_modules/undici-types/cache-interceptor.d.ts +172 -0
  750. package/stream-api/node_modules/undici-types/cache.d.ts +36 -0
  751. package/stream-api/node_modules/undici-types/client-stats.d.ts +15 -0
  752. package/stream-api/node_modules/undici-types/client.d.ts +108 -0
  753. package/stream-api/node_modules/undici-types/connector.d.ts +34 -0
  754. package/stream-api/node_modules/undici-types/content-type.d.ts +21 -0
  755. package/stream-api/node_modules/undici-types/cookies.d.ts +30 -0
  756. package/stream-api/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  757. package/stream-api/node_modules/undici-types/dispatcher.d.ts +276 -0
  758. package/stream-api/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  759. package/stream-api/node_modules/undici-types/errors.d.ts +161 -0
  760. package/stream-api/node_modules/undici-types/eventsource.d.ts +66 -0
  761. package/stream-api/node_modules/undici-types/fetch.d.ts +211 -0
  762. package/stream-api/node_modules/undici-types/formdata.d.ts +108 -0
  763. package/stream-api/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  764. package/stream-api/node_modules/undici-types/global-origin.d.ts +7 -0
  765. package/stream-api/node_modules/undici-types/h2c-client.d.ts +73 -0
  766. package/stream-api/node_modules/undici-types/handlers.d.ts +15 -0
  767. package/stream-api/node_modules/undici-types/header.d.ts +160 -0
  768. package/stream-api/node_modules/undici-types/index.d.ts +80 -0
  769. package/stream-api/node_modules/undici-types/interceptors.d.ts +39 -0
  770. package/stream-api/node_modules/undici-types/mock-agent.d.ts +68 -0
  771. package/stream-api/node_modules/undici-types/mock-call-history.d.ts +111 -0
  772. package/stream-api/node_modules/undici-types/mock-client.d.ts +27 -0
  773. package/stream-api/node_modules/undici-types/mock-errors.d.ts +12 -0
  774. package/stream-api/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  775. package/stream-api/node_modules/undici-types/mock-pool.d.ts +27 -0
  776. package/stream-api/node_modules/undici-types/package.json +55 -0
  777. package/stream-api/node_modules/undici-types/patch.d.ts +29 -0
  778. package/stream-api/node_modules/undici-types/pool-stats.d.ts +19 -0
  779. package/stream-api/node_modules/undici-types/pool.d.ts +41 -0
  780. package/stream-api/node_modules/undici-types/proxy-agent.d.ts +29 -0
  781. package/stream-api/node_modules/undici-types/readable.d.ts +68 -0
  782. package/stream-api/node_modules/undici-types/retry-agent.d.ts +8 -0
  783. package/stream-api/node_modules/undici-types/retry-handler.d.ts +125 -0
  784. package/stream-api/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  785. package/stream-api/node_modules/undici-types/util.d.ts +18 -0
  786. package/stream-api/node_modules/undici-types/utility.d.ts +7 -0
  787. package/stream-api/node_modules/undici-types/webidl.d.ts +341 -0
  788. package/stream-api/node_modules/undici-types/websocket.d.ts +186 -0
  789. package/stream-api/node_modules/unpipe/HISTORY.md +4 -0
  790. package/stream-api/node_modules/unpipe/LICENSE +22 -0
  791. package/stream-api/node_modules/unpipe/README.md +43 -0
  792. package/stream-api/node_modules/unpipe/index.js +69 -0
  793. package/stream-api/node_modules/unpipe/package.json +27 -0
  794. package/stream-api/node_modules/uuid/CHANGELOG.md +274 -0
  795. package/stream-api/node_modules/uuid/CONTRIBUTING.md +18 -0
  796. package/stream-api/node_modules/uuid/LICENSE.md +9 -0
  797. package/stream-api/node_modules/uuid/README.md +466 -0
  798. package/stream-api/node_modules/uuid/dist/bin/uuid +2 -0
  799. package/stream-api/node_modules/uuid/dist/commonjs-browser/index.js +79 -0
  800. package/stream-api/node_modules/uuid/dist/commonjs-browser/md5.js +223 -0
  801. package/stream-api/node_modules/uuid/dist/commonjs-browser/native.js +11 -0
  802. package/stream-api/node_modules/uuid/dist/commonjs-browser/nil.js +8 -0
  803. package/stream-api/node_modules/uuid/dist/commonjs-browser/parse.js +45 -0
  804. package/stream-api/node_modules/uuid/dist/commonjs-browser/regex.js +8 -0
  805. package/stream-api/node_modules/uuid/dist/commonjs-browser/rng.js +25 -0
  806. package/stream-api/node_modules/uuid/dist/commonjs-browser/sha1.js +104 -0
  807. package/stream-api/node_modules/uuid/dist/commonjs-browser/stringify.js +44 -0
  808. package/stream-api/node_modules/uuid/dist/commonjs-browser/v1.js +107 -0
  809. package/stream-api/node_modules/uuid/dist/commonjs-browser/v3.js +16 -0
  810. package/stream-api/node_modules/uuid/dist/commonjs-browser/v35.js +80 -0
  811. package/stream-api/node_modules/uuid/dist/commonjs-browser/v4.js +43 -0
  812. package/stream-api/node_modules/uuid/dist/commonjs-browser/v5.js +16 -0
  813. package/stream-api/node_modules/uuid/dist/commonjs-browser/validate.js +17 -0
  814. package/stream-api/node_modules/uuid/dist/commonjs-browser/version.js +21 -0
  815. package/stream-api/node_modules/uuid/dist/esm-browser/index.js +9 -0
  816. package/stream-api/node_modules/uuid/dist/esm-browser/md5.js +215 -0
  817. package/stream-api/node_modules/uuid/dist/esm-browser/native.js +4 -0
  818. package/stream-api/node_modules/uuid/dist/esm-browser/nil.js +1 -0
  819. package/stream-api/node_modules/uuid/dist/esm-browser/parse.js +35 -0
  820. package/stream-api/node_modules/uuid/dist/esm-browser/regex.js +1 -0
  821. package/stream-api/node_modules/uuid/dist/esm-browser/rng.js +18 -0
  822. package/stream-api/node_modules/uuid/dist/esm-browser/sha1.js +96 -0
  823. package/stream-api/node_modules/uuid/dist/esm-browser/stringify.js +33 -0
  824. package/stream-api/node_modules/uuid/dist/esm-browser/v1.js +95 -0
  825. package/stream-api/node_modules/uuid/dist/esm-browser/v3.js +4 -0
  826. package/stream-api/node_modules/uuid/dist/esm-browser/v35.js +66 -0
  827. package/stream-api/node_modules/uuid/dist/esm-browser/v4.js +29 -0
  828. package/stream-api/node_modules/uuid/dist/esm-browser/v5.js +4 -0
  829. package/stream-api/node_modules/uuid/dist/esm-browser/validate.js +7 -0
  830. package/stream-api/node_modules/uuid/dist/esm-browser/version.js +11 -0
  831. package/stream-api/node_modules/uuid/dist/esm-node/index.js +9 -0
  832. package/stream-api/node_modules/uuid/dist/esm-node/md5.js +13 -0
  833. package/stream-api/node_modules/uuid/dist/esm-node/native.js +4 -0
  834. package/stream-api/node_modules/uuid/dist/esm-node/nil.js +1 -0
  835. package/stream-api/node_modules/uuid/dist/esm-node/parse.js +35 -0
  836. package/stream-api/node_modules/uuid/dist/esm-node/regex.js +1 -0
  837. package/stream-api/node_modules/uuid/dist/esm-node/rng.js +12 -0
  838. package/stream-api/node_modules/uuid/dist/esm-node/sha1.js +13 -0
  839. package/stream-api/node_modules/uuid/dist/esm-node/stringify.js +33 -0
  840. package/stream-api/node_modules/uuid/dist/esm-node/v1.js +95 -0
  841. package/stream-api/node_modules/uuid/dist/esm-node/v3.js +4 -0
  842. package/stream-api/node_modules/uuid/dist/esm-node/v35.js +66 -0
  843. package/stream-api/node_modules/uuid/dist/esm-node/v4.js +29 -0
  844. package/stream-api/node_modules/uuid/dist/esm-node/v5.js +4 -0
  845. package/stream-api/node_modules/uuid/dist/esm-node/validate.js +7 -0
  846. package/stream-api/node_modules/uuid/dist/esm-node/version.js +11 -0
  847. package/stream-api/node_modules/uuid/dist/index.js +79 -0
  848. package/stream-api/node_modules/uuid/dist/md5-browser.js +223 -0
  849. package/stream-api/node_modules/uuid/dist/md5.js +23 -0
  850. package/stream-api/node_modules/uuid/dist/native-browser.js +11 -0
  851. package/stream-api/node_modules/uuid/dist/native.js +15 -0
  852. package/stream-api/node_modules/uuid/dist/nil.js +8 -0
  853. package/stream-api/node_modules/uuid/dist/parse.js +45 -0
  854. package/stream-api/node_modules/uuid/dist/regex.js +8 -0
  855. package/stream-api/node_modules/uuid/dist/rng-browser.js +25 -0
  856. package/stream-api/node_modules/uuid/dist/rng.js +24 -0
  857. package/stream-api/node_modules/uuid/dist/sha1-browser.js +104 -0
  858. package/stream-api/node_modules/uuid/dist/sha1.js +23 -0
  859. package/stream-api/node_modules/uuid/dist/stringify.js +44 -0
  860. package/stream-api/node_modules/uuid/dist/uuid-bin.js +85 -0
  861. package/stream-api/node_modules/uuid/dist/v1.js +107 -0
  862. package/stream-api/node_modules/uuid/dist/v3.js +16 -0
  863. package/stream-api/node_modules/uuid/dist/v35.js +80 -0
  864. package/stream-api/node_modules/uuid/dist/v4.js +43 -0
  865. package/stream-api/node_modules/uuid/dist/v5.js +16 -0
  866. package/stream-api/node_modules/uuid/dist/validate.js +17 -0
  867. package/stream-api/node_modules/uuid/dist/version.js +21 -0
  868. package/stream-api/node_modules/uuid/package.json +135 -0
  869. package/stream-api/node_modules/uuid/wrapper.mjs +10 -0
  870. package/stream-api/node_modules/vary/HISTORY.md +39 -0
  871. package/stream-api/node_modules/vary/LICENSE +22 -0
  872. package/stream-api/node_modules/vary/README.md +101 -0
  873. package/stream-api/node_modules/vary/index.js +149 -0
  874. package/stream-api/node_modules/vary/package.json +43 -0
  875. package/stream-api/node_modules/wrappy/LICENSE +15 -0
  876. package/stream-api/node_modules/wrappy/README.md +36 -0
  877. package/stream-api/node_modules/wrappy/package.json +29 -0
  878. package/stream-api/node_modules/wrappy/wrappy.js +33 -0
  879. package/stream-api/package-lock.json +985 -0
  880. package/stream-api/package.json +25 -0
  881. package/stream-api/tsconfig.json +10 -0
@@ -0,0 +1,1039 @@
1
+ /*!
2
+ * express
3
+ * Copyright(c) 2009-2013 TJ Holowaychuk
4
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
5
+ * MIT Licensed
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ /**
11
+ * Module dependencies.
12
+ * @private
13
+ */
14
+
15
+ var contentDisposition = require('content-disposition');
16
+ var createError = require('http-errors')
17
+ var encodeUrl = require('encodeurl');
18
+ var escapeHtml = require('escape-html');
19
+ var http = require('node:http');
20
+ var onFinished = require('on-finished');
21
+ var mime = require('mime-types')
22
+ var path = require('node:path');
23
+ var pathIsAbsolute = require('node:path').isAbsolute;
24
+ var statuses = require('statuses')
25
+ var sign = require('cookie-signature').sign;
26
+ var normalizeType = require('./utils').normalizeType;
27
+ var normalizeTypes = require('./utils').normalizeTypes;
28
+ var setCharset = require('./utils').setCharset;
29
+ var cookie = require('cookie');
30
+ var send = require('send');
31
+ var extname = path.extname;
32
+ var resolve = path.resolve;
33
+ var vary = require('vary');
34
+
35
+ /**
36
+ * Response prototype.
37
+ * @public
38
+ */
39
+
40
+ var res = Object.create(http.ServerResponse.prototype)
41
+
42
+ /**
43
+ * Module exports.
44
+ * @public
45
+ */
46
+
47
+ module.exports = res
48
+
49
+ /**
50
+ * Set the HTTP status code for the response.
51
+ *
52
+ * Expects an integer value between 100 and 999 inclusive.
53
+ * Throws an error if the provided status code is not an integer or if it's outside the allowable range.
54
+ *
55
+ * @param {number} code - The HTTP status code to set.
56
+ * @return {ServerResponse} - Returns itself for chaining methods.
57
+ * @throws {TypeError} If `code` is not an integer.
58
+ * @throws {RangeError} If `code` is outside the range 100 to 999.
59
+ * @public
60
+ */
61
+
62
+ res.status = function status(code) {
63
+ // Check if the status code is not an integer
64
+ if (!Number.isInteger(code)) {
65
+ throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`);
66
+ }
67
+ // Check if the status code is outside of Node's valid range
68
+ if (code < 100 || code > 999) {
69
+ throw new RangeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be greater than 99 and less than 1000.`);
70
+ }
71
+
72
+ this.statusCode = code;
73
+ return this;
74
+ };
75
+
76
+ /**
77
+ * Set Link header field with the given `links`.
78
+ *
79
+ * Examples:
80
+ *
81
+ * res.links({
82
+ * next: 'http://api.example.com/users?page=2',
83
+ * last: 'http://api.example.com/users?page=5',
84
+ * pages: [
85
+ * 'http://api.example.com/users?page=1',
86
+ * 'http://api.example.com/users?page=2'
87
+ * ]
88
+ * });
89
+ *
90
+ * @param {Object} links
91
+ * @return {ServerResponse}
92
+ * @public
93
+ */
94
+
95
+ res.links = function(links) {
96
+ var link = this.get('Link') || '';
97
+ if (link) link += ', ';
98
+ return this.set('Link', link + Object.keys(links).map(function(rel) {
99
+ // Allow multiple links if links[rel] is an array
100
+ if (Array.isArray(links[rel])) {
101
+ return links[rel].map(function (singleLink) {
102
+ return `<${singleLink}>; rel="${rel}"`;
103
+ }).join(', ');
104
+ } else {
105
+ return `<${links[rel]}>; rel="${rel}"`;
106
+ }
107
+ }).join(', '));
108
+ };
109
+
110
+ /**
111
+ * Send a response.
112
+ *
113
+ * Examples:
114
+ *
115
+ * res.send(Buffer.from('wahoo'));
116
+ * res.send({ some: 'json' });
117
+ * res.send('<p>some html</p>');
118
+ *
119
+ * @param {string|number|boolean|object|Buffer} body
120
+ * @public
121
+ */
122
+
123
+ res.send = function send(body) {
124
+ var chunk = body;
125
+ var encoding;
126
+ var req = this.req;
127
+ var type;
128
+
129
+ // settings
130
+ var app = this.app;
131
+
132
+ switch (typeof chunk) {
133
+ // string defaulting to html
134
+ case 'string':
135
+ if (!this.get('Content-Type')) {
136
+ this.type('html');
137
+ }
138
+ break;
139
+ case 'boolean':
140
+ case 'number':
141
+ case 'object':
142
+ if (chunk === null) {
143
+ chunk = '';
144
+ } else if (ArrayBuffer.isView(chunk)) {
145
+ if (!this.get('Content-Type')) {
146
+ this.type('bin');
147
+ }
148
+ } else {
149
+ return this.json(chunk);
150
+ }
151
+ break;
152
+ }
153
+
154
+ // write strings in utf-8
155
+ if (typeof chunk === 'string') {
156
+ encoding = 'utf8';
157
+ type = this.get('Content-Type');
158
+
159
+ // reflect this in content-type
160
+ if (typeof type === 'string') {
161
+ this.set('Content-Type', setCharset(type, 'utf-8'));
162
+ }
163
+ }
164
+
165
+ // determine if ETag should be generated
166
+ var etagFn = app.get('etag fn')
167
+ var generateETag = !this.get('ETag') && typeof etagFn === 'function'
168
+
169
+ // populate Content-Length
170
+ var len
171
+ if (chunk !== undefined) {
172
+ if (Buffer.isBuffer(chunk)) {
173
+ // get length of Buffer
174
+ len = chunk.length
175
+ } else if (!generateETag && chunk.length < 1000) {
176
+ // just calculate length when no ETag + small chunk
177
+ len = Buffer.byteLength(chunk, encoding)
178
+ } else {
179
+ // convert chunk to Buffer and calculate
180
+ chunk = Buffer.from(chunk, encoding)
181
+ encoding = undefined;
182
+ len = chunk.length
183
+ }
184
+
185
+ this.set('Content-Length', len);
186
+ }
187
+
188
+ // populate ETag
189
+ var etag;
190
+ if (generateETag && len !== undefined) {
191
+ if ((etag = etagFn(chunk, encoding))) {
192
+ this.set('ETag', etag);
193
+ }
194
+ }
195
+
196
+ // freshness
197
+ if (req.fresh) this.status(304);
198
+
199
+ // strip irrelevant headers
200
+ if (204 === this.statusCode || 304 === this.statusCode) {
201
+ this.removeHeader('Content-Type');
202
+ this.removeHeader('Content-Length');
203
+ this.removeHeader('Transfer-Encoding');
204
+ chunk = '';
205
+ }
206
+
207
+ // alter headers for 205
208
+ if (this.statusCode === 205) {
209
+ this.set('Content-Length', '0')
210
+ this.removeHeader('Transfer-Encoding')
211
+ chunk = ''
212
+ }
213
+
214
+ if (req.method === 'HEAD') {
215
+ // skip body for HEAD
216
+ this.end();
217
+ } else {
218
+ // respond
219
+ this.end(chunk, encoding);
220
+ }
221
+
222
+ return this;
223
+ };
224
+
225
+ /**
226
+ * Send JSON response.
227
+ *
228
+ * Examples:
229
+ *
230
+ * res.json(null);
231
+ * res.json({ user: 'tj' });
232
+ *
233
+ * @param {string|number|boolean|object} obj
234
+ * @public
235
+ */
236
+
237
+ res.json = function json(obj) {
238
+ // settings
239
+ var app = this.app;
240
+ var escape = app.get('json escape')
241
+ var replacer = app.get('json replacer');
242
+ var spaces = app.get('json spaces');
243
+ var body = stringify(obj, replacer, spaces, escape)
244
+
245
+ // content-type
246
+ if (!this.get('Content-Type')) {
247
+ this.set('Content-Type', 'application/json');
248
+ }
249
+
250
+ return this.send(body);
251
+ };
252
+
253
+ /**
254
+ * Send JSON response with JSONP callback support.
255
+ *
256
+ * Examples:
257
+ *
258
+ * res.jsonp(null);
259
+ * res.jsonp({ user: 'tj' });
260
+ *
261
+ * @param {string|number|boolean|object} obj
262
+ * @public
263
+ */
264
+
265
+ res.jsonp = function jsonp(obj) {
266
+ // settings
267
+ var app = this.app;
268
+ var escape = app.get('json escape')
269
+ var replacer = app.get('json replacer');
270
+ var spaces = app.get('json spaces');
271
+ var body = stringify(obj, replacer, spaces, escape)
272
+ var callback = this.req.query[app.get('jsonp callback name')];
273
+
274
+ // content-type
275
+ if (!this.get('Content-Type')) {
276
+ this.set('X-Content-Type-Options', 'nosniff');
277
+ this.set('Content-Type', 'application/json');
278
+ }
279
+
280
+ // fixup callback
281
+ if (Array.isArray(callback)) {
282
+ callback = callback[0];
283
+ }
284
+
285
+ // jsonp
286
+ if (typeof callback === 'string' && callback.length !== 0) {
287
+ this.set('X-Content-Type-Options', 'nosniff');
288
+ this.set('Content-Type', 'text/javascript');
289
+
290
+ // restrict callback charset
291
+ callback = callback.replace(/[^\[\]\w$.]/g, '');
292
+
293
+ if (body === undefined) {
294
+ // empty argument
295
+ body = ''
296
+ } else if (typeof body === 'string') {
297
+ // replace chars not allowed in JavaScript that are in JSON
298
+ body = body
299
+ .replace(/\u2028/g, '\\u2028')
300
+ .replace(/\u2029/g, '\\u2029')
301
+ }
302
+
303
+ // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse"
304
+ // the typeof check is just to reduce client error noise
305
+ body = '/**/ typeof ' + callback + ' === \'function\' && ' + callback + '(' + body + ');';
306
+ }
307
+
308
+ return this.send(body);
309
+ };
310
+
311
+ /**
312
+ * Send given HTTP status code.
313
+ *
314
+ * Sets the response status to `statusCode` and the body of the
315
+ * response to the standard description from node's http.STATUS_CODES
316
+ * or the statusCode number if no description.
317
+ *
318
+ * Examples:
319
+ *
320
+ * res.sendStatus(200);
321
+ *
322
+ * @param {number} statusCode
323
+ * @public
324
+ */
325
+
326
+ res.sendStatus = function sendStatus(statusCode) {
327
+ var body = statuses.message[statusCode] || String(statusCode)
328
+
329
+ this.status(statusCode);
330
+ this.type('txt');
331
+
332
+ return this.send(body);
333
+ };
334
+
335
+ /**
336
+ * Transfer the file at the given `path`.
337
+ *
338
+ * Automatically sets the _Content-Type_ response header field.
339
+ * The callback `callback(err)` is invoked when the transfer is complete
340
+ * or when an error occurs. Be sure to check `res.headersSent`
341
+ * if you wish to attempt responding, as the header and some data
342
+ * may have already been transferred.
343
+ *
344
+ * Options:
345
+ *
346
+ * - `maxAge` defaulting to 0 (can be string converted by `ms`)
347
+ * - `root` root directory for relative filenames
348
+ * - `headers` object of headers to serve with file
349
+ * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them
350
+ *
351
+ * Other options are passed along to `send`.
352
+ *
353
+ * Examples:
354
+ *
355
+ * The following example illustrates how `res.sendFile()` may
356
+ * be used as an alternative for the `static()` middleware for
357
+ * dynamic situations. The code backing `res.sendFile()` is actually
358
+ * the same code, so HTTP cache support etc is identical.
359
+ *
360
+ * app.get('/user/:uid/photos/:file', function(req, res){
361
+ * var uid = req.params.uid
362
+ * , file = req.params.file;
363
+ *
364
+ * req.user.mayViewFilesFrom(uid, function(yes){
365
+ * if (yes) {
366
+ * res.sendFile('/uploads/' + uid + '/' + file);
367
+ * } else {
368
+ * res.send(403, 'Sorry! you cant see that.');
369
+ * }
370
+ * });
371
+ * });
372
+ *
373
+ * @public
374
+ */
375
+
376
+ res.sendFile = function sendFile(path, options, callback) {
377
+ var done = callback;
378
+ var req = this.req;
379
+ var res = this;
380
+ var next = req.next;
381
+ var opts = options || {};
382
+
383
+ if (!path) {
384
+ throw new TypeError('path argument is required to res.sendFile');
385
+ }
386
+
387
+ if (typeof path !== 'string') {
388
+ throw new TypeError('path must be a string to res.sendFile')
389
+ }
390
+
391
+ // support function as second arg
392
+ if (typeof options === 'function') {
393
+ done = options;
394
+ opts = {};
395
+ }
396
+
397
+ if (!opts.root && !pathIsAbsolute(path)) {
398
+ throw new TypeError('path must be absolute or specify root to res.sendFile');
399
+ }
400
+
401
+ // create file stream
402
+ var pathname = encodeURI(path);
403
+
404
+ // wire application etag option to send
405
+ opts.etag = this.app.enabled('etag');
406
+ var file = send(req, pathname, opts);
407
+
408
+ // transfer
409
+ sendfile(res, file, opts, function (err) {
410
+ if (done) return done(err);
411
+ if (err && err.code === 'EISDIR') return next();
412
+
413
+ // next() all but write errors
414
+ if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') {
415
+ next(err);
416
+ }
417
+ });
418
+ };
419
+
420
+ /**
421
+ * Transfer the file at the given `path` as an attachment.
422
+ *
423
+ * Optionally providing an alternate attachment `filename`,
424
+ * and optional callback `callback(err)`. The callback is invoked
425
+ * when the data transfer is complete, or when an error has
426
+ * occurred. Be sure to check `res.headersSent` if you plan to respond.
427
+ *
428
+ * Optionally providing an `options` object to use with `res.sendFile()`.
429
+ * This function will set the `Content-Disposition` header, overriding
430
+ * any `Content-Disposition` header passed as header options in order
431
+ * to set the attachment and filename.
432
+ *
433
+ * This method uses `res.sendFile()`.
434
+ *
435
+ * @public
436
+ */
437
+
438
+ res.download = function download (path, filename, options, callback) {
439
+ var done = callback;
440
+ var name = filename;
441
+ var opts = options || null
442
+
443
+ // support function as second or third arg
444
+ if (typeof filename === 'function') {
445
+ done = filename;
446
+ name = null;
447
+ opts = null
448
+ } else if (typeof options === 'function') {
449
+ done = options
450
+ opts = null
451
+ }
452
+
453
+ // support optional filename, where options may be in it's place
454
+ if (typeof filename === 'object' &&
455
+ (typeof options === 'function' || options === undefined)) {
456
+ name = null
457
+ opts = filename
458
+ }
459
+
460
+ // set Content-Disposition when file is sent
461
+ var headers = {
462
+ 'Content-Disposition': contentDisposition(name || path)
463
+ };
464
+
465
+ // merge user-provided headers
466
+ if (opts && opts.headers) {
467
+ var keys = Object.keys(opts.headers)
468
+ for (var i = 0; i < keys.length; i++) {
469
+ var key = keys[i]
470
+ if (key.toLowerCase() !== 'content-disposition') {
471
+ headers[key] = opts.headers[key]
472
+ }
473
+ }
474
+ }
475
+
476
+ // merge user-provided options
477
+ opts = Object.create(opts)
478
+ opts.headers = headers
479
+
480
+ // Resolve the full path for sendFile
481
+ var fullPath = !opts.root
482
+ ? resolve(path)
483
+ : path
484
+
485
+ // send file
486
+ return this.sendFile(fullPath, opts, done)
487
+ };
488
+
489
+ /**
490
+ * Set _Content-Type_ response header with `type` through `mime.contentType()`
491
+ * when it does not contain "/", or set the Content-Type to `type` otherwise.
492
+ * When no mapping is found though `mime.contentType()`, the type is set to
493
+ * "application/octet-stream".
494
+ *
495
+ * Examples:
496
+ *
497
+ * res.type('.html');
498
+ * res.type('html');
499
+ * res.type('json');
500
+ * res.type('application/json');
501
+ * res.type('png');
502
+ *
503
+ * @param {String} type
504
+ * @return {ServerResponse} for chaining
505
+ * @public
506
+ */
507
+
508
+ res.contentType =
509
+ res.type = function contentType(type) {
510
+ var ct = type.indexOf('/') === -1
511
+ ? (mime.contentType(type) || 'application/octet-stream')
512
+ : type;
513
+
514
+ return this.set('Content-Type', ct);
515
+ };
516
+
517
+ /**
518
+ * Respond to the Acceptable formats using an `obj`
519
+ * of mime-type callbacks.
520
+ *
521
+ * This method uses `req.accepted`, an array of
522
+ * acceptable types ordered by their quality values.
523
+ * When "Accept" is not present the _first_ callback
524
+ * is invoked, otherwise the first match is used. When
525
+ * no match is performed the server responds with
526
+ * 406 "Not Acceptable".
527
+ *
528
+ * Content-Type is set for you, however if you choose
529
+ * you may alter this within the callback using `res.type()`
530
+ * or `res.set('Content-Type', ...)`.
531
+ *
532
+ * res.format({
533
+ * 'text/plain': function(){
534
+ * res.send('hey');
535
+ * },
536
+ *
537
+ * 'text/html': function(){
538
+ * res.send('<p>hey</p>');
539
+ * },
540
+ *
541
+ * 'application/json': function () {
542
+ * res.send({ message: 'hey' });
543
+ * }
544
+ * });
545
+ *
546
+ * In addition to canonicalized MIME types you may
547
+ * also use extnames mapped to these types:
548
+ *
549
+ * res.format({
550
+ * text: function(){
551
+ * res.send('hey');
552
+ * },
553
+ *
554
+ * html: function(){
555
+ * res.send('<p>hey</p>');
556
+ * },
557
+ *
558
+ * json: function(){
559
+ * res.send({ message: 'hey' });
560
+ * }
561
+ * });
562
+ *
563
+ * By default Express passes an `Error`
564
+ * with a `.status` of 406 to `next(err)`
565
+ * if a match is not made. If you provide
566
+ * a `.default` callback it will be invoked
567
+ * instead.
568
+ *
569
+ * @param {Object} obj
570
+ * @return {ServerResponse} for chaining
571
+ * @public
572
+ */
573
+
574
+ res.format = function(obj){
575
+ var req = this.req;
576
+ var next = req.next;
577
+
578
+ var keys = Object.keys(obj)
579
+ .filter(function (v) { return v !== 'default' })
580
+
581
+ var key = keys.length > 0
582
+ ? req.accepts(keys)
583
+ : false;
584
+
585
+ this.vary("Accept");
586
+
587
+ if (key) {
588
+ this.set('Content-Type', normalizeType(key).value);
589
+ obj[key](req, this, next);
590
+ } else if (obj.default) {
591
+ obj.default(req, this, next)
592
+ } else {
593
+ next(createError(406, {
594
+ types: normalizeTypes(keys).map(function (o) { return o.value })
595
+ }))
596
+ }
597
+
598
+ return this;
599
+ };
600
+
601
+ /**
602
+ * Set _Content-Disposition_ header to _attachment_ with optional `filename`.
603
+ *
604
+ * @param {String} filename
605
+ * @return {ServerResponse}
606
+ * @public
607
+ */
608
+
609
+ res.attachment = function attachment(filename) {
610
+ if (filename) {
611
+ this.type(extname(filename));
612
+ }
613
+
614
+ this.set('Content-Disposition', contentDisposition(filename));
615
+
616
+ return this;
617
+ };
618
+
619
+ /**
620
+ * Append additional header `field` with value `val`.
621
+ *
622
+ * Example:
623
+ *
624
+ * res.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);
625
+ * res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');
626
+ * res.append('Warning', '199 Miscellaneous warning');
627
+ *
628
+ * @param {String} field
629
+ * @param {String|Array} val
630
+ * @return {ServerResponse} for chaining
631
+ * @public
632
+ */
633
+
634
+ res.append = function append(field, val) {
635
+ var prev = this.get(field);
636
+ var value = val;
637
+
638
+ if (prev) {
639
+ // concat the new and prev vals
640
+ value = Array.isArray(prev) ? prev.concat(val)
641
+ : Array.isArray(val) ? [prev].concat(val)
642
+ : [prev, val]
643
+ }
644
+
645
+ return this.set(field, value);
646
+ };
647
+
648
+ /**
649
+ * Set header `field` to `val`, or pass
650
+ * an object of header fields.
651
+ *
652
+ * Examples:
653
+ *
654
+ * res.set('Foo', ['bar', 'baz']);
655
+ * res.set('Accept', 'application/json');
656
+ * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
657
+ *
658
+ * Aliased as `res.header()`.
659
+ *
660
+ * When the set header is "Content-Type", the type is expanded to include
661
+ * the charset if not present using `mime.contentType()`.
662
+ *
663
+ * @param {String|Object} field
664
+ * @param {String|Array} val
665
+ * @return {ServerResponse} for chaining
666
+ * @public
667
+ */
668
+
669
+ res.set =
670
+ res.header = function header(field, val) {
671
+ if (arguments.length === 2) {
672
+ var value = Array.isArray(val)
673
+ ? val.map(String)
674
+ : String(val);
675
+
676
+ // add charset to content-type
677
+ if (field.toLowerCase() === 'content-type') {
678
+ if (Array.isArray(value)) {
679
+ throw new TypeError('Content-Type cannot be set to an Array');
680
+ }
681
+ value = mime.contentType(value)
682
+ }
683
+
684
+ this.setHeader(field, value);
685
+ } else {
686
+ for (var key in field) {
687
+ this.set(key, field[key]);
688
+ }
689
+ }
690
+ return this;
691
+ };
692
+
693
+ /**
694
+ * Get value for header `field`.
695
+ *
696
+ * @param {String} field
697
+ * @return {String}
698
+ * @public
699
+ */
700
+
701
+ res.get = function(field){
702
+ return this.getHeader(field);
703
+ };
704
+
705
+ /**
706
+ * Clear cookie `name`.
707
+ *
708
+ * @param {String} name
709
+ * @param {Object} [options]
710
+ * @return {ServerResponse} for chaining
711
+ * @public
712
+ */
713
+
714
+ res.clearCookie = function clearCookie(name, options) {
715
+ // Force cookie expiration by setting expires to the past
716
+ const opts = { path: '/', ...options, expires: new Date(1)};
717
+ // ensure maxAge is not passed
718
+ delete opts.maxAge
719
+
720
+ return this.cookie(name, '', opts);
721
+ };
722
+
723
+ /**
724
+ * Set cookie `name` to `value`, with the given `options`.
725
+ *
726
+ * Options:
727
+ *
728
+ * - `maxAge` max-age in milliseconds, converted to `expires`
729
+ * - `signed` sign the cookie
730
+ * - `path` defaults to "/"
731
+ *
732
+ * Examples:
733
+ *
734
+ * // "Remember Me" for 15 minutes
735
+ * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });
736
+ *
737
+ * // same as above
738
+ * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })
739
+ *
740
+ * @param {String} name
741
+ * @param {String|Object} value
742
+ * @param {Object} [options]
743
+ * @return {ServerResponse} for chaining
744
+ * @public
745
+ */
746
+
747
+ res.cookie = function (name, value, options) {
748
+ var opts = { ...options };
749
+ var secret = this.req.secret;
750
+ var signed = opts.signed;
751
+
752
+ if (signed && !secret) {
753
+ throw new Error('cookieParser("secret") required for signed cookies');
754
+ }
755
+
756
+ var val = typeof value === 'object'
757
+ ? 'j:' + JSON.stringify(value)
758
+ : String(value);
759
+
760
+ if (signed) {
761
+ val = 's:' + sign(val, secret);
762
+ }
763
+
764
+ if (opts.maxAge != null) {
765
+ var maxAge = opts.maxAge - 0
766
+
767
+ if (!isNaN(maxAge)) {
768
+ opts.expires = new Date(Date.now() + maxAge)
769
+ opts.maxAge = Math.floor(maxAge / 1000)
770
+ }
771
+ }
772
+
773
+ if (opts.path == null) {
774
+ opts.path = '/';
775
+ }
776
+
777
+ this.append('Set-Cookie', cookie.serialize(name, String(val), opts));
778
+
779
+ return this;
780
+ };
781
+
782
+ /**
783
+ * Set the location header to `url`.
784
+ *
785
+ * The given `url` can also be "back", which redirects
786
+ * to the _Referrer_ or _Referer_ headers or "/".
787
+ *
788
+ * Examples:
789
+ *
790
+ * res.location('/foo/bar').;
791
+ * res.location('http://example.com');
792
+ * res.location('../login');
793
+ *
794
+ * @param {String} url
795
+ * @return {ServerResponse} for chaining
796
+ * @public
797
+ */
798
+
799
+ res.location = function location(url) {
800
+ return this.set('Location', encodeUrl(url));
801
+ };
802
+
803
+ /**
804
+ * Redirect to the given `url` with optional response `status`
805
+ * defaulting to 302.
806
+ *
807
+ * Examples:
808
+ *
809
+ * res.redirect('/foo/bar');
810
+ * res.redirect('http://example.com');
811
+ * res.redirect(301, 'http://example.com');
812
+ * res.redirect('../login'); // /blog/post/1 -> /blog/login
813
+ *
814
+ * @public
815
+ */
816
+
817
+ res.redirect = function redirect(url) {
818
+ var address = url;
819
+ var body;
820
+ var status = 302;
821
+
822
+ // allow status / url
823
+ if (arguments.length === 2) {
824
+ status = arguments[0]
825
+ address = arguments[1]
826
+ }
827
+
828
+ // Set location header
829
+ address = this.location(address).get('Location');
830
+
831
+ // Support text/{plain,html} by default
832
+ this.format({
833
+ text: function(){
834
+ body = statuses.message[status] + '. Redirecting to ' + address
835
+ },
836
+
837
+ html: function(){
838
+ var u = escapeHtml(address);
839
+ body = '<p>' + statuses.message[status] + '. Redirecting to ' + u + '</p>'
840
+ },
841
+
842
+ default: function(){
843
+ body = '';
844
+ }
845
+ });
846
+
847
+ // Respond
848
+ this.status(status);
849
+ this.set('Content-Length', Buffer.byteLength(body));
850
+
851
+ if (this.req.method === 'HEAD') {
852
+ this.end();
853
+ } else {
854
+ this.end(body);
855
+ }
856
+ };
857
+
858
+ /**
859
+ * Add `field` to Vary. If already present in the Vary set, then
860
+ * this call is simply ignored.
861
+ *
862
+ * @param {Array|String} field
863
+ * @return {ServerResponse} for chaining
864
+ * @public
865
+ */
866
+
867
+ res.vary = function(field){
868
+ vary(this, field);
869
+
870
+ return this;
871
+ };
872
+
873
+ /**
874
+ * Render `view` with the given `options` and optional callback `fn`.
875
+ * When a callback function is given a response will _not_ be made
876
+ * automatically, otherwise a response of _200_ and _text/html_ is given.
877
+ *
878
+ * Options:
879
+ *
880
+ * - `cache` boolean hinting to the engine it should cache
881
+ * - `filename` filename of the view being rendered
882
+ *
883
+ * @public
884
+ */
885
+
886
+ res.render = function render(view, options, callback) {
887
+ var app = this.req.app;
888
+ var done = callback;
889
+ var opts = options || {};
890
+ var req = this.req;
891
+ var self = this;
892
+
893
+ // support callback function as second arg
894
+ if (typeof options === 'function') {
895
+ done = options;
896
+ opts = {};
897
+ }
898
+
899
+ // merge res.locals
900
+ opts._locals = self.locals;
901
+
902
+ // default callback to respond
903
+ done = done || function (err, str) {
904
+ if (err) return req.next(err);
905
+ self.send(str);
906
+ };
907
+
908
+ // render
909
+ app.render(view, opts, done);
910
+ };
911
+
912
+ // pipe the send file stream
913
+ function sendfile(res, file, options, callback) {
914
+ var done = false;
915
+ var streaming;
916
+
917
+ // request aborted
918
+ function onaborted() {
919
+ if (done) return;
920
+ done = true;
921
+
922
+ var err = new Error('Request aborted');
923
+ err.code = 'ECONNABORTED';
924
+ callback(err);
925
+ }
926
+
927
+ // directory
928
+ function ondirectory() {
929
+ if (done) return;
930
+ done = true;
931
+
932
+ var err = new Error('EISDIR, read');
933
+ err.code = 'EISDIR';
934
+ callback(err);
935
+ }
936
+
937
+ // errors
938
+ function onerror(err) {
939
+ if (done) return;
940
+ done = true;
941
+ callback(err);
942
+ }
943
+
944
+ // ended
945
+ function onend() {
946
+ if (done) return;
947
+ done = true;
948
+ callback();
949
+ }
950
+
951
+ // file
952
+ function onfile() {
953
+ streaming = false;
954
+ }
955
+
956
+ // finished
957
+ function onfinish(err) {
958
+ if (err && err.code === 'ECONNRESET') return onaborted();
959
+ if (err) return onerror(err);
960
+ if (done) return;
961
+
962
+ setImmediate(function () {
963
+ if (streaming !== false && !done) {
964
+ onaborted();
965
+ return;
966
+ }
967
+
968
+ if (done) return;
969
+ done = true;
970
+ callback();
971
+ });
972
+ }
973
+
974
+ // streaming
975
+ function onstream() {
976
+ streaming = true;
977
+ }
978
+
979
+ file.on('directory', ondirectory);
980
+ file.on('end', onend);
981
+ file.on('error', onerror);
982
+ file.on('file', onfile);
983
+ file.on('stream', onstream);
984
+ onFinished(res, onfinish);
985
+
986
+ if (options.headers) {
987
+ // set headers on successful transfer
988
+ file.on('headers', function headers(res) {
989
+ var obj = options.headers;
990
+ var keys = Object.keys(obj);
991
+
992
+ for (var i = 0; i < keys.length; i++) {
993
+ var k = keys[i];
994
+ res.setHeader(k, obj[k]);
995
+ }
996
+ });
997
+ }
998
+
999
+ // pipe
1000
+ file.pipe(res);
1001
+ }
1002
+
1003
+ /**
1004
+ * Stringify JSON, like JSON.stringify, but v8 optimized, with the
1005
+ * ability to escape characters that can trigger HTML sniffing.
1006
+ *
1007
+ * @param {*} value
1008
+ * @param {function} replacer
1009
+ * @param {number} spaces
1010
+ * @param {boolean} escape
1011
+ * @returns {string}
1012
+ * @private
1013
+ */
1014
+
1015
+ function stringify (value, replacer, spaces, escape) {
1016
+ // v8 checks arguments.length for optimizing simple call
1017
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4730
1018
+ var json = replacer || spaces
1019
+ ? JSON.stringify(value, replacer, spaces)
1020
+ : JSON.stringify(value);
1021
+
1022
+ if (escape && typeof json === 'string') {
1023
+ json = json.replace(/[<>&]/g, function (c) {
1024
+ switch (c.charCodeAt(0)) {
1025
+ case 0x3c:
1026
+ return '\\u003c'
1027
+ case 0x3e:
1028
+ return '\\u003e'
1029
+ case 0x26:
1030
+ return '\\u0026'
1031
+ /* istanbul ignore next: unreachable default */
1032
+ default:
1033
+ return c
1034
+ }
1035
+ })
1036
+ }
1037
+
1038
+ return json
1039
+ }