es6-crawler-detect 3.1.0 → 3.2.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 (351) hide show
  1. package/.babelrc +2 -1
  2. package/.eslintignore +6 -0
  3. package/.eslintrc.json +30 -0
  4. package/.github/ISSUE_TEMPLATE/bug_report.md +11 -8
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +1 -1
  6. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +29 -0
  7. package/.prettierrc.json +5 -0
  8. package/README.md +27 -17
  9. package/dist/main.bundle.js +1 -1
  10. package/example/node/dist/crawler.min.js +1 -1
  11. package/example/node/node_modules/.bin/mime +15 -0
  12. package/example/node/node_modules/.bin/mime.cmd +7 -0
  13. package/example/node/node_modules/.yarn-integrity +67 -0
  14. package/example/node/node_modules/accepts/HISTORY.md +236 -0
  15. package/example/node/node_modules/accepts/LICENSE +23 -0
  16. package/example/node/node_modules/accepts/README.md +142 -0
  17. package/example/node/node_modules/accepts/index.js +238 -0
  18. package/example/node/node_modules/accepts/package.json +47 -0
  19. package/example/node/node_modules/array-flatten/LICENSE +21 -0
  20. package/example/node/node_modules/array-flatten/README.md +43 -0
  21. package/example/node/node_modules/array-flatten/array-flatten.js +64 -0
  22. package/example/node/node_modules/array-flatten/package.json +39 -0
  23. package/example/node/node_modules/body-parser/HISTORY.md +624 -0
  24. package/example/node/node_modules/body-parser/LICENSE +23 -0
  25. package/example/node/node_modules/body-parser/README.md +456 -0
  26. package/example/node/node_modules/body-parser/index.js +157 -0
  27. package/example/node/node_modules/body-parser/lib/read.js +181 -0
  28. package/example/node/node_modules/body-parser/lib/types/json.js +230 -0
  29. package/example/node/node_modules/body-parser/lib/types/raw.js +101 -0
  30. package/example/node/node_modules/body-parser/lib/types/text.js +121 -0
  31. package/example/node/node_modules/body-parser/lib/types/urlencoded.js +284 -0
  32. package/example/node/node_modules/body-parser/package.json +52 -0
  33. package/example/node/node_modules/bytes/History.md +92 -0
  34. package/example/node/node_modules/bytes/LICENSE +23 -0
  35. package/example/node/node_modules/bytes/Readme.md +152 -0
  36. package/example/node/node_modules/bytes/index.js +166 -0
  37. package/example/node/node_modules/bytes/package.json +42 -0
  38. package/example/node/node_modules/content-disposition/HISTORY.md +60 -0
  39. package/example/node/node_modules/content-disposition/LICENSE +22 -0
  40. package/example/node/node_modules/content-disposition/README.md +142 -0
  41. package/example/node/node_modules/content-disposition/index.js +458 -0
  42. package/example/node/node_modules/content-disposition/package.json +44 -0
  43. package/example/node/node_modules/content-type/HISTORY.md +24 -0
  44. package/example/node/node_modules/content-type/LICENSE +22 -0
  45. package/example/node/node_modules/content-type/README.md +92 -0
  46. package/example/node/node_modules/content-type/index.js +222 -0
  47. package/example/node/node_modules/content-type/package.json +40 -0
  48. package/example/node/node_modules/cookie/HISTORY.md +128 -0
  49. package/example/node/node_modules/cookie/LICENSE +24 -0
  50. package/example/node/node_modules/cookie/README.md +257 -0
  51. package/example/node/node_modules/cookie/index.js +202 -0
  52. package/example/node/node_modules/cookie/package.json +40 -0
  53. package/example/node/node_modules/cookie-signature/History.md +38 -0
  54. package/example/node/node_modules/cookie-signature/Readme.md +42 -0
  55. package/example/node/node_modules/cookie-signature/index.js +51 -0
  56. package/example/node/node_modules/cookie-signature/package.json +18 -0
  57. package/example/node/node_modules/debug/.coveralls.yml +1 -0
  58. package/example/node/node_modules/debug/.eslintrc +11 -0
  59. package/example/node/node_modules/debug/.travis.yml +14 -0
  60. package/example/node/node_modules/debug/CHANGELOG.md +362 -0
  61. package/example/node/node_modules/debug/LICENSE +19 -0
  62. package/example/node/node_modules/debug/Makefile +50 -0
  63. package/example/node/node_modules/debug/README.md +312 -0
  64. package/example/node/node_modules/debug/component.json +19 -0
  65. package/example/node/node_modules/debug/karma.conf.js +70 -0
  66. package/example/node/node_modules/debug/node.js +1 -0
  67. package/example/node/node_modules/debug/package.json +49 -0
  68. package/example/node/node_modules/debug/src/browser.js +185 -0
  69. package/example/node/node_modules/debug/src/debug.js +202 -0
  70. package/example/node/node_modules/debug/src/index.js +10 -0
  71. package/example/node/node_modules/debug/src/inspector-log.js +15 -0
  72. package/example/node/node_modules/debug/src/node.js +248 -0
  73. package/example/node/node_modules/depd/History.md +96 -0
  74. package/example/node/node_modules/depd/LICENSE +22 -0
  75. package/example/node/node_modules/depd/Readme.md +280 -0
  76. package/example/node/node_modules/depd/index.js +522 -0
  77. package/example/node/node_modules/depd/lib/browser/index.js +77 -0
  78. package/example/node/node_modules/depd/lib/compat/callsite-tostring.js +103 -0
  79. package/example/node/node_modules/depd/lib/compat/event-listener-count.js +22 -0
  80. package/example/node/node_modules/depd/lib/compat/index.js +79 -0
  81. package/example/node/node_modules/depd/package.json +41 -0
  82. package/example/node/node_modules/destroy/LICENSE +22 -0
  83. package/example/node/node_modules/destroy/README.md +60 -0
  84. package/example/node/node_modules/destroy/index.js +75 -0
  85. package/example/node/node_modules/destroy/package.json +37 -0
  86. package/example/node/node_modules/ee-first/LICENSE +22 -0
  87. package/example/node/node_modules/ee-first/README.md +80 -0
  88. package/example/node/node_modules/ee-first/index.js +95 -0
  89. package/example/node/node_modules/ee-first/package.json +29 -0
  90. package/example/node/node_modules/encodeurl/HISTORY.md +14 -0
  91. package/example/node/node_modules/encodeurl/LICENSE +22 -0
  92. package/example/node/node_modules/encodeurl/README.md +128 -0
  93. package/example/node/node_modules/encodeurl/index.js +60 -0
  94. package/example/node/node_modules/encodeurl/package.json +40 -0
  95. package/example/node/node_modules/escape-html/LICENSE +24 -0
  96. package/example/node/node_modules/escape-html/Readme.md +43 -0
  97. package/example/node/node_modules/escape-html/index.js +78 -0
  98. package/example/node/node_modules/escape-html/package.json +24 -0
  99. package/example/node/node_modules/etag/HISTORY.md +83 -0
  100. package/example/node/node_modules/etag/LICENSE +22 -0
  101. package/example/node/node_modules/etag/README.md +159 -0
  102. package/example/node/node_modules/etag/index.js +131 -0
  103. package/example/node/node_modules/etag/package.json +47 -0
  104. package/example/node/node_modules/express/History.md +3510 -0
  105. package/example/node/node_modules/express/LICENSE +24 -0
  106. package/example/node/node_modules/express/Readme.md +158 -0
  107. package/example/node/node_modules/express/index.js +11 -0
  108. package/example/node/node_modules/express/lib/application.js +644 -0
  109. package/example/node/node_modules/express/lib/express.js +116 -0
  110. package/example/node/node_modules/express/lib/middleware/init.js +43 -0
  111. package/example/node/node_modules/express/lib/middleware/query.js +47 -0
  112. package/example/node/node_modules/express/lib/request.js +525 -0
  113. package/example/node/node_modules/express/lib/response.js +1147 -0
  114. package/example/node/node_modules/express/lib/router/index.js +668 -0
  115. package/example/node/node_modules/express/lib/router/layer.js +181 -0
  116. package/example/node/node_modules/express/lib/router/route.js +216 -0
  117. package/example/node/node_modules/express/lib/utils.js +302 -0
  118. package/example/node/node_modules/express/lib/view.js +182 -0
  119. package/example/node/node_modules/express/package.json +99 -0
  120. package/example/node/node_modules/finalhandler/HISTORY.md +187 -0
  121. package/example/node/node_modules/finalhandler/LICENSE +22 -0
  122. package/example/node/node_modules/finalhandler/README.md +148 -0
  123. package/example/node/node_modules/finalhandler/index.js +331 -0
  124. package/example/node/node_modules/finalhandler/package.json +45 -0
  125. package/example/node/node_modules/forwarded/HISTORY.md +21 -0
  126. package/example/node/node_modules/forwarded/LICENSE +22 -0
  127. package/example/node/node_modules/forwarded/README.md +57 -0
  128. package/example/node/node_modules/forwarded/index.js +90 -0
  129. package/example/node/node_modules/forwarded/package.json +45 -0
  130. package/example/node/node_modules/fresh/HISTORY.md +70 -0
  131. package/example/node/node_modules/fresh/LICENSE +23 -0
  132. package/example/node/node_modules/fresh/README.md +119 -0
  133. package/example/node/node_modules/fresh/index.js +137 -0
  134. package/example/node/node_modules/fresh/package.json +46 -0
  135. package/example/node/node_modules/http-errors/HISTORY.md +165 -0
  136. package/example/node/node_modules/http-errors/LICENSE +23 -0
  137. package/example/node/node_modules/http-errors/README.md +169 -0
  138. package/example/node/node_modules/http-errors/index.js +299 -0
  139. package/example/node/node_modules/http-errors/package.json +49 -0
  140. package/example/node/node_modules/iconv-lite/Changelog.md +162 -0
  141. package/example/node/node_modules/iconv-lite/LICENSE +21 -0
  142. package/example/node/node_modules/iconv-lite/README.md +156 -0
  143. package/example/node/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
  144. package/example/node/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
  145. package/example/node/node_modules/iconv-lite/encodings/index.js +22 -0
  146. package/example/node/node_modules/iconv-lite/encodings/internal.js +188 -0
  147. package/example/node/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
  148. package/example/node/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  149. package/example/node/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
  150. package/example/node/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  151. package/example/node/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  152. package/example/node/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  153. package/example/node/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  154. package/example/node/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  155. package/example/node/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  156. package/example/node/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
  157. package/example/node/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  158. package/example/node/node_modules/iconv-lite/encodings/utf16.js +177 -0
  159. package/example/node/node_modules/iconv-lite/encodings/utf7.js +290 -0
  160. package/example/node/node_modules/iconv-lite/lib/bom-handling.js +52 -0
  161. package/example/node/node_modules/iconv-lite/lib/extend-node.js +217 -0
  162. package/example/node/node_modules/iconv-lite/lib/index.d.ts +24 -0
  163. package/example/node/node_modules/iconv-lite/lib/index.js +153 -0
  164. package/example/node/node_modules/iconv-lite/lib/streams.js +121 -0
  165. package/example/node/node_modules/iconv-lite/package.json +46 -0
  166. package/example/node/node_modules/inherits/LICENSE +16 -0
  167. package/example/node/node_modules/inherits/README.md +42 -0
  168. package/example/node/node_modules/inherits/inherits.js +9 -0
  169. package/example/node/node_modules/inherits/inherits_browser.js +27 -0
  170. package/example/node/node_modules/inherits/package.json +29 -0
  171. package/example/node/node_modules/ipaddr.js/LICENSE +19 -0
  172. package/example/node/node_modules/ipaddr.js/README.md +233 -0
  173. package/example/node/node_modules/ipaddr.js/ipaddr.min.js +1 -0
  174. package/example/node/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
  175. package/example/node/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
  176. package/example/node/node_modules/ipaddr.js/package.json +35 -0
  177. package/example/node/node_modules/media-typer/HISTORY.md +22 -0
  178. package/example/node/node_modules/media-typer/LICENSE +22 -0
  179. package/example/node/node_modules/media-typer/README.md +81 -0
  180. package/example/node/node_modules/media-typer/index.js +270 -0
  181. package/example/node/node_modules/media-typer/package.json +26 -0
  182. package/example/node/node_modules/merge-descriptors/HISTORY.md +21 -0
  183. package/example/node/node_modules/merge-descriptors/LICENSE +23 -0
  184. package/example/node/node_modules/merge-descriptors/README.md +48 -0
  185. package/example/node/node_modules/merge-descriptors/index.js +60 -0
  186. package/example/node/node_modules/merge-descriptors/package.json +32 -0
  187. package/example/node/node_modules/methods/HISTORY.md +29 -0
  188. package/example/node/node_modules/methods/LICENSE +24 -0
  189. package/example/node/node_modules/methods/README.md +51 -0
  190. package/example/node/node_modules/methods/index.js +69 -0
  191. package/example/node/node_modules/methods/package.json +36 -0
  192. package/example/node/node_modules/mime/CHANGELOG.md +164 -0
  193. package/example/node/node_modules/mime/LICENSE +21 -0
  194. package/example/node/node_modules/mime/README.md +90 -0
  195. package/example/node/node_modules/mime/cli.js +8 -0
  196. package/example/node/node_modules/mime/mime.js +108 -0
  197. package/example/node/node_modules/mime/package.json +44 -0
  198. package/example/node/node_modules/mime/src/build.js +53 -0
  199. package/example/node/node_modules/mime/src/test.js +60 -0
  200. package/example/node/node_modules/mime/types.json +1 -0
  201. package/example/node/node_modules/mime-db/HISTORY.md +499 -0
  202. package/example/node/node_modules/mime-db/LICENSE +22 -0
  203. package/example/node/node_modules/mime-db/README.md +100 -0
  204. package/example/node/node_modules/mime-db/db.json +8471 -0
  205. package/example/node/node_modules/mime-db/index.js +11 -0
  206. package/example/node/node_modules/mime-db/package.json +59 -0
  207. package/example/node/node_modules/mime-types/HISTORY.md +388 -0
  208. package/example/node/node_modules/mime-types/LICENSE +23 -0
  209. package/example/node/node_modules/mime-types/README.md +113 -0
  210. package/example/node/node_modules/mime-types/index.js +188 -0
  211. package/example/node/node_modules/mime-types/package.json +44 -0
  212. package/example/node/node_modules/ms/index.js +152 -0
  213. package/example/node/node_modules/ms/license.md +21 -0
  214. package/example/node/node_modules/ms/package.json +37 -0
  215. package/example/node/node_modules/ms/readme.md +51 -0
  216. package/example/node/node_modules/negotiator/HISTORY.md +103 -0
  217. package/example/node/node_modules/negotiator/LICENSE +24 -0
  218. package/example/node/node_modules/negotiator/README.md +203 -0
  219. package/example/node/node_modules/negotiator/index.js +124 -0
  220. package/example/node/node_modules/negotiator/lib/charset.js +169 -0
  221. package/example/node/node_modules/negotiator/lib/encoding.js +184 -0
  222. package/example/node/node_modules/negotiator/lib/language.js +179 -0
  223. package/example/node/node_modules/negotiator/lib/mediaType.js +294 -0
  224. package/example/node/node_modules/negotiator/package.json +42 -0
  225. package/example/node/node_modules/on-finished/HISTORY.md +88 -0
  226. package/example/node/node_modules/on-finished/LICENSE +23 -0
  227. package/example/node/node_modules/on-finished/README.md +154 -0
  228. package/example/node/node_modules/on-finished/index.js +196 -0
  229. package/example/node/node_modules/on-finished/package.json +31 -0
  230. package/example/node/node_modules/parseurl/HISTORY.md +58 -0
  231. package/example/node/node_modules/parseurl/LICENSE +24 -0
  232. package/example/node/node_modules/parseurl/README.md +133 -0
  233. package/example/node/node_modules/parseurl/index.js +158 -0
  234. package/example/node/node_modules/parseurl/package.json +40 -0
  235. package/example/node/node_modules/path-to-regexp/History.md +36 -0
  236. package/example/node/node_modules/path-to-regexp/LICENSE +21 -0
  237. package/example/node/node_modules/path-to-regexp/Readme.md +35 -0
  238. package/example/node/node_modules/path-to-regexp/index.js +129 -0
  239. package/example/node/node_modules/path-to-regexp/package.json +30 -0
  240. package/example/node/node_modules/proxy-addr/HISTORY.md +161 -0
  241. package/example/node/node_modules/proxy-addr/LICENSE +22 -0
  242. package/example/node/node_modules/proxy-addr/README.md +139 -0
  243. package/example/node/node_modules/proxy-addr/index.js +327 -0
  244. package/example/node/node_modules/proxy-addr/package.json +47 -0
  245. package/example/node/node_modules/qs/.editorconfig +39 -0
  246. package/example/node/node_modules/qs/.eslintignore +2 -0
  247. package/example/node/node_modules/qs/.eslintrc +35 -0
  248. package/example/node/node_modules/qs/.github/FUNDING.yml +12 -0
  249. package/example/node/node_modules/qs/.nycrc +13 -0
  250. package/example/node/node_modules/qs/CHANGELOG.md +359 -0
  251. package/example/node/node_modules/qs/LICENSE.md +29 -0
  252. package/example/node/node_modules/qs/README.md +604 -0
  253. package/example/node/node_modules/qs/dist/qs.js +832 -0
  254. package/example/node/node_modules/qs/lib/formats.js +23 -0
  255. package/example/node/node_modules/qs/lib/index.js +11 -0
  256. package/example/node/node_modules/qs/lib/parse.js +257 -0
  257. package/example/node/node_modules/qs/lib/stringify.js +278 -0
  258. package/example/node/node_modules/qs/lib/utils.js +251 -0
  259. package/example/node/node_modules/qs/package.json +69 -0
  260. package/example/node/node_modules/qs/test/parse.js +772 -0
  261. package/example/node/node_modules/qs/test/stringify.js +793 -0
  262. package/example/node/node_modules/qs/test/utils.js +136 -0
  263. package/example/node/node_modules/range-parser/HISTORY.md +56 -0
  264. package/example/node/node_modules/range-parser/LICENSE +23 -0
  265. package/example/node/node_modules/range-parser/README.md +84 -0
  266. package/example/node/node_modules/range-parser/index.js +162 -0
  267. package/example/node/node_modules/range-parser/package.json +44 -0
  268. package/example/node/node_modules/raw-body/HISTORY.md +284 -0
  269. package/example/node/node_modules/raw-body/LICENSE +22 -0
  270. package/example/node/node_modules/raw-body/README.md +217 -0
  271. package/example/node/node_modules/raw-body/index.d.ts +87 -0
  272. package/example/node/node_modules/raw-body/index.js +286 -0
  273. package/example/node/node_modules/raw-body/package.json +48 -0
  274. package/example/node/node_modules/safe-buffer/LICENSE +21 -0
  275. package/example/node/node_modules/safe-buffer/README.md +584 -0
  276. package/example/node/node_modules/safe-buffer/index.d.ts +187 -0
  277. package/example/node/node_modules/safe-buffer/index.js +65 -0
  278. package/example/node/node_modules/safe-buffer/package.json +51 -0
  279. package/example/node/node_modules/safer-buffer/LICENSE +21 -0
  280. package/example/node/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  281. package/example/node/node_modules/safer-buffer/Readme.md +156 -0
  282. package/example/node/node_modules/safer-buffer/dangerous.js +58 -0
  283. package/example/node/node_modules/safer-buffer/package.json +34 -0
  284. package/example/node/node_modules/safer-buffer/safer.js +77 -0
  285. package/example/node/node_modules/safer-buffer/tests.js +406 -0
  286. package/example/node/node_modules/send/HISTORY.md +506 -0
  287. package/example/node/node_modules/send/LICENSE +23 -0
  288. package/example/node/node_modules/send/README.md +327 -0
  289. package/example/node/node_modules/send/index.js +1133 -0
  290. package/example/node/node_modules/send/node_modules/.bin/mime +15 -0
  291. package/example/node/node_modules/send/node_modules/.bin/mime.cmd +7 -0
  292. package/example/node/node_modules/send/node_modules/ms/index.js +162 -0
  293. package/example/node/node_modules/send/node_modules/ms/license.md +21 -0
  294. package/example/node/node_modules/send/node_modules/ms/package.json +38 -0
  295. package/example/node/node_modules/send/node_modules/ms/readme.md +59 -0
  296. package/example/node/node_modules/send/package.json +61 -0
  297. package/example/node/node_modules/serve-static/HISTORY.md +459 -0
  298. package/example/node/node_modules/serve-static/LICENSE +25 -0
  299. package/example/node/node_modules/serve-static/README.md +257 -0
  300. package/example/node/node_modules/serve-static/index.js +210 -0
  301. package/example/node/node_modules/serve-static/package.json +42 -0
  302. package/example/node/node_modules/setprototypeof/LICENSE +13 -0
  303. package/example/node/node_modules/setprototypeof/README.md +31 -0
  304. package/example/node/node_modules/setprototypeof/index.d.ts +2 -0
  305. package/example/node/node_modules/setprototypeof/index.js +17 -0
  306. package/example/node/node_modules/setprototypeof/package.json +38 -0
  307. package/example/node/node_modules/setprototypeof/test/index.js +24 -0
  308. package/example/node/node_modules/statuses/HISTORY.md +65 -0
  309. package/example/node/node_modules/statuses/LICENSE +23 -0
  310. package/example/node/node_modules/statuses/README.md +127 -0
  311. package/example/node/node_modules/statuses/codes.json +66 -0
  312. package/example/node/node_modules/statuses/index.js +113 -0
  313. package/example/node/node_modules/statuses/package.json +48 -0
  314. package/example/node/node_modules/toidentifier/HISTORY.md +9 -0
  315. package/example/node/node_modules/toidentifier/LICENSE +21 -0
  316. package/example/node/node_modules/toidentifier/README.md +61 -0
  317. package/example/node/node_modules/toidentifier/index.js +32 -0
  318. package/example/node/node_modules/toidentifier/package.json +38 -0
  319. package/example/node/node_modules/type-is/HISTORY.md +259 -0
  320. package/example/node/node_modules/type-is/LICENSE +23 -0
  321. package/example/node/node_modules/type-is/README.md +170 -0
  322. package/example/node/node_modules/type-is/index.js +266 -0
  323. package/example/node/node_modules/type-is/package.json +45 -0
  324. package/example/node/node_modules/unpipe/HISTORY.md +4 -0
  325. package/example/node/node_modules/unpipe/LICENSE +22 -0
  326. package/example/node/node_modules/unpipe/README.md +43 -0
  327. package/example/node/node_modules/unpipe/index.js +69 -0
  328. package/example/node/node_modules/unpipe/package.json +27 -0
  329. package/example/node/node_modules/utils-merge/LICENSE +20 -0
  330. package/example/node/node_modules/utils-merge/README.md +34 -0
  331. package/example/node/node_modules/utils-merge/index.js +23 -0
  332. package/example/node/node_modules/utils-merge/package.json +40 -0
  333. package/example/node/node_modules/vary/HISTORY.md +39 -0
  334. package/example/node/node_modules/vary/LICENSE +22 -0
  335. package/example/node/node_modules/vary/README.md +101 -0
  336. package/example/node/node_modules/vary/index.js +149 -0
  337. package/example/node/node_modules/vary/package.json +43 -0
  338. package/example/node/package.json +11 -0
  339. package/example/node/server.js +32 -26
  340. package/example/node/yarn.lock +352 -0
  341. package/package.json +30 -19
  342. package/src/index.js +16 -10
  343. package/src/lib/crawler/crawlers.js +1402 -15
  344. package/src/lib/crawler/exclusions.js +62 -15
  345. package/src/lib/crawler/headers.js +24 -15
  346. package/src/lib/crawler/provider.js +11 -13
  347. package/src/lib/crawler.js +135 -139
  348. package/test/lib/crawler.test.js +52 -35
  349. package/webpack.common.js +20 -20
  350. package/webpack.dev.js +7 -7
  351. package/webpack.prod.js +14 -15
