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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/.babelrc +1 -1
  2. package/.mocharc.json +5 -0
  3. package/README.md +1 -0
  4. package/dist/main.bundle.js +1 -1
  5. package/eslint.config.mjs +62 -0
  6. package/example/node/package.json +1 -1
  7. package/example/node/yarn.lock +222 -99
  8. package/package.json +30 -25
  9. package/src/index.js +20 -14
  10. package/src/index.ts +18 -0
  11. package/src/lib/crawler/crawlers.js +1399 -1403
  12. package/src/lib/crawler/crawlers.ts +1397 -0
  13. package/src/lib/crawler/exclusions.js +58 -62
  14. package/src/lib/crawler/exclusions.ts +56 -0
  15. package/src/lib/crawler/headers.js +6 -10
  16. package/src/lib/crawler/headers.ts +18 -0
  17. package/src/lib/crawler/provider.js +1 -10
  18. package/src/lib/crawler/provider.ts +3 -0
  19. package/src/lib/crawler.js +98 -130
  20. package/src/lib/crawler.ts +128 -0
  21. package/src/types.js +2 -0
  22. package/src/types.ts +15 -0
  23. package/test/lib/crawler.spec.js +149 -0
  24. package/test/lib/crawler.spec.ts +116 -0
  25. package/tsconfig.json +16 -0
  26. package/webpack.common.js +20 -20
  27. package/webpack.dev.js +7 -7
  28. package/webpack.prod.js +14 -14
  29. package/.eslintignore +0 -6
  30. package/.eslintrc.json +0 -30
  31. package/example/node/node_modules/.bin/mime +0 -15
  32. package/example/node/node_modules/.bin/mime.cmd +0 -7
  33. package/example/node/node_modules/.yarn-integrity +0 -67
  34. package/example/node/node_modules/accepts/HISTORY.md +0 -236
  35. package/example/node/node_modules/accepts/LICENSE +0 -23
  36. package/example/node/node_modules/accepts/README.md +0 -142
  37. package/example/node/node_modules/accepts/index.js +0 -238
  38. package/example/node/node_modules/accepts/package.json +0 -47
  39. package/example/node/node_modules/array-flatten/LICENSE +0 -21
  40. package/example/node/node_modules/array-flatten/README.md +0 -43
  41. package/example/node/node_modules/array-flatten/array-flatten.js +0 -64
  42. package/example/node/node_modules/array-flatten/package.json +0 -39
  43. package/example/node/node_modules/body-parser/HISTORY.md +0 -624
  44. package/example/node/node_modules/body-parser/LICENSE +0 -23
  45. package/example/node/node_modules/body-parser/README.md +0 -456
  46. package/example/node/node_modules/body-parser/index.js +0 -157
  47. package/example/node/node_modules/body-parser/lib/read.js +0 -181
  48. package/example/node/node_modules/body-parser/lib/types/json.js +0 -230
  49. package/example/node/node_modules/body-parser/lib/types/raw.js +0 -101
  50. package/example/node/node_modules/body-parser/lib/types/text.js +0 -121
  51. package/example/node/node_modules/body-parser/lib/types/urlencoded.js +0 -284
  52. package/example/node/node_modules/body-parser/package.json +0 -52
  53. package/example/node/node_modules/bytes/History.md +0 -92
  54. package/example/node/node_modules/bytes/LICENSE +0 -23
  55. package/example/node/node_modules/bytes/Readme.md +0 -152
  56. package/example/node/node_modules/bytes/index.js +0 -166
  57. package/example/node/node_modules/bytes/package.json +0 -42
  58. package/example/node/node_modules/content-disposition/HISTORY.md +0 -60
  59. package/example/node/node_modules/content-disposition/LICENSE +0 -22
  60. package/example/node/node_modules/content-disposition/README.md +0 -142
  61. package/example/node/node_modules/content-disposition/index.js +0 -458
  62. package/example/node/node_modules/content-disposition/package.json +0 -44
  63. package/example/node/node_modules/content-type/HISTORY.md +0 -24
  64. package/example/node/node_modules/content-type/LICENSE +0 -22
  65. package/example/node/node_modules/content-type/README.md +0 -92
  66. package/example/node/node_modules/content-type/index.js +0 -222
  67. package/example/node/node_modules/content-type/package.json +0 -40
  68. package/example/node/node_modules/cookie/HISTORY.md +0 -128
  69. package/example/node/node_modules/cookie/LICENSE +0 -24
  70. package/example/node/node_modules/cookie/README.md +0 -257
  71. package/example/node/node_modules/cookie/index.js +0 -202
  72. package/example/node/node_modules/cookie/package.json +0 -40
  73. package/example/node/node_modules/cookie-signature/History.md +0 -38
  74. package/example/node/node_modules/cookie-signature/Readme.md +0 -42
  75. package/example/node/node_modules/cookie-signature/index.js +0 -51
  76. package/example/node/node_modules/cookie-signature/package.json +0 -18
  77. package/example/node/node_modules/debug/.coveralls.yml +0 -1
  78. package/example/node/node_modules/debug/.eslintrc +0 -11
  79. package/example/node/node_modules/debug/.travis.yml +0 -14
  80. package/example/node/node_modules/debug/CHANGELOG.md +0 -362
  81. package/example/node/node_modules/debug/LICENSE +0 -19
  82. package/example/node/node_modules/debug/Makefile +0 -50
  83. package/example/node/node_modules/debug/README.md +0 -312
  84. package/example/node/node_modules/debug/component.json +0 -19
  85. package/example/node/node_modules/debug/karma.conf.js +0 -70
  86. package/example/node/node_modules/debug/node.js +0 -1
  87. package/example/node/node_modules/debug/package.json +0 -49
  88. package/example/node/node_modules/debug/src/browser.js +0 -185
  89. package/example/node/node_modules/debug/src/debug.js +0 -202
  90. package/example/node/node_modules/debug/src/index.js +0 -10
  91. package/example/node/node_modules/debug/src/inspector-log.js +0 -15
  92. package/example/node/node_modules/debug/src/node.js +0 -248
  93. package/example/node/node_modules/depd/History.md +0 -96
  94. package/example/node/node_modules/depd/LICENSE +0 -22
  95. package/example/node/node_modules/depd/Readme.md +0 -280
  96. package/example/node/node_modules/depd/index.js +0 -522
  97. package/example/node/node_modules/depd/lib/browser/index.js +0 -77
  98. package/example/node/node_modules/depd/lib/compat/callsite-tostring.js +0 -103
  99. package/example/node/node_modules/depd/lib/compat/event-listener-count.js +0 -22
  100. package/example/node/node_modules/depd/lib/compat/index.js +0 -79
  101. package/example/node/node_modules/depd/package.json +0 -41
  102. package/example/node/node_modules/destroy/LICENSE +0 -22
  103. package/example/node/node_modules/destroy/README.md +0 -60
  104. package/example/node/node_modules/destroy/index.js +0 -75
  105. package/example/node/node_modules/destroy/package.json +0 -37
  106. package/example/node/node_modules/ee-first/LICENSE +0 -22
  107. package/example/node/node_modules/ee-first/README.md +0 -80
  108. package/example/node/node_modules/ee-first/index.js +0 -95
  109. package/example/node/node_modules/ee-first/package.json +0 -29
  110. package/example/node/node_modules/encodeurl/HISTORY.md +0 -14
  111. package/example/node/node_modules/encodeurl/LICENSE +0 -22
  112. package/example/node/node_modules/encodeurl/README.md +0 -128
  113. package/example/node/node_modules/encodeurl/index.js +0 -60
  114. package/example/node/node_modules/encodeurl/package.json +0 -40
  115. package/example/node/node_modules/escape-html/LICENSE +0 -24
  116. package/example/node/node_modules/escape-html/Readme.md +0 -43
  117. package/example/node/node_modules/escape-html/index.js +0 -78
  118. package/example/node/node_modules/escape-html/package.json +0 -24
  119. package/example/node/node_modules/etag/HISTORY.md +0 -83
  120. package/example/node/node_modules/etag/LICENSE +0 -22
  121. package/example/node/node_modules/etag/README.md +0 -159
  122. package/example/node/node_modules/etag/index.js +0 -131
  123. package/example/node/node_modules/etag/package.json +0 -47
  124. package/example/node/node_modules/express/History.md +0 -3510
  125. package/example/node/node_modules/express/LICENSE +0 -24
  126. package/example/node/node_modules/express/Readme.md +0 -158
  127. package/example/node/node_modules/express/index.js +0 -11
  128. package/example/node/node_modules/express/lib/application.js +0 -644
  129. package/example/node/node_modules/express/lib/express.js +0 -116
  130. package/example/node/node_modules/express/lib/middleware/init.js +0 -43
  131. package/example/node/node_modules/express/lib/middleware/query.js +0 -47
  132. package/example/node/node_modules/express/lib/request.js +0 -525
  133. package/example/node/node_modules/express/lib/response.js +0 -1147
  134. package/example/node/node_modules/express/lib/router/index.js +0 -668
  135. package/example/node/node_modules/express/lib/router/layer.js +0 -181
  136. package/example/node/node_modules/express/lib/router/route.js +0 -216
  137. package/example/node/node_modules/express/lib/utils.js +0 -302
  138. package/example/node/node_modules/express/lib/view.js +0 -182
  139. package/example/node/node_modules/express/package.json +0 -99
  140. package/example/node/node_modules/finalhandler/HISTORY.md +0 -187
  141. package/example/node/node_modules/finalhandler/LICENSE +0 -22
  142. package/example/node/node_modules/finalhandler/README.md +0 -148
  143. package/example/node/node_modules/finalhandler/index.js +0 -331
  144. package/example/node/node_modules/finalhandler/package.json +0 -45
  145. package/example/node/node_modules/forwarded/HISTORY.md +0 -21
  146. package/example/node/node_modules/forwarded/LICENSE +0 -22
  147. package/example/node/node_modules/forwarded/README.md +0 -57
  148. package/example/node/node_modules/forwarded/index.js +0 -90
  149. package/example/node/node_modules/forwarded/package.json +0 -45
  150. package/example/node/node_modules/fresh/HISTORY.md +0 -70
  151. package/example/node/node_modules/fresh/LICENSE +0 -23
  152. package/example/node/node_modules/fresh/README.md +0 -119
  153. package/example/node/node_modules/fresh/index.js +0 -137
  154. package/example/node/node_modules/fresh/package.json +0 -46
  155. package/example/node/node_modules/http-errors/HISTORY.md +0 -165
  156. package/example/node/node_modules/http-errors/LICENSE +0 -23
  157. package/example/node/node_modules/http-errors/README.md +0 -169
  158. package/example/node/node_modules/http-errors/index.js +0 -299
  159. package/example/node/node_modules/http-errors/package.json +0 -49
  160. package/example/node/node_modules/iconv-lite/Changelog.md +0 -162
  161. package/example/node/node_modules/iconv-lite/LICENSE +0 -21
  162. package/example/node/node_modules/iconv-lite/README.md +0 -156
  163. package/example/node/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -555
  164. package/example/node/node_modules/iconv-lite/encodings/dbcs-data.js +0 -176
  165. package/example/node/node_modules/iconv-lite/encodings/index.js +0 -22
  166. package/example/node/node_modules/iconv-lite/encodings/internal.js +0 -188
  167. package/example/node/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -72
  168. package/example/node/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
  169. package/example/node/node_modules/iconv-lite/encodings/sbcs-data.js +0 -174
  170. package/example/node/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
  171. package/example/node/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
  172. package/example/node/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
  173. package/example/node/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
  174. package/example/node/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
  175. package/example/node/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
  176. package/example/node/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -55
  177. package/example/node/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
  178. package/example/node/node_modules/iconv-lite/encodings/utf16.js +0 -177
  179. package/example/node/node_modules/iconv-lite/encodings/utf7.js +0 -290
  180. package/example/node/node_modules/iconv-lite/lib/bom-handling.js +0 -52
  181. package/example/node/node_modules/iconv-lite/lib/extend-node.js +0 -217
  182. package/example/node/node_modules/iconv-lite/lib/index.d.ts +0 -24
  183. package/example/node/node_modules/iconv-lite/lib/index.js +0 -153
  184. package/example/node/node_modules/iconv-lite/lib/streams.js +0 -121
  185. package/example/node/node_modules/iconv-lite/package.json +0 -46
  186. package/example/node/node_modules/inherits/LICENSE +0 -16
  187. package/example/node/node_modules/inherits/README.md +0 -42
  188. package/example/node/node_modules/inherits/inherits.js +0 -9
  189. package/example/node/node_modules/inherits/inherits_browser.js +0 -27
  190. package/example/node/node_modules/inherits/package.json +0 -29
  191. package/example/node/node_modules/ipaddr.js/LICENSE +0 -19
  192. package/example/node/node_modules/ipaddr.js/README.md +0 -233
  193. package/example/node/node_modules/ipaddr.js/ipaddr.min.js +0 -1
  194. package/example/node/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
  195. package/example/node/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
  196. package/example/node/node_modules/ipaddr.js/package.json +0 -35
  197. package/example/node/node_modules/media-typer/HISTORY.md +0 -22
  198. package/example/node/node_modules/media-typer/LICENSE +0 -22
  199. package/example/node/node_modules/media-typer/README.md +0 -81
  200. package/example/node/node_modules/media-typer/index.js +0 -270
  201. package/example/node/node_modules/media-typer/package.json +0 -26
  202. package/example/node/node_modules/merge-descriptors/HISTORY.md +0 -21
  203. package/example/node/node_modules/merge-descriptors/LICENSE +0 -23
  204. package/example/node/node_modules/merge-descriptors/README.md +0 -48
  205. package/example/node/node_modules/merge-descriptors/index.js +0 -60
  206. package/example/node/node_modules/merge-descriptors/package.json +0 -32
  207. package/example/node/node_modules/methods/HISTORY.md +0 -29
  208. package/example/node/node_modules/methods/LICENSE +0 -24
  209. package/example/node/node_modules/methods/README.md +0 -51
  210. package/example/node/node_modules/methods/index.js +0 -69
  211. package/example/node/node_modules/methods/package.json +0 -36
  212. package/example/node/node_modules/mime/CHANGELOG.md +0 -164
  213. package/example/node/node_modules/mime/LICENSE +0 -21
  214. package/example/node/node_modules/mime/README.md +0 -90
  215. package/example/node/node_modules/mime/cli.js +0 -8
  216. package/example/node/node_modules/mime/mime.js +0 -108
  217. package/example/node/node_modules/mime/package.json +0 -44
  218. package/example/node/node_modules/mime/src/build.js +0 -53
  219. package/example/node/node_modules/mime/src/test.js +0 -60
  220. package/example/node/node_modules/mime/types.json +0 -1
  221. package/example/node/node_modules/mime-db/HISTORY.md +0 -499
  222. package/example/node/node_modules/mime-db/LICENSE +0 -22
  223. package/example/node/node_modules/mime-db/README.md +0 -100
  224. package/example/node/node_modules/mime-db/db.json +0 -8471
  225. package/example/node/node_modules/mime-db/index.js +0 -11
  226. package/example/node/node_modules/mime-db/package.json +0 -59
  227. package/example/node/node_modules/mime-types/HISTORY.md +0 -388
  228. package/example/node/node_modules/mime-types/LICENSE +0 -23
  229. package/example/node/node_modules/mime-types/README.md +0 -113
  230. package/example/node/node_modules/mime-types/index.js +0 -188
  231. package/example/node/node_modules/mime-types/package.json +0 -44
  232. package/example/node/node_modules/ms/index.js +0 -152
  233. package/example/node/node_modules/ms/license.md +0 -21
  234. package/example/node/node_modules/ms/package.json +0 -37
  235. package/example/node/node_modules/ms/readme.md +0 -51
  236. package/example/node/node_modules/negotiator/HISTORY.md +0 -103
  237. package/example/node/node_modules/negotiator/LICENSE +0 -24
  238. package/example/node/node_modules/negotiator/README.md +0 -203
  239. package/example/node/node_modules/negotiator/index.js +0 -124
  240. package/example/node/node_modules/negotiator/lib/charset.js +0 -169
  241. package/example/node/node_modules/negotiator/lib/encoding.js +0 -184
  242. package/example/node/node_modules/negotiator/lib/language.js +0 -179
  243. package/example/node/node_modules/negotiator/lib/mediaType.js +0 -294
  244. package/example/node/node_modules/negotiator/package.json +0 -42
  245. package/example/node/node_modules/on-finished/HISTORY.md +0 -88
  246. package/example/node/node_modules/on-finished/LICENSE +0 -23
  247. package/example/node/node_modules/on-finished/README.md +0 -154
  248. package/example/node/node_modules/on-finished/index.js +0 -196
  249. package/example/node/node_modules/on-finished/package.json +0 -31
  250. package/example/node/node_modules/parseurl/HISTORY.md +0 -58
  251. package/example/node/node_modules/parseurl/LICENSE +0 -24
  252. package/example/node/node_modules/parseurl/README.md +0 -133
  253. package/example/node/node_modules/parseurl/index.js +0 -158
  254. package/example/node/node_modules/parseurl/package.json +0 -40
  255. package/example/node/node_modules/path-to-regexp/History.md +0 -36
  256. package/example/node/node_modules/path-to-regexp/LICENSE +0 -21
  257. package/example/node/node_modules/path-to-regexp/Readme.md +0 -35
  258. package/example/node/node_modules/path-to-regexp/index.js +0 -129
  259. package/example/node/node_modules/path-to-regexp/package.json +0 -30
  260. package/example/node/node_modules/proxy-addr/HISTORY.md +0 -161
  261. package/example/node/node_modules/proxy-addr/LICENSE +0 -22
  262. package/example/node/node_modules/proxy-addr/README.md +0 -139
  263. package/example/node/node_modules/proxy-addr/index.js +0 -327
  264. package/example/node/node_modules/proxy-addr/package.json +0 -47
  265. package/example/node/node_modules/qs/.editorconfig +0 -39
  266. package/example/node/node_modules/qs/.eslintignore +0 -2
  267. package/example/node/node_modules/qs/.eslintrc +0 -35
  268. package/example/node/node_modules/qs/.github/FUNDING.yml +0 -12
  269. package/example/node/node_modules/qs/.nycrc +0 -13
  270. package/example/node/node_modules/qs/CHANGELOG.md +0 -359
  271. package/example/node/node_modules/qs/LICENSE.md +0 -29
  272. package/example/node/node_modules/qs/README.md +0 -604
  273. package/example/node/node_modules/qs/dist/qs.js +0 -832
  274. package/example/node/node_modules/qs/lib/formats.js +0 -23
  275. package/example/node/node_modules/qs/lib/index.js +0 -11
  276. package/example/node/node_modules/qs/lib/parse.js +0 -257
  277. package/example/node/node_modules/qs/lib/stringify.js +0 -278
  278. package/example/node/node_modules/qs/lib/utils.js +0 -251
  279. package/example/node/node_modules/qs/package.json +0 -69
  280. package/example/node/node_modules/qs/test/parse.js +0 -772
  281. package/example/node/node_modules/qs/test/stringify.js +0 -793
  282. package/example/node/node_modules/qs/test/utils.js +0 -136
  283. package/example/node/node_modules/range-parser/HISTORY.md +0 -56
  284. package/example/node/node_modules/range-parser/LICENSE +0 -23
  285. package/example/node/node_modules/range-parser/README.md +0 -84
  286. package/example/node/node_modules/range-parser/index.js +0 -162
  287. package/example/node/node_modules/range-parser/package.json +0 -44
  288. package/example/node/node_modules/raw-body/HISTORY.md +0 -284
  289. package/example/node/node_modules/raw-body/LICENSE +0 -22
  290. package/example/node/node_modules/raw-body/README.md +0 -217
  291. package/example/node/node_modules/raw-body/index.d.ts +0 -87
  292. package/example/node/node_modules/raw-body/index.js +0 -286
  293. package/example/node/node_modules/raw-body/package.json +0 -48
  294. package/example/node/node_modules/safe-buffer/LICENSE +0 -21
  295. package/example/node/node_modules/safe-buffer/README.md +0 -584
  296. package/example/node/node_modules/safe-buffer/index.d.ts +0 -187
  297. package/example/node/node_modules/safe-buffer/index.js +0 -65
  298. package/example/node/node_modules/safe-buffer/package.json +0 -51
  299. package/example/node/node_modules/safer-buffer/LICENSE +0 -21
  300. package/example/node/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  301. package/example/node/node_modules/safer-buffer/Readme.md +0 -156
  302. package/example/node/node_modules/safer-buffer/dangerous.js +0 -58
  303. package/example/node/node_modules/safer-buffer/package.json +0 -34
  304. package/example/node/node_modules/safer-buffer/safer.js +0 -77
  305. package/example/node/node_modules/safer-buffer/tests.js +0 -406
  306. package/example/node/node_modules/send/HISTORY.md +0 -506
  307. package/example/node/node_modules/send/LICENSE +0 -23
  308. package/example/node/node_modules/send/README.md +0 -327
  309. package/example/node/node_modules/send/index.js +0 -1133
  310. package/example/node/node_modules/send/node_modules/.bin/mime +0 -15
  311. package/example/node/node_modules/send/node_modules/.bin/mime.cmd +0 -7
  312. package/example/node/node_modules/send/node_modules/ms/index.js +0 -162
  313. package/example/node/node_modules/send/node_modules/ms/license.md +0 -21
  314. package/example/node/node_modules/send/node_modules/ms/package.json +0 -38
  315. package/example/node/node_modules/send/node_modules/ms/readme.md +0 -59
  316. package/example/node/node_modules/send/package.json +0 -61
  317. package/example/node/node_modules/serve-static/HISTORY.md +0 -459
  318. package/example/node/node_modules/serve-static/LICENSE +0 -25
  319. package/example/node/node_modules/serve-static/README.md +0 -257
  320. package/example/node/node_modules/serve-static/index.js +0 -210
  321. package/example/node/node_modules/serve-static/package.json +0 -42
  322. package/example/node/node_modules/setprototypeof/LICENSE +0 -13
  323. package/example/node/node_modules/setprototypeof/README.md +0 -31
  324. package/example/node/node_modules/setprototypeof/index.d.ts +0 -2
  325. package/example/node/node_modules/setprototypeof/index.js +0 -17
  326. package/example/node/node_modules/setprototypeof/package.json +0 -38
  327. package/example/node/node_modules/setprototypeof/test/index.js +0 -24
  328. package/example/node/node_modules/statuses/HISTORY.md +0 -65
  329. package/example/node/node_modules/statuses/LICENSE +0 -23
  330. package/example/node/node_modules/statuses/README.md +0 -127
  331. package/example/node/node_modules/statuses/codes.json +0 -66
  332. package/example/node/node_modules/statuses/index.js +0 -113
  333. package/example/node/node_modules/statuses/package.json +0 -48
  334. package/example/node/node_modules/toidentifier/HISTORY.md +0 -9
  335. package/example/node/node_modules/toidentifier/LICENSE +0 -21
  336. package/example/node/node_modules/toidentifier/README.md +0 -61
  337. package/example/node/node_modules/toidentifier/index.js +0 -32
  338. package/example/node/node_modules/toidentifier/package.json +0 -38
  339. package/example/node/node_modules/type-is/HISTORY.md +0 -259
  340. package/example/node/node_modules/type-is/LICENSE +0 -23
  341. package/example/node/node_modules/type-is/README.md +0 -170
  342. package/example/node/node_modules/type-is/index.js +0 -266
  343. package/example/node/node_modules/type-is/package.json +0 -45
  344. package/example/node/node_modules/unpipe/HISTORY.md +0 -4
  345. package/example/node/node_modules/unpipe/LICENSE +0 -22
  346. package/example/node/node_modules/unpipe/README.md +0 -43
  347. package/example/node/node_modules/unpipe/index.js +0 -69
  348. package/example/node/node_modules/unpipe/package.json +0 -27
  349. package/example/node/node_modules/utils-merge/LICENSE +0 -20
  350. package/example/node/node_modules/utils-merge/README.md +0 -34
  351. package/example/node/node_modules/utils-merge/index.js +0 -23
  352. package/example/node/node_modules/utils-merge/package.json +0 -40
  353. package/example/node/node_modules/vary/HISTORY.md +0 -39
  354. package/example/node/node_modules/vary/LICENSE +0 -22
  355. package/example/node/node_modules/vary/README.md +0 -101
  356. package/example/node/node_modules/vary/index.js +0 -149
  357. package/example/node/node_modules/vary/package.json +0 -43
  358. package/test/lib/crawler.test.js +0 -94
