@jmp-technologies/analytics 0.1.38 → 0.1.40
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/README.md +6 -2
- package/ai-crawler-agents.json +63 -0
- package/dist/astro/client.cjs +257 -6
- package/dist/astro/client.cjs.map +1 -1
- package/dist/astro/client.d.cts +2 -2
- package/dist/astro/client.d.ts +2 -2
- package/dist/astro/client.js +1 -1
- package/dist/astro/content.cjs +264 -7
- package/dist/astro/content.cjs.map +1 -1
- package/dist/astro/content.d.cts +3 -3
- package/dist/astro/content.d.ts +3 -3
- package/dist/astro/content.js +2 -2
- package/dist/astro/integration.cjs +257 -6
- package/dist/astro/integration.cjs.map +1 -1
- package/dist/astro/integration.js +2 -2
- package/dist/astro/middleware.d.cts +2 -2
- package/dist/astro/middleware.d.ts +2 -2
- package/dist/astro/register.cjs +257 -6
- package/dist/astro/register.cjs.map +1 -1
- package/dist/astro/register.js +2 -2
- package/dist/{chunk-WHUHCTBQ.js → chunk-34LFIP3R.js} +2 -2
- package/dist/{chunk-NCF3J4HV.js → chunk-BRLCGVFJ.js} +2 -2
- package/dist/{chunk-PQOTEV6O.js → chunk-IY6Y636W.js} +2 -2
- package/dist/{chunk-EBU4DKHW.js → chunk-JC3G4XNR.js} +333 -8
- package/dist/chunk-JC3G4XNR.js.map +1 -0
- package/dist/{chunk-JVFN7MF2.js → chunk-VSZRQSUN.js} +2 -2
- package/dist/constants-DTZMYgi4.d.cts +12 -0
- package/dist/constants-DTZMYgi4.d.ts +12 -0
- package/dist/{create-jmp-analytics-DMSXmVIH.d.cts → create-jmp-analytics-B7VqQJca.d.cts} +1 -1
- package/dist/{create-jmp-analytics-JZ3pqNBQ.d.ts → create-jmp-analytics-BGt16QGY.d.ts} +1 -1
- package/dist/index.cjs +340 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +31 -13
- package/dist/index.d.ts +31 -13
- package/dist/index.js +17 -1
- package/dist/next/content.cjs +268 -7
- package/dist/next/content.cjs.map +1 -1
- package/dist/next/content.d.cts +3 -2
- package/dist/next/content.d.ts +3 -2
- package/dist/next/content.js +7 -2
- package/dist/next/content.js.map +1 -1
- package/dist/next/instrumentation.cjs +257 -6
- package/dist/next/instrumentation.cjs.map +1 -1
- package/dist/next/instrumentation.js +1 -1
- package/dist/next/landing-pages.cjs +264 -7
- package/dist/next/landing-pages.cjs.map +1 -1
- package/dist/next/landing-pages.d.cts +2 -2
- package/dist/next/landing-pages.d.ts +2 -2
- package/dist/next/landing-pages.js +2 -2
- package/dist/next/locations.cjs +265 -8
- package/dist/next/locations.cjs.map +1 -1
- package/dist/next/locations.d.cts +3 -3
- package/dist/next/locations.d.ts +3 -3
- package/dist/next/locations.js +3 -3
- package/dist/next/locations.js.map +1 -1
- package/dist/next/middleware.cjs.map +1 -1
- package/dist/next/middleware.d.cts +2 -2
- package/dist/next/middleware.d.ts +2 -2
- package/dist/next/middleware.js.map +1 -1
- package/dist/next/site-root-server.cjs +264 -7
- package/dist/next/site-root-server.cjs.map +1 -1
- package/dist/next/site-root-server.d.cts +1 -1
- package/dist/next/site-root-server.d.ts +1 -1
- package/dist/next/site-root-server.js +3 -3
- package/dist/next/site-root-server.js.map +1 -1
- package/dist/next.cjs +257 -6
- package/dist/next.cjs.map +1 -1
- package/dist/next.d.cts +3 -3
- package/dist/next.d.ts +3 -3
- package/dist/next.js +3 -3
- package/dist/react.cjs +257 -6
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +2 -2
- package/dist/{site-config-BZJS8Hp_.d.cts → site-config-CZl4PIbg.d.cts} +1 -1
- package/dist/{site-config-BLnwuRC2.d.ts → site-config-Cq5K8hUp.d.ts} +1 -1
- package/dist/{track-page-view-DGKRUIxm.d.ts → track-page-view-BSlE0yI9.d.ts} +1 -1
- package/dist/{track-page-view-BJQqn2Bg.d.cts → track-page-view-M9y_5WqT.d.cts} +1 -1
- package/dist/{types-CYrgEwUF.d.ts → types-DH_8sBu9.d.cts} +35 -0
- package/dist/{types-CYrgEwUF.d.cts → types-DH_8sBu9.d.ts} +35 -0
- package/dist/{utils-B1Nt3sBU.d.ts → utils-C2JRomti.d.ts} +1 -1
- package/dist/{utils-U6TGMIAB.d.cts → utils-JfjoqC-z.d.cts} +1 -1
- package/package.json +2 -1
- package/dist/chunk-EBU4DKHW.js.map +0 -1
- /package/dist/{chunk-WHUHCTBQ.js.map → chunk-34LFIP3R.js.map} +0 -0
- /package/dist/{chunk-NCF3J4HV.js.map → chunk-BRLCGVFJ.js.map} +0 -0
- /package/dist/{chunk-PQOTEV6O.js.map → chunk-IY6Y636W.js.map} +0 -0
- /package/dist/{chunk-JVFN7MF2.js.map → chunk-VSZRQSUN.js.map} +0 -0
|
@@ -55,10 +55,12 @@ var import_navigation = require("next/navigation");
|
|
|
55
55
|
var LANDING_REFERER_COOKIE_MAX_AGE_SEC = 30 * 60;
|
|
56
56
|
|
|
57
57
|
// package.json
|
|
58
|
-
var version = "0.1.
|
|
58
|
+
var version = "0.1.40";
|
|
59
59
|
|
|
60
60
|
// src/constants.ts
|
|
61
61
|
var JMP_ANALYTICS_SDK_VERSION = version;
|
|
62
|
+
var JMP_CONTENT_CACHE_TAG = "jmp-content";
|
|
63
|
+
var JMP_CONTENT_REVALIDATE_SECONDS = 3600;
|
|
62
64
|
|
|
63
65
|
// src/http.ts
|
|
64
66
|
function responseLooksLikeHtml(body) {
|
|
@@ -307,7 +309,8 @@ function normalizeJmpContentManifest(input) {
|
|
|
307
309
|
const externalSources = normalizeExternalSources(input.externalSources);
|
|
308
310
|
const trust = normalizeTrust(input.trust);
|
|
309
311
|
const contact = normalizeContact(input.contact);
|
|
310
|
-
|
|
312
|
+
const defaults = normalizeManifestDefaults(input.defaults);
|
|
313
|
+
if (routes.length === 0 && !externalSources && !trust && !contact && !defaults) {
|
|
311
314
|
return null;
|
|
312
315
|
}
|
|
313
316
|
return {
|
|
@@ -315,7 +318,8 @@ function normalizeJmpContentManifest(input) {
|
|
|
315
318
|
...routes.length > 0 ? { routes } : {},
|
|
316
319
|
...externalSources ? { externalSources } : {},
|
|
317
320
|
...trust ? { trust } : {},
|
|
318
|
-
...contact ? { contact } : {}
|
|
321
|
+
...contact ? { contact } : {},
|
|
322
|
+
...defaults ? { defaults } : {}
|
|
319
323
|
};
|
|
320
324
|
}
|
|
321
325
|
function normalizeRoutes(routes) {
|
|
@@ -379,10 +383,132 @@ function normalizeTrustLabels(labels) {
|
|
|
379
383
|
}
|
|
380
384
|
return Object.keys(out).length > 0 ? out : null;
|
|
381
385
|
}
|
|
386
|
+
function readDefaultText(value, max = 500) {
|
|
387
|
+
if (typeof value !== "string") return void 0;
|
|
388
|
+
const trimmed = value.trim();
|
|
389
|
+
if (!trimmed) return void 0;
|
|
390
|
+
return trimmed.slice(0, max);
|
|
391
|
+
}
|
|
392
|
+
function normalizeManifestDefaults(defaults) {
|
|
393
|
+
if (!defaults || typeof defaults !== "object") return null;
|
|
394
|
+
const contactRaw = defaults.contact;
|
|
395
|
+
const contact = {};
|
|
396
|
+
if (contactRaw && typeof contactRaw === "object") {
|
|
397
|
+
const displayName = readDefaultText(contactRaw.displayName, 120);
|
|
398
|
+
const email = readDefaultText(contactRaw.email, 200);
|
|
399
|
+
const phone = readDefaultText(contactRaw.phone, 40);
|
|
400
|
+
const address = readDefaultText(contactRaw.address, 400);
|
|
401
|
+
const hours = readDefaultText(contactRaw.hours, 400);
|
|
402
|
+
const serviceArea = readDefaultText(contactRaw.serviceArea, 200);
|
|
403
|
+
const googleMapsUrl = readDefaultText(contactRaw.googleMapsUrl, 2048);
|
|
404
|
+
const linkedinUrl = readDefaultText(contactRaw.linkedinUrl, 2048);
|
|
405
|
+
const instagramUrl = readDefaultText(contactRaw.instagramUrl, 2048);
|
|
406
|
+
const facebookUrl = readDefaultText(contactRaw.facebookUrl, 2048);
|
|
407
|
+
const xUrl = readDefaultText(contactRaw.xUrl, 2048);
|
|
408
|
+
const youtubeUrl = readDefaultText(contactRaw.youtubeUrl, 2048);
|
|
409
|
+
if (displayName) contact.displayName = displayName;
|
|
410
|
+
if (email) contact.email = email;
|
|
411
|
+
if (phone) contact.phone = phone;
|
|
412
|
+
if (address) contact.address = address;
|
|
413
|
+
if (hours) contact.hours = hours;
|
|
414
|
+
if (serviceArea) contact.serviceArea = serviceArea;
|
|
415
|
+
if (googleMapsUrl) contact.googleMapsUrl = googleMapsUrl;
|
|
416
|
+
if (linkedinUrl) contact.linkedinUrl = linkedinUrl;
|
|
417
|
+
if (instagramUrl) contact.instagramUrl = instagramUrl;
|
|
418
|
+
if (facebookUrl) contact.facebookUrl = facebookUrl;
|
|
419
|
+
if (xUrl) contact.xUrl = xUrl;
|
|
420
|
+
if (youtubeUrl) contact.youtubeUrl = youtubeUrl;
|
|
421
|
+
if (contactRaw.extras && typeof contactRaw.extras === "object") {
|
|
422
|
+
const extras = {};
|
|
423
|
+
for (const [rawKey, rawValue] of Object.entries(contactRaw.extras)) {
|
|
424
|
+
if (Object.keys(extras).length >= 10) break;
|
|
425
|
+
const key = normalizeKey(rawKey);
|
|
426
|
+
const value = readDefaultText(rawValue, 200);
|
|
427
|
+
if (key && isValidExtraKey(key) && value) extras[key] = value;
|
|
428
|
+
}
|
|
429
|
+
if (Object.keys(extras).length > 0) contact.extras = extras;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
const faq = [];
|
|
433
|
+
if (Array.isArray(defaults.faq)) {
|
|
434
|
+
for (const raw of defaults.faq) {
|
|
435
|
+
if (!raw || typeof raw !== "object" || faq.length >= 40) continue;
|
|
436
|
+
const question = readDefaultText(raw.question, 300);
|
|
437
|
+
const answer = readDefaultText(raw.answer, 8e3);
|
|
438
|
+
if (!question || !answer) continue;
|
|
439
|
+
const category = readDefaultText(raw.category, 80);
|
|
440
|
+
faq.push({ question, answer, ...category ? { category } : {} });
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
const trustRaw = defaults.trust;
|
|
444
|
+
const trust = {};
|
|
445
|
+
if (trustRaw && typeof trustRaw === "object") {
|
|
446
|
+
const assign = (key, max) => {
|
|
447
|
+
const value = readDefaultText(trustRaw[key], max);
|
|
448
|
+
if (value) trust[key] = value;
|
|
449
|
+
};
|
|
450
|
+
assign("googleReviewsUrl", 2048);
|
|
451
|
+
assign("googlePlaceId", 128);
|
|
452
|
+
assign("yelpUrl", 2048);
|
|
453
|
+
assign("trustpilotUrl", 2048);
|
|
454
|
+
assign("disclaimer", 1e3);
|
|
455
|
+
}
|
|
456
|
+
const hasContact = Object.keys(contact).length > 0;
|
|
457
|
+
const hasTrust = Object.keys(trust).length > 0;
|
|
458
|
+
if (!hasContact && faq.length === 0 && !hasTrust) return null;
|
|
459
|
+
return {
|
|
460
|
+
...hasContact ? { contact } : {},
|
|
461
|
+
...faq.length > 0 ? { faq } : {},
|
|
462
|
+
...hasTrust ? { trust } : {}
|
|
463
|
+
};
|
|
464
|
+
}
|
|
382
465
|
function normalizeContact(contact) {
|
|
383
466
|
if (!contact || typeof contact !== "object") return null;
|
|
384
467
|
const extras = normalizeContactExtras(contact.extras);
|
|
385
|
-
|
|
468
|
+
const leadInbox = normalizeLeadInbox(contact.leadInbox);
|
|
469
|
+
if (extras.length === 0 && !leadInbox) return null;
|
|
470
|
+
return {
|
|
471
|
+
...extras.length > 0 ? { extras } : {},
|
|
472
|
+
...leadInbox ? { leadInbox } : {}
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
function normalizeLeadInbox(raw) {
|
|
476
|
+
if (!raw || typeof raw !== "object") return null;
|
|
477
|
+
const list = normalizeInboxKeyList(raw.list, 8);
|
|
478
|
+
const detail = normalizeInboxKeyList(raw.detail, 24);
|
|
479
|
+
const labels = normalizeInboxLabels(raw.labels);
|
|
480
|
+
if (!list && !detail && !labels) return null;
|
|
481
|
+
return {
|
|
482
|
+
...list ? { list } : {},
|
|
483
|
+
...detail ? { detail } : {},
|
|
484
|
+
...labels ? { labels } : {}
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
function normalizeInboxKeyList(raw, max) {
|
|
488
|
+
if (!Array.isArray(raw)) return void 0;
|
|
489
|
+
const seen = /* @__PURE__ */ new Set();
|
|
490
|
+
const out = [];
|
|
491
|
+
for (const item of raw) {
|
|
492
|
+
if (typeof item !== "string" || out.length >= max) continue;
|
|
493
|
+
const key = item.trim();
|
|
494
|
+
const token = key.replace(/[^a-zA-Z0-9]+/g, "").toLowerCase();
|
|
495
|
+
if (!key || !token || seen.has(token)) continue;
|
|
496
|
+
seen.add(token);
|
|
497
|
+
out.push(key);
|
|
498
|
+
}
|
|
499
|
+
return out.length > 0 ? out : void 0;
|
|
500
|
+
}
|
|
501
|
+
function normalizeInboxLabels(raw) {
|
|
502
|
+
if (!raw || typeof raw !== "object") return void 0;
|
|
503
|
+
const out = {};
|
|
504
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
505
|
+
if (typeof value !== "string") continue;
|
|
506
|
+
const label = value.trim().slice(0, 60);
|
|
507
|
+
const token = key.trim();
|
|
508
|
+
if (!token || !label) continue;
|
|
509
|
+
out[token] = label;
|
|
510
|
+
}
|
|
511
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
386
512
|
}
|
|
387
513
|
function normalizeContactExtras(extras) {
|
|
388
514
|
if (!Array.isArray(extras)) return [];
|
|
@@ -412,7 +538,7 @@ function inferWrapperSlotsFromManifest(manifest) {
|
|
|
412
538
|
slots.add(`trust.${block.section}`);
|
|
413
539
|
slots.add("trust");
|
|
414
540
|
}
|
|
415
|
-
if (manifest?.contact?.extras?.length) {
|
|
541
|
+
if (manifest?.contact?.extras?.length || manifest?.contact?.leadInbox) {
|
|
416
542
|
slots.add("contact");
|
|
417
543
|
}
|
|
418
544
|
return [...slots];
|
|
@@ -446,7 +572,11 @@ async function getContentText(config, path) {
|
|
|
446
572
|
}
|
|
447
573
|
const res = await resolvedFetch(url, {
|
|
448
574
|
method: "GET",
|
|
449
|
-
headers: jmpContentRequestHeaders(config)
|
|
575
|
+
headers: jmpContentRequestHeaders(config),
|
|
576
|
+
next: {
|
|
577
|
+
revalidate: JMP_CONTENT_REVALIDATE_SECONDS,
|
|
578
|
+
tags: [JMP_CONTENT_CACHE_TAG]
|
|
579
|
+
}
|
|
450
580
|
});
|
|
451
581
|
const text = await res.text();
|
|
452
582
|
if (!res.ok) {
|
|
@@ -498,7 +628,65 @@ function getDiscoveredContentWrappers() {
|
|
|
498
628
|
return sortWrapperSlots([...discovered]);
|
|
499
629
|
}
|
|
500
630
|
function resolveContentManifestForReport(config) {
|
|
501
|
-
|
|
631
|
+
const site = getJmpSiteDefinition();
|
|
632
|
+
const fallback = site?.contactFallback;
|
|
633
|
+
const existing = config.contentManifest;
|
|
634
|
+
const fromFallback = fallbackToManifestDefaults(fallback);
|
|
635
|
+
if (!existing && !fromFallback) {
|
|
636
|
+
return null;
|
|
637
|
+
}
|
|
638
|
+
const merged = {
|
|
639
|
+
...existing ?? {},
|
|
640
|
+
defaults: {
|
|
641
|
+
...fromFallback ?? {},
|
|
642
|
+
...existing?.defaults ?? {},
|
|
643
|
+
contact: {
|
|
644
|
+
...fromFallback?.contact ?? {},
|
|
645
|
+
...existing?.defaults?.contact ?? {},
|
|
646
|
+
extras: {
|
|
647
|
+
...fromFallback?.contact?.extras ?? {},
|
|
648
|
+
...existing?.defaults?.contact?.extras ?? {}
|
|
649
|
+
}
|
|
650
|
+
},
|
|
651
|
+
trust: {
|
|
652
|
+
...fromFallback?.trust ?? {},
|
|
653
|
+
...existing?.defaults?.trust ?? {}
|
|
654
|
+
},
|
|
655
|
+
faq: existing?.defaults?.faq?.length ? existing.defaults.faq : fromFallback?.faq
|
|
656
|
+
}
|
|
657
|
+
};
|
|
658
|
+
return normalizeJmpContentManifest(merged);
|
|
659
|
+
}
|
|
660
|
+
function fallbackToManifestDefaults(fallback) {
|
|
661
|
+
if (!fallback) return null;
|
|
662
|
+
const contact = {};
|
|
663
|
+
if (fallback.displayName?.trim()) contact.displayName = fallback.displayName.trim();
|
|
664
|
+
if (fallback.email?.trim()) contact.email = fallback.email.trim();
|
|
665
|
+
if (typeof fallback.phone === "string" && fallback.phone.trim()) {
|
|
666
|
+
contact.phone = fallback.phone.trim();
|
|
667
|
+
}
|
|
668
|
+
if (fallback.address?.trim()) contact.address = fallback.address.trim();
|
|
669
|
+
if (fallback.hours?.trim()) contact.hours = fallback.hours.trim();
|
|
670
|
+
if (fallback.serviceArea?.trim()) contact.serviceArea = fallback.serviceArea.trim();
|
|
671
|
+
if (fallback.googleMapsUrl?.trim()) {
|
|
672
|
+
contact.googleMapsUrl = fallback.googleMapsUrl.trim();
|
|
673
|
+
}
|
|
674
|
+
if (fallback.linkedin?.trim()) contact.linkedinUrl = fallback.linkedin.trim();
|
|
675
|
+
if (fallback.instagram?.trim()) contact.instagramUrl = fallback.instagram.trim();
|
|
676
|
+
if (fallback.facebook?.trim()) contact.facebookUrl = fallback.facebook.trim();
|
|
677
|
+
if (fallback.x?.trim()) contact.xUrl = fallback.x.trim();
|
|
678
|
+
if (fallback.youtube?.trim()) contact.youtubeUrl = fallback.youtube.trim();
|
|
679
|
+
const trust = {};
|
|
680
|
+
if (fallback.googleMapsUrl?.trim()) {
|
|
681
|
+
trust.googleReviewsUrl = fallback.googleMapsUrl.trim();
|
|
682
|
+
}
|
|
683
|
+
const hasContact = Object.keys(contact).length > 0;
|
|
684
|
+
const hasTrust = Object.keys(trust).length > 0;
|
|
685
|
+
if (!hasContact && !hasTrust) return null;
|
|
686
|
+
return {
|
|
687
|
+
...hasContact ? { contact } : {},
|
|
688
|
+
...hasTrust ? { trust } : {}
|
|
689
|
+
};
|
|
502
690
|
}
|
|
503
691
|
function resolveContentWrappersForReport(config) {
|
|
504
692
|
const explicit = config.contentWrappers ?? [];
|
|
@@ -654,6 +842,75 @@ async function registerJmpContentWrappers(config) {
|
|
|
654
842
|
}
|
|
655
843
|
setContentWrapperSyncHandler(registerJmpContentWrappers);
|
|
656
844
|
|
|
845
|
+
// ai-crawler-agents.json
|
|
846
|
+
var ai_crawler_agents_default = {
|
|
847
|
+
robotsUserAgents: [
|
|
848
|
+
"GPTBot",
|
|
849
|
+
"ChatGPT-User",
|
|
850
|
+
"OAI-SearchBot",
|
|
851
|
+
"OAI-AdsBot",
|
|
852
|
+
"ClaudeBot",
|
|
853
|
+
"Claude-User",
|
|
854
|
+
"Claude-SearchBot",
|
|
855
|
+
"Claude-Web",
|
|
856
|
+
"PerplexityBot",
|
|
857
|
+
"Perplexity-User",
|
|
858
|
+
"Google-Extended",
|
|
859
|
+
"GoogleOther",
|
|
860
|
+
"GoogleOther-Image",
|
|
861
|
+
"GoogleOther-Video",
|
|
862
|
+
"Google-CloudVertexBot",
|
|
863
|
+
"Meta-ExternalAgent",
|
|
864
|
+
"Meta-ExternalFetcher",
|
|
865
|
+
"FacebookBot",
|
|
866
|
+
"Applebot",
|
|
867
|
+
"Applebot-Extended",
|
|
868
|
+
"CCBot",
|
|
869
|
+
"Bytespider",
|
|
870
|
+
"cohere-ai",
|
|
871
|
+
"cohere-training-data-crawler",
|
|
872
|
+
"YouBot",
|
|
873
|
+
"MistralAI-User",
|
|
874
|
+
"GrokBot",
|
|
875
|
+
"Grok-DeepSearch",
|
|
876
|
+
"xAI-Grok",
|
|
877
|
+
"xAI-Bot"
|
|
878
|
+
],
|
|
879
|
+
wafUserAgents: [
|
|
880
|
+
"GPTBot",
|
|
881
|
+
"ChatGPT-User",
|
|
882
|
+
"OAI-SearchBot",
|
|
883
|
+
"OAI-AdsBot",
|
|
884
|
+
"ClaudeBot",
|
|
885
|
+
"Claude-User",
|
|
886
|
+
"Claude-SearchBot",
|
|
887
|
+
"Claude-Web",
|
|
888
|
+
"PerplexityBot",
|
|
889
|
+
"Perplexity-User",
|
|
890
|
+
"Google-Extended",
|
|
891
|
+
"GoogleOther",
|
|
892
|
+
"Google-CloudVertexBot",
|
|
893
|
+
"Meta-ExternalAgent",
|
|
894
|
+
"Meta-ExternalFetcher",
|
|
895
|
+
"FacebookBot",
|
|
896
|
+
"Applebot-Extended",
|
|
897
|
+
"CCBot",
|
|
898
|
+
"Bytespider",
|
|
899
|
+
"cohere-ai",
|
|
900
|
+
"cohere-training-data-crawler",
|
|
901
|
+
"YouBot",
|
|
902
|
+
"MistralAI-User",
|
|
903
|
+
"GrokBot",
|
|
904
|
+
"Grok-DeepSearch",
|
|
905
|
+
"xAI-Grok",
|
|
906
|
+
"xAI-Bot"
|
|
907
|
+
]
|
|
908
|
+
};
|
|
909
|
+
|
|
910
|
+
// src/ai-crawlers.ts
|
|
911
|
+
var AI_CRAWLER_ROBOTS_USER_AGENTS = ai_crawler_agents_default.robotsUserAgents;
|
|
912
|
+
var JMP_AI_CRAWLER_WAF_USER_AGENTS = ai_crawler_agents_default.wafUserAgents;
|
|
913
|
+
|
|
657
914
|
// src/content/site-content.ts
|
|
658
915
|
async function loadLandingPages(filters) {
|
|
659
916
|
const c = getJmpContentConfig();
|