@@ -0,0 +1,3510 @@
1
+ 4.17.2 / 2021-12-16
2
+ ===================
3
+
4
+ * Fix handling of `undefined` in `res.jsonp`
5
+ * Fix handling of `undefined` when `"json escape"` is enabled
6
+ * Fix incorrect middleware execution with unanchored `RegExp`s
7
+ * Fix `res.jsonp(obj, status)` deprecation message
8
+ * Fix typo in `res.is` JSDoc
9
+ * deps: body-parser@1.19.1
10
+ - deps: bytes@3.1.1
11
+ - deps: http-errors@1.8.1
12
+ - deps: qs@6.9.6
13
+ - deps: raw-body@2.4.2
14
+ - deps: safe-buffer@5.2.1
15
+ - deps: type-is@~1.6.18
16
+ * deps: content-disposition@0.5.4
17
+ - deps: safe-buffer@5.2.1
18
+ * deps: cookie@0.4.1
19
+ - Fix `maxAge` option to reject invalid values
20
+ * deps: proxy-addr@~2.0.7
21
+ - Use `req.socket` over deprecated `req.connection`
22
+ - deps: forwarded@0.2.0
23
+ - deps: ipaddr.js@1.9.1
24
+ * deps: qs@6.9.6
25
+ * deps: safe-buffer@5.2.1
26
+ * deps: send@0.17.2
27
+ - deps: http-errors@1.8.1
28
+ - deps: ms@2.1.3
29
+ - pref: ignore empty http tokens
30
+ * deps: serve-static@1.14.2
31
+ - deps: send@0.17.2
32
+ * deps: setprototypeof@1.2.0
33
+
34
+ 4.17.1 / 2019-05-25
35
+ ===================
36
+
37
+ * Revert "Improve error message for `null`/`undefined` to `res.status`"
38
+
39
+ 4.17.0 / 2019-05-16
40
+ ===================
41
+
42
+ * Add `express.raw` to parse bodies into `Buffer`
43
+ * Add `express.text` to parse bodies into string
44
+ * Improve error message for non-strings to `res.sendFile`
45
+ * Improve error message for `null`/`undefined` to `res.status`
46
+ * Support multiple hosts in `X-Forwarded-Host`
47
+ * deps: accepts@~1.3.7
48
+ * deps: body-parser@1.19.0
49
+ - Add encoding MIK
50
+ - Add petabyte (`pb`) support
51
+ - Fix parsing array brackets after index
52
+ - deps: bytes@3.1.0
53
+ - deps: http-errors@1.7.2
54
+ - deps: iconv-lite@0.4.24
55
+ - deps: qs@6.7.0
56
+ - deps: raw-body@2.4.0
57
+ - deps: type-is@~1.6.17
58
+ * deps: content-disposition@0.5.3
59
+ * deps: cookie@0.4.0
60
+ - Add `SameSite=None` support
61
+ * deps: finalhandler@~1.1.2
62
+ - Set stricter `Content-Security-Policy` header
63
+ - deps: parseurl@~1.3.3
64
+ - deps: statuses@~1.5.0
65
+ * deps: parseurl@~1.3.3
66
+ * deps: proxy-addr@~2.0.5
67
+ - deps: ipaddr.js@1.9.0
68
+ * deps: qs@6.7.0
69
+ - Fix parsing array brackets after index
70
+ * deps: range-parser@~1.2.1
71
+ * deps: send@0.17.1
72
+ - Set stricter CSP header in redirect & error responses
73
+ - deps: http-errors@~1.7.2
74
+ - deps: mime@1.6.0
75
+ - deps: ms@2.1.1
76
+ - deps: range-parser@~1.2.1
77
+ - deps: statuses@~1.5.0
78
+ - perf: remove redundant `path.normalize` call
79
+ * deps: serve-static@1.14.1
80
+ - Set stricter CSP header in redirect response
81
+ - deps: parseurl@~1.3.3
82
+ - deps: send@0.17.1
83
+ * deps: setprototypeof@1.1.1
84
+ * deps: statuses@~1.5.0
85
+ - Add `103 Early Hints`
86
+ * deps: type-is@~1.6.18
87
+ - deps: mime-types@~2.1.24
88
+ - perf: prevent internal `throw` on invalid type
89
+
90
+ 4.16.4 / 2018-10-10
91
+ ===================
92
+
93
+ * Fix issue where `"Request aborted"` may be logged in `res.sendfile`
94
+ * Fix JSDoc for `Router` constructor
95
+ * deps: body-parser@1.18.3
96
+ - Fix deprecation warnings on Node.js 10+
97
+ - Fix stack trace for strict json parse error
98
+ - deps: depd@~1.1.2
99
+ - deps: http-errors@~1.6.3
100
+ - deps: iconv-lite@0.4.23
101
+ - deps: qs@6.5.2
102
+ - deps: raw-body@2.3.3
103
+ - deps: type-is@~1.6.16
104
+ * deps: proxy-addr@~2.0.4
105
+ - deps: ipaddr.js@1.8.0
106
+ * deps: qs@6.5.2
107
+ * deps: safe-buffer@5.1.2
108
+
109
+ 4.16.3 / 2018-03-12
110
+ ===================
111
+
112
+ * deps: accepts@~1.3.5
113
+ - deps: mime-types@~2.1.18
114
+ * deps: depd@~1.1.2
115
+ - perf: remove argument reassignment
116
+ * deps: encodeurl@~1.0.2
117
+ - Fix encoding `%` as last character
118
+ * deps: finalhandler@1.1.1
119
+ - Fix 404 output for bad / missing pathnames
120
+ - deps: encodeurl@~1.0.2
121
+ - deps: statuses@~1.4.0
122
+ * deps: proxy-addr@~2.0.3
123
+ - deps: ipaddr.js@1.6.0
124
+ * deps: send@0.16.2
125
+ - Fix incorrect end tag in default error & redirects
126
+ - deps: depd@~1.1.2
127
+ - deps: encodeurl@~1.0.2
128
+ - deps: statuses@~1.4.0
129
+ * deps: serve-static@1.13.2
130
+ - Fix incorrect end tag in redirects
131
+ - deps: encodeurl@~1.0.2
132
+ - deps: send@0.16.2
133
+ * deps: statuses@~1.4.0
134
+ * deps: type-is@~1.6.16
135
+ - deps: mime-types@~2.1.18
136
+
137
+ 4.16.2 / 2017-10-09
138
+ ===================
139
+
140
+ * Fix `TypeError` in `res.send` when given `Buffer` and `ETag` header set
141
+ * perf: skip parsing of entire `X-Forwarded-Proto` header
142
+
143
+ 4.16.1 / 2017-09-29
144
+ ===================
145
+
146
+ * deps: send@0.16.1
147
+ * deps: serve-static@1.13.1
148
+ - Fix regression when `root` is incorrectly set to a file
149
+ - deps: send@0.16.1
150
+
151
+ 4.16.0 / 2017-09-28
152
+ ===================
153
+
154
+ * Add `"json escape"` setting for `res.json` and `res.jsonp`
155
+ * Add `express.json` and `express.urlencoded` to parse bodies
156
+ * Add `options` argument to `res.download`
157
+ * Improve error message when autoloading invalid view engine
158
+ * Improve error messages when non-function provided as middleware
159
+ * Skip `Buffer` encoding when not generating ETag for small response
160
+ * Use `safe-buffer` for improved Buffer API
161
+ * deps: accepts@~1.3.4
162
+ - deps: mime-types@~2.1.16
163
+ * deps: content-type@~1.0.4
164
+ - perf: remove argument reassignment
165
+ - perf: skip parameter parsing when no parameters
166
+ * deps: etag@~1.8.1
167
+ - perf: replace regular expression with substring
168
+ * deps: finalhandler@1.1.0
169
+ - Use `res.headersSent` when available
170
+ * deps: parseurl@~1.3.2
171
+ - perf: reduce overhead for full URLs
172
+ - perf: unroll the "fast-path" `RegExp`
173
+ * deps: proxy-addr@~2.0.2
174
+ - Fix trimming leading / trailing OWS in `X-Forwarded-For`
175
+ - deps: forwarded@~0.1.2
176
+ - deps: ipaddr.js@1.5.2
177
+ - perf: reduce overhead when no `X-Forwarded-For` header
178
+ * deps: qs@6.5.1
179
+ - Fix parsing & compacting very deep objects
180
+ * deps: send@0.16.0
181
+ - Add 70 new types for file extensions
182
+ - Add `immutable` option
183
+ - Fix missing `</html>` in default error & redirects
184
+ - Set charset as "UTF-8" for .js and .json
185
+ - Use instance methods on steam to check for listeners
186
+ - deps: mime@1.4.1
187
+ - perf: improve path validation speed
188
+ * deps: serve-static@1.13.0
189
+ - Add 70 new types for file extensions
190
+ - Add `immutable` option
191
+ - Set charset as "UTF-8" for .js and .json
192
+ - deps: send@0.16.0
193
+ * deps: setprototypeof@1.1.0
194
+ * deps: utils-merge@1.0.1
195
+ * deps: vary@~1.1.2
196
+ - perf: improve header token parsing speed
197
+ * perf: re-use options object when generating ETags
198
+ * perf: remove dead `.charset` set in `res.jsonp`
199
+
200
+ 4.15.5 / 2017-09-24
201
+ ===================
202
+
203
+ * deps: debug@2.6.9
204
+ * deps: finalhandler@~1.0.6
205
+ - deps: debug@2.6.9
206
+ - deps: parseurl@~1.3.2
207
+ * deps: fresh@0.5.2
208
+ - Fix handling of modified headers with invalid dates
209
+ - perf: improve ETag match loop
210
+ - perf: improve `If-None-Match` token parsing
211
+ * deps: send@0.15.6
212
+ - Fix handling of modified headers with invalid dates
213
+ - deps: debug@2.6.9
214
+ - deps: etag@~1.8.1
215
+ - deps: fresh@0.5.2
216
+ - perf: improve `If-Match` token parsing
217
+ * deps: serve-static@1.12.6
218
+ - deps: parseurl@~1.3.2
219
+ - deps: send@0.15.6
220
+ - perf: improve slash collapsing
221
+
222
+ 4.15.4 / 2017-08-06
223
+ ===================
224
+
225
+ * deps: debug@2.6.8
226
+ * deps: depd@~1.1.1
227
+ - Remove unnecessary `Buffer` loading
228
+ * deps: finalhandler@~1.0.4
229
+ - deps: debug@2.6.8
230
+ * deps: proxy-addr@~1.1.5
231
+ - Fix array argument being altered
232
+ - deps: ipaddr.js@1.4.0
233
+ * deps: qs@6.5.0
234
+ * deps: send@0.15.4
235
+ - deps: debug@2.6.8
236
+ - deps: depd@~1.1.1
237
+ - deps: http-errors@~1.6.2
238
+ * deps: serve-static@1.12.4
239
+ - deps: send@0.15.4
240
+
241
+ 4.15.3 / 2017-05-16
242
+ ===================
243
+
244
+ * Fix error when `res.set` cannot add charset to `Content-Type`
245
+ * deps: debug@2.6.7
246
+ - Fix `DEBUG_MAX_ARRAY_LENGTH`
247
+ - deps: ms@2.0.0
248
+ * deps: finalhandler@~1.0.3
249
+ - Fix missing `</html>` in HTML document
250
+ - deps: debug@2.6.7
251
+ * deps: proxy-addr@~1.1.4
252
+ - deps: ipaddr.js@1.3.0
253
+ * deps: send@0.15.3
254
+ - deps: debug@2.6.7
255
+ - deps: ms@2.0.0
256
+ * deps: serve-static@1.12.3
257
+ - deps: send@0.15.3
258
+ * deps: type-is@~1.6.15
259
+ - deps: mime-types@~2.1.15
260
+ * deps: vary@~1.1.1
261
+ - perf: hoist regular expression
262
+
263
+ 4.15.2 / 2017-03-06
264
+ ===================
265
+
266
+ * deps: qs@6.4.0
267
+ - Fix regression parsing keys starting with `[`
268
+
269
+ 4.15.1 / 2017-03-05
270
+ ===================
271
+
272
+ * deps: send@0.15.1
273
+ - Fix issue when `Date.parse` does not return `NaN` on invalid date
274
+ - Fix strict violation in broken environments
275
+ * deps: serve-static@1.12.1
276
+ - Fix issue when `Date.parse` does not return `NaN` on invalid date
277
+ - deps: send@0.15.1
278
+
279
+ 4.15.0 / 2017-03-01
280
+ ===================
281
+
282
+ * Add debug message when loading view engine
283
+ * Add `next("router")` to exit from router
284
+ * Fix case where `router.use` skipped requests routes did not
285
+ * Remove usage of `res._headers` private field
286
+ - Improves compatibility with Node.js 8 nightly
287
+ * Skip routing when `req.url` is not set
288
+ * Use `%o` in path debug to tell types apart
289
+ * Use `Object.create` to setup request & response prototypes
290
+ * Use `setprototypeof` module to replace `__proto__` setting
291
+ * Use `statuses` instead of `http` module for status messages
292
+ * deps: debug@2.6.1
293
+ - Allow colors in workers
294
+ - Deprecated `DEBUG_FD` environment variable set to `3` or higher
295
+ - Fix error when running under React Native
296
+ - Use same color for same namespace
297
+ - deps: ms@0.7.2
298
+ * deps: etag@~1.8.0
299
+ - Use SHA1 instead of MD5 for ETag hashing
300
+ - Works with FIPS 140-2 OpenSSL configuration
301
+ * deps: finalhandler@~1.0.0
302
+ - Fix exception when `err` cannot be converted to a string
303
+ - Fully URL-encode the pathname in the 404
304
+ - Only include the pathname in the 404 message
305
+ - Send complete HTML document
306
+ - Set `Content-Security-Policy: default-src 'self'` header
307
+ - deps: debug@2.6.1
308
+ * deps: fresh@0.5.0
309
+ - Fix false detection of `no-cache` request directive
310
+ - Fix incorrect result when `If-None-Match` has both `*` and ETags
311
+ - Fix weak `ETag` matching to match spec
312
+ - perf: delay reading header values until needed
313
+ - perf: enable strict mode
314
+ - perf: hoist regular expressions
315
+ - perf: remove duplicate conditional
316
+ - perf: remove unnecessary boolean coercions
317
+ - perf: skip checking modified time if ETag check failed
318
+ - perf: skip parsing `If-None-Match` when no `ETag` header
319
+ - perf: use `Date.parse` instead of `new Date`
320
+ * deps: qs@6.3.1
321
+ - Fix array parsing from skipping empty values
322
+ - Fix compacting nested arrays
323
+ * deps: send@0.15.0
324
+ - Fix false detection of `no-cache` request directive
325
+ - Fix incorrect result when `If-None-Match` has both `*` and ETags
326
+ - Fix weak `ETag` matching to match spec
327
+ - Remove usage of `res._headers` private field
328
+ - Support `If-Match` and `If-Unmodified-Since` headers
329
+ - Use `res.getHeaderNames()` when available
330
+ - Use `res.headersSent` when available
331
+ - deps: debug@2.6.1
332
+ - deps: etag@~1.8.0
333
+ - deps: fresh@0.5.0
334
+ - deps: http-errors@~1.6.1
335
+ * deps: serve-static@1.12.0
336
+ - Fix false detection of `no-cache` request directive
337
+ - Fix incorrect result when `If-None-Match` has both `*` and ETags
338
+ - Fix weak `ETag` matching to match spec
339
+ - Remove usage of `res._headers` private field
340
+ - Send complete HTML document in redirect response
341
+ - Set default CSP header in redirect response
342
+ - Support `If-Match` and `If-Unmodified-Since` headers
343
+ - Use `res.getHeaderNames()` when available
344
+ - Use `res.headersSent` when available
345
+ - deps: send@0.15.0
346
+ * perf: add fast match path for `*` route
347
+ * perf: improve `req.ips` performance
348
+
349
+ 4.14.1 / 2017-01-28
350
+ ===================
351
+
352
+ * deps: content-disposition@0.5.2
353
+ * deps: finalhandler@0.5.1
354
+ - Fix exception when `err.headers` is not an object
355
+ - deps: statuses@~1.3.1
356
+ - perf: hoist regular expressions
357
+ - perf: remove duplicate validation path
358
+ * deps: proxy-addr@~1.1.3
359
+ - deps: ipaddr.js@1.2.0
360
+ * deps: send@0.14.2
361
+ - deps: http-errors@~1.5.1
362
+ - deps: ms@0.7.2
363
+ - deps: statuses@~1.3.1
364
+ * deps: serve-static@~1.11.2
365
+ - deps: send@0.14.2
366
+ * deps: type-is@~1.6.14
367
+ - deps: mime-types@~2.1.13
368
+
369
+ 4.14.0 / 2016-06-16
370
+ ===================
371
+
372
+ * Add `acceptRanges` option to `res.sendFile`/`res.sendfile`
373
+ * Add `cacheControl` option to `res.sendFile`/`res.sendfile`
374
+ * Add `options` argument to `req.range`
375
+ - Includes the `combine` option
376
+ * Encode URL in `res.location`/`res.redirect` if not already encoded
377
+ * Fix some redirect handling in `res.sendFile`/`res.sendfile`
378
+ * Fix Windows absolute path check using forward slashes
379
+ * Improve error with invalid arguments to `req.get()`
380
+ * Improve performance for `res.json`/`res.jsonp` in most cases
381
+ * Improve `Range` header handling in `res.sendFile`/`res.sendfile`
382
+ * deps: accepts@~1.3.3
383
+ - Fix including type extensions in parameters in `Accept` parsing
384
+ - Fix parsing `Accept` parameters with quoted equals
385
+ - Fix parsing `Accept` parameters with quoted semicolons
386
+ - Many performance improvements
387
+ - deps: mime-types@~2.1.11
388
+ - deps: negotiator@0.6.1
389
+ * deps: content-type@~1.0.2
390
+ - perf: enable strict mode
391
+ * deps: cookie@0.3.1
392
+ - Add `sameSite` option
393
+ - Fix cookie `Max-Age` to never be a floating point number
394
+ - Improve error message when `encode` is not a function
395
+ - Improve error message when `expires` is not a `Date`
396
+ - Throw better error for invalid argument to parse
397
+ - Throw on invalid values provided to `serialize`
398
+ - perf: enable strict mode
399
+ - perf: hoist regular expression
400
+ - perf: use for loop in parse
401
+ - perf: use string concatenation for serialization
402
+ * deps: finalhandler@0.5.0
403
+ - Change invalid or non-numeric status code to 500
404
+ - Overwrite status message to match set status code
405
+ - Prefer `err.statusCode` if `err.status` is invalid
406
+ - Set response headers from `err.headers` object
407
+ - Use `statuses` instead of `http` module for status messages
408
+ * deps: proxy-addr@~1.1.2
409
+ - Fix accepting various invalid netmasks
410
+ - Fix IPv6-mapped IPv4 validation edge cases
411
+ - IPv4 netmasks must be contiguous
412
+ - IPv6 addresses cannot be used as a netmask
413
+ - deps: ipaddr.js@1.1.1
414
+ * deps: qs@6.2.0
415
+ - Add `decoder` option in `parse` function
416
+ * deps: range-parser@~1.2.0
417
+ - Add `combine` option to combine overlapping ranges
418
+ - Fix incorrectly returning -1 when there is at least one valid range
419
+ - perf: remove internal function
420
+ * deps: send@0.14.1
421
+ - Add `acceptRanges` option
422
+ - Add `cacheControl` option
423
+ - Attempt to combine multiple ranges into single range
424
+ - Correctly inherit from `Stream` class
425
+ - Fix `Content-Range` header in 416 responses when using `start`/`end` options
426
+ - Fix `Content-Range` header missing from default 416 responses
427
+ - Fix redirect error when `path` contains raw non-URL characters
428
+ - Fix redirect when `path` starts with multiple forward slashes
429
+ - Ignore non-byte `Range` headers
430
+ - deps: http-errors@~1.5.0
431
+ - deps: range-parser@~1.2.0
432
+ - deps: statuses@~1.3.0
433
+ - perf: remove argument reassignment
434
+ * deps: serve-static@~1.11.1
435
+ - Add `acceptRanges` option
436
+ - Add `cacheControl` option
437
+ - Attempt to combine multiple ranges into single range
438
+ - Fix redirect error when `req.url` contains raw non-URL characters
439
+ - Ignore non-byte `Range` headers
440
+ - Use status code 301 for redirects
441
+ - deps: send@0.14.1
442
+ * deps: type-is@~1.6.13
443
+ - Fix type error when given invalid type to match against
444
+ - deps: mime-types@~2.1.11
445
+ * deps: vary@~1.1.0
446
+ - Only accept valid field names in the `field` argument
447
+ * perf: use strict equality when possible
448
+
449
+ 4.13.4 / 2016-01-21
450
+ ===================
451
+
452
+ * deps: content-disposition@0.5.1
453
+ - perf: enable strict mode
454
+ * deps: cookie@0.1.5
455
+ - Throw on invalid values provided to `serialize`
456
+ * deps: depd@~1.1.0
457
+ - Support web browser loading
458
+ - perf: enable strict mode
459
+ * deps: escape-html@~1.0.3
460
+ - perf: enable strict mode
461
+ - perf: optimize string replacement
462
+ - perf: use faster string coercion
463
+ * deps: finalhandler@0.4.1
464
+ - deps: escape-html@~1.0.3
465
+ * deps: merge-descriptors@1.0.1
466
+ - perf: enable strict mode
467
+ * deps: methods@~1.1.2
468
+ - perf: enable strict mode
469
+ * deps: parseurl@~1.3.1
470
+ - perf: enable strict mode
471
+ * deps: proxy-addr@~1.0.10
472
+ - deps: ipaddr.js@1.0.5
473
+ - perf: enable strict mode
474
+ * deps: range-parser@~1.0.3
475
+ - perf: enable strict mode
476
+ * deps: send@0.13.1
477
+ - deps: depd@~1.1.0
478
+ - deps: destroy@~1.0.4
479
+ - deps: escape-html@~1.0.3
480
+ - deps: range-parser@~1.0.3
481
+ * deps: serve-static@~1.10.2
482
+ - deps: escape-html@~1.0.3
483
+ - deps: parseurl@~1.3.0
484
+ - deps: send@0.13.1
485
+
486
+ 4.13.3 / 2015-08-02
487
+ ===================
488
+
489
+ * Fix infinite loop condition using `mergeParams: true`
490
+ * Fix inner numeric indices incorrectly altering parent `req.params`
491
+
492
+ 4.13.2 / 2015-07-31
493
+ ===================
494
+
495
+ * deps: accepts@~1.2.12
496
+ - deps: mime-types@~2.1.4
497
+ * deps: array-flatten@1.1.1
498
+ - perf: enable strict mode
499
+ * deps: path-to-regexp@0.1.7
500
+ - Fix regression with escaped round brackets and matching groups
501
+ * deps: type-is@~1.6.6
502
+ - deps: mime-types@~2.1.4
503
+
504
+ 4.13.1 / 2015-07-05
505
+ ===================
506
+
507
+ * deps: accepts@~1.2.10
508
+ - deps: mime-types@~2.1.2
509
+ * deps: qs@4.0.0
510
+ - Fix dropping parameters like `hasOwnProperty`
511
+ - Fix various parsing edge cases
512
+ * deps: type-is@~1.6.4
513
+ - deps: mime-types@~2.1.2
514
+ - perf: enable strict mode
515
+ - perf: remove argument reassignment
516
+
517
+ 4.13.0 / 2015-06-20
518
+ ===================
519
+
520
+ * Add settings to debug output
521
+ * Fix `res.format` error when only `default` provided
522
+ * Fix issue where `next('route')` in `app.param` would incorrectly skip values
523
+ * Fix hiding platform issues with `decodeURIComponent`
524
+ - Only `URIError`s are a 400
525
+ * Fix using `*` before params in routes
526
+ * Fix using capture groups before params in routes
527
+ * Simplify `res.cookie` to call `res.append`
528
+ * Use `array-flatten` module for flattening arrays
529
+ * deps: accepts@~1.2.9
530
+ - deps: mime-types@~2.1.1
531
+ - perf: avoid argument reassignment & argument slice
532
+ - perf: avoid negotiator recursive construction
533
+ - perf: enable strict mode
534
+ - perf: remove unnecessary bitwise operator
535
+ * deps: cookie@0.1.3
536
+ - perf: deduce the scope of try-catch deopt
537
+ - perf: remove argument reassignments
538
+ * deps: escape-html@1.0.2
539
+ * deps: etag@~1.7.0
540
+ - Always include entity length in ETags for hash length extensions
541
+ - Generate non-Stats ETags using MD5 only (no longer CRC32)
542
+ - Improve stat performance by removing hashing
543
+ - Improve support for JXcore
544
+ - Remove base64 padding in ETags to shorten
545
+ - Support "fake" stats objects in environments without fs
546
+ - Use MD5 instead of MD4 in weak ETags over 1KB
547
+ * deps: finalhandler@0.4.0
548
+ - Fix a false-positive when unpiping in Node.js 0.8
549
+ - Support `statusCode` property on `Error` objects
550
+ - Use `unpipe` module for unpiping requests
551
+ - deps: escape-html@1.0.2
552
+ - deps: on-finished@~2.3.0
553
+ - perf: enable strict mode
554
+ - perf: remove argument reassignment
555
+ * deps: fresh@0.3.0
556
+ - Add weak `ETag` matching support
557
+ * deps: on-finished@~2.3.0
558
+ - Add defined behavior for HTTP `CONNECT` requests
559
+ - Add defined behavior for HTTP `Upgrade` requests
560
+ - deps: ee-first@1.1.1
561
+ * deps: path-to-regexp@0.1.6
562
+ * deps: send@0.13.0
563
+ - Allow Node.js HTTP server to set `Date` response header
564
+ - Fix incorrectly removing `Content-Location` on 304 response
565
+ - Improve the default redirect response headers
566
+ - Send appropriate headers on default error response
567
+ - Use `http-errors` for standard emitted errors
568
+ - Use `statuses` instead of `http` module for status messages
569
+ - deps: escape-html@1.0.2
570
+ - deps: etag@~1.7.0
571
+ - deps: fresh@0.3.0
572
+ - deps: on-finished@~2.3.0
573
+ - perf: enable strict mode
574
+ - perf: remove unnecessary array allocations
575
+ * deps: serve-static@~1.10.0
576
+ - Add `fallthrough` option
577
+ - Fix reading options from options prototype
578
+ - Improve the default redirect response headers
579
+ - Malformed URLs now `next()` instead of 400
580
+ - deps: escape-html@1.0.2
581
+ - deps: send@0.13.0
582
+ - perf: enable strict mode
583
+ - perf: remove argument reassignment
584
+ * deps: type-is@~1.6.3
585
+ - deps: mime-types@~2.1.1
586
+ - perf: reduce try block size
587
+ - perf: remove bitwise operations
588
+ * perf: enable strict mode
589
+ * perf: isolate `app.render` try block
590
+ * perf: remove argument reassignments in application
591
+ * perf: remove argument reassignments in request prototype
592
+ * perf: remove argument reassignments in response prototype
593
+ * perf: remove argument reassignments in routing
594
+ * perf: remove argument reassignments in `View`
595
+ * perf: skip attempting to decode zero length string
596
+ * perf: use saved reference to `http.STATUS_CODES`
597
+
598
+ 4.12.4 / 2015-05-17
599
+ ===================
600
+
601
+ * deps: accepts@~1.2.7
602
+ - deps: mime-types@~2.0.11
603
+ - deps: negotiator@0.5.3
604
+ * deps: debug@~2.2.0
605
+ - deps: ms@0.7.1
606
+ * deps: depd@~1.0.1
607
+ * deps: etag@~1.6.0
608
+ - Improve support for JXcore
609
+ - Support "fake" stats objects in environments without `fs`
610
+ * deps: finalhandler@0.3.6
611
+ - deps: debug@~2.2.0
612
+ - deps: on-finished@~2.2.1
613
+ * deps: on-finished@~2.2.1
614
+ - Fix `isFinished(req)` when data buffered
615
+ * deps: proxy-addr@~1.0.8
616
+ - deps: ipaddr.js@1.0.1
617
+ * deps: qs@2.4.2
618
+ - Fix allowing parameters like `constructor`
619
+ * deps: send@0.12.3
620
+ - deps: debug@~2.2.0
621
+ - deps: depd@~1.0.1
622
+ - deps: etag@~1.6.0
623
+ - deps: ms@0.7.1
624
+ - deps: on-finished@~2.2.1
625
+ * deps: serve-static@~1.9.3
626
+ - deps: send@0.12.3
627
+ * deps: type-is@~1.6.2
628
+ - deps: mime-types@~2.0.11
629
+
630
+ 4.12.3 / 2015-03-17
631
+ ===================
632
+
633
+ * deps: accepts@~1.2.5
634
+ - deps: mime-types@~2.0.10
635
+ * deps: debug@~2.1.3
636
+ - Fix high intensity foreground color for bold
637
+ - deps: ms@0.7.0
638
+ * deps: finalhandler@0.3.4
639
+ - deps: debug@~2.1.3
640
+ * deps: proxy-addr@~1.0.7
641
+ - deps: ipaddr.js@0.1.9
642
+ * deps: qs@2.4.1
643
+ - Fix error when parameter `hasOwnProperty` is present
644
+ * deps: send@0.12.2
645
+ - Throw errors early for invalid `extensions` or `index` options
646
+ - deps: debug@~2.1.3
647
+ * deps: serve-static@~1.9.2
648
+ - deps: send@0.12.2
649
+ * deps: type-is@~1.6.1
650
+ - deps: mime-types@~2.0.10
651
+
652
+ 4.12.2 / 2015-03-02
653
+ ===================
654
+
655
+ * Fix regression where `"Request aborted"` is logged using `res.sendFile`
656
+
657
+ 4.12.1 / 2015-03-01
658
+ ===================
659
+
660
+ * Fix constructing application with non-configurable prototype properties
661
+ * Fix `ECONNRESET` errors from `res.sendFile` usage
662
+ * Fix `req.host` when using "trust proxy" hops count
663
+ * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count
664
+ * Fix wrong `code` on aborted connections from `res.sendFile`
665
+ * deps: merge-descriptors@1.0.0
666
+
667
+ 4.12.0 / 2015-02-23
668
+ ===================
669
+
670
+ * Fix `"trust proxy"` setting to inherit when app is mounted
671
+ * Generate `ETag`s for all request responses
672
+ - No longer restricted to only responses for `GET` and `HEAD` requests
673
+ * Use `content-type` to parse `Content-Type` headers
674
+ * deps: accepts@~1.2.4
675
+ - Fix preference sorting to be stable for long acceptable lists
676
+ - deps: mime-types@~2.0.9
677
+ - deps: negotiator@0.5.1
678
+ * deps: cookie-signature@1.0.6
679
+ * deps: send@0.12.1
680
+ - Always read the stat size from the file
681
+ - Fix mutating passed-in `options`
682
+ - deps: mime@1.3.4
683
+ * deps: serve-static@~1.9.1
684
+ - deps: send@0.12.1
685
+ * deps: type-is@~1.6.0
686
+ - fix argument reassignment
687
+ - fix false-positives in `hasBody` `Transfer-Encoding` check
688
+ - support wildcard for both type and subtype (`*/*`)
689
+ - deps: mime-types@~2.0.9
690
+
691
+ 4.11.2 / 2015-02-01
692
+ ===================
693
+
694
+ * Fix `res.redirect` double-calling `res.end` for `HEAD` requests
695
+ * deps: accepts@~1.2.3
696
+ - deps: mime-types@~2.0.8
697
+ * deps: proxy-addr@~1.0.6
698
+ - deps: ipaddr.js@0.1.8
699
+ * deps: type-is@~1.5.6
700
+ - deps: mime-types@~2.0.8
701
+
702
+ 4.11.1 / 2015-01-20
703
+ ===================
704
+
705
+ * deps: send@0.11.1
706
+ - Fix root path disclosure
707
+ * deps: serve-static@~1.8.1
708
+ - Fix redirect loop in Node.js 0.11.14
709
+ - Fix root path disclosure
710
+ - deps: send@0.11.1
711
+
712
+ 4.11.0 / 2015-01-13
713
+ ===================
714
+
715
+ * Add `res.append(field, val)` to append headers
716
+ * Deprecate leading `:` in `name` for `app.param(name, fn)`
717
+ * Deprecate `req.param()` -- use `req.params`, `req.body`, or `req.query` instead
718
+ * Deprecate `app.param(fn)`
719
+ * Fix `OPTIONS` responses to include the `HEAD` method properly
720
+ * Fix `res.sendFile` not always detecting aborted connection
721
+ * Match routes iteratively to prevent stack overflows
722
+ * deps: accepts@~1.2.2
723
+ - deps: mime-types@~2.0.7
724
+ - deps: negotiator@0.5.0
725
+ * deps: send@0.11.0
726
+ - deps: debug@~2.1.1
727
+ - deps: etag@~1.5.1
728
+ - deps: ms@0.7.0
729
+ - deps: on-finished@~2.2.0
730
+ * deps: serve-static@~1.8.0
731
+ - deps: send@0.11.0
732
+
733
+ 4.10.8 / 2015-01-13
734
+ ===================
735
+
736
+ * Fix crash from error within `OPTIONS` response handler
737
+ * deps: proxy-addr@~1.0.5
738
+ - deps: ipaddr.js@0.1.6
739
+
740
+ 4.10.7 / 2015-01-04
741
+ ===================
742
+
743
+ * Fix `Allow` header for `OPTIONS` to not contain duplicate methods
744
+ * Fix incorrect "Request aborted" for `res.sendFile` when `HEAD` or 304
745
+ * deps: debug@~2.1.1
746
+ * deps: finalhandler@0.3.3
747
+ - deps: debug@~2.1.1
748
+ - deps: on-finished@~2.2.0
749
+ * deps: methods@~1.1.1
750
+ * deps: on-finished@~2.2.0
751
+ * deps: serve-static@~1.7.2
752
+ - Fix potential open redirect when mounted at root
753
+ * deps: type-is@~1.5.5
754
+ - deps: mime-types@~2.0.7
755
+
756
+ 4.10.6 / 2014-12-12
757
+ ===================
758
+
759
+ * Fix exception in `req.fresh`/`req.stale` without response headers
760
+
761
+ 4.10.5 / 2014-12-10
762
+ ===================
763
+
764
+ * Fix `res.send` double-calling `res.end` for `HEAD` requests
765
+ * deps: accepts@~1.1.4
766
+ - deps: mime-types@~2.0.4
767
+ * deps: type-is@~1.5.4
768
+ - deps: mime-types@~2.0.4
769
+
770
+ 4.10.4 / 2014-11-24
771
+ ===================
772
+
773
+ * Fix `res.sendfile` logging standard write errors
774
+
775
+ 4.10.3 / 2014-11-23
776
+ ===================
777
+
778
+ * Fix `res.sendFile` logging standard write errors
779
+ * deps: etag@~1.5.1
780
+ * deps: proxy-addr@~1.0.4
781
+ - deps: ipaddr.js@0.1.5
782
+ * deps: qs@2.3.3
783
+ - Fix `arrayLimit` behavior
784
+
785
+ 4.10.2 / 2014-11-09
786
+ ===================
787
+
788
+ * Correctly invoke async router callback asynchronously
789
+ * deps: accepts@~1.1.3
790
+ - deps: mime-types@~2.0.3
791
+ * deps: type-is@~1.5.3
792
+ - deps: mime-types@~2.0.3
793
+
794
+ 4.10.1 / 2014-10-28
795
+ ===================
796
+
797
+ * Fix handling of URLs containing `://` in the path
798
+ * deps: qs@2.3.2
799
+ - Fix parsing of mixed objects and values
800
+
801
+ 4.10.0 / 2014-10-23
802
+ ===================
803
+
804
+ * Add support for `app.set('views', array)`
805
+ - Views are looked up in sequence in array of directories
806
+ * Fix `res.send(status)` to mention `res.sendStatus(status)`
807
+ * Fix handling of invalid empty URLs
808
+ * Use `content-disposition` module for `res.attachment`/`res.download`
809
+ - Sends standards-compliant `Content-Disposition` header
810
+ - Full Unicode support
811
+ * Use `path.resolve` in view lookup
812
+ * deps: debug@~2.1.0
813
+ - Implement `DEBUG_FD` env variable support
814
+ * deps: depd@~1.0.0
815
+ * deps: etag@~1.5.0
816
+ - Improve string performance
817
+ - Slightly improve speed for weak ETags over 1KB
818
+ * deps: finalhandler@0.3.2
819
+ - Terminate in progress response only on error
820
+ - Use `on-finished` to determine request status
821
+ - deps: debug@~2.1.0
822
+ - deps: on-finished@~2.1.1
823
+ * deps: on-finished@~2.1.1
824
+ - Fix handling of pipelined requests
825
+ * deps: qs@2.3.0
826
+ - Fix parsing of mixed implicit and explicit arrays
827
+ * deps: send@0.10.1
828
+ - deps: debug@~2.1.0
829
+ - deps: depd@~1.0.0
830
+ - deps: etag@~1.5.0
831
+ - deps: on-finished@~2.1.1
832
+ * deps: serve-static@~1.7.1
833
+ - deps: send@0.10.1
834
+
835
+ 4.9.8 / 2014-10-17
836
+ ==================
837
+
838
+ * Fix `res.redirect` body when redirect status specified
839
+ * deps: accepts@~1.1.2
840
+ - Fix error when media type has invalid parameter
841
+ - deps: negotiator@0.4.9
842
+
843
+ 4.9.7 / 2014-10-10
844
+ ==================
845
+
846
+ * Fix using same param name in array of paths
847
+
848
+ 4.9.6 / 2014-10-08
849
+ ==================
850
+
851
+ * deps: accepts@~1.1.1
852
+ - deps: mime-types@~2.0.2
853
+ - deps: negotiator@0.4.8
854
+ * deps: serve-static@~1.6.4
855
+ - Fix redirect loop when index file serving disabled
856
+ * deps: type-is@~1.5.2
857
+ - deps: mime-types@~2.0.2
858
+
859
+ 4.9.5 / 2014-09-24
860
+ ==================
861
+
862
+ * deps: etag@~1.4.0
863
+ * deps: proxy-addr@~1.0.3
864
+ - Use `forwarded` npm module
865
+ * deps: send@0.9.3
866
+ - deps: etag@~1.4.0
867
+ * deps: serve-static@~1.6.3
868
+ - deps: send@0.9.3
869
+
870
+ 4.9.4 / 2014-09-19
871
+ ==================
872
+
873
+ * deps: qs@2.2.4
874
+ - Fix issue with object keys starting with numbers truncated
875
+
876
+ 4.9.3 / 2014-09-18
877
+ ==================
878
+
879
+ * deps: proxy-addr@~1.0.2
880
+ - Fix a global leak when multiple subnets are trusted
881
+ - deps: ipaddr.js@0.1.3
882
+
883
+ 4.9.2 / 2014-09-17
884
+ ==================
885
+
886
+ * Fix regression for empty string `path` in `app.use`
887
+ * Fix `router.use` to accept array of middleware without path
888
+ * Improve error message for bad `app.use` arguments
889
+
890
+ 4.9.1 / 2014-09-16
891
+ ==================
892
+
893
+ * Fix `app.use` to accept array of middleware without path
894
+ * deps: depd@0.4.5
895
+ * deps: etag@~1.3.1
896
+ * deps: send@0.9.2
897
+ - deps: depd@0.4.5
898
+ - deps: etag@~1.3.1
899
+ - deps: range-parser@~1.0.2
900
+ * deps: serve-static@~1.6.2
901
+ - deps: send@0.9.2
902
+
903
+ 4.9.0 / 2014-09-08
904
+ ==================
905
+
906
+ * Add `res.sendStatus`
907
+ * Invoke callback for sendfile when client aborts
908
+ - Applies to `res.sendFile`, `res.sendfile`, and `res.download`
909
+ - `err` will be populated with request aborted error
910
+ * Support IP address host in `req.subdomains`
911
+ * Use `etag` to generate `ETag` headers
912
+ * deps: accepts@~1.1.0
913
+ - update `mime-types`
914
+ * deps: cookie-signature@1.0.5
915
+ * deps: debug@~2.0.0
916
+ * deps: finalhandler@0.2.0
917
+ - Set `X-Content-Type-Options: nosniff` header
918
+ - deps: debug@~2.0.0
919
+ * deps: fresh@0.2.4
920
+ * deps: media-typer@0.3.0
921
+ - Throw error when parameter format invalid on parse
922
+ * deps: qs@2.2.3
923
+ - Fix issue where first empty value in array is discarded
924
+ * deps: range-parser@~1.0.2
925
+ * deps: send@0.9.1
926
+ - Add `lastModified` option
927
+ - Use `etag` to generate `ETag` header
928
+ - deps: debug@~2.0.0
929
+ - deps: fresh@0.2.4
930
+ * deps: serve-static@~1.6.1
931
+ - Add `lastModified` option
932
+ - deps: send@0.9.1
933
+ * deps: type-is@~1.5.1
934
+ - fix `hasbody` to be true for `content-length: 0`
935
+ - deps: media-typer@0.3.0
936
+ - deps: mime-types@~2.0.1
937
+ * deps: vary@~1.0.0
938
+ - Accept valid `Vary` header string as `field`
939
+
940
+ 4.8.8 / 2014-09-04
941
+ ==================
942
+
943
+ * deps: send@0.8.5
944
+ - Fix a path traversal issue when using `root`
945
+ - Fix malicious path detection for empty string path
946
+ * deps: serve-static@~1.5.4
947
+ - deps: send@0.8.5
948
+
949
+ 4.8.7 / 2014-08-29
950
+ ==================
951
+
952
+ * deps: qs@2.2.2
953
+ - Remove unnecessary cloning
954
+
955
+ 4.8.6 / 2014-08-27
956
+ ==================
957
+
958
+ * deps: qs@2.2.0
959
+ - Array parsing fix
960
+ - Performance improvements
961
+
962
+ 4.8.5 / 2014-08-18
963
+ ==================
964
+
965
+ * deps: send@0.8.3
966
+ - deps: destroy@1.0.3
967
+ - deps: on-finished@2.1.0
968
+ * deps: serve-static@~1.5.3
969
+ - deps: send@0.8.3
970
+
971
+ 4.8.4 / 2014-08-14
972
+ ==================
973
+
974
+ * deps: qs@1.2.2
975
+ * deps: send@0.8.2
976
+ - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
977
+ * deps: serve-static@~1.5.2
978
+ - deps: send@0.8.2
979
+
980
+ 4.8.3 / 2014-08-10
981
+ ==================
982
+
983
+ * deps: parseurl@~1.3.0
984
+ * deps: qs@1.2.1
985
+ * deps: serve-static@~1.5.1
986
+ - Fix parsing of weird `req.originalUrl` values
987
+ - deps: parseurl@~1.3.0
988
+ - deps: utils-merge@1.0.0
989
+
990
+ 4.8.2 / 2014-08-07
991
+ ==================
992
+
993
+ * deps: qs@1.2.0
994
+ - Fix parsing array of objects
995
+
996
+ 4.8.1 / 2014-08-06
997
+ ==================
998
+
999
+ * fix incorrect deprecation warnings on `res.download`
1000
+ * deps: qs@1.1.0
1001
+ - Accept urlencoded square brackets
1002
+ - Accept empty values in implicit array notation
1003
+
1004
+ 4.8.0 / 2014-08-05
1005
+ ==================
1006
+
1007
+ * add `res.sendFile`
1008
+ - accepts a file system path instead of a URL
1009
+ - requires an absolute path or `root` option specified
1010
+ * deprecate `res.sendfile` -- use `res.sendFile` instead
1011
+ * support mounted app as any argument to `app.use()`
1012
+ * deps: qs@1.0.2
1013
+ - Complete rewrite
1014
+ - Limits array length to 20
1015
+ - Limits object depth to 5
1016
+ - Limits parameters to 1,000
1017
+ * deps: send@0.8.1
1018
+ - Add `extensions` option
1019
+ * deps: serve-static@~1.5.0
1020
+ - Add `extensions` option
1021
+ - deps: send@0.8.1
1022
+
1023
+ 4.7.4 / 2014-08-04
1024
+ ==================
1025
+
1026
+ * fix `res.sendfile` regression for serving directory index files
1027
+ * deps: send@0.7.4
1028
+ - Fix incorrect 403 on Windows and Node.js 0.11
1029
+ - Fix serving index files without root dir
1030
+ * deps: serve-static@~1.4.4
1031
+ - deps: send@0.7.4
1032
+
1033
+ 4.7.3 / 2014-08-04
1034
+ ==================
1035
+
1036
+ * deps: send@0.7.3
1037
+ - Fix incorrect 403 on Windows and Node.js 0.11
1038
+ * deps: serve-static@~1.4.3
1039
+ - Fix incorrect 403 on Windows and Node.js 0.11
1040
+ - deps: send@0.7.3
1041
+
1042
+ 4.7.2 / 2014-07-27
1043
+ ==================
1044
+
1045
+ * deps: depd@0.4.4
1046
+ - Work-around v8 generating empty stack traces
1047
+ * deps: send@0.7.2
1048
+ - deps: depd@0.4.4
1049
+ * deps: serve-static@~1.4.2
1050
+
1051
+ 4.7.1 / 2014-07-26
1052
+ ==================
1053
+
1054
+ * deps: depd@0.4.3
1055
+ - Fix exception when global `Error.stackTraceLimit` is too low
1056
+ * deps: send@0.7.1
1057
+ - deps: depd@0.4.3
1058
+ * deps: serve-static@~1.4.1
1059
+
1060
+ 4.7.0 / 2014-07-25
1061
+ ==================
1062
+
1063
+ * fix `req.protocol` for proxy-direct connections
1064
+ * configurable query parser with `app.set('query parser', parser)`
1065
+ - `app.set('query parser', 'extended')` parse with "qs" module
1066
+ - `app.set('query parser', 'simple')` parse with "querystring" core module
1067
+ - `app.set('query parser', false)` disable query string parsing
1068
+ - `app.set('query parser', true)` enable simple parsing
1069
+ * deprecate `res.json(status, obj)` -- use `res.status(status).json(obj)` instead
1070
+ * deprecate `res.jsonp(status, obj)` -- use `res.status(status).jsonp(obj)` instead
1071
+ * deprecate `res.send(status, body)` -- use `res.status(status).send(body)` instead
1072
+ * deps: debug@1.0.4
1073
+ * deps: depd@0.4.2
1074
+ - Add `TRACE_DEPRECATION` environment variable
1075
+ - Remove non-standard grey color from color output
1076
+ - Support `--no-deprecation` argument
1077
+ - Support `--trace-deprecation` argument
1078
+ * deps: finalhandler@0.1.0
1079
+ - Respond after request fully read
1080
+ - deps: debug@1.0.4
1081
+ * deps: parseurl@~1.2.0
1082
+ - Cache URLs based on original value
1083
+ - Remove no-longer-needed URL mis-parse work-around
1084
+ - Simplify the "fast-path" `RegExp`
1085
+ * deps: send@0.7.0
1086
+ - Add `dotfiles` option
1087
+ - Cap `maxAge` value to 1 year
1088
+ - deps: debug@1.0.4
1089
+ - deps: depd@0.4.2
1090
+ * deps: serve-static@~1.4.0
1091
+ - deps: parseurl@~1.2.0
1092
+ - deps: send@0.7.0
1093
+ * perf: prevent multiple `Buffer` creation in `res.send`
1094
+
1095
+ 4.6.1 / 2014-07-12
1096
+ ==================
1097
+
1098
+ * fix `subapp.mountpath` regression for `app.use(subapp)`
1099
+
1100
+ 4.6.0 / 2014-07-11
1101
+ ==================
1102
+
1103
+ * accept multiple callbacks to `app.use()`
1104
+ * add explicit "Rosetta Flash JSONP abuse" protection
1105
+ - previous versions are not vulnerable; this is just explicit protection
1106
+ * catch errors in multiple `req.param(name, fn)` handlers
1107
+ * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead
1108
+ * fix `res.send(status, num)` to send `num` as json (not error)
1109
+ * remove unnecessary escaping when `res.jsonp` returns JSON response
1110
+ * support non-string `path` in `app.use(path, fn)`
1111
+ - supports array of paths
1112
+ - supports `RegExp`
1113
+ * router: fix optimization on router exit
1114
+ * router: refactor location of `try` blocks
1115
+ * router: speed up standard `app.use(fn)`
1116
+ * deps: debug@1.0.3
1117
+ - Add support for multiple wildcards in namespaces
1118
+ * deps: finalhandler@0.0.3
1119
+ - deps: debug@1.0.3
1120
+ * deps: methods@1.1.0
1121
+ - add `CONNECT`
1122
+ * deps: parseurl@~1.1.3
1123
+ - faster parsing of href-only URLs
1124
+ * deps: path-to-regexp@0.1.3
1125
+ * deps: send@0.6.0
1126
+ - deps: debug@1.0.3
1127
+ * deps: serve-static@~1.3.2
1128
+ - deps: parseurl@~1.1.3
1129
+ - deps: send@0.6.0
1130
+ * perf: fix arguments reassign deopt in some `res` methods
1131
+
1132
+ 4.5.1 / 2014-07-06
1133
+ ==================
1134
+
1135
+ * fix routing regression when altering `req.method`
1136
+
1137
+ 4.5.0 / 2014-07-04
1138
+ ==================
1139
+
1140
+ * add deprecation message to non-plural `req.accepts*`
1141
+ * add deprecation message to `res.send(body, status)`
1142
+ * add deprecation message to `res.vary()`
1143
+ * add `headers` option to `res.sendfile`
1144
+ - use to set headers on successful file transfer
1145
+ * add `mergeParams` option to `Router`
1146
+ - merges `req.params` from parent routes
1147
+ * add `req.hostname` -- correct name for what `req.host` returns
1148
+ * deprecate things with `depd` module
1149
+ * deprecate `req.host` -- use `req.hostname` instead
1150
+ * fix behavior when handling request without routes
1151
+ * fix handling when `route.all` is only route
1152
+ * invoke `router.param()` only when route matches
1153
+ * restore `req.params` after invoking router
1154
+ * use `finalhandler` for final response handling
1155
+ * use `media-typer` to alter content-type charset
1156
+ * deps: accepts@~1.0.7
1157
+ * deps: send@0.5.0
1158
+ - Accept string for `maxage` (converted by `ms`)
1159
+ - Include link in default redirect response
1160
+ * deps: serve-static@~1.3.0
1161
+ - Accept string for `maxAge` (converted by `ms`)
1162
+ - Add `setHeaders` option
1163
+ - Include HTML link in redirect response
1164
+ - deps: send@0.5.0
1165
+ * deps: type-is@~1.3.2
1166
+
1167
+ 4.4.5 / 2014-06-26
1168
+ ==================
1169
+
1170
+ * deps: cookie-signature@1.0.4
1171
+ - fix for timing attacks
1172
+
1173
+ 4.4.4 / 2014-06-20
1174
+ ==================
1175
+
1176
+ * fix `res.attachment` Unicode filenames in Safari
1177
+ * fix "trim prefix" debug message in `express:router`
1178
+ * deps: accepts@~1.0.5
1179
+ * deps: buffer-crc32@0.2.3
1180
+
1181
+ 4.4.3 / 2014-06-11
1182
+ ==================
1183
+
1184
+ * fix persistence of modified `req.params[name]` from `app.param()`
1185
+ * deps: accepts@1.0.3
1186
+ - deps: negotiator@0.4.6
1187
+ * deps: debug@1.0.2
1188
+ * deps: send@0.4.3
1189
+ - Do not throw uncatchable error on file open race condition
1190
+ - Use `escape-html` for HTML escaping
1191
+ - deps: debug@1.0.2
1192
+ - deps: finished@1.2.2
1193
+ - deps: fresh@0.2.2
1194
+ * deps: serve-static@1.2.3
1195
+ - Do not throw uncatchable error on file open race condition
1196
+ - deps: send@0.4.3
1197
+
1198
+ 4.4.2 / 2014-06-09
1199
+ ==================
1200
+
1201
+ * fix catching errors from top-level handlers
1202
+ * use `vary` module for `res.vary`
1203
+ * deps: debug@1.0.1
1204
+ * deps: proxy-addr@1.0.1
1205
+ * deps: send@0.4.2
1206
+ - fix "event emitter leak" warnings
1207
+ - deps: debug@1.0.1
1208
+ - deps: finished@1.2.1
1209
+ * deps: serve-static@1.2.2
1210
+ - fix "event emitter leak" warnings
1211
+ - deps: send@0.4.2
1212
+ * deps: type-is@1.2.1
1213
+
1214
+ 4.4.1 / 2014-06-02
1215
+ ==================
1216
+
1217
+ * deps: methods@1.0.1
1218
+ * deps: send@0.4.1
1219
+ - Send `max-age` in `Cache-Control` in correct format
1220
+ * deps: serve-static@1.2.1
1221
+ - use `escape-html` for escaping
1222
+ - deps: send@0.4.1
1223
+
1224
+ 4.4.0 / 2014-05-30
1225
+ ==================
1226
+
1227
+ * custom etag control with `app.set('etag', val)`
1228
+ - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation
1229
+ - `app.set('etag', 'weak')` weak tag
1230
+ - `app.set('etag', 'strong')` strong etag
1231
+ - `app.set('etag', false)` turn off
1232
+ - `app.set('etag', true)` standard etag
1233
+ * mark `res.send` ETag as weak and reduce collisions
1234
+ * update accepts to 1.0.2
1235
+ - Fix interpretation when header not in request
1236
+ * update send to 0.4.0
1237
+ - Calculate ETag with md5 for reduced collisions
1238
+ - Ignore stream errors after request ends
1239
+ - deps: debug@0.8.1
1240
+ * update serve-static to 1.2.0
1241
+ - Calculate ETag with md5 for reduced collisions
1242
+ - Ignore stream errors after request ends
1243
+ - deps: send@0.4.0
1244
+
1245
+ 4.3.2 / 2014-05-28
1246
+ ==================
1247
+
1248
+ * fix handling of errors from `router.param()` callbacks
1249
+
1250
+ 4.3.1 / 2014-05-23
1251
+ ==================
1252
+
1253
+ * revert "fix behavior of multiple `app.VERB` for the same path"
1254
+ - this caused a regression in the order of route execution
1255
+
1256
+ 4.3.0 / 2014-05-21
1257
+ ==================
1258
+
1259
+ * add `req.baseUrl` to access the path stripped from `req.url` in routes
1260
+ * fix behavior of multiple `app.VERB` for the same path
1261
+ * fix issue routing requests among sub routers
1262
+ * invoke `router.param()` only when necessary instead of every match
1263
+ * proper proxy trust with `app.set('trust proxy', trust)`
1264
+ - `app.set('trust proxy', 1)` trust first hop
1265
+ - `app.set('trust proxy', 'loopback')` trust loopback addresses
1266
+ - `app.set('trust proxy', '10.0.0.1')` trust single IP
1267
+ - `app.set('trust proxy', '10.0.0.1/16')` trust subnet
1268
+ - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list
1269
+ - `app.set('trust proxy', false)` turn off
1270
+ - `app.set('trust proxy', true)` trust everything
1271
+ * set proper `charset` in `Content-Type` for `res.send`
1272
+ * update type-is to 1.2.0
1273
+ - support suffix matching
1274
+
1275
+ 4.2.0 / 2014-05-11
1276
+ ==================
1277
+
1278
+ * deprecate `app.del()` -- use `app.delete()` instead
1279
+ * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead
1280
+ - the edge-case `res.json(status, num)` requires `res.status(status).json(num)`
1281
+ * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead
1282
+ - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)`
1283
+ * fix `req.next` when inside router instance
1284
+ * include `ETag` header in `HEAD` requests
1285
+ * keep previous `Content-Type` for `res.jsonp`
1286
+ * support PURGE method
1287
+ - add `app.purge`
1288
+ - add `router.purge`
1289
+ - include PURGE in `app.all`
1290
+ * update debug to 0.8.0
1291
+ - add `enable()` method
1292
+ - change from stderr to stdout
1293
+ * update methods to 1.0.0
1294
+ - add PURGE
1295
+
1296
+ 4.1.2 / 2014-05-08
1297
+ ==================
1298
+
1299
+ * fix `req.host` for IPv6 literals
1300
+ * fix `res.jsonp` error if callback param is object
1301
+
1302
+ 4.1.1 / 2014-04-27
1303
+ ==================
1304
+
1305
+ * fix package.json to reflect supported node version
1306
+
1307
+ 4.1.0 / 2014-04-24
1308
+ ==================
1309
+
1310
+ * pass options from `res.sendfile` to `send`
1311
+ * preserve casing of headers in `res.header` and `res.set`
1312
+ * support unicode file names in `res.attachment` and `res.download`
1313
+ * update accepts to 1.0.1
1314
+ - deps: negotiator@0.4.0
1315
+ * update cookie to 0.1.2
1316
+ - Fix for maxAge == 0
1317
+ - made compat with expires field
1318
+ * update send to 0.3.0
1319
+ - Accept API options in options object
1320
+ - Coerce option types
1321
+ - Control whether to generate etags
1322
+ - Default directory access to 403 when index disabled
1323
+ - Fix sending files with dots without root set
1324
+ - Include file path in etag
1325
+ - Make "Can't set headers after they are sent." catchable
1326
+ - Send full entity-body for multi range requests
1327
+ - Set etags to "weak"
1328
+ - Support "If-Range" header
1329
+ - Support multiple index paths
1330
+ - deps: mime@1.2.11
1331
+ * update serve-static to 1.1.0
1332
+ - Accept options directly to `send` module
1333
+ - Resolve relative paths at middleware setup
1334
+ - Use parseurl to parse the URL from request
1335
+ - deps: send@0.3.0
1336
+ * update type-is to 1.1.0
1337
+ - add non-array values support
1338
+ - add `multipart` as a shorthand
1339
+
1340
+ 4.0.0 / 2014-04-09
1341
+ ==================
1342
+
1343
+ * remove:
1344
+ - node 0.8 support
1345
+ - connect and connect's patches except for charset handling
1346
+ - express(1) - moved to [express-generator](https://github.com/expressjs/generator)
1347
+ - `express.createServer()` - it has been deprecated for a long time. Use `express()`
1348
+ - `app.configure` - use logic in your own app code
1349
+ - `app.router` - is removed
1350
+ - `req.auth` - use `basic-auth` instead
1351
+ - `req.accepted*` - use `req.accepts*()` instead
1352
+ - `res.location` - relative URL resolution is removed
1353
+ - `res.charset` - include the charset in the content type when using `res.set()`
1354
+ - all bundled middleware except `static`
1355
+ * change:
1356
+ - `app.route` -> `app.mountpath` when mounting an express app in another express app
1357
+ - `json spaces` no longer enabled by default in development
1358
+ - `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings`
1359
+ - `req.params` is now an object instead of an array
1360
+ - `res.locals` is no longer a function. It is a plain js object. Treat it as such.
1361
+ - `res.headerSent` -> `res.headersSent` to match node.js ServerResponse object
1362
+ * refactor:
1363
+ - `req.accepts*` with [accepts](https://github.com/expressjs/accepts)
1364
+ - `req.is` with [type-is](https://github.com/expressjs/type-is)
1365
+ - [path-to-regexp](https://github.com/component/path-to-regexp)
1366
+ * add:
1367
+ - `app.router()` - returns the app Router instance
1368
+ - `app.route()` - Proxy to the app's `Router#route()` method to create a new route
1369
+ - Router & Route - public API
1370
+
1371
+ 3.21.2 / 2015-07-31
1372
+ ===================
1373
+
1374
+ * deps: connect@2.30.2
1375
+ - deps: body-parser@~1.13.3
1376
+ - deps: compression@~1.5.2
1377
+ - deps: errorhandler@~1.4.2
1378
+ - deps: method-override@~2.3.5
1379
+ - deps: serve-index@~1.7.2
1380
+ - deps: type-is@~1.6.6
1381
+ - deps: vhost@~3.0.1
1382
+ * deps: vary@~1.0.1
1383
+ - Fix setting empty header from empty `field`
1384
+ - perf: enable strict mode
1385
+ - perf: remove argument reassignments
1386
+
1387
+ 3.21.1 / 2015-07-05
1388
+ ===================
1389
+
1390
+ * deps: basic-auth@~1.0.3
1391
+ * deps: connect@2.30.1
1392
+ - deps: body-parser@~1.13.2
1393
+ - deps: compression@~1.5.1
1394
+ - deps: errorhandler@~1.4.1
1395
+ - deps: morgan@~1.6.1
1396
+ - deps: pause@0.1.0
1397
+ - deps: qs@4.0.0
1398
+ - deps: serve-index@~1.7.1
1399
+ - deps: type-is@~1.6.4
1400
+
1401
+ 3.21.0 / 2015-06-18
1402
+ ===================
1403
+
1404
+ * deps: basic-auth@1.0.2
1405
+ - perf: enable strict mode
1406
+ - perf: hoist regular expression
1407
+ - perf: parse with regular expressions
1408
+ - perf: remove argument reassignment
1409
+ * deps: connect@2.30.0
1410
+ - deps: body-parser@~1.13.1
1411
+ - deps: bytes@2.1.0
1412
+ - deps: compression@~1.5.0
1413
+ - deps: cookie@0.1.3
1414
+ - deps: cookie-parser@~1.3.5
1415
+ - deps: csurf@~1.8.3
1416
+ - deps: errorhandler@~1.4.0
1417
+ - deps: express-session@~1.11.3
1418
+ - deps: finalhandler@0.4.0
1419
+ - deps: fresh@0.3.0
1420
+ - deps: morgan@~1.6.0
1421
+ - deps: serve-favicon@~2.3.0
1422
+ - deps: serve-index@~1.7.0
1423
+ - deps: serve-static@~1.10.0
1424
+ - deps: type-is@~1.6.3
1425
+ * deps: cookie@0.1.3
1426
+ - perf: deduce the scope of try-catch deopt
1427
+ - perf: remove argument reassignments
1428
+ * deps: escape-html@1.0.2
1429
+ * deps: etag@~1.7.0
1430
+ - Always include entity length in ETags for hash length extensions
1431
+ - Generate non-Stats ETags using MD5 only (no longer CRC32)
1432
+ - Improve stat performance by removing hashing
1433
+ - Improve support for JXcore
1434
+ - Remove base64 padding in ETags to shorten
1435
+ - Support "fake" stats objects in environments without fs
1436
+ - Use MD5 instead of MD4 in weak ETags over 1KB
1437
+ * deps: fresh@0.3.0
1438
+ - Add weak `ETag` matching support
1439
+ * deps: mkdirp@0.5.1
1440
+ - Work in global strict mode
1441
+ * deps: send@0.13.0
1442
+ - Allow Node.js HTTP server to set `Date` response header
1443
+ - Fix incorrectly removing `Content-Location` on 304 response
1444
+ - Improve the default redirect response headers
1445
+ - Send appropriate headers on default error response
1446
+ - Use `http-errors` for standard emitted errors
1447
+ - Use `statuses` instead of `http` module for status messages
1448
+ - deps: escape-html@1.0.2
1449
+ - deps: etag@~1.7.0
1450
+ - deps: fresh@0.3.0
1451
+ - deps: on-finished@~2.3.0
1452
+ - perf: enable strict mode
1453
+ - perf: remove unnecessary array allocations
1454
+
1455
+ 3.20.3 / 2015-05-17
1456
+ ===================
1457
+
1458
+ * deps: connect@2.29.2
1459
+ - deps: body-parser@~1.12.4
1460
+ - deps: compression@~1.4.4
1461
+ - deps: connect-timeout@~1.6.2
1462
+ - deps: debug@~2.2.0
1463
+ - deps: depd@~1.0.1
1464
+ - deps: errorhandler@~1.3.6
1465
+ - deps: finalhandler@0.3.6
1466
+ - deps: method-override@~2.3.3
1467
+ - deps: morgan@~1.5.3
1468
+ - deps: qs@2.4.2
1469
+ - deps: response-time@~2.3.1
1470
+ - deps: serve-favicon@~2.2.1
1471
+ - deps: serve-index@~1.6.4
1472
+ - deps: serve-static@~1.9.3
1473
+ - deps: type-is@~1.6.2
1474
+ * deps: debug@~2.2.0
1475
+ - deps: ms@0.7.1
1476
+ * deps: depd@~1.0.1
1477
+ * deps: proxy-addr@~1.0.8
1478
+ - deps: ipaddr.js@1.0.1
1479
+ * deps: send@0.12.3
1480
+ - deps: debug@~2.2.0
1481
+ - deps: depd@~1.0.1
1482
+ - deps: etag@~1.6.0
1483
+ - deps: ms@0.7.1
1484
+ - deps: on-finished@~2.2.1
1485
+
1486
+ 3.20.2 / 2015-03-16
1487
+ ===================
1488
+
1489
+ * deps: connect@2.29.1
1490
+ - deps: body-parser@~1.12.2
1491
+ - deps: compression@~1.4.3
1492
+ - deps: connect-timeout@~1.6.1
1493
+ - deps: debug@~2.1.3
1494
+ - deps: errorhandler@~1.3.5
1495
+ - deps: express-session@~1.10.4
1496
+ - deps: finalhandler@0.3.4
1497
+ - deps: method-override@~2.3.2
1498
+ - deps: morgan@~1.5.2
1499
+ - deps: qs@2.4.1
1500
+ - deps: serve-index@~1.6.3
1501
+ - deps: serve-static@~1.9.2
1502
+ - deps: type-is@~1.6.1
1503
+ * deps: debug@~2.1.3
1504
+ - Fix high intensity foreground color for bold
1505
+ - deps: ms@0.7.0
1506
+ * deps: merge-descriptors@1.0.0
1507
+ * deps: proxy-addr@~1.0.7
1508
+ - deps: ipaddr.js@0.1.9
1509
+ * deps: send@0.12.2
1510
+ - Throw errors early for invalid `extensions` or `index` options
1511
+ - deps: debug@~2.1.3
1512
+
1513
+ 3.20.1 / 2015-02-28
1514
+ ===================
1515
+
1516
+ * Fix `req.host` when using "trust proxy" hops count
1517
+ * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count
1518
+
1519
+ 3.20.0 / 2015-02-18
1520
+ ===================
1521
+
1522
+ * Fix `"trust proxy"` setting to inherit when app is mounted
1523
+ * Generate `ETag`s for all request responses
1524
+ - No longer restricted to only responses for `GET` and `HEAD` requests
1525
+ * Use `content-type` to parse `Content-Type` headers
1526
+ * deps: connect@2.29.0
1527
+ - Use `content-type` to parse `Content-Type` headers
1528
+ - deps: body-parser@~1.12.0
1529
+ - deps: compression@~1.4.1
1530
+ - deps: connect-timeout@~1.6.0
1531
+ - deps: cookie-parser@~1.3.4
1532
+ - deps: cookie-signature@1.0.6
1533
+ - deps: csurf@~1.7.0
1534
+ - deps: errorhandler@~1.3.4
1535
+ - deps: express-session@~1.10.3
1536
+ - deps: http-errors@~1.3.1
1537
+ - deps: response-time@~2.3.0
1538
+ - deps: serve-index@~1.6.2
1539
+ - deps: serve-static@~1.9.1
1540
+ - deps: type-is@~1.6.0
1541
+ * deps: cookie-signature@1.0.6
1542
+ * deps: send@0.12.1
1543
+ - Always read the stat size from the file
1544
+ - Fix mutating passed-in `options`
1545
+ - deps: mime@1.3.4
1546
+
1547
+ 3.19.2 / 2015-02-01
1548
+ ===================
1549
+
1550
+ * deps: connect@2.28.3
1551
+ - deps: compression@~1.3.1
1552
+ - deps: csurf@~1.6.6
1553
+ - deps: errorhandler@~1.3.3
1554
+ - deps: express-session@~1.10.2
1555
+ - deps: serve-index@~1.6.1
1556
+ - deps: type-is@~1.5.6
1557
+ * deps: proxy-addr@~1.0.6
1558
+ - deps: ipaddr.js@0.1.8
1559
+
1560
+ 3.19.1 / 2015-01-20
1561
+ ===================
1562
+
1563
+ * deps: connect@2.28.2
1564
+ - deps: body-parser@~1.10.2
1565
+ - deps: serve-static@~1.8.1
1566
+ * deps: send@0.11.1
1567
+ - Fix root path disclosure
1568
+
1569
+ 3.19.0 / 2015-01-09
1570
+ ===================
1571
+
1572
+ * Fix `OPTIONS` responses to include the `HEAD` method property
1573
+ * Use `readline` for prompt in `express(1)`
1574
+ * deps: commander@2.6.0
1575
+ * deps: connect@2.28.1
1576
+ - deps: body-parser@~1.10.1
1577
+ - deps: compression@~1.3.0
1578
+ - deps: connect-timeout@~1.5.0
1579
+ - deps: csurf@~1.6.4
1580
+ - deps: debug@~2.1.1
1581
+ - deps: errorhandler@~1.3.2
1582
+ - deps: express-session@~1.10.1
1583
+ - deps: finalhandler@0.3.3
1584
+ - deps: method-override@~2.3.1
1585
+ - deps: morgan@~1.5.1
1586
+ - deps: serve-favicon@~2.2.0
1587
+ - deps: serve-index@~1.6.0
1588
+ - deps: serve-static@~1.8.0
1589
+ - deps: type-is@~1.5.5
1590
+ * deps: debug@~2.1.1
1591
+ * deps: methods@~1.1.1
1592
+ * deps: proxy-addr@~1.0.5
1593
+ - deps: ipaddr.js@0.1.6
1594
+ * deps: send@0.11.0
1595
+ - deps: debug@~2.1.1
1596
+ - deps: etag@~1.5.1
1597
+ - deps: ms@0.7.0
1598
+ - deps: on-finished@~2.2.0
1599
+
1600
+ 3.18.6 / 2014-12-12
1601
+ ===================
1602
+
1603
+ * Fix exception in `req.fresh`/`req.stale` without response headers
1604
+
1605
+ 3.18.5 / 2014-12-11
1606
+ ===================
1607
+
1608
+ * deps: connect@2.27.6
1609
+ - deps: compression@~1.2.2
1610
+ - deps: express-session@~1.9.3
1611
+ - deps: http-errors@~1.2.8
1612
+ - deps: serve-index@~1.5.3
1613
+ - deps: type-is@~1.5.4
1614
+
1615
+ 3.18.4 / 2014-11-23
1616
+ ===================
1617
+
1618
+ * deps: connect@2.27.4
1619
+ - deps: body-parser@~1.9.3
1620
+ - deps: compression@~1.2.1
1621
+ - deps: errorhandler@~1.2.3
1622
+ - deps: express-session@~1.9.2
1623
+ - deps: qs@2.3.3
1624
+ - deps: serve-favicon@~2.1.7
1625
+ - deps: serve-static@~1.5.1
1626
+ - deps: type-is@~1.5.3
1627
+ * deps: etag@~1.5.1
1628
+ * deps: proxy-addr@~1.0.4
1629
+ - deps: ipaddr.js@0.1.5
1630
+
1631
+ 3.18.3 / 2014-11-09
1632
+ ===================
1633
+
1634
+ * deps: connect@2.27.3
1635
+ - Correctly invoke async callback asynchronously
1636
+ - deps: csurf@~1.6.3
1637
+
1638
+ 3.18.2 / 2014-10-28
1639
+ ===================
1640
+
1641
+ * deps: connect@2.27.2
1642
+ - Fix handling of URLs containing `://` in the path
1643
+ - deps: body-parser@~1.9.2
1644
+ - deps: qs@2.3.2
1645
+
1646
+ 3.18.1 / 2014-10-22
1647
+ ===================
1648
+
1649
+ * Fix internal `utils.merge` deprecation warnings
1650
+ * deps: connect@2.27.1
1651
+ - deps: body-parser@~1.9.1
1652
+ - deps: express-session@~1.9.1
1653
+ - deps: finalhandler@0.3.2
1654
+ - deps: morgan@~1.4.1
1655
+ - deps: qs@2.3.0
1656
+ - deps: serve-static@~1.7.1
1657
+ * deps: send@0.10.1
1658
+ - deps: on-finished@~2.1.1
1659
+
1660
+ 3.18.0 / 2014-10-17
1661
+ ===================
1662
+
1663
+ * Use `content-disposition` module for `res.attachment`/`res.download`
1664
+ - Sends standards-compliant `Content-Disposition` header
1665
+ - Full Unicode support
1666
+ * Use `etag` module to generate `ETag` headers
1667
+ * deps: connect@2.27.0
1668
+ - Use `http-errors` module for creating errors
1669
+ - Use `utils-merge` module for merging objects
1670
+ - deps: body-parser@~1.9.0
1671
+ - deps: compression@~1.2.0
1672
+ - deps: connect-timeout@~1.4.0
1673
+ - deps: debug@~2.1.0
1674
+ - deps: depd@~1.0.0
1675
+ - deps: express-session@~1.9.0
1676
+ - deps: finalhandler@0.3.1
1677
+ - deps: method-override@~2.3.0
1678
+ - deps: morgan@~1.4.0
1679
+ - deps: response-time@~2.2.0
1680
+ - deps: serve-favicon@~2.1.6
1681
+ - deps: serve-index@~1.5.0
1682
+ - deps: serve-static@~1.7.0
1683
+ * deps: debug@~2.1.0
1684
+ - Implement `DEBUG_FD` env variable support
1685
+ * deps: depd@~1.0.0
1686
+ * deps: send@0.10.0
1687
+ - deps: debug@~2.1.0
1688
+ - deps: depd@~1.0.0
1689
+ - deps: etag@~1.5.0
1690
+
1691
+ 3.17.8 / 2014-10-15
1692
+ ===================
1693
+
1694
+ * deps: connect@2.26.6
1695
+ - deps: compression@~1.1.2
1696
+ - deps: csurf@~1.6.2
1697
+ - deps: errorhandler@~1.2.2
1698
+
1699
+ 3.17.7 / 2014-10-08
1700
+ ===================
1701
+
1702
+ * deps: connect@2.26.5
1703
+ - Fix accepting non-object arguments to `logger`
1704
+ - deps: serve-static@~1.6.4
1705
+
1706
+ 3.17.6 / 2014-10-02
1707
+ ===================
1708
+
1709
+ * deps: connect@2.26.4
1710
+ - deps: morgan@~1.3.2
1711
+ - deps: type-is@~1.5.2
1712
+
1713
+ 3.17.5 / 2014-09-24
1714
+ ===================
1715
+
1716
+ * deps: connect@2.26.3
1717
+ - deps: body-parser@~1.8.4
1718
+ - deps: serve-favicon@~2.1.5
1719
+ - deps: serve-static@~1.6.3
1720
+ * deps: proxy-addr@~1.0.3
1721
+ - Use `forwarded` npm module
1722
+ * deps: send@0.9.3
1723
+ - deps: etag@~1.4.0
1724
+
1725
+ 3.17.4 / 2014-09-19
1726
+ ===================
1727
+
1728
+ * deps: connect@2.26.2
1729
+ - deps: body-parser@~1.8.3
1730
+ - deps: qs@2.2.4
1731
+
1732
+ 3.17.3 / 2014-09-18
1733
+ ===================
1734
+
1735
+ * deps: proxy-addr@~1.0.2
1736
+ - Fix a global leak when multiple subnets are trusted
1737
+ - deps: ipaddr.js@0.1.3
1738
+
1739
+ 3.17.2 / 2014-09-15
1740
+ ===================
1741
+
1742
+ * Use `crc` instead of `buffer-crc32` for speed
1743
+ * deps: connect@2.26.1
1744
+ - deps: body-parser@~1.8.2
1745
+ - deps: depd@0.4.5
1746
+ - deps: express-session@~1.8.2
1747
+ - deps: morgan@~1.3.1
1748
+ - deps: serve-favicon@~2.1.3
1749
+ - deps: serve-static@~1.6.2
1750
+ * deps: depd@0.4.5
1751
+ * deps: send@0.9.2
1752
+ - deps: depd@0.4.5
1753
+ - deps: etag@~1.3.1
1754
+ - deps: range-parser@~1.0.2
1755
+
1756
+ 3.17.1 / 2014-09-08
1757
+ ===================
1758
+
1759
+ * Fix error in `req.subdomains` on empty host
1760
+
1761
+ 3.17.0 / 2014-09-08
1762
+ ===================
1763
+
1764
+ * Support `X-Forwarded-Host` in `req.subdomains`
1765
+ * Support IP address host in `req.subdomains`
1766
+ * deps: connect@2.26.0
1767
+ - deps: body-parser@~1.8.1
1768
+ - deps: compression@~1.1.0
1769
+ - deps: connect-timeout@~1.3.0
1770
+ - deps: cookie-parser@~1.3.3
1771
+ - deps: cookie-signature@1.0.5
1772
+ - deps: csurf@~1.6.1
1773
+ - deps: debug@~2.0.0
1774
+ - deps: errorhandler@~1.2.0
1775
+ - deps: express-session@~1.8.1
1776
+ - deps: finalhandler@0.2.0
1777
+ - deps: fresh@0.2.4
1778
+ - deps: media-typer@0.3.0
1779
+ - deps: method-override@~2.2.0
1780
+ - deps: morgan@~1.3.0
1781
+ - deps: qs@2.2.3
1782
+ - deps: serve-favicon@~2.1.3
1783
+ - deps: serve-index@~1.2.1
1784
+ - deps: serve-static@~1.6.1
1785
+ - deps: type-is@~1.5.1
1786
+ - deps: vhost@~3.0.0
1787
+ * deps: cookie-signature@1.0.5
1788
+ * deps: debug@~2.0.0
1789
+ * deps: fresh@0.2.4
1790
+ * deps: media-typer@0.3.0
1791
+ - Throw error when parameter format invalid on parse
1792
+ * deps: range-parser@~1.0.2
1793
+ * deps: send@0.9.1
1794
+ - Add `lastModified` option
1795
+ - Use `etag` to generate `ETag` header
1796
+ - deps: debug@~2.0.0
1797
+ - deps: fresh@0.2.4
1798
+ * deps: vary@~1.0.0
1799
+ - Accept valid `Vary` header string as `field`
1800
+
1801
+ 3.16.10 / 2014-09-04
1802
+ ====================
1803
+
1804
+ * deps: connect@2.25.10
1805
+ - deps: serve-static@~1.5.4
1806
+ * deps: send@0.8.5
1807
+ - Fix a path traversal issue when using `root`
1808
+ - Fix malicious path detection for empty string path
1809
+
1810
+ 3.16.9 / 2014-08-29
1811
+ ===================
1812
+
1813
+ * deps: connect@2.25.9
1814
+ - deps: body-parser@~1.6.7
1815
+ - deps: qs@2.2.2
1816
+
1817
+ 3.16.8 / 2014-08-27
1818
+ ===================
1819
+
1820
+ * deps: connect@2.25.8
1821
+ - deps: body-parser@~1.6.6
1822
+ - deps: csurf@~1.4.1
1823
+ - deps: qs@2.2.0
1824
+
1825
+ 3.16.7 / 2014-08-18
1826
+ ===================
1827
+
1828
+ * deps: connect@2.25.7
1829
+ - deps: body-parser@~1.6.5
1830
+ - deps: express-session@~1.7.6
1831
+ - deps: morgan@~1.2.3
1832
+ - deps: serve-static@~1.5.3
1833
+ * deps: send@0.8.3
1834
+ - deps: destroy@1.0.3
1835
+ - deps: on-finished@2.1.0
1836
+
1837
+ 3.16.6 / 2014-08-14
1838
+ ===================
1839
+
1840
+ * deps: connect@2.25.6
1841
+ - deps: body-parser@~1.6.4
1842
+ - deps: qs@1.2.2
1843
+ - deps: serve-static@~1.5.2
1844
+ * deps: send@0.8.2
1845
+ - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
1846
+
1847
+ 3.16.5 / 2014-08-11
1848
+ ===================
1849
+
1850
+ * deps: connect@2.25.5
1851
+ - Fix backwards compatibility in `logger`
1852
+
1853
+ 3.16.4 / 2014-08-10
1854
+ ===================
1855
+
1856
+ * Fix original URL parsing in `res.location`
1857
+ * deps: connect@2.25.4
1858
+ - Fix `query` middleware breaking with argument
1859
+ - deps: body-parser@~1.6.3
1860
+ - deps: compression@~1.0.11
1861
+ - deps: connect-timeout@~1.2.2
1862
+ - deps: express-session@~1.7.5
1863
+ - deps: method-override@~2.1.3
1864
+ - deps: on-headers@~1.0.0
1865
+ - deps: parseurl@~1.3.0
1866
+ - deps: qs@1.2.1
1867
+ - deps: response-time@~2.0.1
1868
+ - deps: serve-index@~1.1.6
1869
+ - deps: serve-static@~1.5.1
1870
+ * deps: parseurl@~1.3.0
1871
+
1872
+ 3.16.3 / 2014-08-07
1873
+ ===================
1874
+
1875
+ * deps: connect@2.25.3
1876
+ - deps: multiparty@3.3.2
1877
+
1878
+ 3.16.2 / 2014-08-07
1879
+ ===================
1880
+
1881
+ * deps: connect@2.25.2
1882
+ - deps: body-parser@~1.6.2
1883
+ - deps: qs@1.2.0
1884
+
1885
+ 3.16.1 / 2014-08-06
1886
+ ===================
1887
+
1888
+ * deps: connect@2.25.1
1889
+ - deps: body-parser@~1.6.1
1890
+ - deps: qs@1.1.0
1891
+
1892
+ 3.16.0 / 2014-08-05
1893
+ ===================
1894
+
1895
+ * deps: connect@2.25.0
1896
+ - deps: body-parser@~1.6.0
1897
+ - deps: compression@~1.0.10
1898
+ - deps: csurf@~1.4.0
1899
+ - deps: express-session@~1.7.4
1900
+ - deps: qs@1.0.2
1901
+ - deps: serve-static@~1.5.0
1902
+ * deps: send@0.8.1
1903
+ - Add `extensions` option
1904
+
1905
+ 3.15.3 / 2014-08-04
1906
+ ===================
1907
+
1908
+ * fix `res.sendfile` regression for serving directory index files
1909
+ * deps: connect@2.24.3
1910
+ - deps: serve-index@~1.1.5
1911
+ - deps: serve-static@~1.4.4
1912
+ * deps: send@0.7.4
1913
+ - Fix incorrect 403 on Windows and Node.js 0.11
1914
+ - Fix serving index files without root dir
1915
+
1916
+ 3.15.2 / 2014-07-27
1917
+ ===================
1918
+
1919
+ * deps: connect@2.24.2
1920
+ - deps: body-parser@~1.5.2
1921
+ - deps: depd@0.4.4
1922
+ - deps: express-session@~1.7.2
1923
+ - deps: morgan@~1.2.2
1924
+ - deps: serve-static@~1.4.2
1925
+ * deps: depd@0.4.4
1926
+ - Work-around v8 generating empty stack traces
1927
+ * deps: send@0.7.2
1928
+ - deps: depd@0.4.4
1929
+
1930
+ 3.15.1 / 2014-07-26
1931
+ ===================
1932
+
1933
+ * deps: connect@2.24.1
1934
+ - deps: body-parser@~1.5.1
1935
+ - deps: depd@0.4.3
1936
+ - deps: express-session@~1.7.1
1937
+ - deps: morgan@~1.2.1
1938
+ - deps: serve-index@~1.1.4
1939
+ - deps: serve-static@~1.4.1
1940
+ * deps: depd@0.4.3
1941
+ - Fix exception when global `Error.stackTraceLimit` is too low
1942
+ * deps: send@0.7.1
1943
+ - deps: depd@0.4.3
1944
+
1945
+ 3.15.0 / 2014-07-22
1946
+ ===================
1947
+
1948
+ * Fix `req.protocol` for proxy-direct connections
1949
+ * Pass options from `res.sendfile` to `send`
1950
+ * deps: connect@2.24.0
1951
+ - deps: body-parser@~1.5.0
1952
+ - deps: compression@~1.0.9
1953
+ - deps: connect-timeout@~1.2.1
1954
+ - deps: debug@1.0.4
1955
+ - deps: depd@0.4.2
1956
+ - deps: express-session@~1.7.0
1957
+ - deps: finalhandler@0.1.0
1958
+ - deps: method-override@~2.1.2
1959
+ - deps: morgan@~1.2.0
1960
+ - deps: multiparty@3.3.1
1961
+ - deps: parseurl@~1.2.0
1962
+ - deps: serve-static@~1.4.0
1963
+ * deps: debug@1.0.4
1964
+ * deps: depd@0.4.2
1965
+ - Add `TRACE_DEPRECATION` environment variable
1966
+ - Remove non-standard grey color from color output
1967
+ - Support `--no-deprecation` argument
1968
+ - Support `--trace-deprecation` argument
1969
+ * deps: parseurl@~1.2.0
1970
+ - Cache URLs based on original value
1971
+ - Remove no-longer-needed URL mis-parse work-around
1972
+ - Simplify the "fast-path" `RegExp`
1973
+ * deps: send@0.7.0
1974
+ - Add `dotfiles` option
1975
+ - Cap `maxAge` value to 1 year
1976
+ - deps: debug@1.0.4
1977
+ - deps: depd@0.4.2
1978
+
1979
+ 3.14.0 / 2014-07-11
1980
+ ===================
1981
+
1982
+ * add explicit "Rosetta Flash JSONP abuse" protection
1983
+ - previous versions are not vulnerable; this is just explicit protection
1984
+ * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead
1985
+ * fix `res.send(status, num)` to send `num` as json (not error)
1986
+ * remove unnecessary escaping when `res.jsonp` returns JSON response
1987
+ * deps: basic-auth@1.0.0
1988
+ - support empty password
1989
+ - support empty username
1990
+ * deps: connect@2.23.0
1991
+ - deps: debug@1.0.3
1992
+ - deps: express-session@~1.6.4
1993
+ - deps: method-override@~2.1.0
1994
+ - deps: parseurl@~1.1.3
1995
+ - deps: serve-static@~1.3.1
1996
+ * deps: debug@1.0.3
1997
+ - Add support for multiple wildcards in namespaces
1998
+ * deps: methods@1.1.0
1999
+ - add `CONNECT`
2000
+ * deps: parseurl@~1.1.3
2001
+ - faster parsing of href-only URLs
2002
+
2003
+ 3.13.0 / 2014-07-03
2004
+ ===================
2005
+
2006
+ * add deprecation message to `app.configure`
2007
+ * add deprecation message to `req.auth`
2008
+ * use `basic-auth` to parse `Authorization` header
2009
+ * deps: connect@2.22.0
2010
+ - deps: csurf@~1.3.0
2011
+ - deps: express-session@~1.6.1
2012
+ - deps: multiparty@3.3.0
2013
+ - deps: serve-static@~1.3.0
2014
+ * deps: send@0.5.0
2015
+ - Accept string for `maxage` (converted by `ms`)
2016
+ - Include link in default redirect response
2017
+
2018
+ 3.12.1 / 2014-06-26
2019
+ ===================
2020
+
2021
+ * deps: connect@2.21.1
2022
+ - deps: cookie-parser@1.3.2
2023
+ - deps: cookie-signature@1.0.4
2024
+ - deps: express-session@~1.5.2
2025
+ - deps: type-is@~1.3.2
2026
+ * deps: cookie-signature@1.0.4
2027
+ - fix for timing attacks
2028
+
2029
+ 3.12.0 / 2014-06-21
2030
+ ===================
2031
+
2032
+ * use `media-typer` to alter content-type charset
2033
+ * deps: connect@2.21.0
2034
+ - deprecate `connect(middleware)` -- use `app.use(middleware)` instead
2035
+ - deprecate `connect.createServer()` -- use `connect()` instead
2036
+ - fix `res.setHeader()` patch to work with with get -> append -> set pattern
2037
+ - deps: compression@~1.0.8
2038
+ - deps: errorhandler@~1.1.1
2039
+ - deps: express-session@~1.5.0
2040
+ - deps: serve-index@~1.1.3
2041
+
2042
+ 3.11.0 / 2014-06-19
2043
+ ===================
2044
+
2045
+ * deprecate things with `depd` module
2046
+ * deps: buffer-crc32@0.2.3
2047
+ * deps: connect@2.20.2
2048
+ - deprecate `verify` option to `json` -- use `body-parser` npm module instead
2049
+ - deprecate `verify` option to `urlencoded` -- use `body-parser` npm module instead
2050
+ - deprecate things with `depd` module
2051
+ - use `finalhandler` for final response handling
2052
+ - use `media-typer` to parse `content-type` for charset
2053
+ - deps: body-parser@1.4.3
2054
+ - deps: connect-timeout@1.1.1
2055
+ - deps: cookie-parser@1.3.1
2056
+ - deps: csurf@1.2.2
2057
+ - deps: errorhandler@1.1.0
2058
+ - deps: express-session@1.4.0
2059
+ - deps: multiparty@3.2.9
2060
+ - deps: serve-index@1.1.2
2061
+ - deps: type-is@1.3.1
2062
+ - deps: vhost@2.0.0
2063
+
2064
+ 3.10.5 / 2014-06-11
2065
+ ===================
2066
+
2067
+ * deps: connect@2.19.6
2068
+ - deps: body-parser@1.3.1
2069
+ - deps: compression@1.0.7
2070
+ - deps: debug@1.0.2
2071
+ - deps: serve-index@1.1.1
2072
+ - deps: serve-static@1.2.3
2073
+ * deps: debug@1.0.2
2074
+ * deps: send@0.4.3
2075
+ - Do not throw uncatchable error on file open race condition
2076
+ - Use `escape-html` for HTML escaping
2077
+ - deps: debug@1.0.2
2078
+ - deps: finished@1.2.2
2079
+ - deps: fresh@0.2.2
2080
+
2081
+ 3.10.4 / 2014-06-09
2082
+ ===================
2083
+
2084
+ * deps: connect@2.19.5
2085
+ - fix "event emitter leak" warnings
2086
+ - deps: csurf@1.2.1
2087
+ - deps: debug@1.0.1
2088
+ - deps: serve-static@1.2.2
2089
+ - deps: type-is@1.2.1
2090
+ * deps: debug@1.0.1
2091
+ * deps: send@0.4.2
2092
+ - fix "event emitter leak" warnings
2093
+ - deps: finished@1.2.1
2094
+ - deps: debug@1.0.1
2095
+
2096
+ 3.10.3 / 2014-06-05
2097
+ ===================
2098
+
2099
+ * use `vary` module for `res.vary`
2100
+ * deps: connect@2.19.4
2101
+ - deps: errorhandler@1.0.2
2102
+ - deps: method-override@2.0.2
2103
+ - deps: serve-favicon@2.0.1
2104
+ * deps: debug@1.0.0
2105
+
2106
+ 3.10.2 / 2014-06-03
2107
+ ===================
2108
+
2109
+ * deps: connect@2.19.3
2110
+ - deps: compression@1.0.6
2111
+
2112
+ 3.10.1 / 2014-06-03
2113
+ ===================
2114
+
2115
+ * deps: connect@2.19.2
2116
+ - deps: compression@1.0.4
2117
+ * deps: proxy-addr@1.0.1
2118
+
2119
+ 3.10.0 / 2014-06-02
2120
+ ===================
2121
+
2122
+ * deps: connect@2.19.1
2123
+ - deprecate `methodOverride()` -- use `method-override` npm module instead
2124
+ - deps: body-parser@1.3.0
2125
+ - deps: method-override@2.0.1
2126
+ - deps: multiparty@3.2.8
2127
+ - deps: response-time@2.0.0
2128
+ - deps: serve-static@1.2.1
2129
+ * deps: methods@1.0.1
2130
+ * deps: send@0.4.1
2131
+ - Send `max-age` in `Cache-Control` in correct format
2132
+
2133
+ 3.9.0 / 2014-05-30
2134
+ ==================
2135
+
2136
+ * custom etag control with `app.set('etag', val)`
2137
+ - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation
2138
+ - `app.set('etag', 'weak')` weak tag
2139
+ - `app.set('etag', 'strong')` strong etag
2140
+ - `app.set('etag', false)` turn off
2141
+ - `app.set('etag', true)` standard etag
2142
+ * Include ETag in HEAD requests
2143
+ * mark `res.send` ETag as weak and reduce collisions
2144
+ * update connect to 2.18.0
2145
+ - deps: compression@1.0.3
2146
+ - deps: serve-index@1.1.0
2147
+ - deps: serve-static@1.2.0
2148
+ * update send to 0.4.0
2149
+ - Calculate ETag with md5 for reduced collisions
2150
+ - Ignore stream errors after request ends
2151
+ - deps: debug@0.8.1
2152
+
2153
+ 3.8.1 / 2014-05-27
2154
+ ==================
2155
+
2156
+ * update connect to 2.17.3
2157
+ - deps: body-parser@1.2.2
2158
+ - deps: express-session@1.2.1
2159
+ - deps: method-override@1.0.2
2160
+
2161
+ 3.8.0 / 2014-05-21
2162
+ ==================
2163
+
2164
+ * keep previous `Content-Type` for `res.jsonp`
2165
+ * set proper `charset` in `Content-Type` for `res.send`
2166
+ * update connect to 2.17.1
2167
+ - fix `res.charset` appending charset when `content-type` has one
2168
+ - deps: express-session@1.2.0
2169
+ - deps: morgan@1.1.1
2170
+ - deps: serve-index@1.0.3
2171
+
2172
+ 3.7.0 / 2014-05-18
2173
+ ==================
2174
+
2175
+ * proper proxy trust with `app.set('trust proxy', trust)`
2176
+ - `app.set('trust proxy', 1)` trust first hop
2177
+ - `app.set('trust proxy', 'loopback')` trust loopback addresses
2178
+ - `app.set('trust proxy', '10.0.0.1')` trust single IP
2179
+ - `app.set('trust proxy', '10.0.0.1/16')` trust subnet
2180
+ - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list
2181
+ - `app.set('trust proxy', false)` turn off
2182
+ - `app.set('trust proxy', true)` trust everything
2183
+ * update connect to 2.16.2
2184
+ - deprecate `res.headerSent` -- use `res.headersSent`
2185
+ - deprecate `res.on("header")` -- use on-headers module instead
2186
+ - fix edge-case in `res.appendHeader` that would append in wrong order
2187
+ - json: use body-parser
2188
+ - urlencoded: use body-parser
2189
+ - dep: bytes@1.0.0
2190
+ - dep: cookie-parser@1.1.0
2191
+ - dep: csurf@1.2.0
2192
+ - dep: express-session@1.1.0
2193
+ - dep: method-override@1.0.1
2194
+
2195
+ 3.6.0 / 2014-05-09
2196
+ ==================
2197
+
2198
+ * deprecate `app.del()` -- use `app.delete()` instead
2199
+ * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead
2200
+ - the edge-case `res.json(status, num)` requires `res.status(status).json(num)`
2201
+ * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead
2202
+ - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)`
2203
+ * support PURGE method
2204
+ - add `app.purge`
2205
+ - add `router.purge`
2206
+ - include PURGE in `app.all`
2207
+ * update connect to 2.15.0
2208
+ * Add `res.appendHeader`
2209
+ * Call error stack even when response has been sent
2210
+ * Patch `res.headerSent` to return Boolean
2211
+ * Patch `res.headersSent` for node.js 0.8
2212
+ * Prevent default 404 handler after response sent
2213
+ * dep: compression@1.0.2
2214
+ * dep: connect-timeout@1.1.0
2215
+ * dep: debug@^0.8.0
2216
+ * dep: errorhandler@1.0.1
2217
+ * dep: express-session@1.0.4
2218
+ * dep: morgan@1.0.1
2219
+ * dep: serve-favicon@2.0.0
2220
+ * dep: serve-index@1.0.2
2221
+ * update debug to 0.8.0
2222
+ * add `enable()` method
2223
+ * change from stderr to stdout
2224
+ * update methods to 1.0.0
2225
+ - add PURGE
2226
+ * update mkdirp to 0.5.0
2227
+
2228
+ 3.5.3 / 2014-05-08
2229
+ ==================
2230
+
2231
+ * fix `req.host` for IPv6 literals
2232
+ * fix `res.jsonp` error if callback param is object
2233
+
2234
+ 3.5.2 / 2014-04-24
2235
+ ==================
2236
+
2237
+ * update connect to 2.14.5
2238
+ * update cookie to 0.1.2
2239
+ * update mkdirp to 0.4.0
2240
+ * update send to 0.3.0
2241
+
2242
+ 3.5.1 / 2014-03-25
2243
+ ==================
2244
+
2245
+ * pin less-middleware in generated app
2246
+
2247
+ 3.5.0 / 2014-03-06
2248
+ ==================
2249
+
2250
+ * bump deps
2251
+
2252
+ 3.4.8 / 2014-01-13
2253
+ ==================
2254
+
2255
+ * prevent incorrect automatic OPTIONS responses #1868 @dpatti
2256
+ * update binary and examples for jade 1.0 #1876 @yossi, #1877 @reqshark, #1892 @matheusazzi
2257
+ * throw 400 in case of malformed paths @rlidwka
2258
+
2259
+ 3.4.7 / 2013-12-10
2260
+ ==================
2261
+
2262
+ * update connect
2263
+
2264
+ 3.4.6 / 2013-12-01
2265
+ ==================
2266
+
2267
+ * update connect (raw-body)
2268
+
2269
+ 3.4.5 / 2013-11-27
2270
+ ==================
2271
+
2272
+ * update connect
2273
+ * res.location: remove leading ./ #1802 @kapouer
2274
+ * res.redirect: fix `res.redirect('toString') #1829 @michaelficarra
2275
+ * res.send: always send ETag when content-length > 0
2276
+ * router: add Router.all() method
2277
+
2278
+ 3.4.4 / 2013-10-29
2279
+ ==================
2280
+
2281
+ * update connect
2282
+ * update supertest
2283
+ * update methods
2284
+ * express(1): replace bodyParser() with urlencoded() and json() #1795 @chirag04
2285
+
2286
+ 3.4.3 / 2013-10-23
2287
+ ==================
2288
+
2289
+ * update connect
2290
+
2291
+ 3.4.2 / 2013-10-18
2292
+ ==================
2293
+
2294
+ * update connect
2295
+ * downgrade commander
2296
+
2297
+ 3.4.1 / 2013-10-15
2298
+ ==================
2299
+
2300
+ * update connect
2301
+ * update commander
2302
+ * jsonp: check if callback is a function
2303
+ * router: wrap encodeURIComponent in a try/catch #1735 (@lxe)
2304
+ * res.format: now includes charset @1747 (@sorribas)
2305
+ * res.links: allow multiple calls @1746 (@sorribas)
2306
+
2307
+ 3.4.0 / 2013-09-07
2308
+ ==================
2309
+
2310
+ * add res.vary(). Closes #1682
2311
+ * update connect
2312
+
2313
+ 3.3.8 / 2013-09-02
2314
+ ==================
2315
+
2316
+ * update connect
2317
+
2318
+ 3.3.7 / 2013-08-28
2319
+ ==================
2320
+
2321
+ * update connect
2322
+
2323
+ 3.3.6 / 2013-08-27
2324
+ ==================
2325
+
2326
+ * Revert "remove charset from json responses. Closes #1631" (causes issues in some clients)
2327
+ * add: req.accepts take an argument list
2328
+
2329
+ 3.3.4 / 2013-07-08
2330
+ ==================
2331
+
2332
+ * update send and connect
2333
+
2334
+ 3.3.3 / 2013-07-04
2335
+ ==================
2336
+
2337
+ * update connect
2338
+
2339
+ 3.3.2 / 2013-07-03
2340
+ ==================
2341
+
2342
+ * update connect
2343
+ * update send
2344
+ * remove .version export
2345
+
2346
+ 3.3.1 / 2013-06-27
2347
+ ==================
2348
+
2349
+ * update connect
2350
+
2351
+ 3.3.0 / 2013-06-26
2352
+ ==================
2353
+
2354
+ * update connect
2355
+ * add support for multiple X-Forwarded-Proto values. Closes #1646
2356
+ * change: remove charset from json responses. Closes #1631
2357
+ * change: return actual booleans from req.accept* functions
2358
+ * fix jsonp callback array throw
2359
+
2360
+ 3.2.6 / 2013-06-02
2361
+ ==================
2362
+
2363
+ * update connect
2364
+
2365
+ 3.2.5 / 2013-05-21
2366
+ ==================
2367
+
2368
+ * update connect
2369
+ * update node-cookie
2370
+ * add: throw a meaningful error when there is no default engine
2371
+ * change generation of ETags with res.send() to GET requests only. Closes #1619
2372
+
2373
+ 3.2.4 / 2013-05-09
2374
+ ==================
2375
+
2376
+ * fix `req.subdomains` when no Host is present
2377
+ * fix `req.host` when no Host is present, return undefined
2378
+
2379
+ 3.2.3 / 2013-05-07
2380
+ ==================
2381
+
2382
+ * update connect / qs
2383
+
2384
+ 3.2.2 / 2013-05-03
2385
+ ==================
2386
+
2387
+ * update qs
2388
+
2389
+ 3.2.1 / 2013-04-29
2390
+ ==================
2391
+
2392
+ * add app.VERB() paths array deprecation warning
2393
+ * update connect
2394
+ * update qs and remove all ~ semver crap
2395
+ * fix: accept number as value of Signed Cookie
2396
+
2397
+ 3.2.0 / 2013-04-15
2398
+ ==================
2399
+
2400
+ * add "view" constructor setting to override view behaviour
2401
+ * add req.acceptsEncoding(name)
2402
+ * add req.acceptedEncodings
2403
+ * revert cookie signature change causing session race conditions
2404
+ * fix sorting of Accept values of the same quality
2405
+
2406
+ 3.1.2 / 2013-04-12
2407
+ ==================
2408
+
2409
+ * add support for custom Accept parameters
2410
+ * update cookie-signature
2411
+
2412
+ 3.1.1 / 2013-04-01
2413
+ ==================
2414
+
2415
+ * add X-Forwarded-Host support to `req.host`
2416
+ * fix relative redirects
2417
+ * update mkdirp
2418
+ * update buffer-crc32
2419
+ * remove legacy app.configure() method from app template.
2420
+
2421
+ 3.1.0 / 2013-01-25
2422
+ ==================
2423
+
2424
+ * add support for leading "." in "view engine" setting
2425
+ * add array support to `res.set()`
2426
+ * add node 0.8.x to travis.yml
2427
+ * add "subdomain offset" setting for tweaking `req.subdomains`
2428
+ * add `res.location(url)` implementing `res.redirect()`-like setting of Location
2429
+ * use app.get() for x-powered-by setting for inheritance
2430
+ * fix colons in passwords for `req.auth`
2431
+
2432
+ 3.0.6 / 2013-01-04
2433
+ ==================
2434
+
2435
+ * add http verb methods to Router
2436
+ * update connect
2437
+ * fix mangling of the `res.cookie()` options object
2438
+ * fix jsonp whitespace escape. Closes #1132
2439
+
2440
+ 3.0.5 / 2012-12-19
2441
+ ==================
2442
+
2443
+ * add throwing when a non-function is passed to a route
2444
+ * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses
2445
+ * revert "add 'etag' option"
2446
+
2447
+ 3.0.4 / 2012-12-05
2448
+ ==================
2449
+
2450
+ * add 'etag' option to disable `res.send()` Etags
2451
+ * add escaping of urls in text/plain in `res.redirect()`
2452
+ for old browsers interpreting as html
2453
+ * change crc32 module for a more liberal license
2454
+ * update connect
2455
+
2456
+ 3.0.3 / 2012-11-13
2457
+ ==================
2458
+
2459
+ * update connect
2460
+ * update cookie module
2461
+ * fix cookie max-age
2462
+
2463
+ 3.0.2 / 2012-11-08
2464
+ ==================
2465
+
2466
+ * add OPTIONS to cors example. Closes #1398
2467
+ * fix route chaining regression. Closes #1397
2468
+
2469
+ 3.0.1 / 2012-11-01
2470
+ ==================
2471
+
2472
+ * update connect
2473
+
2474
+ 3.0.0 / 2012-10-23
2475
+ ==================
2476
+
2477
+ * add `make clean`
2478
+ * add "Basic" check to req.auth
2479
+ * add `req.auth` test coverage
2480
+ * add cb && cb(payload) to `res.jsonp()`. Closes #1374
2481
+ * add backwards compat for `res.redirect()` status. Closes #1336
2482
+ * add support for `res.json()` to retain previously defined Content-Types. Closes #1349
2483
+ * update connect
2484
+ * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382
2485
+ * remove non-primitive string support for `res.send()`
2486
+ * fix view-locals example. Closes #1370
2487
+ * fix route-separation example
2488
+
2489
+ 3.0.0rc5 / 2012-09-18
2490
+ ==================
2491
+
2492
+ * update connect
2493
+ * add redis search example
2494
+ * add static-files example
2495
+ * add "x-powered-by" setting (`app.disable('x-powered-by')`)
2496
+ * add "application/octet-stream" redirect Accept test case. Closes #1317
2497
+
2498
+ 3.0.0rc4 / 2012-08-30
2499
+ ==================
2500
+
2501
+ * add `res.jsonp()`. Closes #1307
2502
+ * add "verbose errors" option to error-pages example
2503
+ * add another route example to express(1) so people are not so confused
2504
+ * add redis online user activity tracking example
2505
+ * update connect dep
2506
+ * fix etag quoting. Closes #1310
2507
+ * fix error-pages 404 status
2508
+ * fix jsonp callback char restrictions
2509
+ * remove old OPTIONS default response
2510
+
2511
+ 3.0.0rc3 / 2012-08-13
2512
+ ==================
2513
+
2514
+ * update connect dep
2515
+ * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds]
2516
+ * fix `res.render()` clobbering of "locals"
2517
+
2518
+ 3.0.0rc2 / 2012-08-03
2519
+ ==================
2520
+
2521
+ * add CORS example
2522
+ * update connect dep
2523
+ * deprecate `.createServer()` & remove old stale examples
2524
+ * fix: escape `res.redirect()` link
2525
+ * fix vhost example
2526
+
2527
+ 3.0.0rc1 / 2012-07-24
2528
+ ==================
2529
+
2530
+ * add more examples to view-locals
2531
+ * add scheme-relative redirects (`res.redirect("//foo.com")`) support
2532
+ * update cookie dep
2533
+ * update connect dep
2534
+ * update send dep
2535
+ * fix `express(1)` -h flag, use -H for hogan. Closes #1245
2536
+ * fix `res.sendfile()` socket error handling regression
2537
+
2538
+ 3.0.0beta7 / 2012-07-16
2539
+ ==================
2540
+
2541
+ * update connect dep for `send()` root normalization regression
2542
+
2543
+ 3.0.0beta6 / 2012-07-13
2544
+ ==================
2545
+
2546
+ * add `err.view` property for view errors. Closes #1226
2547
+ * add "jsonp callback name" setting
2548
+ * add support for "/foo/:bar*" non-greedy matches
2549
+ * change `res.sendfile()` to use `send()` module
2550
+ * change `res.send` to use "response-send" module
2551
+ * remove `app.locals.use` and `res.locals.use`, use regular middleware
2552
+
2553
+ 3.0.0beta5 / 2012-07-03
2554
+ ==================
2555
+
2556
+ * add "make check" support
2557
+ * add route-map example
2558
+ * add `res.json(obj, status)` support back for BC
2559
+ * add "methods" dep, remove internal methods module
2560
+ * update connect dep
2561
+ * update auth example to utilize cores pbkdf2
2562
+ * updated tests to use "supertest"
2563
+
2564
+ 3.0.0beta4 / 2012-06-25
2565
+ ==================
2566
+
2567
+ * Added `req.auth`
2568
+ * Added `req.range(size)`
2569
+ * Added `res.links(obj)`
2570
+ * Added `res.send(body, status)` support back for backwards compat
2571
+ * Added `.default()` support to `res.format()`
2572
+ * Added 2xx / 304 check to `req.fresh`
2573
+ * Revert "Added + support to the router"
2574
+ * Fixed `res.send()` freshness check, respect res.statusCode
2575
+
2576
+ 3.0.0beta3 / 2012-06-15
2577
+ ==================
2578
+
2579
+ * Added hogan `--hjs` to express(1) [nullfirm]
2580
+ * Added another example to content-negotiation
2581
+ * Added `fresh` dep
2582
+ * Changed: `res.send()` always checks freshness
2583
+ * Fixed: expose connects mime module. Closes #1165
2584
+
2585
+ 3.0.0beta2 / 2012-06-06
2586
+ ==================
2587
+
2588
+ * Added `+` support to the router
2589
+ * Added `req.host`
2590
+ * Changed `req.param()` to check route first
2591
+ * Update connect dep
2592
+
2593
+ 3.0.0beta1 / 2012-06-01
2594
+ ==================
2595
+
2596
+ * Added `res.format()` callback to override default 406 behaviour
2597
+ * Fixed `res.redirect()` 406. Closes #1154
2598
+
2599
+ 3.0.0alpha5 / 2012-05-30
2600
+ ==================
2601
+
2602
+ * Added `req.ip`
2603
+ * Added `{ signed: true }` option to `res.cookie()`
2604
+ * Removed `res.signedCookie()`
2605
+ * Changed: dont reverse `req.ips`
2606
+ * Fixed "trust proxy" setting check for `req.ips`
2607
+
2608
+ 3.0.0alpha4 / 2012-05-09
2609
+ ==================
2610
+
2611
+ * Added: allow `[]` in jsonp callback. Closes #1128
2612
+ * Added `PORT` env var support in generated template. Closes #1118 [benatkin]
2613
+ * Updated: connect 2.2.2
2614
+
2615
+ 3.0.0alpha3 / 2012-05-04
2616
+ ==================
2617
+
2618
+ * Added public `app.routes`. Closes #887
2619
+ * Added _view-locals_ example
2620
+ * Added _mvc_ example
2621
+ * Added `res.locals.use()`. Closes #1120
2622
+ * Added conditional-GET support to `res.send()`
2623
+ * Added: coerce `res.set()` values to strings
2624
+ * Changed: moved `static()` in generated apps below router
2625
+ * Changed: `res.send()` only set ETag when not previously set
2626
+ * Changed connect 2.2.1 dep
2627
+ * Changed: `make test` now runs unit / acceptance tests
2628
+ * Fixed req/res proto inheritance
2629
+
2630
+ 3.0.0alpha2 / 2012-04-26
2631
+ ==================
2632
+
2633
+ * Added `make benchmark` back
2634
+ * Added `res.send()` support for `String` objects
2635
+ * Added client-side data exposing example
2636
+ * Added `res.header()` and `req.header()` aliases for BC
2637
+ * Added `express.createServer()` for BC
2638
+ * Perf: memoize parsed urls
2639
+ * Perf: connect 2.2.0 dep
2640
+ * Changed: make `expressInit()` middleware self-aware
2641
+ * Fixed: use app.get() for all core settings
2642
+ * Fixed redis session example
2643
+ * Fixed session example. Closes #1105
2644
+ * Fixed generated express dep. Closes #1078
2645
+
2646
+ 3.0.0alpha1 / 2012-04-15
2647
+ ==================
2648
+
2649
+ * Added `app.locals.use(callback)`
2650
+ * Added `app.locals` object
2651
+ * Added `app.locals(obj)`
2652
+ * Added `res.locals` object
2653
+ * Added `res.locals(obj)`
2654
+ * Added `res.format()` for content-negotiation
2655
+ * Added `app.engine()`
2656
+ * Added `res.cookie()` JSON cookie support
2657
+ * Added "trust proxy" setting
2658
+ * Added `req.subdomains`
2659
+ * Added `req.protocol`
2660
+ * Added `req.secure`
2661
+ * Added `req.path`
2662
+ * Added `req.ips`
2663
+ * Added `req.fresh`
2664
+ * Added `req.stale`
2665
+ * Added comma-delimited / array support for `req.accepts()`
2666
+ * Added debug instrumentation
2667
+ * Added `res.set(obj)`
2668
+ * Added `res.set(field, value)`
2669
+ * Added `res.get(field)`
2670
+ * Added `app.get(setting)`. Closes #842
2671
+ * Added `req.acceptsLanguage()`
2672
+ * Added `req.acceptsCharset()`
2673
+ * Added `req.accepted`
2674
+ * Added `req.acceptedLanguages`
2675
+ * Added `req.acceptedCharsets`
2676
+ * Added "json replacer" setting
2677
+ * Added "json spaces" setting
2678
+ * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92
2679
+ * Added `--less` support to express(1)
2680
+ * Added `express.response` prototype
2681
+ * Added `express.request` prototype
2682
+ * Added `express.application` prototype
2683
+ * Added `app.path()`
2684
+ * Added `app.render()`
2685
+ * Added `res.type()` to replace `res.contentType()`
2686
+ * Changed: `res.redirect()` to add relative support
2687
+ * Changed: enable "jsonp callback" by default
2688
+ * Changed: renamed "case sensitive routes" to "case sensitive routing"
2689
+ * Rewrite of all tests with mocha
2690
+ * Removed "root" setting
2691
+ * Removed `res.redirect('home')` support
2692
+ * Removed `req.notify()`
2693
+ * Removed `app.register()`
2694
+ * Removed `app.redirect()`
2695
+ * Removed `app.is()`
2696
+ * Removed `app.helpers()`
2697
+ * Removed `app.dynamicHelpers()`
2698
+ * Fixed `res.sendfile()` with non-GET. Closes #723
2699
+ * Fixed express(1) public dir for windows. Closes #866
2700
+
2701
+ 2.5.9/ 2012-04-02
2702
+ ==================
2703
+
2704
+ * Added support for PURGE request method [pbuyle]
2705
+ * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki]
2706
+
2707
+ 2.5.8 / 2012-02-08
2708
+ ==================
2709
+
2710
+ * Update mkdirp dep. Closes #991
2711
+
2712
+ 2.5.7 / 2012-02-06
2713
+ ==================
2714
+
2715
+ * Fixed `app.all` duplicate DELETE requests [mscdex]
2716
+
2717
+ 2.5.6 / 2012-01-13
2718
+ ==================
2719
+
2720
+ * Updated hamljs dev dep. Closes #953
2721
+
2722
+ 2.5.5 / 2012-01-08
2723
+ ==================
2724
+
2725
+ * Fixed: set `filename` on cached templates [matthewleon]
2726
+
2727
+ 2.5.4 / 2012-01-02
2728
+ ==================
2729
+
2730
+ * Fixed `express(1)` eol on 0.4.x. Closes #947
2731
+
2732
+ 2.5.3 / 2011-12-30
2733
+ ==================
2734
+
2735
+ * Fixed `req.is()` when a charset is present
2736
+
2737
+ 2.5.2 / 2011-12-10
2738
+ ==================
2739
+
2740
+ * Fixed: express(1) LF -> CRLF for windows
2741
+
2742
+ 2.5.1 / 2011-11-17
2743
+ ==================
2744
+
2745
+ * Changed: updated connect to 1.8.x
2746
+ * Removed sass.js support from express(1)
2747
+
2748
+ 2.5.0 / 2011-10-24
2749
+ ==================
2750
+
2751
+ * Added ./routes dir for generated app by default
2752
+ * Added npm install reminder to express(1) app gen
2753
+ * Added 0.5.x support
2754
+ * Removed `make test-cov` since it wont work with node 0.5.x
2755
+ * Fixed express(1) public dir for windows. Closes #866
2756
+
2757
+ 2.4.7 / 2011-10-05
2758
+ ==================
2759
+
2760
+ * Added mkdirp to express(1). Closes #795
2761
+ * Added simple _json-config_ example
2762
+ * Added shorthand for the parsed request's pathname via `req.path`
2763
+ * Changed connect dep to 1.7.x to fix npm issue...
2764
+ * Fixed `res.redirect()` __HEAD__ support. [reported by xerox]
2765
+ * Fixed `req.flash()`, only escape args
2766
+ * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie]
2767
+
2768
+ 2.4.6 / 2011-08-22
2769
+ ==================
2770
+
2771
+ * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode]
2772
+
2773
+ 2.4.5 / 2011-08-19
2774
+ ==================
2775
+
2776
+ * Added support for routes to handle errors. Closes #809
2777
+ * Added `app.routes.all()`. Closes #803
2778
+ * Added "basepath" setting to work in conjunction with reverse proxies etc.
2779
+ * Refactored `Route` to use a single array of callbacks
2780
+ * Added support for multiple callbacks for `app.param()`. Closes #801
2781
+ Closes #805
2782
+ * Changed: removed .call(self) for route callbacks
2783
+ * Dependency: `qs >= 0.3.1`
2784
+ * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808
2785
+
2786
+ 2.4.4 / 2011-08-05
2787
+ ==================
2788
+
2789
+ * Fixed `res.header()` intention of a set, even when `undefined`
2790
+ * Fixed `*`, value no longer required
2791
+ * Fixed `res.send(204)` support. Closes #771
2792
+
2793
+ 2.4.3 / 2011-07-14
2794
+ ==================
2795
+
2796
+ * Added docs for `status` option special-case. Closes #739
2797
+ * Fixed `options.filename`, exposing the view path to template engines
2798
+
2799
+ 2.4.2. / 2011-07-06
2800
+ ==================
2801
+
2802
+ * Revert "removed jsonp stripping" for XSS
2803
+
2804
+ 2.4.1 / 2011-07-06
2805
+ ==================
2806
+
2807
+ * Added `res.json()` JSONP support. Closes #737
2808
+ * Added _extending-templates_ example. Closes #730
2809
+ * Added "strict routing" setting for trailing slashes
2810
+ * Added support for multiple envs in `app.configure()` calls. Closes #735
2811
+ * Changed: `res.send()` using `res.json()`
2812
+ * Changed: when cookie `path === null` don't default it
2813
+ * Changed; default cookie path to "home" setting. Closes #731
2814
+ * Removed _pids/logs_ creation from express(1)
2815
+
2816
+ 2.4.0 / 2011-06-28
2817
+ ==================
2818
+
2819
+ * Added chainable `res.status(code)`
2820
+ * Added `res.json()`, an explicit version of `res.send(obj)`
2821
+ * Added simple web-service example
2822
+
2823
+ 2.3.12 / 2011-06-22
2824
+ ==================
2825
+
2826
+ * \#express is now on freenode! come join!
2827
+ * Added `req.get(field, param)`
2828
+ * Added links to Japanese documentation, thanks @hideyukisaito!
2829
+ * Added; the `express(1)` generated app outputs the env
2830
+ * Added `content-negotiation` example
2831
+ * Dependency: connect >= 1.5.1 < 2.0.0
2832
+ * Fixed view layout bug. Closes #720
2833
+ * Fixed; ignore body on 304. Closes #701
2834
+
2835
+ 2.3.11 / 2011-06-04
2836
+ ==================
2837
+
2838
+ * Added `npm test`
2839
+ * Removed generation of dummy test file from `express(1)`
2840
+ * Fixed; `express(1)` adds express as a dep
2841
+ * Fixed; prune on `prepublish`
2842
+
2843
+ 2.3.10 / 2011-05-27
2844
+ ==================
2845
+
2846
+ * Added `req.route`, exposing the current route
2847
+ * Added _package.json_ generation support to `express(1)`
2848
+ * Fixed call to `app.param()` function for optional params. Closes #682
2849
+
2850
+ 2.3.9 / 2011-05-25
2851
+ ==================
2852
+
2853
+ * Fixed bug-ish with `../' in `res.partial()` calls
2854
+
2855
+ 2.3.8 / 2011-05-24
2856
+ ==================
2857
+
2858
+ * Fixed `app.options()`
2859
+
2860
+ 2.3.7 / 2011-05-23
2861
+ ==================
2862
+
2863
+ * Added route `Collection`, ex: `app.get('/user/:id').remove();`
2864
+ * Added support for `app.param(fn)` to define param logic
2865
+ * Removed `app.param()` support for callback with return value
2866
+ * Removed module.parent check from express(1) generated app. Closes #670
2867
+ * Refactored router. Closes #639
2868
+
2869
+ 2.3.6 / 2011-05-20
2870
+ ==================
2871
+
2872
+ * Changed; using devDependencies instead of git submodules
2873
+ * Fixed redis session example
2874
+ * Fixed markdown example
2875
+ * Fixed view caching, should not be enabled in development
2876
+
2877
+ 2.3.5 / 2011-05-20
2878
+ ==================
2879
+
2880
+ * Added export `.view` as alias for `.View`
2881
+
2882
+ 2.3.4 / 2011-05-08
2883
+ ==================
2884
+
2885
+ * Added `./examples/say`
2886
+ * Fixed `res.sendfile()` bug preventing the transfer of files with spaces
2887
+
2888
+ 2.3.3 / 2011-05-03
2889
+ ==================
2890
+
2891
+ * Added "case sensitive routes" option.
2892
+ * Changed; split methods supported per rfc [slaskis]
2893
+ * Fixed route-specific middleware when using the same callback function several times
2894
+
2895
+ 2.3.2 / 2011-04-27
2896
+ ==================
2897
+
2898
+ * Fixed view hints
2899
+
2900
+ 2.3.1 / 2011-04-26
2901
+ ==================
2902
+
2903
+ * Added `app.match()` as `app.match.all()`
2904
+ * Added `app.lookup()` as `app.lookup.all()`
2905
+ * Added `app.remove()` for `app.remove.all()`
2906
+ * Added `app.remove.VERB()`
2907
+ * Fixed template caching collision issue. Closes #644
2908
+ * Moved router over from connect and started refactor
2909
+
2910
+ 2.3.0 / 2011-04-25
2911
+ ==================
2912
+
2913
+ * Added options support to `res.clearCookie()`
2914
+ * Added `res.helpers()` as alias of `res.locals()`
2915
+ * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0`
2916
+ * Changed; auto set Content-Type in res.attachement [Aaron Heckmann]
2917
+ * Renamed "cache views" to "view cache". Closes #628
2918
+ * Fixed caching of views when using several apps. Closes #637
2919
+ * Fixed gotcha invoking `app.param()` callbacks once per route middleware.
2920
+ Closes #638
2921
+ * Fixed partial lookup precedence. Closes #631
2922
+ Shaw]
2923
+
2924
+ 2.2.2 / 2011-04-12
2925
+ ==================
2926
+
2927
+ * Added second callback support for `res.download()` connection errors
2928
+ * Fixed `filename` option passing to template engine
2929
+
2930
+ 2.2.1 / 2011-04-04
2931
+ ==================
2932
+
2933
+ * Added `layout(path)` helper to change the layout within a view. Closes #610
2934
+ * Fixed `partial()` collection object support.
2935
+ Previously only anything with `.length` would work.
2936
+ When `.length` is present one must still be aware of holes,
2937
+ however now `{ collection: {foo: 'bar'}}` is valid, exposes
2938
+ `keyInCollection` and `keysInCollection`.
2939
+
2940
+ * Performance improved with better view caching
2941
+ * Removed `request` and `response` locals
2942
+ * Changed; errorHandler page title is now `Express` instead of `Connect`
2943
+
2944
+ 2.2.0 / 2011-03-30
2945
+ ==================
2946
+
2947
+ * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606
2948
+ * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606
2949
+ * Added `app.VERB(path)` as alias of `app.lookup.VERB()`.
2950
+ * Dependency `connect >= 1.2.0`
2951
+
2952
+ 2.1.1 / 2011-03-29
2953
+ ==================
2954
+
2955
+ * Added; expose `err.view` object when failing to locate a view
2956
+ * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann]
2957
+ * Fixed; `res.send(undefined)` responds with 204 [aheckmann]
2958
+
2959
+ 2.1.0 / 2011-03-24
2960
+ ==================
2961
+
2962
+ * Added `<root>/_?<name>` partial lookup support. Closes #447
2963
+ * Added `request`, `response`, and `app` local variables
2964
+ * Added `settings` local variable, containing the app's settings
2965
+ * Added `req.flash()` exception if `req.session` is not available
2966
+ * Added `res.send(bool)` support (json response)
2967
+ * Fixed stylus example for latest version
2968
+ * Fixed; wrap try/catch around `res.render()`
2969
+
2970
+ 2.0.0 / 2011-03-17
2971
+ ==================
2972
+
2973
+ * Fixed up index view path alternative.
2974
+ * Changed; `res.locals()` without object returns the locals
2975
+
2976
+ 2.0.0rc3 / 2011-03-17
2977
+ ==================
2978
+
2979
+ * Added `res.locals(obj)` to compliment `res.local(key, val)`
2980
+ * Added `res.partial()` callback support
2981
+ * Fixed recursive error reporting issue in `res.render()`
2982
+
2983
+ 2.0.0rc2 / 2011-03-17
2984
+ ==================
2985
+
2986
+ * Changed; `partial()` "locals" are now optional
2987
+ * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01]
2988
+ * Fixed .filename view engine option [reported by drudge]
2989
+ * Fixed blog example
2990
+ * Fixed `{req,res}.app` reference when mounting [Ben Weaver]
2991
+
2992
+ 2.0.0rc / 2011-03-14
2993
+ ==================
2994
+
2995
+ * Fixed; expose `HTTPSServer` constructor
2996
+ * Fixed express(1) default test charset. Closes #579 [reported by secoif]
2997
+ * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP]
2998
+
2999
+ 2.0.0beta3 / 2011-03-09
3000
+ ==================
3001
+
3002
+ * Added support for `res.contentType()` literal
3003
+ The original `res.contentType('.json')`,
3004
+ `res.contentType('application/json')`, and `res.contentType('json')`
3005
+ will work now.
3006
+ * Added `res.render()` status option support back
3007
+ * Added charset option for `res.render()`
3008
+ * Added `.charset` support (via connect 1.0.4)
3009
+ * Added view resolution hints when in development and a lookup fails
3010
+ * Added layout lookup support relative to the page view.
3011
+ For example while rendering `./views/user/index.jade` if you create
3012
+ `./views/user/layout.jade` it will be used in favour of the root layout.
3013
+ * Fixed `res.redirect()`. RFC states absolute url [reported by unlink]
3014
+ * Fixed; default `res.send()` string charset to utf8
3015
+ * Removed `Partial` constructor (not currently used)
3016
+
3017
+ 2.0.0beta2 / 2011-03-07
3018
+ ==================
3019
+
3020
+ * Added res.render() `.locals` support back to aid in migration process
3021
+ * Fixed flash example
3022
+
3023
+ 2.0.0beta / 2011-03-03
3024
+ ==================
3025
+
3026
+ * Added HTTPS support
3027
+ * Added `res.cookie()` maxAge support
3028
+ * Added `req.header()` _Referrer_ / _Referer_ special-case, either works
3029
+ * Added mount support for `res.redirect()`, now respects the mount-point
3030
+ * Added `union()` util, taking place of `merge(clone())` combo
3031
+ * Added stylus support to express(1) generated app
3032
+ * Added secret to session middleware used in examples and generated app
3033
+ * Added `res.local(name, val)` for progressive view locals
3034
+ * Added default param support to `req.param(name, default)`
3035
+ * Added `app.disabled()` and `app.enabled()`
3036
+ * Added `app.register()` support for omitting leading ".", either works
3037
+ * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539
3038
+ * Added `app.param()` to map route params to async/sync logic
3039
+ * Added; aliased `app.helpers()` as `app.locals()`. Closes #481
3040
+ * Added extname with no leading "." support to `res.contentType()`
3041
+ * Added `cache views` setting, defaulting to enabled in "production" env
3042
+ * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_.
3043
+ * Added `req.accepts()` support for extensions
3044
+ * Changed; `res.download()` and `res.sendfile()` now utilize Connect's
3045
+ static file server `connect.static.send()`.
3046
+ * Changed; replaced `connect.utils.mime()` with npm _mime_ module
3047
+ * Changed; allow `req.query` to be pre-defined (via middleware or other parent
3048
+ * Changed view partial resolution, now relative to parent view
3049
+ * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`.
3050
+ * Fixed `req.param()` bug returning Array.prototype methods. Closes #552
3051
+ * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()`
3052
+ * Fixed; using _qs_ module instead of _querystring_
3053
+ * Fixed; strip unsafe chars from jsonp callbacks
3054
+ * Removed "stream threshold" setting
3055
+
3056
+ 1.0.8 / 2011-03-01
3057
+ ==================
3058
+
3059
+ * Allow `req.query` to be pre-defined (via middleware or other parent app)
3060
+ * "connect": ">= 0.5.0 < 1.0.0". Closes #547
3061
+ * Removed the long deprecated __EXPRESS_ENV__ support
3062
+
3063
+ 1.0.7 / 2011-02-07
3064
+ ==================
3065
+
3066
+ * Fixed `render()` setting inheritance.
3067
+ Mounted apps would not inherit "view engine"
3068
+
3069
+ 1.0.6 / 2011-02-07
3070
+ ==================
3071
+
3072
+ * Fixed `view engine` setting bug when period is in dirname
3073
+
3074
+ 1.0.5 / 2011-02-05
3075
+ ==================
3076
+
3077
+ * Added secret to generated app `session()` call
3078
+
3079
+ 1.0.4 / 2011-02-05
3080
+ ==================
3081
+
3082
+ * Added `qs` dependency to _package.json_
3083
+ * Fixed namespaced `require()`s for latest connect support
3084
+
3085
+ 1.0.3 / 2011-01-13
3086
+ ==================
3087
+
3088
+ * Remove unsafe characters from JSONP callback names [Ryan Grove]
3089
+
3090
+ 1.0.2 / 2011-01-10
3091
+ ==================
3092
+
3093
+ * Removed nested require, using `connect.router`
3094
+
3095
+ 1.0.1 / 2010-12-29
3096
+ ==================
3097
+
3098
+ * Fixed for middleware stacked via `createServer()`
3099
+ previously the `foo` middleware passed to `createServer(foo)`
3100
+ would not have access to Express methods such as `res.send()`
3101
+ or props like `req.query` etc.
3102
+
3103
+ 1.0.0 / 2010-11-16
3104
+ ==================
3105
+
3106
+ * Added; deduce partial object names from the last segment.
3107
+ For example by default `partial('forum/post', postObject)` will
3108
+ give you the _post_ object, providing a meaningful default.
3109
+ * Added http status code string representation to `res.redirect()` body
3110
+ * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__.
3111
+ * Added `req.is()` to aid in content negotiation
3112
+ * Added partial local inheritance [suggested by masylum]. Closes #102
3113
+ providing access to parent template locals.
3114
+ * Added _-s, --session[s]_ flag to express(1) to add session related middleware
3115
+ * Added _--template_ flag to express(1) to specify the
3116
+ template engine to use.
3117
+ * Added _--css_ flag to express(1) to specify the
3118
+ stylesheet engine to use (or just plain css by default).
3119
+ * Added `app.all()` support [thanks aheckmann]
3120
+ * Added partial direct object support.
3121
+ You may now `partial('user', user)` providing the "user" local,
3122
+ vs previously `partial('user', { object: user })`.
3123
+ * Added _route-separation_ example since many people question ways
3124
+ to do this with CommonJS modules. Also view the _blog_ example for
3125
+ an alternative.
3126
+ * Performance; caching view path derived partial object names
3127
+ * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454
3128
+ * Fixed jsonp support; _text/javascript_ as per mailinglist discussion
3129
+
3130
+ 1.0.0rc4 / 2010-10-14
3131
+ ==================
3132
+
3133
+ * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0
3134
+ * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware))
3135
+ * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass]
3136
+ * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass]
3137
+ * Added `partial()` support for array-like collections. Closes #434
3138
+ * Added support for swappable querystring parsers
3139
+ * Added session usage docs. Closes #443
3140
+ * Added dynamic helper caching. Closes #439 [suggested by maritz]
3141
+ * Added authentication example
3142
+ * Added basic Range support to `res.sendfile()` (and `res.download()` etc)
3143
+ * Changed; `express(1)` generated app using 2 spaces instead of 4
3144
+ * Default env to "development" again [aheckmann]
3145
+ * Removed _context_ option is no more, use "scope"
3146
+ * Fixed; exposing _./support_ libs to examples so they can run without installs
3147
+ * Fixed mvc example
3148
+
3149
+ 1.0.0rc3 / 2010-09-20
3150
+ ==================
3151
+
3152
+ * Added confirmation for `express(1)` app generation. Closes #391
3153
+ * Added extending of flash formatters via `app.flashFormatters`
3154
+ * Added flash formatter support. Closes #411
3155
+ * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold"
3156
+ * Added _stream threshold_ setting for `res.sendfile()`
3157
+ * Added `res.send()` __HEAD__ support
3158
+ * Added `res.clearCookie()`
3159
+ * Added `res.cookie()`
3160
+ * Added `res.render()` headers option
3161
+ * Added `res.redirect()` response bodies
3162
+ * Added `res.render()` status option support. Closes #425 [thanks aheckmann]
3163
+ * Fixed `res.sendfile()` responding with 403 on malicious path
3164
+ * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_
3165
+ * Fixed; mounted apps settings now inherit from parent app [aheckmann]
3166
+ * Fixed; stripping Content-Length / Content-Type when 204
3167
+ * Fixed `res.send()` 204. Closes #419
3168
+ * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402
3169
+ * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo]
3170
+
3171
+
3172
+ 1.0.0rc2 / 2010-08-17
3173
+ ==================
3174
+
3175
+ * Added `app.register()` for template engine mapping. Closes #390
3176
+ * Added `res.render()` callback support as second argument (no options)
3177
+ * Added callback support to `res.download()`
3178
+ * Added callback support for `res.sendfile()`
3179
+ * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()`
3180
+ * Added "partials" setting to docs
3181
+ * Added default expresso tests to `express(1)` generated app. Closes #384
3182
+ * Fixed `res.sendfile()` error handling, defer via `next()`
3183
+ * Fixed `res.render()` callback when a layout is used [thanks guillermo]
3184
+ * Fixed; `make install` creating ~/.node_libraries when not present
3185
+ * Fixed issue preventing error handlers from being defined anywhere. Closes #387
3186
+
3187
+ 1.0.0rc / 2010-07-28
3188
+ ==================
3189
+
3190
+ * Added mounted hook. Closes #369
3191
+ * Added connect dependency to _package.json_
3192
+
3193
+ * Removed "reload views" setting and support code
3194
+ development env never caches, production always caches.
3195
+
3196
+ * Removed _param_ in route callbacks, signature is now
3197
+ simply (req, res, next), previously (req, res, params, next).
3198
+ Use _req.params_ for path captures, _req.query_ for GET params.
3199
+
3200
+ * Fixed "home" setting
3201
+ * Fixed middleware/router precedence issue. Closes #366
3202
+ * Fixed; _configure()_ callbacks called immediately. Closes #368
3203
+
3204
+ 1.0.0beta2 / 2010-07-23
3205
+ ==================
3206
+
3207
+ * Added more examples
3208
+ * Added; exporting `Server` constructor
3209
+ * Added `Server#helpers()` for view locals
3210
+ * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349
3211
+ * Added support for absolute view paths
3212
+ * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363
3213
+ * Added Guillermo Rauch to the contributor list
3214
+ * Added support for "as" for non-collection partials. Closes #341
3215
+ * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf]
3216
+ * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo]
3217
+ * Fixed instanceof `Array` checks, now `Array.isArray()`
3218
+ * Fixed express(1) expansion of public dirs. Closes #348
3219
+ * Fixed middleware precedence. Closes #345
3220
+ * Fixed view watcher, now async [thanks aheckmann]
3221
+
3222
+ 1.0.0beta / 2010-07-15
3223
+ ==================
3224
+
3225
+ * Re-write
3226
+ - much faster
3227
+ - much lighter
3228
+ - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs
3229
+
3230
+ 0.14.0 / 2010-06-15
3231
+ ==================
3232
+
3233
+ * Utilize relative requires
3234
+ * Added Static bufferSize option [aheckmann]
3235
+ * Fixed caching of view and partial subdirectories [aheckmann]
3236
+ * Fixed mime.type() comments now that ".ext" is not supported
3237
+ * Updated haml submodule
3238
+ * Updated class submodule
3239
+ * Removed bin/express
3240
+
3241
+ 0.13.0 / 2010-06-01
3242
+ ==================
3243
+
3244
+ * Added node v0.1.97 compatibility
3245
+ * Added support for deleting cookies via Request#cookie('key', null)
3246
+ * Updated haml submodule
3247
+ * Fixed not-found page, now using using charset utf-8
3248
+ * Fixed show-exceptions page, now using using charset utf-8
3249
+ * Fixed view support due to fs.readFile Buffers
3250
+ * Changed; mime.type() no longer accepts ".type" due to node extname() changes
3251
+
3252
+ 0.12.0 / 2010-05-22
3253
+ ==================
3254
+
3255
+ * Added node v0.1.96 compatibility
3256
+ * Added view `helpers` export which act as additional local variables
3257
+ * Updated haml submodule
3258
+ * Changed ETag; removed inode, modified time only
3259
+ * Fixed LF to CRLF for setting multiple cookies
3260
+ * Fixed cookie compilation; values are now urlencoded
3261
+ * Fixed cookies parsing; accepts quoted values and url escaped cookies
3262
+
3263
+ 0.11.0 / 2010-05-06
3264
+ ==================
3265
+
3266
+ * Added support for layouts using different engines
3267
+ - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' })
3268
+ - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml'
3269
+ - this.render('page.html.haml', { layout: false }) // no layout
3270
+ * Updated ext submodule
3271
+ * Updated haml submodule
3272
+ * Fixed EJS partial support by passing along the context. Issue #307
3273
+
3274
+ 0.10.1 / 2010-05-03
3275
+ ==================
3276
+
3277
+ * Fixed binary uploads.
3278
+
3279
+ 0.10.0 / 2010-04-30
3280
+ ==================
3281
+
3282
+ * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s
3283
+ encoding is set to 'utf8' or 'utf-8'.
3284
+ * Added "encoding" option to Request#render(). Closes #299
3285
+ * Added "dump exceptions" setting, which is enabled by default.
3286
+ * Added simple ejs template engine support
3287
+ * Added error response support for text/plain, application/json. Closes #297
3288
+ * Added callback function param to Request#error()
3289
+ * Added Request#sendHead()
3290
+ * Added Request#stream()
3291
+ * Added support for Request#respond(304, null) for empty response bodies
3292
+ * Added ETag support to Request#sendfile()
3293
+ * Added options to Request#sendfile(), passed to fs.createReadStream()
3294
+ * Added filename arg to Request#download()
3295
+ * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request
3296
+ * Performance enhanced by preventing several calls to toLowerCase() in Router#match()
3297
+ * Changed; Request#sendfile() now streams
3298
+ * Changed; Renamed Request#halt() to Request#respond(). Closes #289
3299
+ * Changed; Using sys.inspect() instead of JSON.encode() for error output
3300
+ * Changed; run() returns the http.Server instance. Closes #298
3301
+ * Changed; Defaulting Server#host to null (INADDR_ANY)
3302
+ * Changed; Logger "common" format scale of 0.4f
3303
+ * Removed Logger "request" format
3304
+ * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found
3305
+ * Fixed several issues with http client
3306
+ * Fixed Logger Content-Length output
3307
+ * Fixed bug preventing Opera from retaining the generated session id. Closes #292
3308
+
3309
+ 0.9.0 / 2010-04-14
3310
+ ==================
3311
+
3312
+ * Added DSL level error() route support
3313
+ * Added DSL level notFound() route support
3314
+ * Added Request#error()
3315
+ * Added Request#notFound()
3316
+ * Added Request#render() callback function. Closes #258
3317
+ * Added "max upload size" setting
3318
+ * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254
3319
+ * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js
3320
+ * Added callback function support to Request#halt() as 3rd/4th arg
3321
+ * Added preprocessing of route param wildcards using param(). Closes #251
3322
+ * Added view partial support (with collections etc)
3323
+ * Fixed bug preventing falsey params (such as ?page=0). Closes #286
3324
+ * Fixed setting of multiple cookies. Closes #199
3325
+ * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml)
3326
+ * Changed; session cookie is now httpOnly
3327
+ * Changed; Request is no longer global
3328
+ * Changed; Event is no longer global
3329
+ * Changed; "sys" module is no longer global
3330
+ * Changed; moved Request#download to Static plugin where it belongs
3331
+ * Changed; Request instance created before body parsing. Closes #262
3332
+ * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253
3333
+ * Changed; Pre-caching view partials in memory when "cache view partials" is enabled
3334
+ * Updated support to node --version 0.1.90
3335
+ * Updated dependencies
3336
+ * Removed set("session cookie") in favour of use(Session, { cookie: { ... }})
3337
+ * Removed utils.mixin(); use Object#mergeDeep()
3338
+
3339
+ 0.8.0 / 2010-03-19
3340
+ ==================
3341
+
3342
+ * Added coffeescript example app. Closes #242
3343
+ * Changed; cache api now async friendly. Closes #240
3344
+ * Removed deprecated 'express/static' support. Use 'express/plugins/static'
3345
+
3346
+ 0.7.6 / 2010-03-19
3347
+ ==================
3348
+
3349
+ * Added Request#isXHR. Closes #229
3350
+ * Added `make install` (for the executable)
3351
+ * Added `express` executable for setting up simple app templates
3352
+ * Added "GET /public/*" to Static plugin, defaulting to <root>/public
3353
+ * Added Static plugin
3354
+ * Fixed; Request#render() only calls cache.get() once
3355
+ * Fixed; Namespacing View caches with "view:"
3356
+ * Fixed; Namespacing Static caches with "static:"
3357
+ * Fixed; Both example apps now use the Static plugin
3358
+ * Fixed set("views"). Closes #239
3359
+ * Fixed missing space for combined log format
3360
+ * Deprecated Request#sendfile() and 'express/static'
3361
+ * Removed Server#running
3362
+
3363
+ 0.7.5 / 2010-03-16
3364
+ ==================
3365
+
3366
+ * Added Request#flash() support without args, now returns all flashes
3367
+ * Updated ext submodule
3368
+
3369
+ 0.7.4 / 2010-03-16
3370
+ ==================
3371
+
3372
+ * Fixed session reaper
3373
+ * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft)
3374
+
3375
+ 0.7.3 / 2010-03-16
3376
+ ==================
3377
+
3378
+ * Added package.json
3379
+ * Fixed requiring of haml / sass due to kiwi removal
3380
+
3381
+ 0.7.2 / 2010-03-16
3382
+ ==================
3383
+
3384
+ * Fixed GIT submodules (HAH!)
3385
+
3386
+ 0.7.1 / 2010-03-16
3387
+ ==================
3388
+
3389
+ * Changed; Express now using submodules again until a PM is adopted
3390
+ * Changed; chat example using millisecond conversions from ext
3391
+
3392
+ 0.7.0 / 2010-03-15
3393
+ ==================
3394
+
3395
+ * Added Request#pass() support (finds the next matching route, or the given path)
3396
+ * Added Logger plugin (default "common" format replaces CommonLogger)
3397
+ * Removed Profiler plugin
3398
+ * Removed CommonLogger plugin
3399
+
3400
+ 0.6.0 / 2010-03-11
3401
+ ==================
3402
+
3403
+ * Added seed.yml for kiwi package management support
3404
+ * Added HTTP client query string support when method is GET. Closes #205
3405
+
3406
+ * Added support for arbitrary view engines.
3407
+ For example "foo.engine.html" will now require('engine'),
3408
+ the exports from this module are cached after the first require().
3409
+
3410
+ * Added async plugin support
3411
+
3412
+ * Removed usage of RESTful route funcs as http client
3413
+ get() etc, use http.get() and friends
3414
+
3415
+ * Removed custom exceptions
3416
+
3417
+ 0.5.0 / 2010-03-10
3418
+ ==================
3419
+
3420
+ * Added ext dependency (library of js extensions)
3421
+ * Removed extname() / basename() utils. Use path module
3422
+ * Removed toArray() util. Use arguments.values
3423
+ * Removed escapeRegexp() util. Use RegExp.escape()
3424
+ * Removed process.mixin() dependency. Use utils.mixin()
3425
+ * Removed Collection
3426
+ * Removed ElementCollection
3427
+ * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;)
3428
+
3429
+ 0.4.0 / 2010-02-11
3430
+ ==================
3431
+
3432
+ * Added flash() example to sample upload app
3433
+ * Added high level restful http client module (express/http)
3434
+ * Changed; RESTful route functions double as HTTP clients. Closes #69
3435
+ * Changed; throwing error when routes are added at runtime
3436
+ * Changed; defaulting render() context to the current Request. Closes #197
3437
+ * Updated haml submodule
3438
+
3439
+ 0.3.0 / 2010-02-11
3440
+ ==================
3441
+
3442
+ * Updated haml / sass submodules. Closes #200
3443
+ * Added flash message support. Closes #64
3444
+ * Added accepts() now allows multiple args. fixes #117
3445
+ * Added support for plugins to halt. Closes #189
3446
+ * Added alternate layout support. Closes #119
3447
+ * Removed Route#run(). Closes #188
3448
+ * Fixed broken specs due to use(Cookie) missing
3449
+
3450
+ 0.2.1 / 2010-02-05
3451
+ ==================
3452
+
3453
+ * Added "plot" format option for Profiler (for gnuplot processing)
3454
+ * Added request number to Profiler plugin
3455
+ * Fixed binary encoding for multipart file uploads, was previously defaulting to UTF8
3456
+ * Fixed issue with routes not firing when not files are present. Closes #184
3457
+ * Fixed process.Promise -> events.Promise
3458
+
3459
+ 0.2.0 / 2010-02-03
3460
+ ==================
3461
+
3462
+ * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180
3463
+ * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174
3464
+ * Added expiration support to cache api with reaper. Closes #133
3465
+ * Added cache Store.Memory#reap()
3466
+ * Added Cache; cache api now uses first class Cache instances
3467
+ * Added abstract session Store. Closes #172
3468
+ * Changed; cache Memory.Store#get() utilizing Collection
3469
+ * Renamed MemoryStore -> Store.Memory
3470
+ * Fixed use() of the same plugin several time will always use latest options. Closes #176
3471
+
3472
+ 0.1.0 / 2010-02-03
3473
+ ==================
3474
+
3475
+ * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context
3476
+ * Updated node support to 0.1.27 Closes #169
3477
+ * Updated dirname(__filename) -> __dirname
3478
+ * Updated libxmljs support to v0.2.0
3479
+ * Added session support with memory store / reaping
3480
+ * Added quick uid() helper
3481
+ * Added multi-part upload support
3482
+ * Added Sass.js support / submodule
3483
+ * Added production env caching view contents and static files
3484
+ * Added static file caching. Closes #136
3485
+ * Added cache plugin with memory stores
3486
+ * Added support to StaticFile so that it works with non-textual files.
3487
+ * Removed dirname() helper
3488
+ * Removed several globals (now their modules must be required)
3489
+
3490
+ 0.0.2 / 2010-01-10
3491
+ ==================
3492
+
3493
+ * Added view benchmarks; currently haml vs ejs
3494
+ * Added Request#attachment() specs. Closes #116
3495
+ * Added use of node's parseQuery() util. Closes #123
3496
+ * Added `make init` for submodules
3497
+ * Updated Haml
3498
+ * Updated sample chat app to show messages on load
3499
+ * Updated libxmljs parseString -> parseHtmlString
3500
+ * Fixed `make init` to work with older versions of git
3501
+ * Fixed specs can now run independent specs for those who can't build deps. Closes #127
3502
+ * Fixed issues introduced by the node url module changes. Closes 126.
3503
+ * Fixed two assertions failing due to Collection#keys() returning strings
3504
+ * Fixed faulty Collection#toArray() spec due to keys() returning strings
3505
+ * Fixed `make test` now builds libxmljs.node before testing
3506
+
3507
+ 0.0.1 / 2010-01-03
3508
+ ==================
3509
+
3510
+ * Initial release