es6-crawler-detect 3.3.0 → 4.0.0-beta.2

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 (383) hide show
  1. package/.babelrc +1 -1
  2. package/.mocharc.json +5 -0
  3. package/README.md +1 -0
  4. package/dist/index.d.ts +5 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +18 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/lib/crawler/crawlers.d.ts +5 -0
  9. package/dist/lib/crawler/crawlers.d.ts.map +1 -0
  10. package/dist/lib/crawler/crawlers.js +1400 -0
  11. package/dist/lib/crawler/crawlers.js.map +1 -0
  12. package/dist/lib/crawler/exclusions.d.ts +5 -0
  13. package/dist/lib/crawler/exclusions.d.ts.map +1 -0
  14. package/dist/lib/crawler/exclusions.js +59 -0
  15. package/dist/lib/crawler/exclusions.js.map +1 -0
  16. package/dist/lib/crawler/headers.d.ts +5 -0
  17. package/dist/lib/crawler/headers.d.ts.map +1 -0
  18. package/dist/lib/crawler/headers.js +21 -0
  19. package/dist/lib/crawler/headers.js.map +1 -0
  20. package/dist/lib/crawler/provider.d.ts +4 -0
  21. package/dist/lib/crawler/provider.d.ts.map +1 -0
  22. package/dist/lib/crawler/provider.js +3 -0
  23. package/dist/lib/crawler/provider.js.map +1 -0
  24. package/dist/lib/crawler.d.ts +21 -0
  25. package/dist/lib/crawler.d.ts.map +1 -0
  26. package/dist/lib/crawler.js +98 -0
  27. package/dist/lib/crawler.js.map +1 -0
  28. package/dist/types.d.ts +9 -0
  29. package/dist/types.d.ts.map +1 -0
  30. package/dist/types.js +3 -0
  31. package/dist/types.js.map +1 -0
  32. package/eslint.config.mjs +62 -0
  33. package/example/node/package.json +1 -1
  34. package/example/node/yarn.lock +222 -99
  35. package/package.json +30 -24
  36. package/src/index.ts +18 -0
  37. package/src/lib/crawler/{crawlers.js → crawlers.ts} +1397 -1403
  38. package/src/lib/crawler/{exclusions.js → exclusions.ts} +56 -62
  39. package/src/lib/crawler/{headers.js → headers.ts} +4 -10
  40. package/src/lib/crawler/provider.ts +3 -0
  41. package/src/lib/crawler.ts +128 -0
  42. package/src/types.ts +15 -0
  43. package/test/lib/crawler.spec.ts +116 -0
  44. package/tsconfig.json +28 -0
  45. package/.eslintignore +0 -6
  46. package/.eslintrc.json +0 -30
  47. package/dist/main.bundle.js +0 -1
  48. package/example/node/dist/crawler.min.js +0 -1
  49. package/example/node/node_modules/.bin/mime +0 -15
  50. package/example/node/node_modules/.bin/mime.cmd +0 -7
  51. package/example/node/node_modules/.yarn-integrity +0 -67
  52. package/example/node/node_modules/accepts/HISTORY.md +0 -236
  53. package/example/node/node_modules/accepts/LICENSE +0 -23
  54. package/example/node/node_modules/accepts/README.md +0 -142
  55. package/example/node/node_modules/accepts/index.js +0 -238
  56. package/example/node/node_modules/accepts/package.json +0 -47
  57. package/example/node/node_modules/array-flatten/LICENSE +0 -21
  58. package/example/node/node_modules/array-flatten/README.md +0 -43
  59. package/example/node/node_modules/array-flatten/array-flatten.js +0 -64
  60. package/example/node/node_modules/array-flatten/package.json +0 -39
  61. package/example/node/node_modules/body-parser/HISTORY.md +0 -624
  62. package/example/node/node_modules/body-parser/LICENSE +0 -23
  63. package/example/node/node_modules/body-parser/README.md +0 -456
  64. package/example/node/node_modules/body-parser/index.js +0 -157
  65. package/example/node/node_modules/body-parser/lib/read.js +0 -181
  66. package/example/node/node_modules/body-parser/lib/types/json.js +0 -230
  67. package/example/node/node_modules/body-parser/lib/types/raw.js +0 -101
  68. package/example/node/node_modules/body-parser/lib/types/text.js +0 -121
  69. package/example/node/node_modules/body-parser/lib/types/urlencoded.js +0 -284
  70. package/example/node/node_modules/body-parser/package.json +0 -52
  71. package/example/node/node_modules/bytes/History.md +0 -92
  72. package/example/node/node_modules/bytes/LICENSE +0 -23
  73. package/example/node/node_modules/bytes/Readme.md +0 -152
  74. package/example/node/node_modules/bytes/index.js +0 -166
  75. package/example/node/node_modules/bytes/package.json +0 -42
  76. package/example/node/node_modules/content-disposition/HISTORY.md +0 -60
  77. package/example/node/node_modules/content-disposition/LICENSE +0 -22
  78. package/example/node/node_modules/content-disposition/README.md +0 -142
  79. package/example/node/node_modules/content-disposition/index.js +0 -458
  80. package/example/node/node_modules/content-disposition/package.json +0 -44
  81. package/example/node/node_modules/content-type/HISTORY.md +0 -24
  82. package/example/node/node_modules/content-type/LICENSE +0 -22
  83. package/example/node/node_modules/content-type/README.md +0 -92
  84. package/example/node/node_modules/content-type/index.js +0 -222
  85. package/example/node/node_modules/content-type/package.json +0 -40
  86. package/example/node/node_modules/cookie/HISTORY.md +0 -128
  87. package/example/node/node_modules/cookie/LICENSE +0 -24
  88. package/example/node/node_modules/cookie/README.md +0 -257
  89. package/example/node/node_modules/cookie/index.js +0 -202
  90. package/example/node/node_modules/cookie/package.json +0 -40
  91. package/example/node/node_modules/cookie-signature/History.md +0 -38
  92. package/example/node/node_modules/cookie-signature/Readme.md +0 -42
  93. package/example/node/node_modules/cookie-signature/index.js +0 -51
  94. package/example/node/node_modules/cookie-signature/package.json +0 -18
  95. package/example/node/node_modules/debug/.coveralls.yml +0 -1
  96. package/example/node/node_modules/debug/.eslintrc +0 -11
  97. package/example/node/node_modules/debug/.travis.yml +0 -14
  98. package/example/node/node_modules/debug/CHANGELOG.md +0 -362
  99. package/example/node/node_modules/debug/LICENSE +0 -19
  100. package/example/node/node_modules/debug/Makefile +0 -50
  101. package/example/node/node_modules/debug/README.md +0 -312
  102. package/example/node/node_modules/debug/component.json +0 -19
  103. package/example/node/node_modules/debug/karma.conf.js +0 -70
  104. package/example/node/node_modules/debug/node.js +0 -1
  105. package/example/node/node_modules/debug/package.json +0 -49
  106. package/example/node/node_modules/debug/src/browser.js +0 -185
  107. package/example/node/node_modules/debug/src/debug.js +0 -202
  108. package/example/node/node_modules/debug/src/index.js +0 -10
  109. package/example/node/node_modules/debug/src/inspector-log.js +0 -15
  110. package/example/node/node_modules/debug/src/node.js +0 -248
  111. package/example/node/node_modules/depd/History.md +0 -96
  112. package/example/node/node_modules/depd/LICENSE +0 -22
  113. package/example/node/node_modules/depd/Readme.md +0 -280
  114. package/example/node/node_modules/depd/index.js +0 -522
  115. package/example/node/node_modules/depd/lib/browser/index.js +0 -77
  116. package/example/node/node_modules/depd/lib/compat/callsite-tostring.js +0 -103
  117. package/example/node/node_modules/depd/lib/compat/event-listener-count.js +0 -22
  118. package/example/node/node_modules/depd/lib/compat/index.js +0 -79
  119. package/example/node/node_modules/depd/package.json +0 -41
  120. package/example/node/node_modules/destroy/LICENSE +0 -22
  121. package/example/node/node_modules/destroy/README.md +0 -60
  122. package/example/node/node_modules/destroy/index.js +0 -75
  123. package/example/node/node_modules/destroy/package.json +0 -37
  124. package/example/node/node_modules/ee-first/LICENSE +0 -22
  125. package/example/node/node_modules/ee-first/README.md +0 -80
  126. package/example/node/node_modules/ee-first/index.js +0 -95
  127. package/example/node/node_modules/ee-first/package.json +0 -29
  128. package/example/node/node_modules/encodeurl/HISTORY.md +0 -14
  129. package/example/node/node_modules/encodeurl/LICENSE +0 -22
  130. package/example/node/node_modules/encodeurl/README.md +0 -128
  131. package/example/node/node_modules/encodeurl/index.js +0 -60
  132. package/example/node/node_modules/encodeurl/package.json +0 -40
  133. package/example/node/node_modules/escape-html/LICENSE +0 -24
  134. package/example/node/node_modules/escape-html/Readme.md +0 -43
  135. package/example/node/node_modules/escape-html/index.js +0 -78
  136. package/example/node/node_modules/escape-html/package.json +0 -24
  137. package/example/node/node_modules/etag/HISTORY.md +0 -83
  138. package/example/node/node_modules/etag/LICENSE +0 -22
  139. package/example/node/node_modules/etag/README.md +0 -159
  140. package/example/node/node_modules/etag/index.js +0 -131
  141. package/example/node/node_modules/etag/package.json +0 -47
  142. package/example/node/node_modules/express/History.md +0 -3510
  143. package/example/node/node_modules/express/LICENSE +0 -24
  144. package/example/node/node_modules/express/Readme.md +0 -158
  145. package/example/node/node_modules/express/index.js +0 -11
  146. package/example/node/node_modules/express/lib/application.js +0 -644
  147. package/example/node/node_modules/express/lib/express.js +0 -116
  148. package/example/node/node_modules/express/lib/middleware/init.js +0 -43
  149. package/example/node/node_modules/express/lib/middleware/query.js +0 -47
  150. package/example/node/node_modules/express/lib/request.js +0 -525
  151. package/example/node/node_modules/express/lib/response.js +0 -1147
  152. package/example/node/node_modules/express/lib/router/index.js +0 -668
  153. package/example/node/node_modules/express/lib/router/layer.js +0 -181
  154. package/example/node/node_modules/express/lib/router/route.js +0 -216
  155. package/example/node/node_modules/express/lib/utils.js +0 -302
  156. package/example/node/node_modules/express/lib/view.js +0 -182
  157. package/example/node/node_modules/express/package.json +0 -99
  158. package/example/node/node_modules/finalhandler/HISTORY.md +0 -187
  159. package/example/node/node_modules/finalhandler/LICENSE +0 -22
  160. package/example/node/node_modules/finalhandler/README.md +0 -148
  161. package/example/node/node_modules/finalhandler/index.js +0 -331
  162. package/example/node/node_modules/finalhandler/package.json +0 -45
  163. package/example/node/node_modules/forwarded/HISTORY.md +0 -21
  164. package/example/node/node_modules/forwarded/LICENSE +0 -22
  165. package/example/node/node_modules/forwarded/README.md +0 -57
  166. package/example/node/node_modules/forwarded/index.js +0 -90
  167. package/example/node/node_modules/forwarded/package.json +0 -45
  168. package/example/node/node_modules/fresh/HISTORY.md +0 -70
  169. package/example/node/node_modules/fresh/LICENSE +0 -23
  170. package/example/node/node_modules/fresh/README.md +0 -119
  171. package/example/node/node_modules/fresh/index.js +0 -137
  172. package/example/node/node_modules/fresh/package.json +0 -46
  173. package/example/node/node_modules/http-errors/HISTORY.md +0 -165
  174. package/example/node/node_modules/http-errors/LICENSE +0 -23
  175. package/example/node/node_modules/http-errors/README.md +0 -169
  176. package/example/node/node_modules/http-errors/index.js +0 -299
  177. package/example/node/node_modules/http-errors/package.json +0 -49
  178. package/example/node/node_modules/iconv-lite/Changelog.md +0 -162
  179. package/example/node/node_modules/iconv-lite/LICENSE +0 -21
  180. package/example/node/node_modules/iconv-lite/README.md +0 -156
  181. package/example/node/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
  182. package/example/node/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
  183. package/example/node/node_modules/iconv-lite/encodings/index.js +0 -22
  184. package/example/node/node_modules/iconv-lite/encodings/internal.js +0 -188
  185. package/example/node/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
  186. package/example/node/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
  187. package/example/node/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
  188. package/example/node/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
  189. package/example/node/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
  190. package/example/node/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
  191. package/example/node/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
  192. package/example/node/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
  193. package/example/node/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
  194. package/example/node/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
  195. package/example/node/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
  196. package/example/node/node_modules/iconv-lite/encodings/utf16.js +0 -177
  197. package/example/node/node_modules/iconv-lite/encodings/utf7.js +0 -290
  198. package/example/node/node_modules/iconv-lite/lib/bom-handling.js +0 -52
  199. package/example/node/node_modules/iconv-lite/lib/extend-node.js +0 -217
  200. package/example/node/node_modules/iconv-lite/lib/index.d.ts +0 -24
  201. package/example/node/node_modules/iconv-lite/lib/index.js +0 -153
  202. package/example/node/node_modules/iconv-lite/lib/streams.js +0 -121
  203. package/example/node/node_modules/iconv-lite/package.json +0 -46
  204. package/example/node/node_modules/inherits/LICENSE +0 -16
  205. package/example/node/node_modules/inherits/README.md +0 -42
  206. package/example/node/node_modules/inherits/inherits.js +0 -9
  207. package/example/node/node_modules/inherits/inherits_browser.js +0 -27
  208. package/example/node/node_modules/inherits/package.json +0 -29
  209. package/example/node/node_modules/ipaddr.js/LICENSE +0 -19
  210. package/example/node/node_modules/ipaddr.js/README.md +0 -233
  211. package/example/node/node_modules/ipaddr.js/ipaddr.min.js +0 -1
  212. package/example/node/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
  213. package/example/node/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
  214. package/example/node/node_modules/ipaddr.js/package.json +0 -35
  215. package/example/node/node_modules/media-typer/HISTORY.md +0 -22
  216. package/example/node/node_modules/media-typer/LICENSE +0 -22
  217. package/example/node/node_modules/media-typer/README.md +0 -81
  218. package/example/node/node_modules/media-typer/index.js +0 -270
  219. package/example/node/node_modules/media-typer/package.json +0 -26
  220. package/example/node/node_modules/merge-descriptors/HISTORY.md +0 -21
  221. package/example/node/node_modules/merge-descriptors/LICENSE +0 -23
  222. package/example/node/node_modules/merge-descriptors/README.md +0 -48
  223. package/example/node/node_modules/merge-descriptors/index.js +0 -60
  224. package/example/node/node_modules/merge-descriptors/package.json +0 -32
  225. package/example/node/node_modules/methods/HISTORY.md +0 -29
  226. package/example/node/node_modules/methods/LICENSE +0 -24
  227. package/example/node/node_modules/methods/README.md +0 -51
  228. package/example/node/node_modules/methods/index.js +0 -69
  229. package/example/node/node_modules/methods/package.json +0 -36
  230. package/example/node/node_modules/mime/CHANGELOG.md +0 -164
  231. package/example/node/node_modules/mime/LICENSE +0 -21
  232. package/example/node/node_modules/mime/README.md +0 -90
  233. package/example/node/node_modules/mime/cli.js +0 -8
  234. package/example/node/node_modules/mime/mime.js +0 -108
  235. package/example/node/node_modules/mime/package.json +0 -44
  236. package/example/node/node_modules/mime/src/build.js +0 -53
  237. package/example/node/node_modules/mime/src/test.js +0 -60
  238. package/example/node/node_modules/mime/types.json +0 -1
  239. package/example/node/node_modules/mime-db/HISTORY.md +0 -499
  240. package/example/node/node_modules/mime-db/LICENSE +0 -22
  241. package/example/node/node_modules/mime-db/README.md +0 -100
  242. package/example/node/node_modules/mime-db/db.json +0 -8471
  243. package/example/node/node_modules/mime-db/index.js +0 -11
  244. package/example/node/node_modules/mime-db/package.json +0 -59
  245. package/example/node/node_modules/mime-types/HISTORY.md +0 -388
  246. package/example/node/node_modules/mime-types/LICENSE +0 -23
  247. package/example/node/node_modules/mime-types/README.md +0 -113
  248. package/example/node/node_modules/mime-types/index.js +0 -188
  249. package/example/node/node_modules/mime-types/package.json +0 -44
  250. package/example/node/node_modules/ms/index.js +0 -152
  251. package/example/node/node_modules/ms/license.md +0 -21
  252. package/example/node/node_modules/ms/package.json +0 -37
  253. package/example/node/node_modules/ms/readme.md +0 -51
  254. package/example/node/node_modules/negotiator/HISTORY.md +0 -103
  255. package/example/node/node_modules/negotiator/LICENSE +0 -24
  256. package/example/node/node_modules/negotiator/README.md +0 -203
  257. package/example/node/node_modules/negotiator/index.js +0 -124
  258. package/example/node/node_modules/negotiator/lib/charset.js +0 -169
  259. package/example/node/node_modules/negotiator/lib/encoding.js +0 -184
  260. package/example/node/node_modules/negotiator/lib/language.js +0 -179
  261. package/example/node/node_modules/negotiator/lib/mediaType.js +0 -294
  262. package/example/node/node_modules/negotiator/package.json +0 -42
  263. package/example/node/node_modules/on-finished/HISTORY.md +0 -88
  264. package/example/node/node_modules/on-finished/LICENSE +0 -23
  265. package/example/node/node_modules/on-finished/README.md +0 -154
  266. package/example/node/node_modules/on-finished/index.js +0 -196
  267. package/example/node/node_modules/on-finished/package.json +0 -31
  268. package/example/node/node_modules/parseurl/HISTORY.md +0 -58
  269. package/example/node/node_modules/parseurl/LICENSE +0 -24
  270. package/example/node/node_modules/parseurl/README.md +0 -133
  271. package/example/node/node_modules/parseurl/index.js +0 -158
  272. package/example/node/node_modules/parseurl/package.json +0 -40
  273. package/example/node/node_modules/path-to-regexp/History.md +0 -36
  274. package/example/node/node_modules/path-to-regexp/LICENSE +0 -21
  275. package/example/node/node_modules/path-to-regexp/Readme.md +0 -35
  276. package/example/node/node_modules/path-to-regexp/index.js +0 -129
  277. package/example/node/node_modules/path-to-regexp/package.json +0 -30
  278. package/example/node/node_modules/proxy-addr/HISTORY.md +0 -161
  279. package/example/node/node_modules/proxy-addr/LICENSE +0 -22
  280. package/example/node/node_modules/proxy-addr/README.md +0 -139
  281. package/example/node/node_modules/proxy-addr/index.js +0 -327
  282. package/example/node/node_modules/proxy-addr/package.json +0 -47
  283. package/example/node/node_modules/qs/.editorconfig +0 -39
  284. package/example/node/node_modules/qs/.eslintignore +0 -2
  285. package/example/node/node_modules/qs/.eslintrc +0 -35
  286. package/example/node/node_modules/qs/.github/FUNDING.yml +0 -12
  287. package/example/node/node_modules/qs/.nycrc +0 -13
  288. package/example/node/node_modules/qs/CHANGELOG.md +0 -359
  289. package/example/node/node_modules/qs/LICENSE.md +0 -29
  290. package/example/node/node_modules/qs/README.md +0 -604
  291. package/example/node/node_modules/qs/dist/qs.js +0 -832
  292. package/example/node/node_modules/qs/lib/formats.js +0 -23
  293. package/example/node/node_modules/qs/lib/index.js +0 -11
  294. package/example/node/node_modules/qs/lib/parse.js +0 -257
  295. package/example/node/node_modules/qs/lib/stringify.js +0 -278
  296. package/example/node/node_modules/qs/lib/utils.js +0 -251
  297. package/example/node/node_modules/qs/package.json +0 -69
  298. package/example/node/node_modules/qs/test/parse.js +0 -772
  299. package/example/node/node_modules/qs/test/stringify.js +0 -793
  300. package/example/node/node_modules/qs/test/utils.js +0 -136
  301. package/example/node/node_modules/range-parser/HISTORY.md +0 -56
  302. package/example/node/node_modules/range-parser/LICENSE +0 -23
  303. package/example/node/node_modules/range-parser/README.md +0 -84
  304. package/example/node/node_modules/range-parser/index.js +0 -162
  305. package/example/node/node_modules/range-parser/package.json +0 -44
  306. package/example/node/node_modules/raw-body/HISTORY.md +0 -284
  307. package/example/node/node_modules/raw-body/LICENSE +0 -22
  308. package/example/node/node_modules/raw-body/README.md +0 -217
  309. package/example/node/node_modules/raw-body/index.d.ts +0 -87
  310. package/example/node/node_modules/raw-body/index.js +0 -286
  311. package/example/node/node_modules/raw-body/package.json +0 -48
  312. package/example/node/node_modules/safe-buffer/LICENSE +0 -21
  313. package/example/node/node_modules/safe-buffer/README.md +0 -584
  314. package/example/node/node_modules/safe-buffer/index.d.ts +0 -187
  315. package/example/node/node_modules/safe-buffer/index.js +0 -65
  316. package/example/node/node_modules/safe-buffer/package.json +0 -51
  317. package/example/node/node_modules/safer-buffer/LICENSE +0 -21
  318. package/example/node/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  319. package/example/node/node_modules/safer-buffer/Readme.md +0 -156
  320. package/example/node/node_modules/safer-buffer/dangerous.js +0 -58
  321. package/example/node/node_modules/safer-buffer/package.json +0 -34
  322. package/example/node/node_modules/safer-buffer/safer.js +0 -77
  323. package/example/node/node_modules/safer-buffer/tests.js +0 -406
  324. package/example/node/node_modules/send/HISTORY.md +0 -506
  325. package/example/node/node_modules/send/LICENSE +0 -23
  326. package/example/node/node_modules/send/README.md +0 -327
  327. package/example/node/node_modules/send/index.js +0 -1133
  328. package/example/node/node_modules/send/node_modules/.bin/mime +0 -15
  329. package/example/node/node_modules/send/node_modules/.bin/mime.cmd +0 -7
  330. package/example/node/node_modules/send/node_modules/ms/index.js +0 -162
  331. package/example/node/node_modules/send/node_modules/ms/license.md +0 -21
  332. package/example/node/node_modules/send/node_modules/ms/package.json +0 -38
  333. package/example/node/node_modules/send/node_modules/ms/readme.md +0 -59
  334. package/example/node/node_modules/send/package.json +0 -61
  335. package/example/node/node_modules/serve-static/HISTORY.md +0 -459
  336. package/example/node/node_modules/serve-static/LICENSE +0 -25
  337. package/example/node/node_modules/serve-static/README.md +0 -257
  338. package/example/node/node_modules/serve-static/index.js +0 -210
  339. package/example/node/node_modules/serve-static/package.json +0 -42
  340. package/example/node/node_modules/setprototypeof/LICENSE +0 -13
  341. package/example/node/node_modules/setprototypeof/README.md +0 -31
  342. package/example/node/node_modules/setprototypeof/index.d.ts +0 -2
  343. package/example/node/node_modules/setprototypeof/index.js +0 -17
  344. package/example/node/node_modules/setprototypeof/package.json +0 -38
  345. package/example/node/node_modules/setprototypeof/test/index.js +0 -24
  346. package/example/node/node_modules/statuses/HISTORY.md +0 -65
  347. package/example/node/node_modules/statuses/LICENSE +0 -23
  348. package/example/node/node_modules/statuses/README.md +0 -127
  349. package/example/node/node_modules/statuses/codes.json +0 -66
  350. package/example/node/node_modules/statuses/index.js +0 -113
  351. package/example/node/node_modules/statuses/package.json +0 -48
  352. package/example/node/node_modules/toidentifier/HISTORY.md +0 -9
  353. package/example/node/node_modules/toidentifier/LICENSE +0 -21
  354. package/example/node/node_modules/toidentifier/README.md +0 -61
  355. package/example/node/node_modules/toidentifier/index.js +0 -32
  356. package/example/node/node_modules/toidentifier/package.json +0 -38
  357. package/example/node/node_modules/type-is/HISTORY.md +0 -259
  358. package/example/node/node_modules/type-is/LICENSE +0 -23
  359. package/example/node/node_modules/type-is/README.md +0 -170
  360. package/example/node/node_modules/type-is/index.js +0 -266
  361. package/example/node/node_modules/type-is/package.json +0 -45
  362. package/example/node/node_modules/unpipe/HISTORY.md +0 -4
  363. package/example/node/node_modules/unpipe/LICENSE +0 -22
  364. package/example/node/node_modules/unpipe/README.md +0 -43
  365. package/example/node/node_modules/unpipe/index.js +0 -69
  366. package/example/node/node_modules/unpipe/package.json +0 -27
  367. package/example/node/node_modules/utils-merge/LICENSE +0 -20
  368. package/example/node/node_modules/utils-merge/README.md +0 -34
  369. package/example/node/node_modules/utils-merge/index.js +0 -23
  370. package/example/node/node_modules/utils-merge/package.json +0 -40
  371. package/example/node/node_modules/vary/HISTORY.md +0 -39
  372. package/example/node/node_modules/vary/LICENSE +0 -22
  373. package/example/node/node_modules/vary/README.md +0 -101
  374. package/example/node/node_modules/vary/index.js +0 -149
  375. package/example/node/node_modules/vary/package.json +0 -43
  376. package/example/node/server.js +0 -38
  377. package/src/index.js +0 -16
  378. package/src/lib/crawler/provider.js +0 -11
  379. package/src/lib/crawler.js +0 -130
  380. package/test/lib/crawler.test.js +0 -94
  381. package/webpack.common.js +0 -20
  382. package/webpack.dev.js +0 -7
  383. package/webpack.prod.js +0 -14