@@ -1,62 +1,58 @@
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
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.Exclusions = void 0;
4
+ class Exclusions {
5
+ getAll() {
6
+ return [
7
+ 'Safari.[\\d\\.]*',
8
+ 'Firefox.[\\d\\.]*',
9
+ ' Chrome.[\\d\\.]*',
10
+ 'Chromium.[\\d\\.]*',
11
+ 'MSIE.[\\d\\.]',
12
+ 'Opera\\/[\\d\\.]*',
13
+ 'Mozilla.[\\d\\.]*',
14
+ 'AppleWebKit.[\\d\\.]*',
15
+ 'Trident.[\\d\\.]*',
16
+ 'Windows NT.[\\d\\.]*',
17
+ 'Android [\\d\\.]*',
18
+ 'Macintosh.',
19
+ 'Ubuntu',
20
+ 'Linux',
21
+ '[ ]Intel',
22
+ 'Mac OS X [\\d_]*',
23
+ '(like )?Gecko(.[\\d\\.]*)?',
24
+ 'KHTML,',
25
+ 'CriOS.[\\d\\.]*',
26
+ 'CPU iPhone OS ([0-9_])* like Mac OS X',
27
+ 'CPU OS ([0-9_])* like Mac OS X',
28
+ 'iPod',
29
+ 'compatible',
30
+ 'x86_..',
31
+ 'i686',
32
+ 'x64',
33
+ 'X11',
34
+ 'rv:[\\d\\.]*',
35
+ 'Version.[\\d\\.]*',
36
+ 'WOW64',
37
+ 'Win64',
38
+ 'Dalvik.[\\d\\.]*',
39
+ ' \\.NET CLR [\\d\\.]*',
40
+ 'Presto.[\\d\\.]*',
41
+ 'Media Center PC',
42
+ 'BlackBerry',
43
+ 'Build',
44
+ 'Opera Mini\\/\\d{1,2}\\.\\d{1,2}\\.[\\d\\.]*\\/\\d{1,2}\\.',
45
+ 'Opera',
46
+ ' \\.NET[\\d\\.]*',
47
+ 'cubot',
48
+ '; M bot',
49
+ '; CRONO',
50
+ '; B bot',
51
+ '; IDbot',
52
+ '; ID bot',
53
+ '; POWER BOT',
54
+ 'OCTOPUS-CORE',
55
+ ];
56
+ }
57
+ }
58
+ exports.Exclusions = Exclusions;
@@ -0,0 +1,56 @@
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,9 @@
1
1
  'use strict';
