@adwait12345/telemetry-core 0.1.0 → 0.1.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.
package/dist/index.mjs CHANGED
@@ -5,27 +5,18 @@ var AI_BOTS = [
5
5
  category: "ai-crawler",
6
6
  pattern: /GPTBot/i,
7
7
  verifiable: true
8
- // https://openai.com/gptbot
9
8
  },
10
9
  {
11
10
  name: "ClaudeBot",
12
11
  category: "ai-crawler",
13
12
  pattern: /ClaudeBot|anthropic-ai/i,
14
13
  verifiable: true
15
- // Anthropic publishes IP ranges
16
14
  },
17
15
  {
18
16
  name: "Google-Extended",
19
17
  category: "ai-crawler",
20
18
  pattern: /Google-Extended/i,
21
19
  verifiable: true
22
- // Gemini/Bard training crawler
23
- },
24
- {
25
- name: "PerplexityBot",
26
- category: "ai-crawler",
27
- pattern: /PerplexityBot/i,
28
- verifiable: false
29
20
  },
30
21
  {
31
22
  name: "Amazonbot",
@@ -40,29 +31,27 @@ var AI_BOTS = [
40
31
  verifiable: false
41
32
  },
42
33
  {
43
- name: "Applebot",
34
+ name: "Meta-WebIndexer",
44
35
  category: "ai-crawler",
45
- pattern: /Applebot/i,
46
- verifiable: true
36
+ pattern: /meta-webindexer/i,
37
+ verifiable: false
47
38
  },
48
39
  {
49
- name: "YouBot",
40
+ name: "Applebot",
50
41
  category: "ai-crawler",
51
- pattern: /YouBot/i,
52
- verifiable: false
42
+ pattern: /Applebot/i,
43
+ verifiable: true
53
44
  },
54
45
  {
55
46
  name: "Bytespider",
56
47
  category: "ai-crawler",
57
48
  pattern: /Bytespider/i,
58
- // TikTok / ByteDance — used for AI training
59
49
  verifiable: false
60
50
  },
61
51
  {
62
52
  name: "CCBot",
63
53
  category: "ai-crawler",
64
54
  pattern: /CCBot/i,
65
- // Common Crawl — dataset used by many LLMs
66
55
  verifiable: false
67
56
  },
68
57
  {
@@ -71,12 +60,6 @@ var AI_BOTS = [
71
60
  pattern: /cohere-ai/i,
72
61
  verifiable: false
73
62
  },
74
- {
75
- name: "DuckAssistBot",
76
- category: "ai-crawler",
77
- pattern: /DuckAssistBot/i,
78
- verifiable: false
79
- },
80
63
  {
81
64
  name: "Diffbot",
82
65
  category: "ai-crawler",
@@ -100,6 +83,128 @@ var AI_BOTS = [
100
83
  category: "ai-crawler",
101
84
  pattern: /Timpibot/i,
102
85
  verifiable: false
86
+ },
87
+ {
88
+ name: "YouBot",
89
+ category: "ai-crawler",
90
+ pattern: /YouBot/i,
91
+ verifiable: false
92
+ },
93
+ {
94
+ name: "Browserbase",
95
+ category: "ai-crawler",
96
+ pattern: /browserbase/i,
97
+ verifiable: false
98
+ },
99
+ {
100
+ name: "Rovo",
101
+ category: "ai-crawler",
102
+ pattern: /\bRovo\b/i,
103
+ verifiable: false
104
+ },
105
+ {
106
+ name: "Shapbot",
107
+ category: "ai-crawler",
108
+ pattern: /Shapbot/i,
109
+ verifiable: false
110
+ },
111
+ {
112
+ name: "Kernel",
113
+ category: "ai-crawler",
114
+ pattern: /\bKernel\b.*crawler|kernel-crawler/i,
115
+ verifiable: false
116
+ },
117
+ {
118
+ name: "v0bot",
119
+ category: "ai-crawler",
120
+ pattern: /v0bot/i,
121
+ verifiable: false
122
+ }
123
+ ];
124
+ var AI_ASSISTANT_BOTS = [
125
+ {
126
+ name: "ChatGPT-User",
127
+ category: "ai-assistant",
128
+ pattern: /ChatGPT-User/i,
129
+ verifiable: true
130
+ },
131
+ {
132
+ name: "ChatGPT-Operator",
133
+ category: "ai-assistant",
134
+ pattern: /ChatGPT-Operator/i,
135
+ verifiable: true
136
+ },
137
+ {
138
+ name: "GPT-Actions",
139
+ category: "ai-assistant",
140
+ pattern: /gpt-actions/i,
141
+ verifiable: true
142
+ },
143
+ {
144
+ name: "OAI-SearchBot",
145
+ category: "ai-assistant",
146
+ pattern: /OAI-SearchBot/i,
147
+ verifiable: true
148
+ },
149
+ {
150
+ name: "Claude-User",
151
+ category: "ai-assistant",
152
+ pattern: /Claude-User/i,
153
+ verifiable: true
154
+ },
155
+ {
156
+ name: "Claude-SearchBot",
157
+ category: "ai-assistant",
158
+ pattern: /Claude-SearchBot/i,
159
+ verifiable: true
160
+ },
161
+ {
162
+ name: "PerplexityBot",
163
+ category: "ai-assistant",
164
+ pattern: /PerplexityBot/i,
165
+ verifiable: false
166
+ },
167
+ {
168
+ name: "Perplexity-User",
169
+ category: "ai-assistant",
170
+ pattern: /Perplexity-User/i,
171
+ verifiable: false
172
+ },
173
+ {
174
+ name: "DuckAssistBot",
175
+ category: "ai-assistant",
176
+ pattern: /DuckAssistBot/i,
177
+ verifiable: false
178
+ },
179
+ {
180
+ name: "Amazon-Kendra",
181
+ category: "ai-assistant",
182
+ pattern: /Amazon-Kendra/i,
183
+ verifiable: false
184
+ },
185
+ {
186
+ name: "Amazon-Q",
187
+ category: "ai-assistant",
188
+ pattern: /Amazon-Q/i,
189
+ verifiable: false
190
+ },
191
+ {
192
+ name: "Gemini-Deep-Research",
193
+ category: "ai-assistant",
194
+ pattern: /Gemini.*Deep.*Research|GeminiDeepResearch/i,
195
+ verifiable: true
196
+ },
197
+ {
198
+ name: "Google-CloudVertexBot",
199
+ category: "ai-assistant",
200
+ pattern: /Google-CloudVertexBot/i,
201
+ verifiable: true
202
+ },
203
+ {
204
+ name: "Google-Ads-Creatives",
205
+ category: "ai-assistant",
206
+ pattern: /Google-Ads-Creatives/i,
207
+ verifiable: true
103
208
  }
104
209
  ];
105
210
  var SEARCH_BOTS = [
@@ -108,20 +213,30 @@ var SEARCH_BOTS = [
108
213
  category: "search",
109
214
  pattern: /Googlebot/i,
110
215
  verifiable: true
111
- // Reverse DNS: *.googlebot.com / *.google.com
216
+ },
217
+ {
218
+ name: "GoogleOther",
219
+ category: "search",
220
+ pattern: /GoogleOther/i,
221
+ verifiable: true
222
+ },
223
+ {
224
+ name: "APIs-Google",
225
+ category: "search",
226
+ pattern: /APIs-Google/i,
227
+ verifiable: true
112
228
  },
113
229
  {
114
230
  name: "Bingbot",
115
231
  category: "search",
116
232
  pattern: /bingbot/i,
117
233
  verifiable: true
118
- // Reverse DNS: *.search.msn.com
119
234
  },
235
+ { name: "Slurp", category: "search", pattern: /Slurp/i, verifiable: false },
120
236
  {
121
- name: "Slurp",
237
+ name: "Yahoo-Slurp",
122
238
  category: "search",
123
- pattern: /Slurp/i,
124
- // Yahoo Search
239
+ pattern: /Yahoo.*Slurp/i,
125
240
  verifiable: false
126
241
  },
127
242
  {
@@ -142,52 +257,189 @@ var SEARCH_BOTS = [
142
257
  pattern: /YandexBot/i,
143
258
  verifiable: false
144
259
  },
260
+ { name: "Sogou", category: "search", pattern: /Sogou/i, verifiable: false },
261
+ { name: "Exabot", category: "search", pattern: /Exabot/i, verifiable: false },
262
+ {
263
+ name: "Algolia",
264
+ category: "search",
265
+ pattern: /Algolia.*Crawler|AlgoliaBot/i,
266
+ verifiable: false
267
+ },
268
+ {
269
+ name: "PetalBot",
270
+ category: "search",
271
+ pattern: /PetalBot/i,
272
+ verifiable: false
273
+ },
274
+ {
275
+ name: "SeekportBot",
276
+ category: "search",
277
+ pattern: /SeekportBot/i,
278
+ verifiable: false
279
+ },
280
+ {
281
+ name: "SeznamBot",
282
+ category: "search",
283
+ pattern: /SeznamBot/i,
284
+ verifiable: false
285
+ },
286
+ {
287
+ name: "QwantBot",
288
+ category: "search",
289
+ pattern: /Qwant(Bot)?/i,
290
+ verifiable: false
291
+ },
145
292
  {
146
- name: "Sogou",
293
+ name: "NaverBot",
147
294
  category: "search",
148
- pattern: /Sogou/i,
295
+ pattern: /Yeti\/|NaverBot/i,
149
296
  verifiable: false
150
297
  },
151
298
  {
152
- name: "Exabot",
299
+ name: "Adsnaver",
153
300
  category: "search",
154
- pattern: /Exabot/i,
301
+ pattern: /adsnaver/i,
302
+ verifiable: false
303
+ },
304
+ {
305
+ name: "PinterestBot",
306
+ category: "search",
307
+ pattern: /Pinterest/i,
308
+ verifiable: false
309
+ },
310
+ {
311
+ name: "Seobility",
312
+ category: "search",
313
+ pattern: /Seobility/i,
314
+ verifiable: false
315
+ },
316
+ {
317
+ name: "JobsWithGPT",
318
+ category: "search",
319
+ pattern: /JobsWithGPT/i,
155
320
  verifiable: false
156
321
  }
157
322
  ];
158
- var GENERIC_BOTS = [
159
- { name: "curl", category: "scraper", pattern: /^curl\//i, verifiable: false },
160
- { name: "wget", category: "scraper", pattern: /^Wget\//i, verifiable: false },
323
+ var SEO_BOTS = [
161
324
  {
162
- name: "python-requests",
163
- category: "scraper",
164
- pattern: /python-requests/i,
325
+ name: "AhrefsBot",
326
+ category: "seo",
327
+ pattern: /AhrefsBot/i,
165
328
  verifiable: false
166
329
  },
167
330
  {
168
- name: "Go-http-client",
169
- category: "scraper",
170
- pattern: /Go-http-client/i,
331
+ name: "AhrefsSiteAudit",
332
+ category: "seo",
333
+ pattern: /AhrefsSiteAudit/i,
171
334
  verifiable: false
172
335
  },
173
336
  {
174
- name: "axios",
175
- category: "scraper",
176
- pattern: /^axios\//i,
337
+ name: "SemrushBot",
338
+ category: "seo",
339
+ pattern: /SemrushBot|Semrush/i,
177
340
  verifiable: false
178
341
  },
179
342
  {
180
- name: "node-fetch",
181
- category: "scraper",
182
- pattern: /node-fetch/i,
343
+ name: "Semrush-SiteAudit",
344
+ category: "seo",
345
+ pattern: /semrush.*site.*audit/i,
183
346
  verifiable: false
184
347
  },
185
348
  {
186
- name: "Scrapy",
187
- category: "scraper",
188
- pattern: /Scrapy/i,
349
+ name: "DataForSeoBot",
350
+ category: "seo",
351
+ pattern: /DataForSeoBot/i,
352
+ verifiable: false
353
+ },
354
+ {
355
+ name: "Barkrowler",
356
+ category: "seo",
357
+ pattern: /Barkrowler/i,
358
+ verifiable: false
359
+ },
360
+ { name: "Lumar", category: "seo", pattern: /Lumar/i, verifiable: false },
361
+ {
362
+ name: "SE-Ranking",
363
+ category: "seo",
364
+ pattern: /seranking/i,
189
365
  verifiable: false
366
+ }
367
+ ];
368
+ var ADVERTISING_BOTS = [
369
+ {
370
+ name: "Google-AdsBot",
371
+ category: "advertising",
372
+ pattern: /AdsBot-Google/i,
373
+ verifiable: true
374
+ },
375
+ {
376
+ name: "Google-AdSense",
377
+ category: "advertising",
378
+ pattern: /Mediapartners-Google/i,
379
+ verifiable: true
190
380
  },
381
+ {
382
+ name: "Google-Display-Ads",
383
+ category: "advertising",
384
+ pattern: /Google-Display-Ads/i,
385
+ verifiable: true
386
+ },
387
+ {
388
+ name: "Google-AdWords",
389
+ category: "advertising",
390
+ pattern: /Google-Adwords-Instant/i,
391
+ verifiable: true
392
+ },
393
+ {
394
+ name: "AdIdxBot",
395
+ category: "advertising",
396
+ pattern: /adidxbot/i,
397
+ verifiable: true
398
+ },
399
+ {
400
+ name: "AdagioBot",
401
+ category: "advertising",
402
+ pattern: /Adagiobot/i,
403
+ verifiable: false
404
+ },
405
+ {
406
+ name: "Amazon-AdBot",
407
+ category: "advertising",
408
+ pattern: /Amazon-AdBot/i,
409
+ verifiable: false
410
+ },
411
+ {
412
+ name: "CriteoBot",
413
+ category: "advertising",
414
+ pattern: /CriteoBot/i,
415
+ verifiable: false
416
+ },
417
+ {
418
+ name: "Meta-ExternalAds",
419
+ category: "advertising",
420
+ pattern: /meta-externalads/i,
421
+ verifiable: false
422
+ },
423
+ {
424
+ name: "PulsePoint",
425
+ category: "advertising",
426
+ pattern: /PulsePoint/i,
427
+ verifiable: false
428
+ },
429
+ {
430
+ name: "QuantcastBot",
431
+ category: "advertising",
432
+ pattern: /QuantcastBot/i,
433
+ verifiable: false
434
+ },
435
+ {
436
+ name: "Yahoo-Ad-Monitoring",
437
+ category: "advertising",
438
+ pattern: /Yahoo.*Ad.*Monitor/i,
439
+ verifiable: false
440
+ }
441
+ ];
442
+ var MONITOR_BOTS = [
191
443
  {
192
444
  name: "UptimeRobot",
193
445
  category: "monitor",
@@ -211,11 +463,524 @@ var GENERIC_BOTS = [
211
463
  category: "monitor",
212
464
  pattern: /DatadogSynthetics/i,
213
465
  verifiable: false
466
+ },
467
+ {
468
+ name: "Better-Stack",
469
+ category: "monitor",
470
+ pattern: /Better-Stack|BetterStack/i,
471
+ verifiable: false
472
+ },
473
+ {
474
+ name: "Checkly",
475
+ category: "monitor",
476
+ pattern: /Checkly/i,
477
+ verifiable: false
478
+ },
479
+ {
480
+ name: "GTmetrix",
481
+ category: "monitor",
482
+ pattern: /GTmetrix/i,
483
+ verifiable: false
484
+ },
485
+ {
486
+ name: "HetrixTools",
487
+ category: "monitor",
488
+ pattern: /HetrixTools/i,
489
+ verifiable: false
490
+ },
491
+ {
492
+ name: "Hydrozen",
493
+ category: "monitor",
494
+ pattern: /Hydrozen/i,
495
+ verifiable: false
496
+ },
497
+ {
498
+ name: "LogicMonitor",
499
+ category: "monitor",
500
+ pattern: /LogicMonitor/i,
501
+ verifiable: false
502
+ },
503
+ {
504
+ name: "NewRelic-Minions",
505
+ category: "monitor",
506
+ pattern: /NewRelic.*Minion|Minion.*NewRelic/i,
507
+ verifiable: false
508
+ },
509
+ {
510
+ name: "OhDearBot",
511
+ category: "monitor",
512
+ pattern: /OhDearBot/i,
513
+ verifiable: false
514
+ },
515
+ {
516
+ name: "Route53-HealthCheck",
517
+ category: "monitor",
518
+ pattern: /Amazon-Route53-Health/i,
519
+ verifiable: true
520
+ },
521
+ {
522
+ name: "Sansec",
523
+ category: "monitor",
524
+ pattern: /Sansec/i,
525
+ verifiable: false
526
+ },
527
+ {
528
+ name: "Sentry-Uptime",
529
+ category: "monitor",
530
+ pattern: /Sentry.*[Uu]ptime/i,
531
+ verifiable: false
532
+ },
533
+ {
534
+ name: "Site24x7",
535
+ category: "monitor",
536
+ pattern: /Site24x7/i,
537
+ verifiable: false
538
+ },
539
+ {
540
+ name: "Google-Safety",
541
+ category: "monitor",
542
+ pattern: /Google-Safety/i,
543
+ verifiable: true
544
+ },
545
+ {
546
+ name: "Google-InspectionTool",
547
+ category: "monitor",
548
+ pattern: /Google-InspectionTool/i,
549
+ verifiable: true
550
+ },
551
+ {
552
+ name: "Brightbot",
553
+ category: "monitor",
554
+ pattern: /Brightbot/i,
555
+ verifiable: false
556
+ },
557
+ {
558
+ name: "Cookiebot",
559
+ category: "monitor",
560
+ pattern: /Cookiebot/i,
561
+ verifiable: false
562
+ },
563
+ {
564
+ name: "Dash0-Synthetic",
565
+ category: "monitor",
566
+ pattern: /Dash0/i,
567
+ verifiable: false
568
+ },
569
+ {
570
+ name: "Detectify",
571
+ category: "monitor",
572
+ pattern: /Detectify/i,
573
+ verifiable: false
574
+ },
575
+ {
576
+ name: "Marfeel-Audits",
577
+ category: "monitor",
578
+ pattern: /marfeel.*audit/i,
579
+ verifiable: false
580
+ },
581
+ {
582
+ name: "QATech",
583
+ category: "monitor",
584
+ pattern: /QATech|qatech/i,
585
+ verifiable: false
586
+ },
587
+ {
588
+ name: "Redirect-Pizza",
589
+ category: "monitor",
590
+ pattern: /redirect\.pizza/i,
591
+ verifiable: false
592
+ },
593
+ {
594
+ name: "Stably",
595
+ category: "monitor",
596
+ pattern: /Stably/i,
597
+ verifiable: false
598
+ },
599
+ {
600
+ name: "Termlybot",
601
+ category: "monitor",
602
+ pattern: /Termlybot/i,
603
+ verifiable: false
604
+ },
605
+ {
606
+ name: "Updown-io",
607
+ category: "monitor",
608
+ pattern: /updown\.io|updown-io/i,
609
+ verifiable: false
610
+ },
611
+ {
612
+ name: "VercelFlags",
613
+ category: "monitor",
614
+ pattern: /vercelflags/i,
615
+ verifiable: false
616
+ },
617
+ {
618
+ name: "VercelTracing",
619
+ category: "monitor",
620
+ pattern: /verceltracing/i,
621
+ verifiable: false
622
+ }
623
+ ];
624
+ var PREVIEW_BOTS = [
625
+ {
626
+ name: "facebookexternalhit",
627
+ category: "preview",
628
+ pattern: /facebookexternalhit/i,
629
+ verifiable: true
630
+ },
631
+ {
632
+ name: "Twitterbot",
633
+ category: "preview",
634
+ pattern: /Twitterbot/i,
635
+ verifiable: false
636
+ },
637
+ {
638
+ name: "LinkedInBot",
639
+ category: "preview",
640
+ pattern: /LinkedInBot/i,
641
+ verifiable: false
642
+ },
643
+ {
644
+ name: "iframely",
645
+ category: "preview",
646
+ pattern: /iframely/i,
647
+ verifiable: false
648
+ },
649
+ {
650
+ name: "Buffer-Preview",
651
+ category: "preview",
652
+ pattern: /Buffer.*[Bb]ot|BufferBot/i,
653
+ verifiable: false
654
+ },
655
+ {
656
+ name: "GitHub-Camo",
657
+ category: "preview",
658
+ pattern: /github-camo/i,
659
+ verifiable: true
660
+ },
661
+ {
662
+ name: "Google-Docs-Preview",
663
+ category: "preview",
664
+ pattern: /Google-Docs/i,
665
+ verifiable: true
666
+ },
667
+ {
668
+ name: "Google-Image-Proxy",
669
+ category: "preview",
670
+ pattern: /Google-Image-Proxy/i,
671
+ verifiable: true
672
+ },
673
+ {
674
+ name: "Google-PageRenderer",
675
+ category: "preview",
676
+ pattern: /Google-PageRenderer/i,
677
+ verifiable: true
678
+ },
679
+ {
680
+ name: "MicrosoftPreview",
681
+ category: "preview",
682
+ pattern: /MicrosoftPreview/i,
683
+ verifiable: true
684
+ },
685
+ {
686
+ name: "Naver-BlueNo",
687
+ category: "preview",
688
+ pattern: /naver-blueno/i,
689
+ verifiable: false
690
+ },
691
+ {
692
+ name: "Chrome-Prefetch-Proxy",
693
+ category: "preview",
694
+ pattern: /Chrome.*Prefetch.*Proxy/i,
695
+ verifiable: true
696
+ },
697
+ {
698
+ name: "Marfeel-Preview",
699
+ category: "preview",
700
+ pattern: /marfeel.*preview/i,
701
+ verifiable: false
702
+ },
703
+ {
704
+ name: "Marfeel-Flowcards",
705
+ category: "preview",
706
+ pattern: /marfeel.*flowcard/i,
707
+ verifiable: false
708
+ },
709
+ {
710
+ name: "Vemetric-Favicon",
711
+ category: "preview",
712
+ pattern: /Vemetric.*[Ff]avicon/i,
713
+ verifiable: false
714
+ },
715
+ {
716
+ name: "Vercel-Favicon",
717
+ category: "preview",
718
+ pattern: /vercel.*favicon/i,
719
+ verifiable: false
720
+ },
721
+ {
722
+ name: "Vercel-Screenshot",
723
+ category: "preview",
724
+ pattern: /vercel.*screenshot/i,
725
+ verifiable: false
726
+ },
727
+ {
728
+ name: "Vercel-Build-Container",
729
+ category: "preview",
730
+ pattern: /vercel.*build.*container/i,
731
+ verifiable: false
732
+ }
733
+ ];
734
+ var WEBHOOK_BOTS = [
735
+ {
736
+ name: "Stripe-Webhook",
737
+ category: "webhook",
738
+ pattern: /Stripe/i,
739
+ verifiable: true
740
+ },
741
+ {
742
+ name: "GitHub-Hookshot",
743
+ category: "webhook",
744
+ pattern: /GitHub-Hookshot/i,
745
+ verifiable: true
746
+ },
747
+ {
748
+ name: "PayPal-Webhook",
749
+ category: "webhook",
750
+ pattern: /PayPal/i,
751
+ verifiable: true
752
+ },
753
+ {
754
+ name: "Adyen-Webhook",
755
+ category: "webhook",
756
+ pattern: /Adyen/i,
757
+ verifiable: true
758
+ },
759
+ {
760
+ name: "Atlassian-Webhook",
761
+ category: "webhook",
762
+ pattern: /Atlassian.*Jira/i,
763
+ verifiable: true
764
+ },
765
+ {
766
+ name: "CustomerIO-Webhook",
767
+ category: "webhook",
768
+ pattern: /Customer\.io/i,
769
+ verifiable: false
770
+ },
771
+ {
772
+ name: "Facebook-Webhook",
773
+ category: "webhook",
774
+ pattern: /Facebook.*Webhook/i,
775
+ verifiable: true
776
+ },
777
+ {
778
+ name: "fal-Webhook",
779
+ category: "webhook",
780
+ pattern: /\bfal\.ai\b/i,
781
+ verifiable: false
782
+ },
783
+ {
784
+ name: "Google-AdMob",
785
+ category: "webhook",
786
+ pattern: /Google-AdMob/i,
787
+ verifiable: true
788
+ },
789
+ {
790
+ name: "Hookdeck",
791
+ category: "webhook",
792
+ pattern: /Hookdeck/i,
793
+ verifiable: false
794
+ },
795
+ {
796
+ name: "Inngest",
797
+ category: "webhook",
798
+ pattern: /Inngest/i,
799
+ verifiable: false
800
+ },
801
+ {
802
+ name: "Polar-Webhook",
803
+ category: "webhook",
804
+ pattern: /Polar.*Webhook/i,
805
+ verifiable: false
806
+ },
807
+ {
808
+ name: "QStash",
809
+ category: "webhook",
810
+ pattern: /QStash/i,
811
+ verifiable: false
812
+ },
813
+ {
814
+ name: "Razorpay-Webhook",
815
+ category: "webhook",
816
+ pattern: /Razorpay/i,
817
+ verifiable: false
818
+ },
819
+ {
820
+ name: "Sanity-Webhook",
821
+ category: "webhook",
822
+ pattern: /Sanity.*Webhook/i,
823
+ verifiable: false
824
+ },
825
+ { name: "Svix", category: "webhook", pattern: /Svix/i, verifiable: false }
826
+ ];
827
+ var FEED_BOTS = [
828
+ {
829
+ name: "Google-FeedFetcher",
830
+ category: "feed",
831
+ pattern: /FeedFetcher-Google/i,
832
+ verifiable: true
833
+ },
834
+ {
835
+ name: "Google-PublisherCenter",
836
+ category: "feed",
837
+ pattern: /Google-Publisher-Center/i,
838
+ verifiable: true
839
+ },
840
+ {
841
+ name: "Apple-Podcasts",
842
+ category: "feed",
843
+ pattern: /ApplePodcasts|Apple.*Podcasts/i,
844
+ verifiable: true
845
+ },
846
+ {
847
+ name: "Artemis",
848
+ category: "feed",
849
+ pattern: /Artemis.*[Cc]rawler/i,
850
+ verifiable: false
851
+ }
852
+ ];
853
+ var ECOMMERCE_BOTS = [
854
+ {
855
+ name: "Google-Storebot",
856
+ category: "ecommerce",
857
+ pattern: /Storebot-Google/i,
858
+ verifiable: true
859
+ },
860
+ {
861
+ name: "Channel3Bot",
862
+ category: "ecommerce",
863
+ pattern: /Channel3Bot/i,
864
+ verifiable: false
865
+ },
866
+ {
867
+ name: "GeedoProductSearch",
868
+ category: "ecommerce",
869
+ pattern: /GeedoProductSearch/i,
870
+ verifiable: false
871
+ },
872
+ {
873
+ name: "Ryebot",
874
+ category: "ecommerce",
875
+ pattern: /Ryebot/i,
876
+ verifiable: false
877
+ }
878
+ ];
879
+ var VERIFICATION_BOTS = [
880
+ {
881
+ name: "Google-SiteVerifier",
882
+ category: "verification",
883
+ pattern: /Google-Site-Verification/i,
884
+ verifiable: true
885
+ },
886
+ {
887
+ name: "Google-AssociationService",
888
+ category: "verification",
889
+ pattern: /Google-Association-Service/i,
890
+ verifiable: true
891
+ },
892
+ {
893
+ name: "Google-BusinessLink",
894
+ category: "verification",
895
+ pattern: /Google-BusinessLink/i,
896
+ verifiable: true
897
+ },
898
+ {
899
+ name: "Cybaa-Agent",
900
+ category: "verification",
901
+ pattern: /Cybaa/i,
902
+ verifiable: false
903
+ }
904
+ ];
905
+ var ANALYTICS_BOTS = [
906
+ {
907
+ name: "Chrome-Lighthouse",
908
+ category: "analytics",
909
+ pattern: /Chrome-Lighthouse/i,
910
+ verifiable: true
911
+ },
912
+ {
913
+ name: "Stripebot",
914
+ category: "analytics",
915
+ pattern: /Stripebot/i,
916
+ verifiable: true
917
+ }
918
+ ];
919
+ var SOCIAL_BOTS = [
920
+ {
921
+ name: "Marfeel-Social",
922
+ category: "social",
923
+ pattern: /marfeel.*social/i,
924
+ verifiable: false
925
+ }
926
+ ];
927
+ var ACCESSIBILITY_BOTS = [
928
+ {
929
+ name: "Google-Read-Aloud",
930
+ category: "accessibility",
931
+ pattern: /Google-Read-Aloud/i,
932
+ verifiable: true
933
+ }
934
+ ];
935
+ var GENERIC_BOTS = [
936
+ { name: "curl", category: "scraper", pattern: /^curl\//i, verifiable: false },
937
+ { name: "wget", category: "scraper", pattern: /^Wget\//i, verifiable: false },
938
+ {
939
+ name: "python-requests",
940
+ category: "scraper",
941
+ pattern: /python-requests/i,
942
+ verifiable: false
943
+ },
944
+ {
945
+ name: "Go-http-client",
946
+ category: "scraper",
947
+ pattern: /Go-http-client/i,
948
+ verifiable: false
949
+ },
950
+ {
951
+ name: "axios",
952
+ category: "scraper",
953
+ pattern: /^axios\//i,
954
+ verifiable: false
955
+ },
956
+ {
957
+ name: "node-fetch",
958
+ category: "scraper",
959
+ pattern: /node-fetch/i,
960
+ verifiable: false
961
+ },
962
+ {
963
+ name: "Scrapy",
964
+ category: "scraper",
965
+ pattern: /Scrapy/i,
966
+ verifiable: false
214
967
  }
215
968
  ];
216
969
  var ALL_BOTS = [
217
970
  ...AI_BOTS,
971
+ ...AI_ASSISTANT_BOTS,
218
972
  ...SEARCH_BOTS,
973
+ ...SEO_BOTS,
974
+ ...ADVERTISING_BOTS,
975
+ ...MONITOR_BOTS,
976
+ ...PREVIEW_BOTS,
977
+ ...WEBHOOK_BOTS,
978
+ ...FEED_BOTS,
979
+ ...ECOMMERCE_BOTS,
980
+ ...VERIFICATION_BOTS,
981
+ ...ANALYTICS_BOTS,
982
+ ...SOCIAL_BOTS,
983
+ ...ACCESSIBILITY_BOTS,
219
984
  ...GENERIC_BOTS
220
985
  ];
221
986
 
@@ -305,22 +1070,26 @@ function extractAutomationHeaders(headers) {
305
1070
  // src/index.ts
306
1071
  async function sendToTelemetry(payload, config) {
307
1072
  if (!config.apiUrl) {
308
- config.apiUrl = "http://localhost:3001";
1073
+ if (config.debug) {
1074
+ console.warn("[Telemetry] No apiUrl configured \u2014 skipping telemetry send.");
1075
+ }
1076
+ return;
309
1077
  }
310
- const apiUrl = config.apiUrl || "https://telemetry.yourdomain.com";
311
- const endpoint = `${apiUrl}/v1/track/server-pageview`;
1078
+ const endpoint = `${config.apiUrl}/v1/track/server-pageview`;
312
1079
  if (config.debug) {
313
1080
  console.log(`[Telemetry] Sending payload to ${endpoint}`, payload);
314
1081
  }
1082
+ const controller = new AbortController();
1083
+ const timeout = setTimeout(() => controller.abort(), 3e3);
315
1084
  try {
316
1085
  const response = await fetch(endpoint, {
317
1086
  method: "POST",
318
1087
  headers: {
319
1088
  "Content-Type": "application/json",
320
- // The middleware passes a server secret instead of origin check
321
1089
  "Authorization": `Bearer ${config.serverSecret}`
322
1090
  },
323
- body: JSON.stringify(payload)
1091
+ body: JSON.stringify(payload),
1092
+ signal: controller.signal
324
1093
  });
325
1094
  if (!response.ok && config.debug) {
326
1095
  console.error(`[Telemetry] Failed to send payload: ${response.status} ${response.statusText}`);
@@ -329,15 +1098,33 @@ async function sendToTelemetry(payload, config) {
329
1098
  }
330
1099
  } catch (error) {
331
1100
  if (config.debug) {
332
- console.error("[Telemetry] Error sending payload:", error);
1101
+ if (error?.name === "AbortError") {
1102
+ console.error("[Telemetry] Request timed out after 3s \u2014 skipping.");
1103
+ } else {
1104
+ console.error("[Telemetry] Error sending payload:", error);
1105
+ }
333
1106
  }
1107
+ } finally {
1108
+ clearTimeout(timeout);
334
1109
  }
335
1110
  }
336
1111
  export {
1112
+ ACCESSIBILITY_BOTS,
1113
+ ADVERTISING_BOTS,
1114
+ AI_ASSISTANT_BOTS,
337
1115
  AI_BOTS,
338
1116
  ALL_BOTS,
1117
+ ANALYTICS_BOTS,
1118
+ ECOMMERCE_BOTS,
1119
+ FEED_BOTS,
339
1120
  GENERIC_BOTS,
1121
+ MONITOR_BOTS,
1122
+ PREVIEW_BOTS,
340
1123
  SEARCH_BOTS,
1124
+ SEO_BOTS,
1125
+ SOCIAL_BOTS,
1126
+ VERIFICATION_BOTS,
1127
+ WEBHOOK_BOTS,
341
1128
  detectBot,
342
1129
  extractAutomationHeaders,
343
1130
  sendToTelemetry