@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
package/dist/next/locations.cjs
CHANGED
|
@@ -47,10 +47,12 @@ var import_navigation = require("next/navigation");
|
|
|
47
47
|
var LANDING_REFERER_COOKIE_MAX_AGE_SEC = 30 * 60;
|
|
48
48
|
|
|
49
49
|
// package.json
|
|
50
|
-
var version = "0.1.
|
|
50
|
+
var version = "0.1.40";
|
|
51
51
|
|
|
52
52
|
// src/constants.ts
|
|
53
53
|
var JMP_ANALYTICS_SDK_VERSION = version;
|
|
54
|
+
var JMP_CONTENT_CACHE_TAG = "jmp-content";
|
|
55
|
+
var JMP_CONTENT_REVALIDATE_SECONDS = 3600;
|
|
54
56
|
|
|
55
57
|
// src/http.ts
|
|
56
58
|
function responseLooksLikeHtml(body) {
|
|
@@ -258,7 +260,8 @@ function normalizeJmpContentManifest(input) {
|
|
|
258
260
|
const externalSources = normalizeExternalSources(input.externalSources);
|
|
259
261
|
const trust = normalizeTrust(input.trust);
|
|
260
262
|
const contact = normalizeContact(input.contact);
|
|
261
|
-
|
|
263
|
+
const defaults = normalizeManifestDefaults(input.defaults);
|
|
264
|
+
if (routes.length === 0 && !externalSources && !trust && !contact && !defaults) {
|
|
262
265
|
return null;
|
|
263
266
|
}
|
|
264
267
|
return {
|
|
@@ -266,7 +269,8 @@ function normalizeJmpContentManifest(input) {
|
|
|
266
269
|
...routes.length > 0 ? { routes } : {},
|
|
267
270
|
...externalSources ? { externalSources } : {},
|
|
268
271
|
...trust ? { trust } : {},
|
|
269
|
-
...contact ? { contact } : {}
|
|
272
|
+
...contact ? { contact } : {},
|
|
273
|
+
...defaults ? { defaults } : {}
|
|
270
274
|
};
|
|
271
275
|
}
|
|
272
276
|
function normalizeRoutes(routes) {
|
|
@@ -330,10 +334,132 @@ function normalizeTrustLabels(labels) {
|
|
|
330
334
|
}
|
|
331
335
|
return Object.keys(out).length > 0 ? out : null;
|
|
332
336
|
}
|
|
337
|
+
function readDefaultText(value, max = 500) {
|
|
338
|
+
if (typeof value !== "string") return void 0;
|
|
339
|
+
const trimmed = value.trim();
|
|
340
|
+
if (!trimmed) return void 0;
|
|
341
|
+
return trimmed.slice(0, max);
|
|
342
|
+
}
|
|
343
|
+
function normalizeManifestDefaults(defaults) {
|
|
344
|
+
if (!defaults || typeof defaults !== "object") return null;
|
|
345
|
+
const contactRaw = defaults.contact;
|
|
346
|
+
const contact = {};
|
|
347
|
+
if (contactRaw && typeof contactRaw === "object") {
|
|
348
|
+
const displayName = readDefaultText(contactRaw.displayName, 120);
|
|
349
|
+
const email = readDefaultText(contactRaw.email, 200);
|
|
350
|
+
const phone = readDefaultText(contactRaw.phone, 40);
|
|
351
|
+
const address = readDefaultText(contactRaw.address, 400);
|
|
352
|
+
const hours = readDefaultText(contactRaw.hours, 400);
|
|
353
|
+
const serviceArea = readDefaultText(contactRaw.serviceArea, 200);
|
|
354
|
+
const googleMapsUrl = readDefaultText(contactRaw.googleMapsUrl, 2048);
|
|
355
|
+
const linkedinUrl = readDefaultText(contactRaw.linkedinUrl, 2048);
|
|
356
|
+
const instagramUrl = readDefaultText(contactRaw.instagramUrl, 2048);
|
|
357
|
+
const facebookUrl = readDefaultText(contactRaw.facebookUrl, 2048);
|
|
358
|
+
const xUrl = readDefaultText(contactRaw.xUrl, 2048);
|
|
359
|
+
const youtubeUrl = readDefaultText(contactRaw.youtubeUrl, 2048);
|
|
360
|
+
if (displayName) contact.displayName = displayName;
|
|
361
|
+
if (email) contact.email = email;
|
|
362
|
+
if (phone) contact.phone = phone;
|
|
363
|
+
if (address) contact.address = address;
|
|
364
|
+
if (hours) contact.hours = hours;
|
|
365
|
+
if (serviceArea) contact.serviceArea = serviceArea;
|
|
366
|
+
if (googleMapsUrl) contact.googleMapsUrl = googleMapsUrl;
|
|
367
|
+
if (linkedinUrl) contact.linkedinUrl = linkedinUrl;
|
|
368
|
+
if (instagramUrl) contact.instagramUrl = instagramUrl;
|
|
369
|
+
if (facebookUrl) contact.facebookUrl = facebookUrl;
|
|
370
|
+
if (xUrl) contact.xUrl = xUrl;
|
|
371
|
+
if (youtubeUrl) contact.youtubeUrl = youtubeUrl;
|
|
372
|
+
if (contactRaw.extras && typeof contactRaw.extras === "object") {
|
|
373
|
+
const extras = {};
|
|
374
|
+
for (const [rawKey, rawValue] of Object.entries(contactRaw.extras)) {
|
|
375
|
+
if (Object.keys(extras).length >= 10) break;
|
|
376
|
+
const key = normalizeKey(rawKey);
|
|
377
|
+
const value = readDefaultText(rawValue, 200);
|
|
378
|
+
if (key && isValidExtraKey(key) && value) extras[key] = value;
|
|
379
|
+
}
|
|
380
|
+
if (Object.keys(extras).length > 0) contact.extras = extras;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
const faq = [];
|
|
384
|
+
if (Array.isArray(defaults.faq)) {
|
|
385
|
+
for (const raw of defaults.faq) {
|
|
386
|
+
if (!raw || typeof raw !== "object" || faq.length >= 40) continue;
|
|
387
|
+
const question = readDefaultText(raw.question, 300);
|
|
388
|
+
const answer = readDefaultText(raw.answer, 8e3);
|
|
389
|
+
if (!question || !answer) continue;
|
|
390
|
+
const category = readDefaultText(raw.category, 80);
|
|
391
|
+
faq.push({ question, answer, ...category ? { category } : {} });
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
const trustRaw = defaults.trust;
|
|
395
|
+
const trust = {};
|
|
396
|
+
if (trustRaw && typeof trustRaw === "object") {
|
|
397
|
+
const assign = (key, max) => {
|
|
398
|
+
const value = readDefaultText(trustRaw[key], max);
|
|
399
|
+
if (value) trust[key] = value;
|
|
400
|
+
};
|
|
401
|
+
assign("googleReviewsUrl", 2048);
|
|
402
|
+
assign("googlePlaceId", 128);
|
|
403
|
+
assign("yelpUrl", 2048);
|
|
404
|
+
assign("trustpilotUrl", 2048);
|
|
405
|
+
assign("disclaimer", 1e3);
|
|
406
|
+
}
|
|
407
|
+
const hasContact = Object.keys(contact).length > 0;
|
|
408
|
+
const hasTrust = Object.keys(trust).length > 0;
|
|
409
|
+
if (!hasContact && faq.length === 0 && !hasTrust) return null;
|
|
410
|
+
return {
|
|
411
|
+
...hasContact ? { contact } : {},
|
|
412
|
+
...faq.length > 0 ? { faq } : {},
|
|
413
|
+
...hasTrust ? { trust } : {}
|
|
414
|
+
};
|
|
415
|
+
}
|
|
333
416
|
function normalizeContact(contact) {
|
|
334
417
|
if (!contact || typeof contact !== "object") return null;
|
|
335
418
|
const extras = normalizeContactExtras(contact.extras);
|
|
336
|
-
|
|
419
|
+
const leadInbox = normalizeLeadInbox(contact.leadInbox);
|
|
420
|
+
if (extras.length === 0 && !leadInbox) return null;
|
|
421
|
+
return {
|
|
422
|
+
...extras.length > 0 ? { extras } : {},
|
|
423
|
+
...leadInbox ? { leadInbox } : {}
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
function normalizeLeadInbox(raw) {
|
|
427
|
+
if (!raw || typeof raw !== "object") return null;
|
|
428
|
+
const list = normalizeInboxKeyList(raw.list, 8);
|
|
429
|
+
const detail = normalizeInboxKeyList(raw.detail, 24);
|
|
430
|
+
const labels = normalizeInboxLabels(raw.labels);
|
|
431
|
+
if (!list && !detail && !labels) return null;
|
|
432
|
+
return {
|
|
433
|
+
...list ? { list } : {},
|
|
434
|
+
...detail ? { detail } : {},
|
|
435
|
+
...labels ? { labels } : {}
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
function normalizeInboxKeyList(raw, max) {
|
|
439
|
+
if (!Array.isArray(raw)) return void 0;
|
|
440
|
+
const seen = /* @__PURE__ */ new Set();
|
|
441
|
+
const out = [];
|
|
442
|
+
for (const item of raw) {
|
|
443
|
+
if (typeof item !== "string" || out.length >= max) continue;
|
|
444
|
+
const key = item.trim();
|
|
445
|
+
const token = key.replace(/[^a-zA-Z0-9]+/g, "").toLowerCase();
|
|
446
|
+
if (!key || !token || seen.has(token)) continue;
|
|
447
|
+
seen.add(token);
|
|
448
|
+
out.push(key);
|
|
449
|
+
}
|
|
450
|
+
return out.length > 0 ? out : void 0;
|
|
451
|
+
}
|
|
452
|
+
function normalizeInboxLabels(raw) {
|
|
453
|
+
if (!raw || typeof raw !== "object") return void 0;
|
|
454
|
+
const out = {};
|
|
455
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
456
|
+
if (typeof value !== "string") continue;
|
|
457
|
+
const label = value.trim().slice(0, 60);
|
|
458
|
+
const token = key.trim();
|
|
459
|
+
if (!token || !label) continue;
|
|
460
|
+
out[token] = label;
|
|
461
|
+
}
|
|
462
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
337
463
|
}
|
|
338
464
|
function normalizeContactExtras(extras) {
|
|
339
465
|
if (!Array.isArray(extras)) return [];
|
|
@@ -363,7 +489,7 @@ function inferWrapperSlotsFromManifest(manifest) {
|
|
|
363
489
|
slots.add(`trust.${block.section}`);
|
|
364
490
|
slots.add("trust");
|
|
365
491
|
}
|
|
366
|
-
if (manifest?.contact?.extras?.length) {
|
|
492
|
+
if (manifest?.contact?.extras?.length || manifest?.contact?.leadInbox) {
|
|
367
493
|
slots.add("contact");
|
|
368
494
|
}
|
|
369
495
|
return [...slots];
|
|
@@ -397,7 +523,11 @@ async function getContentText(config, path) {
|
|
|
397
523
|
}
|
|
398
524
|
const res = await resolvedFetch(url, {
|
|
399
525
|
method: "GET",
|
|
400
|
-
headers: jmpContentRequestHeaders(config)
|
|
526
|
+
headers: jmpContentRequestHeaders(config),
|
|
527
|
+
next: {
|
|
528
|
+
revalidate: JMP_CONTENT_REVALIDATE_SECONDS,
|
|
529
|
+
tags: [JMP_CONTENT_CACHE_TAG]
|
|
530
|
+
}
|
|
401
531
|
});
|
|
402
532
|
const text = await res.text();
|
|
403
533
|
if (!res.ok) {
|
|
@@ -449,7 +579,65 @@ function getDiscoveredContentWrappers() {
|
|
|
449
579
|
return sortWrapperSlots([...discovered]);
|
|
450
580
|
}
|
|
451
581
|
function resolveContentManifestForReport(config) {
|
|
452
|
-
|
|
582
|
+
const site = getJmpSiteDefinition();
|
|
583
|
+
const fallback = site?.contactFallback;
|
|
584
|
+
const existing = config.contentManifest;
|
|
585
|
+
const fromFallback = fallbackToManifestDefaults(fallback);
|
|
586
|
+
if (!existing && !fromFallback) {
|
|
587
|
+
return null;
|
|
588
|
+
}
|
|
589
|
+
const merged = {
|
|
590
|
+
...existing ?? {},
|
|
591
|
+
defaults: {
|
|
592
|
+
...fromFallback ?? {},
|
|
593
|
+
...existing?.defaults ?? {},
|
|
594
|
+
contact: {
|
|
595
|
+
...fromFallback?.contact ?? {},
|
|
596
|
+
...existing?.defaults?.contact ?? {},
|
|
597
|
+
extras: {
|
|
598
|
+
...fromFallback?.contact?.extras ?? {},
|
|
599
|
+
...existing?.defaults?.contact?.extras ?? {}
|
|
600
|
+
}
|
|
601
|
+
},
|
|
602
|
+
trust: {
|
|
603
|
+
...fromFallback?.trust ?? {},
|
|
604
|
+
...existing?.defaults?.trust ?? {}
|
|
605
|
+
},
|
|
606
|
+
faq: existing?.defaults?.faq?.length ? existing.defaults.faq : fromFallback?.faq
|
|
607
|
+
}
|
|
608
|
+
};
|
|
609
|
+
return normalizeJmpContentManifest(merged);
|
|
610
|
+
}
|
|
611
|
+
function fallbackToManifestDefaults(fallback) {
|
|
612
|
+
if (!fallback) return null;
|
|
613
|
+
const contact = {};
|
|
614
|
+
if (fallback.displayName?.trim()) contact.displayName = fallback.displayName.trim();
|
|
615
|
+
if (fallback.email?.trim()) contact.email = fallback.email.trim();
|
|
616
|
+
if (typeof fallback.phone === "string" && fallback.phone.trim()) {
|
|
617
|
+
contact.phone = fallback.phone.trim();
|
|
618
|
+
}
|
|
619
|
+
if (fallback.address?.trim()) contact.address = fallback.address.trim();
|
|
620
|
+
if (fallback.hours?.trim()) contact.hours = fallback.hours.trim();
|
|
621
|
+
if (fallback.serviceArea?.trim()) contact.serviceArea = fallback.serviceArea.trim();
|
|
622
|
+
if (fallback.googleMapsUrl?.trim()) {
|
|
623
|
+
contact.googleMapsUrl = fallback.googleMapsUrl.trim();
|
|
624
|
+
}
|
|
625
|
+
if (fallback.linkedin?.trim()) contact.linkedinUrl = fallback.linkedin.trim();
|
|
626
|
+
if (fallback.instagram?.trim()) contact.instagramUrl = fallback.instagram.trim();
|
|
627
|
+
if (fallback.facebook?.trim()) contact.facebookUrl = fallback.facebook.trim();
|
|
628
|
+
if (fallback.x?.trim()) contact.xUrl = fallback.x.trim();
|
|
629
|
+
if (fallback.youtube?.trim()) contact.youtubeUrl = fallback.youtube.trim();
|
|
630
|
+
const trust = {};
|
|
631
|
+
if (fallback.googleMapsUrl?.trim()) {
|
|
632
|
+
trust.googleReviewsUrl = fallback.googleMapsUrl.trim();
|
|
633
|
+
}
|
|
634
|
+
const hasContact = Object.keys(contact).length > 0;
|
|
635
|
+
const hasTrust = Object.keys(trust).length > 0;
|
|
636
|
+
if (!hasContact && !hasTrust) return null;
|
|
637
|
+
return {
|
|
638
|
+
...hasContact ? { contact } : {},
|
|
639
|
+
...hasTrust ? { trust } : {}
|
|
640
|
+
};
|
|
453
641
|
}
|
|
454
642
|
function resolveContentWrappersForReport(config) {
|
|
455
643
|
const explicit = config.contentWrappers ?? [];
|
|
@@ -596,6 +784,75 @@ async function registerJmpContentWrappers(config) {
|
|
|
596
784
|
}
|
|
597
785
|
setContentWrapperSyncHandler(registerJmpContentWrappers);
|
|
598
786
|
|
|
787
|
+
// ai-crawler-agents.json
|
|
788
|
+
var ai_crawler_agents_default = {
|
|
789
|
+
robotsUserAgents: [
|
|
790
|
+
"GPTBot",
|
|
791
|
+
"ChatGPT-User",
|
|
792
|
+
"OAI-SearchBot",
|
|
793
|
+
"OAI-AdsBot",
|
|
794
|
+
"ClaudeBot",
|
|
795
|
+
"Claude-User",
|
|
796
|
+
"Claude-SearchBot",
|
|
797
|
+
"Claude-Web",
|
|
798
|
+
"PerplexityBot",
|
|
799
|
+
"Perplexity-User",
|
|
800
|
+
"Google-Extended",
|
|
801
|
+
"GoogleOther",
|
|
802
|
+
"GoogleOther-Image",
|
|
803
|
+
"GoogleOther-Video",
|
|
804
|
+
"Google-CloudVertexBot",
|
|
805
|
+
"Meta-ExternalAgent",
|
|
806
|
+
"Meta-ExternalFetcher",
|
|
807
|
+
"FacebookBot",
|
|
808
|
+
"Applebot",
|
|
809
|
+
"Applebot-Extended",
|
|
810
|
+
"CCBot",
|
|
811
|
+
"Bytespider",
|
|
812
|
+
"cohere-ai",
|
|
813
|
+
"cohere-training-data-crawler",
|
|
814
|
+
"YouBot",
|
|
815
|
+
"MistralAI-User",
|
|
816
|
+
"GrokBot",
|
|
817
|
+
"Grok-DeepSearch",
|
|
818
|
+
"xAI-Grok",
|
|
819
|
+
"xAI-Bot"
|
|
820
|
+
],
|
|
821
|
+
wafUserAgents: [
|
|
822
|
+
"GPTBot",
|
|
823
|
+
"ChatGPT-User",
|
|
824
|
+
"OAI-SearchBot",
|
|
825
|
+
"OAI-AdsBot",
|
|
826
|
+
"ClaudeBot",
|
|
827
|
+
"Claude-User",
|
|
828
|
+
"Claude-SearchBot",
|
|
829
|
+
"Claude-Web",
|
|
830
|
+
"PerplexityBot",
|
|
831
|
+
"Perplexity-User",
|
|
832
|
+
"Google-Extended",
|
|
833
|
+
"GoogleOther",
|
|
834
|
+
"Google-CloudVertexBot",
|
|
835
|
+
"Meta-ExternalAgent",
|
|
836
|
+
"Meta-ExternalFetcher",
|
|
837
|
+
"FacebookBot",
|
|
838
|
+
"Applebot-Extended",
|
|
839
|
+
"CCBot",
|
|
840
|
+
"Bytespider",
|
|
841
|
+
"cohere-ai",
|
|
842
|
+
"cohere-training-data-crawler",
|
|
843
|
+
"YouBot",
|
|
844
|
+
"MistralAI-User",
|
|
845
|
+
"GrokBot",
|
|
846
|
+
"Grok-DeepSearch",
|
|
847
|
+
"xAI-Grok",
|
|
848
|
+
"xAI-Bot"
|
|
849
|
+
]
|
|
850
|
+
};
|
|
851
|
+
|
|
852
|
+
// src/ai-crawlers.ts
|
|
853
|
+
var AI_CRAWLER_ROBOTS_USER_AGENTS = ai_crawler_agents_default.robotsUserAgents;
|
|
854
|
+
var JMP_AI_CRAWLER_WAF_USER_AGENTS = ai_crawler_agents_default.wafUserAgents;
|
|
855
|
+
|
|
599
856
|
// src/content/site-content.ts
|
|
600
857
|
async function loadLocations() {
|
|
601
858
|
const c = getJmpContentConfig();
|
|
@@ -720,7 +977,7 @@ async function JmpLocationHubPage({
|
|
|
720
977
|
}
|
|
721
978
|
async function JmpLocationDetailPage({
|
|
722
979
|
slug,
|
|
723
|
-
siteUrl,
|
|
980
|
+
siteUrl: _siteUrl,
|
|
724
981
|
components,
|
|
725
982
|
className,
|
|
726
983
|
classNames
|