2
-
3
- const Provider = require('./provider');
4
-
5
- class Headers extends Provider {
6
- constructor() {
7
- super();
8
-
9
- this.data = [
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.Headers = void 0;
4
+ class Headers {
5
+ getAll() {
6
+ return [
10
7
  'USER-AGENT',
11
8
  'X-OPERAMINI-PHONE-UA',
12
9
  'X-DEVICE-USER-AGENT',
@@ -20,5 +17,4 @@ class Headers extends Provider {
20
17
  ];
21
18
  }
22
19
  }
23
-
24
- module.exports = Headers;
20
+ exports.Headers = Headers;
@@ -0,0 +1,18 @@
1
+ import { Provider } from './provider';
2
+
3
+ export class Headers implements Provider {
4
+ getAll(): string[] {
5
+ return [
6
+ 'USER-AGENT',
7
+ 'X-OPERAMINI-PHONE-UA',
8
+ 'X-DEVICE-USER-AGENT',
9
+ 'X-ORIGINAL-USER-AGENT',
10
+ 'X-SKYFIRE-PHONE',
11
+ 'X-BOLT-PHONE-UA',
12
+ 'DEVICE-STOCK-UA',
13
+ 'X-UCBROWSER-DEVICE-UA',
14
+ 'FROM',
15
+ 'X-SCANNER',
16
+ ];
17
+ }
18
+ }
@@ -1,11 +1,2 @@
1
1
  'use strict';
2
-
3
- class Provider {
4
- constructor() {}
5
-
6
- getAll() {
7
- return this.data;
8
- }
9
- }
10
-
11
- module.exports = Provider;
2
+ Object.defineProperty(exports, '__esModule', { value: true });
@@ -0,0 +1,3 @@
1
+ export interface Provider {
2
+ getAll(): string[];
3
+ }
@@ -1,130 +1,98 @@
1
- 'use strict';
2
-
3
- const Crawlers = require('./crawler/crawlers');
4
- const Exclusions = require('./crawler/exclusions');
5
- const Headers = require('./crawler/headers');
6
-
7
- class Crawler {
8
- constructor(request, headers, userAgent) {
9
- /**
10
- * Init classes
11
- */
12
- this._init();
13
-
14
- /**
15
- * This request must be an object
16
- */
17
- this.request = typeof request === 'object' ? request : {};
18
-
19
- // The regex-list must not be used with g-flag!
20
- // See: https://stackoverflow.com/questions/1520800/why-does-a-regexp-with-global-flag-give-wrong-results
21
- this.compiledRegexList = this.compileRegex(this.crawlers.getAll(), 'i');
22
-
23
- // The exclusions should be used with g-flag in order to remove each value.
24
- this.compiledExclusions = this.compileRegex(this.exclusions.getAll(), 'gi');
25
-
26
- /**
27
- * Set http headers
28
- */
29
- this.setHttpHeaders(headers);
30
-
31
- /**
32
- * Set userAgent
33
- */
34
- this.userAgent = this.setUserAgent(userAgent);
35
- }
36
-
37
- /**
38
- * Init Classes Instances
39
- */
40
- _init() {
41
- this.crawlers = new Crawlers();
42
- this.headers = new Headers();
43
- this.exclusions = new Exclusions();
44
- }
45
-
46
- compileRegex(patterns, flags) {
47
- return new RegExp(patterns.join('|'), flags);
48
- }
49
-
50
- /**
51
- * Set HTTP headers.
52
- */
53
- setHttpHeaders(headers) {
54
- // Use the Request headers if httpHeaders is not defined
55
- if (typeof headers === 'undefined' || Object.keys(headers).length === 0) {
56
- headers = Object.keys(this.request).length ? this.request.headers : {};
57
- }
58
-
59
- // Save the headers.
60
- this.httpHeaders = headers;
61
- }
62
-
63
- /**
64
- * Set user agent
65
- */
66
- setUserAgent(userAgent) {
67
- if (
68
- typeof userAgent === 'undefined' ||
69
- userAgent === null ||
70
- !userAgent.length
71
- ) {
72
- for (const header of this.getUaHttpHeaders()) {
73
- if (Object.keys(this.httpHeaders).indexOf(header.toLowerCase()) >= 0) {
74
- userAgent += this.httpHeaders[header.toLowerCase()] + ' ';
75
- }
76
- }
77
- }
78
-
79
- return userAgent;
80
- }
81
-
82
- /**
83
- * Get user agent headers
84
- */
85
- getUaHttpHeaders() {
86
- return this.headers.getAll();
87
- }
88
-
89
- /**
90
- * Check user agent string against the regex.
91
- */
92
- isCrawler(userAgent = undefined) {
93
- if (Buffer.byteLength(userAgent || '', 'utf8') > 4096) {
94
- return false;
95
- }
96
-
97
- var agent =
98
- typeof userAgent === 'undefined' || userAgent === null
99
- ? this.userAgent
100
- : userAgent;
101
-
102
- // test on compiled regx
103
- agent = agent.replace(this.compiledExclusions, '');
104
-
105
- if (agent.trim().length === 0) {
106
- return false;
107
- }
108
-
109
- var matches = this.compiledRegexList.exec(agent);
110
-
111
- if (matches) {
112
- this.matches = matches;
113
- }
114
-
115
- return matches !== null ? (matches.length ? true : false) : false;
116
- }
117
-
118
- /**
119
- * Return the matches.
120
- */
121
- getMatches() {
122
- return this.matches !== undefined
123
- ? this.matches.length
124
- ? this.matches[0]
125
- : null
126
- : {};
127
- }
128
- }
129
-
130
- module.exports = Crawler;
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.Crawler = void 0;
4
+ const crawlers_1 = require('./crawler/crawlers');
5
+ const exclusions_1 = require('./crawler/exclusions');
6
+ const headers_1 = require('./crawler/headers');
7
+ class Crawler {
8
+ crawlers;
9
+ headers;
10
+ exclusions;
11
+ request;
12
+ compiledRegexList;
13
+ compiledExclusions;
14
+ httpHeaders;
15
+ userAgent;
16
+ matches;
17
+ constructor(request, headers, userAgent) {
18
+ this.crawlers = new crawlers_1.Crawlers();
19
+ this.headers = new headers_1.Headers();
20
+ this.exclusions = new exclusions_1.Exclusions();
21
+ this.request = request ?? {};
22
+ // The regex-list must not be used with g-flag!
23
+ // See: https://stackoverflow.com/questions/1520800/why-does-a-regexp-with-global-flag-give-wrong-results
24
+ this.compiledRegexList = this.compileRegex(this.crawlers.getAll(), 'i');
25
+ // The exclusions should be used with g-flag in order to remove each value.
26
+ this.compiledExclusions = this.compileRegex(this.exclusions.getAll(), 'gi');
27
+ this.httpHeaders = this.setHttpHeaders(headers);
28
+ this.userAgent = this.setUserAgent(userAgent);
29
+ }
30
+ compileRegex(patterns, flags) {
31
+ return new RegExp(patterns.join('|'), flags);
32
+ }
33
+ setHttpHeaders(headers) {
34
+ // Use the Request headers if httpHeaders is not defined
35
+ if (!headers || Object.keys(headers).length === 0) {
36
+ if (Object.keys(this.request).length) {
37
+ if (this.request.headers) {
38
+ return this.request.headers;
39
+ }
40
+ }
41
+ return '';
42
+ }
43
+ // Save the headers.
44
+ return headers;
45
+ }
46
+ setUserAgent(userAgent) {
47
+ if (!userAgent?.length) {
48
+ userAgent = '';
49
+ for (const header of this.getUaHttpHeaders()) {
50
+ if (
51
+ typeof this.httpHeaders === 'object' &&
52
+ !Array.isArray(this.httpHeaders)
53
+ ) {
54
+ if (Object.hasOwn(this.httpHeaders, header.toLowerCase())) {
55
+ const headerValue = this.httpHeaders[header.toLowerCase()];
56
+ if (typeof headerValue === 'string') {
57
+ const separator = userAgent.length > 0 ? ' ' : '';
58
+ userAgent += separator + headerValue;
59
+ } else if (Array.isArray(headerValue)) {
60
+ const separator = userAgent.length > 0 ? ' ' : '';
61
+ userAgent += separator + headerValue.join(' ');
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ return userAgent;
68
+ }
69
+ getUaHttpHeaders() {
70
+ return this.headers.getAll();
71
+ }
72
+ getMatches() {
73
+ if (this.matches !== undefined) {
74
+ if (this.matches?.length) {
75
+ return this.matches[0];
76
+ }
77
+ return null;
78
+ }
79
+ return {};
80
+ }
81
+ isCrawler(userAgent) {
82
+ if (Buffer.byteLength(userAgent ?? '', 'utf8') > 4096) {
83
+ return false;
84
+ }
85
+ let agent = userAgent ?? this.userAgent;
86
+ // test on compiled regx
87
+ agent = agent.replace(this.compiledExclusions, '');
88
+ if (agent.trim().length === 0) {
89
+ return false;
90
+ }
91
+ const matches = this.compiledRegexList.exec(agent);
92
+ if (matches) {
93
+ this.matches = matches;
94
+ }
95
+ return matches !== null && matches.length > 0;
96
+ }
97
+ }
98
+ exports.Crawler = Crawler;
@@ -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.js ADDED
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
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
+ }