@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
|
@@ -28,7 +28,7 @@ module.exports = __toCommonJS(integration_exports);
|
|
|
28
28
|
var LANDING_REFERER_COOKIE_MAX_AGE_SEC = 30 * 60;
|
|
29
29
|
|
|
30
30
|
// package.json
|
|
31
|
-
var version = "0.1.
|
|
31
|
+
var version = "0.1.40";
|
|
32
32
|
|
|
33
33
|
// src/constants.ts
|
|
34
34
|
var JMP_ANALYTICS_SDK_VERSION = version;
|
|
@@ -224,7 +224,8 @@ function normalizeJmpContentManifest(input) {
|
|
|
224
224
|
const externalSources = normalizeExternalSources(input.externalSources);
|
|
225
225
|
const trust = normalizeTrust(input.trust);
|
|
226
226
|
const contact = normalizeContact(input.contact);
|
|
227
|
-
|
|
227
|
+
const defaults = normalizeManifestDefaults(input.defaults);
|
|
228
|
+
if (routes.length === 0 && !externalSources && !trust && !contact && !defaults) {
|
|
228
229
|
return null;
|
|
229
230
|
}
|
|
230
231
|
return {
|
|
@@ -232,7 +233,8 @@ function normalizeJmpContentManifest(input) {
|
|
|
232
233
|
...routes.length > 0 ? { routes } : {},
|
|
233
234
|
...externalSources ? { externalSources } : {},
|
|
234
235
|
...trust ? { trust } : {},
|
|
235
|
-
...contact ? { contact } : {}
|
|
236
|
+
...contact ? { contact } : {},
|
|
237
|
+
...defaults ? { defaults } : {}
|
|
236
238
|
};
|
|
237
239
|
}
|
|
238
240
|
function normalizeRoutes(routes) {
|
|
@@ -296,10 +298,132 @@ function normalizeTrustLabels(labels) {
|
|
|
296
298
|
}
|
|
297
299
|
return Object.keys(out).length > 0 ? out : null;
|
|
298
300
|
}
|
|
301
|
+
function readDefaultText(value, max = 500) {
|
|
302
|
+
if (typeof value !== "string") return void 0;
|
|
303
|
+
const trimmed = value.trim();
|
|
304
|
+
if (!trimmed) return void 0;
|
|
305
|
+
return trimmed.slice(0, max);
|
|
306
|
+
}
|
|
307
|
+
function normalizeManifestDefaults(defaults) {
|
|
308
|
+
if (!defaults || typeof defaults !== "object") return null;
|
|
309
|
+
const contactRaw = defaults.contact;
|
|
310
|
+
const contact = {};
|
|
311
|
+
if (contactRaw && typeof contactRaw === "object") {
|
|
312
|
+
const displayName = readDefaultText(contactRaw.displayName, 120);
|
|
313
|
+
const email = readDefaultText(contactRaw.email, 200);
|
|
314
|
+
const phone = readDefaultText(contactRaw.phone, 40);
|
|
315
|
+
const address = readDefaultText(contactRaw.address, 400);
|
|
316
|
+
const hours = readDefaultText(contactRaw.hours, 400);
|
|
317
|
+
const serviceArea = readDefaultText(contactRaw.serviceArea, 200);
|
|
318
|
+
const googleMapsUrl = readDefaultText(contactRaw.googleMapsUrl, 2048);
|
|
319
|
+
const linkedinUrl = readDefaultText(contactRaw.linkedinUrl, 2048);
|
|
320
|
+
const instagramUrl = readDefaultText(contactRaw.instagramUrl, 2048);
|
|
321
|
+
const facebookUrl = readDefaultText(contactRaw.facebookUrl, 2048);
|
|
322
|
+
const xUrl = readDefaultText(contactRaw.xUrl, 2048);
|
|
323
|
+
const youtubeUrl = readDefaultText(contactRaw.youtubeUrl, 2048);
|
|
324
|
+
if (displayName) contact.displayName = displayName;
|
|
325
|
+
if (email) contact.email = email;
|
|
326
|
+
if (phone) contact.phone = phone;
|
|
327
|
+
if (address) contact.address = address;
|
|
328
|
+
if (hours) contact.hours = hours;
|
|
329
|
+
if (serviceArea) contact.serviceArea = serviceArea;
|
|
330
|
+
if (googleMapsUrl) contact.googleMapsUrl = googleMapsUrl;
|
|
331
|
+
if (linkedinUrl) contact.linkedinUrl = linkedinUrl;
|
|
332
|
+
if (instagramUrl) contact.instagramUrl = instagramUrl;
|
|
333
|
+
if (facebookUrl) contact.facebookUrl = facebookUrl;
|
|
334
|
+
if (xUrl) contact.xUrl = xUrl;
|
|
335
|
+
if (youtubeUrl) contact.youtubeUrl = youtubeUrl;
|
|
336
|
+
if (contactRaw.extras && typeof contactRaw.extras === "object") {
|
|
337
|
+
const extras = {};
|
|
338
|
+
for (const [rawKey, rawValue] of Object.entries(contactRaw.extras)) {
|
|
339
|
+
if (Object.keys(extras).length >= 10) break;
|
|
340
|
+
const key = normalizeKey(rawKey);
|
|
341
|
+
const value = readDefaultText(rawValue, 200);
|
|
342
|
+
if (key && isValidExtraKey(key) && value) extras[key] = value;
|
|
343
|
+
}
|
|
344
|
+
if (Object.keys(extras).length > 0) contact.extras = extras;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const faq = [];
|
|
348
|
+
if (Array.isArray(defaults.faq)) {
|
|
349
|
+
for (const raw of defaults.faq) {
|
|
350
|
+
if (!raw || typeof raw !== "object" || faq.length >= 40) continue;
|
|
351
|
+
const question = readDefaultText(raw.question, 300);
|
|
352
|
+
const answer = readDefaultText(raw.answer, 8e3);
|
|
353
|
+
if (!question || !answer) continue;
|
|
354
|
+
const category = readDefaultText(raw.category, 80);
|
|
355
|
+
faq.push({ question, answer, ...category ? { category } : {} });
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
const trustRaw = defaults.trust;
|
|
359
|
+
const trust = {};
|
|
360
|
+
if (trustRaw && typeof trustRaw === "object") {
|
|
361
|
+
const assign = (key, max) => {
|
|
362
|
+
const value = readDefaultText(trustRaw[key], max);
|
|
363
|
+
if (value) trust[key] = value;
|
|
364
|
+
};
|
|
365
|
+
assign("googleReviewsUrl", 2048);
|
|
366
|
+
assign("googlePlaceId", 128);
|
|
367
|
+
assign("yelpUrl", 2048);
|
|
368
|
+
assign("trustpilotUrl", 2048);
|
|
369
|
+
assign("disclaimer", 1e3);
|
|
370
|
+
}
|
|
371
|
+
const hasContact = Object.keys(contact).length > 0;
|
|
372
|
+
const hasTrust = Object.keys(trust).length > 0;
|
|
373
|
+
if (!hasContact && faq.length === 0 && !hasTrust) return null;
|
|
374
|
+
return {
|
|
375
|
+
...hasContact ? { contact } : {},
|
|
376
|
+
...faq.length > 0 ? { faq } : {},
|
|
377
|
+
...hasTrust ? { trust } : {}
|
|
378
|
+
};
|
|
379
|
+
}
|
|
299
380
|
function normalizeContact(contact) {
|
|
300
381
|
if (!contact || typeof contact !== "object") return null;
|
|
301
382
|
const extras = normalizeContactExtras(contact.extras);
|
|
302
|
-
|
|
383
|
+
const leadInbox = normalizeLeadInbox(contact.leadInbox);
|
|
384
|
+
if (extras.length === 0 && !leadInbox) return null;
|
|
385
|
+
return {
|
|
386
|
+
...extras.length > 0 ? { extras } : {},
|
|
387
|
+
...leadInbox ? { leadInbox } : {}
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
function normalizeLeadInbox(raw) {
|
|
391
|
+
if (!raw || typeof raw !== "object") return null;
|
|
392
|
+
const list = normalizeInboxKeyList(raw.list, 8);
|
|
393
|
+
const detail = normalizeInboxKeyList(raw.detail, 24);
|
|
394
|
+
const labels = normalizeInboxLabels(raw.labels);
|
|
395
|
+
if (!list && !detail && !labels) return null;
|
|
396
|
+
return {
|
|
397
|
+
...list ? { list } : {},
|
|
398
|
+
...detail ? { detail } : {},
|
|
399
|
+
...labels ? { labels } : {}
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
function normalizeInboxKeyList(raw, max) {
|
|
403
|
+
if (!Array.isArray(raw)) return void 0;
|
|
404
|
+
const seen = /* @__PURE__ */ new Set();
|
|
405
|
+
const out = [];
|
|
406
|
+
for (const item of raw) {
|
|
407
|
+
if (typeof item !== "string" || out.length >= max) continue;
|
|
408
|
+
const key = item.trim();
|
|
409
|
+
const token = key.replace(/[^a-zA-Z0-9]+/g, "").toLowerCase();
|
|
410
|
+
if (!key || !token || seen.has(token)) continue;
|
|
411
|
+
seen.add(token);
|
|
412
|
+
out.push(key);
|
|
413
|
+
}
|
|
414
|
+
return out.length > 0 ? out : void 0;
|
|
415
|
+
}
|
|
416
|
+
function normalizeInboxLabels(raw) {
|
|
417
|
+
if (!raw || typeof raw !== "object") return void 0;
|
|
418
|
+
const out = {};
|
|
419
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
420
|
+
if (typeof value !== "string") continue;
|
|
421
|
+
const label = value.trim().slice(0, 60);
|
|
422
|
+
const token = key.trim();
|
|
423
|
+
if (!token || !label) continue;
|
|
424
|
+
out[token] = label;
|
|
425
|
+
}
|
|
426
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
303
427
|
}
|
|
304
428
|
function normalizeContactExtras(extras) {
|
|
305
429
|
if (!Array.isArray(extras)) return [];
|
|
@@ -329,7 +453,7 @@ function inferWrapperSlotsFromManifest(manifest) {
|
|
|
329
453
|
slots.add(`trust.${block.section}`);
|
|
330
454
|
slots.add("trust");
|
|
331
455
|
}
|
|
332
|
-
if (manifest?.contact?.extras?.length) {
|
|
456
|
+
if (manifest?.contact?.extras?.length || manifest?.contact?.leadInbox) {
|
|
333
457
|
slots.add("contact");
|
|
334
458
|
}
|
|
335
459
|
return [...slots];
|
|
@@ -363,7 +487,65 @@ function getDiscoveredContentWrappers() {
|
|
|
363
487
|
return sortWrapperSlots([...discovered]);
|
|
364
488
|
}
|
|
365
489
|
function resolveContentManifestForReport(config) {
|
|
366
|
-
|
|
490
|
+
const site = getJmpSiteDefinition();
|
|
491
|
+
const fallback = site?.contactFallback;
|
|
492
|
+
const existing = config.contentManifest;
|
|
493
|
+
const fromFallback = fallbackToManifestDefaults(fallback);
|
|
494
|
+
if (!existing && !fromFallback) {
|
|
495
|
+
return null;
|
|
496
|
+
}
|
|
497
|
+
const merged = {
|
|
498
|
+
...existing ?? {},
|
|
499
|
+
defaults: {
|
|
500
|
+
...fromFallback ?? {},
|
|
501
|
+
...existing?.defaults ?? {},
|
|
502
|
+
contact: {
|
|
503
|
+
...fromFallback?.contact ?? {},
|
|
504
|
+
...existing?.defaults?.contact ?? {},
|
|
505
|
+
extras: {
|
|
506
|
+
...fromFallback?.contact?.extras ?? {},
|
|
507
|
+
...existing?.defaults?.contact?.extras ?? {}
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
trust: {
|
|
511
|
+
...fromFallback?.trust ?? {},
|
|
512
|
+
...existing?.defaults?.trust ?? {}
|
|
513
|
+
},
|
|
514
|
+
faq: existing?.defaults?.faq?.length ? existing.defaults.faq : fromFallback?.faq
|
|
515
|
+
}
|
|
516
|
+
};
|
|
517
|
+
return normalizeJmpContentManifest(merged);
|
|
518
|
+
}
|
|
519
|
+
function fallbackToManifestDefaults(fallback) {
|
|
520
|
+
if (!fallback) return null;
|
|
521
|
+
const contact = {};
|
|
522
|
+
if (fallback.displayName?.trim()) contact.displayName = fallback.displayName.trim();
|
|
523
|
+
if (fallback.email?.trim()) contact.email = fallback.email.trim();
|
|
524
|
+
if (typeof fallback.phone === "string" && fallback.phone.trim()) {
|
|
525
|
+
contact.phone = fallback.phone.trim();
|
|
526
|
+
}
|
|
527
|
+
if (fallback.address?.trim()) contact.address = fallback.address.trim();
|
|
528
|
+
if (fallback.hours?.trim()) contact.hours = fallback.hours.trim();
|
|
529
|
+
if (fallback.serviceArea?.trim()) contact.serviceArea = fallback.serviceArea.trim();
|
|
530
|
+
if (fallback.googleMapsUrl?.trim()) {
|
|
531
|
+
contact.googleMapsUrl = fallback.googleMapsUrl.trim();
|
|
532
|
+
}
|
|
533
|
+
if (fallback.linkedin?.trim()) contact.linkedinUrl = fallback.linkedin.trim();
|
|
534
|
+
if (fallback.instagram?.trim()) contact.instagramUrl = fallback.instagram.trim();
|
|
535
|
+
if (fallback.facebook?.trim()) contact.facebookUrl = fallback.facebook.trim();
|
|
536
|
+
if (fallback.x?.trim()) contact.xUrl = fallback.x.trim();
|
|
537
|
+
if (fallback.youtube?.trim()) contact.youtubeUrl = fallback.youtube.trim();
|
|
538
|
+
const trust = {};
|
|
539
|
+
if (fallback.googleMapsUrl?.trim()) {
|
|
540
|
+
trust.googleReviewsUrl = fallback.googleMapsUrl.trim();
|
|
541
|
+
}
|
|
542
|
+
const hasContact = Object.keys(contact).length > 0;
|
|
543
|
+
const hasTrust = Object.keys(trust).length > 0;
|
|
544
|
+
if (!hasContact && !hasTrust) return null;
|
|
545
|
+
return {
|
|
546
|
+
...hasContact ? { contact } : {},
|
|
547
|
+
...hasTrust ? { trust } : {}
|
|
548
|
+
};
|
|
367
549
|
}
|
|
368
550
|
function resolveContentWrappersForReport(config) {
|
|
369
551
|
const explicit = config.contentWrappers ?? [];
|
|
@@ -459,6 +641,75 @@ async function registerJmpContentWrappers(config) {
|
|
|
459
641
|
}
|
|
460
642
|
setContentWrapperSyncHandler(registerJmpContentWrappers);
|
|
461
643
|
|
|
644
|
+
// ai-crawler-agents.json
|
|
645
|
+
var ai_crawler_agents_default = {
|
|
646
|
+
robotsUserAgents: [
|
|
647
|
+
"GPTBot",
|
|
648
|
+
"ChatGPT-User",
|
|
649
|
+
"OAI-SearchBot",
|
|
650
|
+
"OAI-AdsBot",
|
|
651
|
+
"ClaudeBot",
|
|
652
|
+
"Claude-User",
|
|
653
|
+
"Claude-SearchBot",
|
|
654
|
+
"Claude-Web",
|
|
655
|
+
"PerplexityBot",
|
|
656
|
+
"Perplexity-User",
|
|
657
|
+
"Google-Extended",
|
|
658
|
+
"GoogleOther",
|
|
659
|
+
"GoogleOther-Image",
|
|
660
|
+
"GoogleOther-Video",
|
|
661
|
+
"Google-CloudVertexBot",
|
|
662
|
+
"Meta-ExternalAgent",
|
|
663
|
+
"Meta-ExternalFetcher",
|
|
664
|
+
"FacebookBot",
|
|
665
|
+
"Applebot",
|
|
666
|
+
"Applebot-Extended",
|
|
667
|
+
"CCBot",
|
|
668
|
+
"Bytespider",
|
|
669
|
+
"cohere-ai",
|
|
670
|
+
"cohere-training-data-crawler",
|
|
671
|
+
"YouBot",
|
|
672
|
+
"MistralAI-User",
|
|
673
|
+
"GrokBot",
|
|
674
|
+
"Grok-DeepSearch",
|
|
675
|
+
"xAI-Grok",
|
|
676
|
+
"xAI-Bot"
|
|
677
|
+
],
|
|
678
|
+
wafUserAgents: [
|
|
679
|
+
"GPTBot",
|
|
680
|
+
"ChatGPT-User",
|
|
681
|
+
"OAI-SearchBot",
|
|
682
|
+
"OAI-AdsBot",
|
|
683
|
+
"ClaudeBot",
|
|
684
|
+
"Claude-User",
|
|
685
|
+
"Claude-SearchBot",
|
|
686
|
+
"Claude-Web",
|
|
687
|
+
"PerplexityBot",
|
|
688
|
+
"Perplexity-User",
|
|
689
|
+
"Google-Extended",
|
|
690
|
+
"GoogleOther",
|
|
691
|
+
"Google-CloudVertexBot",
|
|
692
|
+
"Meta-ExternalAgent",
|
|
693
|
+
"Meta-ExternalFetcher",
|
|
694
|
+
"FacebookBot",
|
|
695
|
+
"Applebot-Extended",
|
|
696
|
+
"CCBot",
|
|
697
|
+
"Bytespider",
|
|
698
|
+
"cohere-ai",
|
|
699
|
+
"cohere-training-data-crawler",
|
|
700
|
+
"YouBot",
|
|
701
|
+
"MistralAI-User",
|
|
702
|
+
"GrokBot",
|
|
703
|
+
"Grok-DeepSearch",
|
|
704
|
+
"xAI-Grok",
|
|
705
|
+
"xAI-Bot"
|
|
706
|
+
]
|
|
707
|
+
};
|
|
708
|
+
|
|
709
|
+
// src/ai-crawlers.ts
|
|
710
|
+
var AI_CRAWLER_ROBOTS_USER_AGENTS = ai_crawler_agents_default.robotsUserAgents;
|
|
711
|
+
var JMP_AI_CRAWLER_WAF_USER_AGENTS = ai_crawler_agents_default.wafUserAgents;
|
|
712
|
+
|
|
462
713
|
// src/astro/register.ts
|
|
463
714
|
async function registerJmpAstroContent() {
|
|
464
715
|
const config = getJmpContentConfig();
|