es6-crawler-detect 3.1.1 → 3.3.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 (353) 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 +27 -15
  340. package/example/node/yarn.lock +352 -0
  341. package/package.json +29 -18
  342. package/src/index.js +16 -10
  343. package/src/lib/crawler/crawlers.js +1399 -11
  344. package/src/lib/crawler/exclusions.js +56 -9
  345. package/src/lib/crawler/headers.js +24 -15
  346. package/src/lib/crawler/provider.js +11 -13
  347. package/src/lib/crawler.js +123 -132
  348. package/test/lib/crawler.test.js +83 -24
  349. package/test/lib/database/crawlers.txt +3651 -0
  350. package/test/lib/database/devices.txt +165636 -0
  351. package/webpack.common.js +20 -20
  352. package/webpack.dev.js +7 -7
  353. package/webpack.prod.js +14 -15
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "merge-descriptors",
3
+ "description": "Merge objects using descriptors",
4
+ "version": "1.0.1",
5
+ "author": {
6
+ "name": "Jonathan Ong",
7
+ "email": "me@jongleberry.com",
8
+ "url": "http://jongleberry.com",
9
+ "twitter": "https://twitter.com/jongleberry"
10
+ },
11
+ "contributors": [
12
+ "Douglas Christopher Wilson <doug@somethingdoug.com>",
13
+ "Mike Grabowski <grabbou@gmail.com>"
14
+ ],
15
+ "license": "MIT",
16
+ "repository": "component/merge-descriptors",
17
+ "devDependencies": {
18
+ "istanbul": "0.4.1",
19
+ "mocha": "1.21.5"
20
+ },
21
+ "files": [
22
+ "HISTORY.md",
23
+ "LICENSE",
24
+ "README.md",
25
+ "index.js"
26
+ ],
27
+ "scripts": {
28
+ "test": "mocha --reporter spec --bail --check-leaks test/",
29
+ "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
30
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
31
+ }
32
+ }
@@ -0,0 +1,29 @@
1
+ 1.1.2 / 2016-01-17
2
+ ==================
3
+
4
+ * perf: enable strict mode
5
+
6
+ 1.1.1 / 2014-12-30
7
+ ==================
8
+
9
+ * Improve `browserify` support
10
+
11
+ 1.1.0 / 2014-07-05
12
+ ==================
13
+
14
+ * Add `CONNECT` method
15
+
16
+ 1.0.1 / 2014-06-02
17
+ ==================
18
+
19
+ * Fix module to work with harmony transform
20
+
21
+ 1.0.0 / 2014-05-08
22
+ ==================
23
+
24
+ * Add `PURGE` method
25
+
26
+ 0.1.0 / 2013-10-28
27
+ ==================
28
+
29
+ * Add `http.METHODS` support
@@ -0,0 +1,24 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2013-2014 TJ Holowaychuk <tj@vision-media.ca>
4
+ Copyright (c) 2015-2016 Douglas Christopher Wilson <doug@somethingdoug.com>
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ 'Software'), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+
@@ -0,0 +1,51 @@
1
+ # Methods
2
+
3
+ [![NPM Version][npm-image]][npm-url]
4
+ [![NPM Downloads][downloads-image]][downloads-url]
5
+ [![Node.js Version][node-version-image]][node-version-url]
6
+ [![Build Status][travis-image]][travis-url]
7
+ [![Test Coverage][coveralls-image]][coveralls-url]
8
+
9
+ HTTP verbs that Node.js core's HTTP parser supports.
10
+
11
+ This module provides an export that is just like `http.METHODS` from Node.js core,
12
+ with the following differences:
13
+
14
+ * All method names are lower-cased.
15
+ * Contains a fallback list of methods for Node.js versions that do not have a
16
+ `http.METHODS` export (0.10 and lower).
17
+ * Provides the fallback list when using tools like `browserify` without pulling
18
+ in the `http` shim module.
19
+
20
+ ## Install
21
+
22
+ ```bash
23
+ $ npm install methods
24
+ ```
25
+
26
+ ## API
27
+
28
+ ```js
29
+ var methods = require('methods')
30
+ ```
31
+
32
+ ### methods
33
+
34
+ This is an array of lower-cased method names that Node.js supports. If Node.js
35
+ provides the `http.METHODS` export, then this is the same array lower-cased,
36
+ otherwise it is a snapshot of the verbs from Node.js 0.10.
37
+
38
+ ## License
39
+
40
+ [MIT](LICENSE)
41
+
42
+ [npm-image]: https://img.shields.io/npm/v/methods.svg?style=flat
43
+ [npm-url]: https://npmjs.org/package/methods
44
+ [node-version-image]: https://img.shields.io/node/v/methods.svg?style=flat
45
+ [node-version-url]: https://nodejs.org/en/download/
46
+ [travis-image]: https://img.shields.io/travis/jshttp/methods.svg?style=flat
47
+ [travis-url]: https://travis-ci.org/jshttp/methods
48
+ [coveralls-image]: https://img.shields.io/coveralls/jshttp/methods.svg?style=flat
49
+ [coveralls-url]: https://coveralls.io/r/jshttp/methods?branch=master
50
+ [downloads-image]: https://img.shields.io/npm/dm/methods.svg?style=flat
51
+ [downloads-url]: https://npmjs.org/package/methods
@@ -0,0 +1,69 @@
1
+ /*!
2
+ * methods
3
+ * Copyright(c) 2013-2014 TJ Holowaychuk
4
+ * Copyright(c) 2015-2016 Douglas Christopher Wilson
5
+ * MIT Licensed
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ /**
11
+ * Module dependencies.
12
+ * @private
13
+ */
14
+
15
+ var http = require('http');
16
+
17
+ /**
18
+ * Module exports.
19
+ * @public
20
+ */
21
+
22
+ module.exports = getCurrentNodeMethods() || getBasicNodeMethods();
23
+
24
+ /**
25
+ * Get the current Node.js methods.
26
+ * @private
27
+ */
28
+
29
+ function getCurrentNodeMethods() {
30
+ return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) {
31
+ return method.toLowerCase();
32
+ });
33
+ }
34
+
35
+ /**
36
+ * Get the "basic" Node.js methods, a snapshot from Node.js 0.10.
37
+ * @private
38
+ */
39
+
40
+ function getBasicNodeMethods() {
41
+ return [
42
+ 'get',
43
+ 'post',
44
+ 'put',
45
+ 'head',
46
+ 'delete',
47
+ 'options',
48
+ 'trace',
49
+ 'copy',
50
+ 'lock',
51
+ 'mkcol',
52
+ 'move',
53
+ 'purge',
54
+ 'propfind',
55
+ 'proppatch',
56
+ 'unlock',
57
+ 'report',
58
+ 'mkactivity',
59
+ 'checkout',
60
+ 'merge',
61
+ 'm-search',
62
+ 'notify',
63
+ 'subscribe',
64
+ 'unsubscribe',
65
+ 'patch',
66
+ 'search',
67
+ 'connect'
68
+ ];
69
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "methods",
3
+ "description": "HTTP methods that node supports",
4
+ "version": "1.1.2",
5
+ "contributors": [
6
+ "Douglas Christopher Wilson <doug@somethingdoug.com>",
7
+ "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)",
8
+ "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)"
9
+ ],
10
+ "license": "MIT",
11
+ "repository": "jshttp/methods",
12
+ "devDependencies": {
13
+ "istanbul": "0.4.1",
14
+ "mocha": "1.21.5"
15
+ },
16
+ "files": [
17
+ "index.js",
18
+ "HISTORY.md",
19
+ "LICENSE"
20
+ ],
21
+ "engines": {
22
+ "node": ">= 0.6"
23
+ },
24
+ "scripts": {
25
+ "test": "mocha --reporter spec --bail --check-leaks test/",
26
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
27
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
28
+ },
29
+ "browser": {
30
+ "http": false
31
+ },
32
+ "keywords": [
33
+ "http",
34
+ "methods"
35
+ ]
36
+ }
@@ -0,0 +1,164 @@
1
+ # Changelog
2
+
3
+ ## v1.6.0 (24/11/2017)
4
+ *No changelog for this release.*
5
+
6
+ ---
7
+
8
+ ## v2.0.4 (24/11/2017)
9
+ - [**closed**] Switch to mime-score module for resolving extension contention issues. [#182](https://github.com/broofa/node-mime/issues/182)
10
+ - [**closed**] Update mime-db to 1.31.0 in v1.x branch [#181](https://github.com/broofa/node-mime/issues/181)
11
+
12
+ ---
13
+
14
+ ## v1.5.0 (22/11/2017)
15
+ - [**closed**] need ES5 version ready in npm package [#179](https://github.com/broofa/node-mime/issues/179)
16
+ - [**closed**] mime-db no trace of iWork - pages / numbers / etc. [#178](https://github.com/broofa/node-mime/issues/178)
17
+ - [**closed**] How it works in brownser ? [#176](https://github.com/broofa/node-mime/issues/176)
18
+ - [**closed**] Missing `./Mime` [#175](https://github.com/broofa/node-mime/issues/175)
19
+ - [**closed**] Vulnerable Regular Expression [#167](https://github.com/broofa/node-mime/issues/167)
20
+
21
+ ---
22
+
23
+ ## v2.0.3 (25/09/2017)
24
+ *No changelog for this release.*
25
+
26
+ ---
27
+
28
+ ## v1.4.1 (25/09/2017)
29
+ - [**closed**] Issue when bundling with webpack [#172](https://github.com/broofa/node-mime/issues/172)
30
+
31
+ ---
32
+
33
+ ## v2.0.2 (15/09/2017)
34
+ - [**V2**] fs.readFileSync is not a function [#165](https://github.com/broofa/node-mime/issues/165)
35
+ - [**closed**] The extension for video/quicktime should map to .mov, not .qt [#164](https://github.com/broofa/node-mime/issues/164)
36
+ - [**V2**] [v2 Feedback request] Mime class API [#163](https://github.com/broofa/node-mime/issues/163)
37
+ - [**V2**] [v2 Feedback request] Resolving conflicts over extensions [#162](https://github.com/broofa/node-mime/issues/162)
38
+ - [**V2**] Allow callers to load module with official, full, or no defined types. [#161](https://github.com/broofa/node-mime/issues/161)
39
+ - [**V2**] Use "facets" to resolve extension conflicts [#160](https://github.com/broofa/node-mime/issues/160)
40
+ - [**V2**] Remove fs and path dependencies [#152](https://github.com/broofa/node-mime/issues/152)
41
+ - [**V2**] Default content-type should not be application/octet-stream [#139](https://github.com/broofa/node-mime/issues/139)
42
+ - [**V2**] reset mime-types [#124](https://github.com/broofa/node-mime/issues/124)
43
+ - [**V2**] Extensionless paths should return null or false [#113](https://github.com/broofa/node-mime/issues/113)
44
+
45
+ ---
46
+
47
+ ## v2.0.1 (14/09/2017)
48
+ - [**closed**] Changelog for v2.0 does not mention breaking changes [#171](https://github.com/broofa/node-mime/issues/171)
49
+ - [**closed**] MIME breaking with 'class' declaration as it is without 'use strict mode' [#170](https://github.com/broofa/node-mime/issues/170)
50
+
51
+ ---
52
+
53
+ ## v2.0.0 (12/09/2017)
54
+ - [**closed**] woff and woff2 [#168](https://github.com/broofa/node-mime/issues/168)
55
+
56
+ ---
57
+
58
+ ## v1.4.0 (28/08/2017)
59
+ - [**closed**] support for ac3 voc files [#159](https://github.com/broofa/node-mime/issues/159)
60
+ - [**closed**] Help understanding change from application/xml to text/xml [#158](https://github.com/broofa/node-mime/issues/158)
61
+ - [**closed**] no longer able to override mimetype [#157](https://github.com/broofa/node-mime/issues/157)
62
+ - [**closed**] application/vnd.adobe.photoshop [#147](https://github.com/broofa/node-mime/issues/147)
63
+ - [**closed**] Directories should appear as something other than application/octet-stream [#135](https://github.com/broofa/node-mime/issues/135)
64
+ - [**closed**] requested features [#131](https://github.com/broofa/node-mime/issues/131)
65
+ - [**closed**] Make types.json loading optional? [#129](https://github.com/broofa/node-mime/issues/129)
66
+ - [**closed**] Cannot find module './types.json' [#120](https://github.com/broofa/node-mime/issues/120)
67
+ - [**V2**] .wav files show up as "audio/x-wav" instead of "audio/x-wave" [#118](https://github.com/broofa/node-mime/issues/118)
68
+ - [**closed**] Don't be a pain in the ass for node community [#108](https://github.com/broofa/node-mime/issues/108)
69
+ - [**closed**] don't make default_type global [#78](https://github.com/broofa/node-mime/issues/78)
70
+ - [**closed**] mime.extension() fails if the content-type is parameterized [#74](https://github.com/broofa/node-mime/issues/74)
71
+
72
+ ---
73
+
74
+ ## v1.3.6 (11/05/2017)
75
+ - [**closed**] .md should be text/markdown as of March 2016 [#154](https://github.com/broofa/node-mime/issues/154)
76
+ - [**closed**] Error while installing mime [#153](https://github.com/broofa/node-mime/issues/153)
77
+ - [**closed**] application/manifest+json [#149](https://github.com/broofa/node-mime/issues/149)
78
+ - [**closed**] Dynamic adaptive streaming over HTTP (DASH) file extension typo [#141](https://github.com/broofa/node-mime/issues/141)
79
+ - [**closed**] charsets image/png undefined [#140](https://github.com/broofa/node-mime/issues/140)
80
+ - [**closed**] Mime-db dependency out of date [#130](https://github.com/broofa/node-mime/issues/130)
81
+ - [**closed**] how to support plist? [#126](https://github.com/broofa/node-mime/issues/126)
82
+ - [**closed**] how does .types file format look like? [#123](https://github.com/broofa/node-mime/issues/123)
83
+ - [**closed**] Feature: support for expanding MIME patterns [#121](https://github.com/broofa/node-mime/issues/121)
84
+ - [**closed**] DEBUG_MIME doesn't work [#117](https://github.com/broofa/node-mime/issues/117)
85
+
86
+ ---
87
+
88
+ ## v1.3.4 (06/02/2015)
89
+ *No changelog for this release.*
90
+
91
+ ---
92
+
93
+ ## v1.3.3 (06/02/2015)
94
+ *No changelog for this release.*
95
+
96
+ ---
97
+
98
+ ## v1.3.1 (05/02/2015)
99
+ - [**closed**] Consider adding support for Handlebars .hbs file ending [#111](https://github.com/broofa/node-mime/issues/111)
100
+ - [**closed**] Consider adding support for hjson. [#110](https://github.com/broofa/node-mime/issues/110)
101
+ - [**closed**] Add mime type for Opus audio files [#94](https://github.com/broofa/node-mime/issues/94)
102
+ - [**closed**] Consider making the `Requesting New Types` information more visible [#77](https://github.com/broofa/node-mime/issues/77)
103
+
104
+ ---
105
+
106
+ ## v1.3.0 (05/02/2015)
107
+ - [**closed**] Add common name? [#114](https://github.com/broofa/node-mime/issues/114)
108
+ - [**closed**] application/x-yaml [#104](https://github.com/broofa/node-mime/issues/104)
109
+ - [**closed**] Add mime type for WOFF file format 2.0 [#102](https://github.com/broofa/node-mime/issues/102)
110
+ - [**closed**] application/x-msi for .msi [#99](https://github.com/broofa/node-mime/issues/99)
111
+ - [**closed**] Add mimetype for gettext translation files [#98](https://github.com/broofa/node-mime/issues/98)
112
+ - [**closed**] collaborators [#88](https://github.com/broofa/node-mime/issues/88)
113
+ - [**closed**] getting errot in installation of mime module...any1 can help? [#87](https://github.com/broofa/node-mime/issues/87)
114
+ - [**closed**] should application/json's charset be utf8? [#86](https://github.com/broofa/node-mime/issues/86)
115
+ - [**closed**] Add "license" and "licenses" to package.json [#81](https://github.com/broofa/node-mime/issues/81)
116
+ - [**closed**] lookup with extension-less file on Windows returns wrong type [#68](https://github.com/broofa/node-mime/issues/68)
117
+
118
+ ---
119
+
120
+ ## v1.2.11 (15/08/2013)
121
+ - [**closed**] Update mime.types [#65](https://github.com/broofa/node-mime/issues/65)
122
+ - [**closed**] Publish a new version [#63](https://github.com/broofa/node-mime/issues/63)
123
+ - [**closed**] README should state upfront that "application/octet-stream" is default for unknown extension [#55](https://github.com/broofa/node-mime/issues/55)
124
+ - [**closed**] Suggested improvement to the charset API [#52](https://github.com/broofa/node-mime/issues/52)
125
+
126
+ ---
127
+
128
+ ## v1.2.10 (25/07/2013)
129
+ - [**closed**] Mime type for woff files should be application/font-woff and not application/x-font-woff [#62](https://github.com/broofa/node-mime/issues/62)
130
+ - [**closed**] node.types in conflict with mime.types [#51](https://github.com/broofa/node-mime/issues/51)
131
+
132
+ ---
133
+
134
+ ## v1.2.9 (17/01/2013)
135
+ - [**closed**] Please update "mime" NPM [#49](https://github.com/broofa/node-mime/issues/49)
136
+ - [**closed**] Please add semicolon [#46](https://github.com/broofa/node-mime/issues/46)
137
+ - [**closed**] parse full mime types [#43](https://github.com/broofa/node-mime/issues/43)
138
+
139
+ ---
140
+
141
+ ## v1.2.8 (10/01/2013)
142
+ - [**closed**] /js directory mime is application/javascript. Is it correct? [#47](https://github.com/broofa/node-mime/issues/47)
143
+ - [**closed**] Add mime types for lua code. [#45](https://github.com/broofa/node-mime/issues/45)
144
+
145
+ ---
146
+
147
+ ## v1.2.7 (19/10/2012)
148
+ - [**closed**] cannot install 1.2.7 via npm [#41](https://github.com/broofa/node-mime/issues/41)
149
+ - [**closed**] Transfer ownership to @broofa [#36](https://github.com/broofa/node-mime/issues/36)
150
+ - [**closed**] it's wrong to set charset to UTF-8 for text [#30](https://github.com/broofa/node-mime/issues/30)
151
+ - [**closed**] Allow multiple instances of MIME types container [#27](https://github.com/broofa/node-mime/issues/27)
152
+
153
+ ---
154
+
155
+ ## v1.2.5 (16/02/2012)
156
+ - [**closed**] When looking up a types, check hasOwnProperty [#23](https://github.com/broofa/node-mime/issues/23)
157
+ - [**closed**] Bump version to 1.2.2 [#18](https://github.com/broofa/node-mime/issues/18)
158
+ - [**closed**] No license [#16](https://github.com/broofa/node-mime/issues/16)
159
+ - [**closed**] Some types missing that are used by html5/css3 [#13](https://github.com/broofa/node-mime/issues/13)
160
+ - [**closed**] npm install fails for 1.2.1 [#12](https://github.com/broofa/node-mime/issues/12)
161
+ - [**closed**] image/pjpeg + image/x-png [#10](https://github.com/broofa/node-mime/issues/10)
162
+ - [**closed**] symlink [#8](https://github.com/broofa/node-mime/issues/8)
163
+ - [**closed**] gzip [#2](https://github.com/broofa/node-mime/issues/2)
164
+ - [**closed**] ALL CAPS filenames return incorrect mime type [#1](https://github.com/broofa/node-mime/issues/1)
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2010 Benjamin Thomas, Robert Kieffer
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,90 @@
1
+ # mime
2
+
3
+ Comprehensive MIME type mapping API based on mime-db module.
4
+
5
+ ## Install
6
+
7
+ Install with [npm](http://github.com/isaacs/npm):
8
+
9
+ npm install mime
10
+
11
+ ## Contributing / Testing
12
+
13
+ npm run test
14
+
15
+ ## Command Line
16
+
17
+ mime [path_string]
18
+
19
+ E.g.
20
+
21
+ > mime scripts/jquery.js
22
+ application/javascript
23
+
24
+ ## API - Queries
25
+
26
+ ### mime.lookup(path)
27
+ Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.
28
+
29
+ ```js
30
+ var mime = require('mime');
31
+
32
+ mime.lookup('/path/to/file.txt'); // => 'text/plain'
33
+ mime.lookup('file.txt'); // => 'text/plain'
34
+ mime.lookup('.TXT'); // => 'text/plain'
35
+ mime.lookup('htm'); // => 'text/html'
36
+ ```
37
+
38
+ ### mime.default_type
39
+ Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)
40
+
41
+ ### mime.extension(type)
42
+ Get the default extension for `type`
43
+
44
+ ```js
45
+ mime.extension('text/html'); // => 'html'
46
+ mime.extension('application/octet-stream'); // => 'bin'
47
+ ```
48
+
49
+ ### mime.charsets.lookup()
50
+
51
+ Map mime-type to charset
52
+
53
+ ```js
54
+ mime.charsets.lookup('text/plain'); // => 'UTF-8'
55
+ ```
56
+
57
+ (The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)
58
+
59
+ ## API - Defining Custom Types
60
+
61
+ Custom type mappings can be added on a per-project basis via the following APIs.
62
+
63
+ ### mime.define()
64
+
65
+ Add custom mime/extension mappings
66
+
67
+ ```js
68
+ mime.define({
69
+ 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],
70
+ 'application/x-my-type': ['x-mt', 'x-mtt'],
71
+ // etc ...
72
+ });
73
+
74
+ mime.lookup('x-sft'); // => 'text/x-some-format'
75
+ ```
76
+
77
+ The first entry in the extensions array is returned by `mime.extension()`. E.g.
78
+
79
+ ```js
80
+ mime.extension('text/x-some-format'); // => 'x-sf'
81
+ ```
82
+
83
+ ### mime.load(filepath)
84
+
85
+ Load mappings from an Apache ".types" format file
86
+
87
+ ```js
88
+ mime.load('./my_project.types');
89
+ ```
90
+ The .types file format is simple - See the `types` dir for examples.
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ var mime = require('./mime.js');
4
+ var file = process.argv[2];
5
+ var type = mime.lookup(file);
6
+
7
+ process.stdout.write(type + '\n');
8
+
@@ -0,0 +1,108 @@
1
+ var path = require('path');
2
+ var fs = require('fs');
3
+
4
+ function Mime() {
5
+ // Map of extension -> mime type
6
+ this.types = Object.create(null);
7
+
8
+ // Map of mime type -> extension
9
+ this.extensions = Object.create(null);
10
+ }
11
+
12
+ /**
13
+ * Define mimetype -> extension mappings. Each key is a mime-type that maps
14
+ * to an array of extensions associated with the type. The first extension is
15
+ * used as the default extension for the type.
16
+ *
17
+ * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
18
+ *
19
+ * @param map (Object) type definitions
20
+ */
21
+ Mime.prototype.define = function (map) {
22
+ for (var type in map) {
23
+ var exts = map[type];
24
+ for (var i = 0; i < exts.length; i++) {
25
+ if (process.env.DEBUG_MIME && this.types[exts[i]]) {
26
+ console.warn((this._loading || "define()").replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' +
27
+ this.types[exts[i]] + ' to ' + type);
28
+ }
29
+
30
+ this.types[exts[i]] = type;
31
+ }
32
+
33
+ // Default extension is the first one we encounter
34
+ if (!this.extensions[type]) {
35
+ this.extensions[type] = exts[0];
36
+ }
37
+ }
38
+ };
39
+
40
+ /**
41
+ * Load an Apache2-style ".types" file
42
+ *
43
+ * This may be called multiple times (it's expected). Where files declare
44
+ * overlapping types/extensions, the last file wins.
45
+ *
46
+ * @param file (String) path of file to load.
47
+ */
48
+ Mime.prototype.load = function(file) {
49
+ this._loading = file;
50
+ // Read file and split into lines
51
+ var map = {},
52
+ content = fs.readFileSync(file, 'ascii'),
53
+ lines = content.split(/[\r\n]+/);
54
+
55
+ lines.forEach(function(line) {
56
+ // Clean up whitespace/comments, and split into fields
57
+ var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/);
58
+ map[fields.shift()] = fields;
59
+ });
60
+
61
+ this.define(map);
62
+
63
+ this._loading = null;
64
+ };
65
+
66
+ /**
67
+ * Lookup a mime type based on extension
68
+ */
69
+ Mime.prototype.lookup = function(path, fallback) {
70
+ var ext = path.replace(/^.*[\.\/\\]/, '').toLowerCase();
71
+
72
+ return this.types[ext] || fallback || this.default_type;
73
+ };
74
+
75
+ /**
76
+ * Return file extension associated with a mime type
77
+ */
78
+ Mime.prototype.extension = function(mimeType) {
79
+ var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase();
80
+ return this.extensions[type];
81
+ };
82
+
83
+ // Default instance
84
+ var mime = new Mime();
85
+
86
+ // Define built-in types
87
+ mime.define(require('./types.json'));
88
+
89
+ // Default type
90
+ mime.default_type = mime.lookup('bin');
91
+
92
+ //
93
+ // Additional API specific to the default instance
94
+ //
95
+
96
+ mime.Mime = Mime;
97
+
98
+ /**
99
+ * Lookup a charset based on mime type.
100
+ */
101
+ mime.charsets = {
102
+ lookup: function(mimeType, fallback) {
103
+ // Assume text types are utf8
104
+ return (/^text\/|^application\/(javascript|json)/).test(mimeType) ? 'UTF-8' : fallback;
105
+ }
106
+ };
107
+
108
+ module.exports = mime;