@@ -1,62 +1,56 @@
1
- 'use strict';
2
-
3
- const Provider = require('./provider');
4
-
5
- class Exclusions extends Provider {
6
- constructor() {
7
- super();
8
-
9
- this.data = [
10
- 'Safari.[\\d\\.]*',
11
- 'Firefox.[\\d\\.]*',
12
- ' Chrome.[\\d\\.]*',
13
- 'Chromium.[\\d\\.]*',
14
- 'MSIE.[\\d\\.]',
15
- 'Opera\\/[\\d\\.]*',
16
- 'Mozilla.[\\d\\.]*',
17
- 'AppleWebKit.[\\d\\.]*',
18
- 'Trident.[\\d\\.]*',
19
- 'Windows NT.[\\d\\.]*',
20
- 'Android [\\d\\.]*',
21
- 'Macintosh.',
22
- 'Ubuntu',
23
- 'Linux',
24
- '[ ]Intel',
25
- 'Mac OS X [\\d_]*',
26
- '(like )?Gecko(.[\\d\\.]*)?',
27
- 'KHTML,',
28
- 'CriOS.[\\d\\.]*',
29
- 'CPU iPhone OS ([0-9_])* like Mac OS X',
30
- 'CPU OS ([0-9_])* like Mac OS X',
31
- 'iPod',
32
- 'compatible',
33
- 'x86_..',
34
- 'i686',
35
- 'x64',
36
- 'X11',
37
- 'rv:[\\d\\.]*',
38
- 'Version.[\\d\\.]*',
39
- 'WOW64',
40
- 'Win64',
41
- 'Dalvik.[\\d\\.]*',
42
- ' \\.NET CLR [\\d\\.]*',
43
- 'Presto.[\\d\\.]*',
44
- 'Media Center PC',
45
- 'BlackBerry',
46
- 'Build',
47
- 'Opera Mini\\/\\d{1,2}\\.\\d{1,2}\\.[\\d\\.]*\\/\\d{1,2}\\.',
48
- 'Opera',
49
- ' \\.NET[\\d\\.]*',
50
- 'cubot',
51
- '; M bot',
52
- '; CRONO',
53
- '; B bot',
54
- '; IDbot',
55
- '; ID bot',
56
- '; POWER BOT',
57
- 'OCTOPUS-CORE',
58
- ];
59
- }
60
- }
61
-
62
- module.exports = Exclusions;
1
+ import { Provider } from './provider';
2
+
3
+ export class Exclusions implements Provider {
4
+ getAll(): string[] {
5
+ return [
6
+ 'Safari.[\\d\\.]*',
7
+ 'Firefox.[\\d\\.]*',
8
+ ' Chrome.[\\d\\.]*',
9
+ 'Chromium.[\\d\\.]*',
10
+ 'MSIE.[\\d\\.]',
11
+ 'Opera\\/[\\d\\.]*',
12
+ 'Mozilla.[\\d\\.]*',
13
+ 'AppleWebKit.[\\d\\.]*',
14
+ 'Trident.[\\d\\.]*',
15
+ 'Windows NT.[\\d\\.]*',
16
+ 'Android [\\d\\.]*',
17
+ 'Macintosh.',
18
+ 'Ubuntu',
19
+ 'Linux',
20
+ '[ ]Intel',
21
+ 'Mac OS X [\\d_]*',
22
+ '(like )?Gecko(.[\\d\\.]*)?',
23
+ 'KHTML,',
24
+ 'CriOS.[\\d\\.]*',
25
+ 'CPU iPhone OS ([0-9_])* like Mac OS X',
26
+ 'CPU OS ([0-9_])* like Mac OS X',
27
+ 'iPod',
28
+ 'compatible',
29
+ 'x86_..',
30
+ 'i686',
31
+ 'x64',
32
+ 'X11',
33
+ 'rv:[\\d\\.]*',
34
+ 'Version.[\\d\\.]*',
35
+ 'WOW64',
36
+ 'Win64',
37
+ 'Dalvik.[\\d\\.]*',
38
+ ' \\.NET CLR [\\d\\.]*',
39
+ 'Presto.[\\d\\.]*',
40
+ 'Media Center PC',
41
+ 'BlackBerry',
42
+ 'Build',
43
+ 'Opera Mini\\/\\d{1,2}\\.\\d{1,2}\\.[\\d\\.]*\\/\\d{1,2}\\.',
44
+ 'Opera',
45
+ ' \\.NET[\\d\\.]*',
46
+ 'cubot',
47
+ '; M bot',
48
+ '; CRONO',
49
+ '; B bot',
50
+ '; IDbot',
51
+ '; ID bot',
52
+ '; POWER BOT',
53
+ 'OCTOPUS-CORE',
54
+ ];
55
+ }
56
+ }
@@ -1,12 +1,8 @@
1
- 'use strict';
1
+ import { Provider } from './provider';
2
2
 
3
- const Provider = require('./provider');
4
-
5
- class Headers extends Provider {
6
- constructor() {
7
- super();
8
-
9
- this.data = [
3
+ export class Headers implements Provider {
4
+ getAll(): string[] {
5
+ return [
10
6
  'USER-AGENT',
11
7
  'X-OPERAMINI-PHONE-UA',
12
8
  'X-DEVICE-USER-AGENT',
@@ -20,5 +16,3 @@ class Headers extends Provider {
20
16
  ];
21
17
  }
22
18
  }
23
-
24
- module.exports = Headers;
@@ -0,0 +1,3 @@
1
+ export interface Provider {
2
+ getAll(): string[];
3
+ }
@@ -0,0 +1,128 @@
1
+ import { Request } from 'express-serve-static-core';
2
+ import { IncomingHttpHeaders } from 'http2';
3
+
4
+ import { Crawlers } from './crawler/crawlers';
5
+ import { Exclusions } from './crawler/exclusions';
6
+ import { Headers } from './crawler/headers';
7
+
8
+ export class Crawler {
9
+ private crawlers: Crawlers;
10
+ private headers: Headers;
11
+ private exclusions: Exclusions;
12
+
13
+ private request: Request | NodeJS.Dict<string | string[]>;
14
+ private compiledRegexList: RegExp;
15
+ private compiledExclusions: RegExp;
16
+ private httpHeaders: string | string[] | IncomingHttpHeaders;
17
+ private userAgent: string;
18
+ private matches?: RegExpExecArray | null;
19
+
20
+ constructor(
21
+ request?: Request,
22
+ headers?: IncomingHttpHeaders,
23
+ userAgent?: string
24
+ ) {
25
+ this.crawlers = new Crawlers();
26
+ this.headers = new Headers();
27
+ this.exclusions = new Exclusions();
28
+
29
+ this.request = request ?? {};
30
+
31
+ // The regex-list must not be used with g-flag!
32
+ // See: https://stackoverflow.com/questions/1520800/why-does-a-regexp-with-global-flag-give-wrong-results
33
+ this.compiledRegexList = this.compileRegex(this.crawlers.getAll(), 'i');
34
+
35
+ // The exclusions should be used with g-flag in order to remove each value.
36
+ this.compiledExclusions = this.compileRegex(this.exclusions.getAll(), 'gi');
37
+
38
+ this.httpHeaders = this.setHttpHeaders(headers);
39
+ this.userAgent = this.setUserAgent(userAgent);
40
+ }
41
+
42
+ public compileRegex(patterns: string[], flags?: string): RegExp {
43
+ return new RegExp(patterns.join('|'), flags);
44
+ }
45
+
46
+ private setHttpHeaders(
47
+ headers?: string | string[] | IncomingHttpHeaders
48
+ ): string | string[] | IncomingHttpHeaders {
49
+ // Use the Request headers if httpHeaders is not defined
50
+ if (!headers || Object.keys(headers).length === 0) {
51
+ if (Object.keys(this.request).length) {
52
+ if (this.request.headers) {
53
+ return this.request.headers;
54
+ }
55
+ }
56
+
57
+ return '';
58
+ }
59
+
60
+ // Save the headers.
61
+ return headers;
62
+ }
63
+
64
+ private setUserAgent(userAgent?: string): string {
65
+ if (!userAgent?.length) {
66
+ userAgent = '';
67
+ for (const header of this.getUaHttpHeaders()) {
68
+ if (
69
+ typeof this.httpHeaders === 'object' &&
70
+ !Array.isArray(this.httpHeaders)
71
+ ) {
72
+ if (Object.hasOwn(this.httpHeaders, header.toLowerCase())) {
73
+ const headerValue = this.httpHeaders[header.toLowerCase()];
74
+
75
+ if (typeof headerValue === 'string') {
76
+ const separator = userAgent.length > 0 ? ' ' : '';
77
+ userAgent += separator + headerValue;
78
+ } else if (Array.isArray(headerValue)) {
79
+ const separator = userAgent.length > 0 ? ' ' : '';
80
+ userAgent += separator + headerValue.join(' ');
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
+ return userAgent;
88
+ }
89
+
90
+ private getUaHttpHeaders() {
91
+ return this.headers.getAll();
92
+ }
93
+
94
+ public getMatches(): string | null | object {
95
+ if (this.matches !== undefined) {
96
+ if (this.matches?.length) {
97
+ return this.matches[0];
98
+ }
99
+
100
+ return null;
101
+ }
102
+
103
+ return {};
104
+ }
105
+
106
+ public isCrawler(userAgent?: string): boolean {
107
+ if (Buffer.byteLength(userAgent ?? '', 'utf8') > 4096) {
108
+ return false;
109
+ }
110
+
111
+ let agent = userAgent ?? this.userAgent;
112
+
113
+ // test on compiled regx
114
+ agent = agent.replace(this.compiledExclusions, '');
115
+
116
+ if (agent.trim().length === 0) {
117
+ return false;
118
+ }
119
+
120
+ const matches = this.compiledRegexList.exec(agent);
121
+
122
+ if (matches) {
123
+ this.matches = matches;
124
+ }
125
+
126
+ return matches !== null && matches.length > 0;
127
+ }
128
+ }
package/src/types.ts ADDED
@@ -0,0 +1,15 @@
1
+ import { NextFunction, Request, Response } from 'express-serve-static-core';
2
+
3
+ import { Crawler } from './lib/crawler';
4
+
5
+ export type Middleware = (
6
+ request: Request,
7
+ response: Response,
8
+ next: NextFunction
9
+ ) => Promise<Response>;
10
+
11
+ declare module 'express-serve-static-core' {
12
+ interface Request {
13
+ Crawler: Crawler;
14
+ }
15
+ }
@@ -0,0 +1,116 @@
1
+ import assert from 'assert';
2
+ import { Request } from 'express-serve-static-core';
3
+ import * as fs from 'fs';
4
+ import * as readline from 'readline';
5
+
6
+ import { Crawler } from '../../src';
7
+
8
+ declare module 'express-serve-static-core' {
9
+ interface Request {
10
+ Crawler: Crawler;
11
+ }
12
+ }
13
+
14
+ let crawler = new Crawler();
15
+
16
+ describe('regex-compilation', () => {
17
+ it('will join list of patterns with pipes', () => {
18
+ assert.strictEqual(
19
+ crawler.compileRegex(['some', 'patterns']).source,
20
+ 'some|patterns'
21
+ );
22
+ assert.strictEqual(crawler.compileRegex(['single']).source, 'single');
23
+ });
24
+
25
+ it('keeps the whitespace', () => {
26
+ assert.strictEqual(
27
+ crawler.compileRegex([' keep-whitespaces ']).source,
28
+ ' keep-whitespaces '
29
+ );
30
+ });
31
+
32
+ it('will accept regex-flags for compilation', () => {
33
+ const patterns = ['some', 'patterns'];
34
+ assert.strictEqual(crawler.compileRegex(patterns, 'g').flags, 'g');
35
+ assert.strictEqual(crawler.compileRegex(patterns, 'i').flags, 'i');
36
+ });
37
+
38
+ it('should be case insensitive', () => {
39
+ assert.strictEqual(crawler.isCrawler('Facebot\\1.0'), true);
40
+ assert.strictEqual(
41
+ crawler.getMatches(),
42
+ 'Facebot',
43
+ 'Crawler was not able to identify crawler correctly'
44
+ );
45
+ });
46
+ });
47
+
48
+ describe('crawler-identification', () => {
49
+ it('should be able to identify crawlers', async () => {
50
+ const rl = readline.createInterface({
51
+ input: fs.createReadStream('./test/lib/database/crawlers.txt'),
52
+ crlfDelay: Infinity,
53
+ });
54
+
55
+ for await (const line of rl) {
56
+ assert.strictEqual(
57
+ crawler.isCrawler(line),
58
+ true,
59
+ `${line} is not a crawler`
60
+ );
61
+ }
62
+
63
+ rl.close();
64
+ });
65
+
66
+ it('should be able to identify devices', async () => {
67
+ const rl = readline.createInterface({
68
+ input: fs.createReadStream('./test/lib/database/devices.txt'),
69
+ crlfDelay: Infinity,
70
+ });
71
+
72
+ for await (const line of rl) {
73
+ assert.strictEqual(
74
+ crawler.isCrawler(line),
75
+ false,
76
+ `${line} is not a device`
77
+ );
78
+ }
79
+
80
+ rl.close();
81
+ });
82
+
83
+ it('should identify the crawler from given headers', async () => {
84
+ crawler = new Crawler(undefined, {
85
+ host: '127.0.0.1:3000',
86
+ 'user-agent': 'curl/7.73.0',
87
+ accept: '*/*',
88
+ });
89
+
90
+ assert.strictEqual(crawler.isCrawler(), true);
91
+ });
92
+
93
+ it('should identify the crawler from request headers', async () => {
94
+ crawler = new Crawler({
95
+ headers: { 'user-agent': 'curl/7.73.0', accept: '*/*' },
96
+ } as Request);
97
+
98
+ assert.strictEqual(crawler.isCrawler(), true);
99
+ });
100
+
101
+ it('should identify the crawler from request headers with exact pattern', async () => {
102
+ crawler = new Crawler({
103
+ headers: { 'user-agent': 'b0t', accept: '*/*' },
104
+ } as Request);
105
+
106
+ assert.strictEqual(crawler.isCrawler(), true);
107
+ });
108
+
109
+ it('should not throw an exception on empty request header', async () => {
110
+ crawler = new Crawler({
111
+ headers: { accept: '*/*' },
112
+ } as Request);
113
+
114
+ assert.doesNotThrow(() => crawler.isCrawler());
115
+ });
116
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "display": "Node 20",
4
+ "_version": "20.1.0",
5
+
6
+ "compilerOptions": {
7
+ "lib": ["es2023"],
8
+ "module": "node16",
9
+ "target": "es2022",
10
+
11
+ "declaration": true,
12
+ "declarationMap": true,
13
+ "sourceMap": true,
14
+ "emitDeclarationOnly": false,
15
+ "outDir": "dist",
16
+
17
+ "strict": true,
18
+ "esModuleInterop": true,
19
+ "skipLibCheck": true,
20
+ "moduleResolution": "node16"
21
+ },
22
+ "ts-node": {
23
+ "esm": true,
24
+ },
25
+
26
+ "include": ["src/**/*"],
27
+ "exclude": ["node_modules", "dist"]
28
+ }
package/.eslintignore DELETED
@@ -1,6 +0,0 @@
1
- !.*
2
- coverage/
3
- junit/
4
- dist/
5
- mobiles/
6
- **/node_modules/*
package/.eslintrc.json DELETED
@@ -1,30 +0,0 @@
1
- {
2
- "extends": ["eslint:recommended", "plugin:prettier/recommended"],
3
- "env": {
4
- "browser": false,
5
- "commonjs": true,
6
- "es6": true,
7
- "node": true,
8
- "mocha": true
9
- },
10
- "rules": {
11
- "max-len": [
12
- "warn",
13
- {
14
- "code": 80,
15
- "tabWidth": 2,
16
- "comments": 80,
17
- "ignoreComments": false,
18
- "ignoreTrailingComments": true,
19
- "ignoreUrls": true,
20
- "ignoreStrings": true,
21
- "ignoreTemplateLiterals": true,
22
- "ignoreRegExpLiterals": true
23
- }
24
- ]
25
- },
26
- "parser": "@babel/eslint-parser",
27
- "parserOptions": {
28
- "requireConfigFile": false
29
- }
30
- }