@jmp-technologies/analytics 0.1.32 → 0.1.33

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 (69) hide show
  1. package/dist/astro/client.cjs.map +1 -1
  2. package/dist/astro/client.d.cts +2 -2
  3. package/dist/astro/client.d.ts +2 -2
  4. package/dist/astro/client.js +1 -1
  5. package/dist/astro/content.cjs +29 -14
  6. package/dist/astro/content.cjs.map +1 -1
  7. package/dist/astro/content.d.cts +7 -7
  8. package/dist/astro/content.d.ts +7 -7
  9. package/dist/astro/content.js +2 -2
  10. package/dist/astro/integration.cjs.map +1 -1
  11. package/dist/astro/integration.js +2 -2
  12. package/dist/astro/middleware.d.cts +2 -2
  13. package/dist/astro/middleware.d.ts +2 -2
  14. package/dist/astro/register.cjs.map +1 -1
  15. package/dist/astro/register.js +2 -2
  16. package/dist/{chunk-7623G3XL.js → chunk-4Q6YOXKB.js} +2 -2
  17. package/dist/{chunk-NDSPSAWQ.js → chunk-AIOUOA24.js} +2 -2
  18. package/dist/{chunk-HKMDWTA2.js → chunk-FH5CJNQD.js} +10 -10
  19. package/dist/chunk-FH5CJNQD.js.map +1 -0
  20. package/dist/{chunk-KPTMZQCY.js → chunk-JMALYARK.js} +2 -2
  21. package/dist/{chunk-NI7R6QZQ.js → chunk-KTPL3R5E.js} +69 -10
  22. package/dist/{chunk-NI7R6QZQ.js.map → chunk-KTPL3R5E.js.map} +1 -1
  23. package/dist/{create-jmp-analytics-htx2oOEf.d.ts → create-jmp-analytics-CwtcXBd7.d.ts} +1 -1
  24. package/dist/{create-jmp-analytics-D1dUsqCQ.d.cts → create-jmp-analytics-lkGcysG_.d.cts} +1 -1
  25. package/dist/index.cjs +70 -9
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +22 -12
  28. package/dist/index.d.ts +22 -12
  29. package/dist/index.js +5 -1
  30. package/dist/next/content.cjs +29 -14
  31. package/dist/next/content.cjs.map +1 -1
  32. package/dist/next/content.d.cts +2 -2
  33. package/dist/next/content.d.ts +2 -2
  34. package/dist/next/content.js +2 -2
  35. package/dist/next/instrumentation.cjs.map +1 -1
  36. package/dist/next/instrumentation.js +1 -1
  37. package/dist/next/landing-pages.cjs.map +1 -1
  38. package/dist/next/landing-pages.d.cts +2 -2
  39. package/dist/next/landing-pages.d.ts +2 -2
  40. package/dist/next/landing-pages.js +2 -2
  41. package/dist/next/locations.cjs.map +1 -1
  42. package/dist/next/locations.d.cts +2 -2
  43. package/dist/next/locations.d.ts +2 -2
  44. package/dist/next/locations.js +2 -2
  45. package/dist/next/middleware.d.cts +2 -2
  46. package/dist/next/middleware.d.ts +2 -2
  47. package/dist/next/site-root-server.cjs.map +1 -1
  48. package/dist/next/site-root-server.js +3 -3
  49. package/dist/next.cjs.map +1 -1
  50. package/dist/next.d.cts +3 -3
  51. package/dist/next.d.ts +3 -3
  52. package/dist/next.js +3 -3
  53. package/dist/react.cjs.map +1 -1
  54. package/dist/react.d.cts +2 -2
  55. package/dist/react.d.ts +2 -2
  56. package/dist/react.js +2 -2
  57. package/dist/{site-config-B7USGGzu.d.cts → site-config-BMlEQ_8g.d.cts} +1 -1
  58. package/dist/{site-config-C4bcUoLI.d.ts → site-config-BbE6kGDd.d.ts} +1 -1
  59. package/dist/{track-page-view-RiB-xgIx.d.ts → track-page-view-BPWGGoMr.d.ts} +1 -1
  60. package/dist/{track-page-view-C4TbbULE.d.cts → track-page-view-DaNOaIxF.d.cts} +1 -1
  61. package/dist/{types-DRljY1Yy.d.cts → types-BdC3SRH-.d.cts} +24 -1
  62. package/dist/{types-DRljY1Yy.d.ts → types-BdC3SRH-.d.ts} +24 -1
  63. package/dist/{utils-CHT3SQFv.d.ts → utils-B4E-pcQ0.d.ts} +1 -1
  64. package/dist/{utils-BajG58pj.d.cts → utils-DIHFgovG.d.cts} +1 -1
  65. package/package.json +1 -1
  66. package/dist/chunk-HKMDWTA2.js.map +0 -1
  67. /package/dist/{chunk-7623G3XL.js.map → chunk-4Q6YOXKB.js.map} +0 -0
  68. /package/dist/{chunk-NDSPSAWQ.js.map → chunk-AIOUOA24.js.map} +0 -0
  69. /package/dist/{chunk-KPTMZQCY.js.map → chunk-JMALYARK.js.map} +0 -0
@@ -9,7 +9,7 @@ import {
9
9
  getJmpLocations,
10
10
  getJmpSiteProfile,
11
11
  getJmpTrustBundle
12
- } from "./chunk-NI7R6QZQ.js";
12
+ } from "./chunk-KTPL3R5E.js";
13
13
  import {
14
14
  getJmpContentConfig,
15
15
  getJmpSiteDefinition
@@ -116,47 +116,47 @@ function listResolvedSocialUrls(social) {
116
116
  social.youtube
117
117
  ].filter((url) => Boolean(url));
118
118
  }
119
- async function loadBlogPosts() {
119
+ async function loadBlogPosts(locale) {
120
120
  const c = getJmpContentConfig();
121
121
  if (!c) {
122
122
  return [];
123
123
  }
124
124
  try {
125
- const posts = await getJmpBlogPosts(c);
125
+ const posts = await getJmpBlogPosts(c, locale ? { locale } : void 0);
126
126
  return sortBlogPosts(posts);
127
127
  } catch {
128
128
  return [];
129
129
  }
130
130
  }
131
- async function loadBlogPost(slug) {
131
+ async function loadBlogPost(slug, locale) {
132
132
  const c = getJmpContentConfig();
133
133
  if (!c) {
134
134
  return null;
135
135
  }
136
136
  try {
137
- return await getJmpBlogPost(c, slug);
137
+ return await getJmpBlogPost(c, slug, locale);
138
138
  } catch {
139
139
  return null;
140
140
  }
141
141
  }
142
- async function loadFaqs() {
142
+ async function loadFaqs(locale) {
143
143
  const c = getJmpContentConfig();
144
144
  if (!c) {
145
145
  return [];
146
146
  }
147
147
  try {
148
- const faqs = await getJmpFaqs(c);
148
+ const faqs = await getJmpFaqs(c, locale ? { locale } : void 0);
149
149
  return sortFaqs(faqs);
150
150
  } catch {
151
151
  return [];
152
152
  }
153
153
  }
154
- async function loadFaqBySlug(slug) {
154
+ async function loadFaqBySlug(slug, locale) {
155
155
  const normalized = slug.trim();
156
156
  if (!normalized) {
157
157
  return null;
158
158
  }
159
- const items = await loadFaqs();
159
+ const items = await loadFaqs(locale);
160
160
  return items.find((item) => item.slug === normalized || item.id === normalized) ?? null;
161
161
  }
162
162
  async function loadLandingPages(filters) {
@@ -256,4 +256,4 @@ export {
256
256
  loadTrustBundle,
257
257
  filterFeaturedTrustQuotes
258
258
  };
259
- //# sourceMappingURL=chunk-HKMDWTA2.js.map
259
+ //# sourceMappingURL=chunk-FH5CJNQD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/content/site-content.ts"],"sourcesContent":["import {\n getJmpBlogPost,\n getJmpBlogPosts,\n getJmpFaqs,\n getJmpLandingPageDetail,\n getJmpLandingPageSitemap,\n getJmpLandingPages,\n getJmpLocations,\n getJmpLocationDetail,\n getJmpSiteProfile,\n getJmpTrustBundle,\n type JmpBlogPost,\n type JmpFaqItem,\n type JmpLandingPage,\n type JmpLandingPageDetail,\n type JmpLandingPageKind,\n type JmpLandingPageSitemapEntry,\n type JmpWebsiteLocation,\n type JmpWebsiteLocationDetail,\n type JmpSiteProfile,\n type JmpTestimonial,\n type JmpTrustBundle,\n} from \"../index\"\nimport {\n getJmpContentConfig,\n getJmpSiteDefinition,\n type JmpSiteSocialLinks,\n} from \"../site-config\"\n\nexport type {\n JmpBlogPost,\n JmpFaqItem,\n JmpLandingPage,\n JmpLandingPageDetail,\n JmpLandingPageKind,\n JmpLandingPageSitemapEntry,\n JmpWebsiteLocation,\n JmpWebsiteLocationDetail,\n JmpSiteProfile,\n JmpTestimonial,\n JmpTrustBundle,\n}\n\nexport { getJmpContentConfig } from \"../site-config\"\n\nexport type { JmpSiteSocialLinks } from \"../site-config\"\n\nexport type ResolvedSiteContact = {\n displayName: string\n email: string\n founderName: string\n dashboardDemoUrl: string\n profilePhotoSrc: string\n linkedin: string | null\n social: JmpSiteSocialLinks\n phone: string | null\n address: string | null\n googleMapsUrl: string | null\n googleMapsEmbedUrl: string | null\n hours: string | null\n serviceArea: string | null\n privacyUrl: string\n termsUrl: string\n cta: { label: string | null; url: string | null }\n}\n\nconst DEFAULT_EXTRA_KEYS = {\n founderName: [\"founder-name\", \"founder_name\"],\n dashboardDemoUrl: [\"dashboard-demo-url\", \"sample-dashboard-url\"],\n profilePhotoSrc: [\"profile-photo-url\", \"profile_photo_url\"],\n hours: [\"hours\", \"business-hours\"],\n serviceArea: [\"service-area\", \"service_area\", \"service-area-text\"],\n googleMapsEmbedUrl: [\"google-maps-embed-url\", \"google_maps_embed_url\"],\n} as const\n\nfunction sortBlogPosts(posts: JmpBlogPost[]): JmpBlogPost[] {\n return [...posts].sort((a, b) => {\n const da = a.published_at ?? a.updated_at\n const db = b.published_at ?? b.updated_at\n return db.localeCompare(da)\n })\n}\n\nfunction sortFaqs(items: JmpFaqItem[]): JmpFaqItem[] {\n return [...items].sort((a, b) => a.sort_order - b.sort_order)\n}\n\nfunction readProfileExtra(\n profile: JmpSiteProfile | null,\n keys: readonly string[],\n): string | null {\n for (const key of keys) {\n const value = profile?.extras?.[key]?.trim()\n if (value) {\n return value\n }\n }\n return null\n}\n\n/** Resolve a path or URL against {@link defineJmpSite}'s `siteUrl`. */\nexport function absoluteSiteAssetUrl(src: string): string {\n const trimmed = src.trim()\n if (trimmed.startsWith(\"http://\") || trimmed.startsWith(\"https://\")) {\n return trimmed\n }\n const siteUrl = getJmpSiteDefinition()?.siteUrl?.replace(/\\/$/, \"\")\n if (!siteUrl) {\n return trimmed.startsWith(\"/\") ? trimmed : `/${trimmed}`\n }\n return `${siteUrl}${trimmed.startsWith(\"/\") ? trimmed : `/${trimmed}`}`\n}\n\nexport async function loadSiteProfile(): Promise<JmpSiteProfile | null> {\n const config = getJmpContentConfig()\n if (!config) {\n return null\n }\n try {\n return await getJmpSiteProfile(config)\n } catch {\n return null\n }\n}\n\nexport function resolveSiteContact(profile: JmpSiteProfile | null): ResolvedSiteContact {\n const site = getJmpSiteDefinition()\n const fallback = site?.contactFallback ?? {}\n const extraKeys = {\n ...DEFAULT_EXTRA_KEYS,\n ...site?.contactExtraKeys,\n }\n\n const email = profile?.email?.trim() || fallback.email || \"\"\n const social: JmpSiteSocialLinks = {\n linkedin:\n profile?.social?.linkedin?.trim() || fallback.linkedin || null,\n instagram:\n profile?.social?.instagram?.trim() || fallback.instagram || null,\n facebook:\n profile?.social?.facebook?.trim() || fallback.facebook || null,\n x: profile?.social?.x?.trim() || fallback.x || null,\n youtube:\n profile?.social?.youtube?.trim() || fallback.youtube || null,\n }\n const phone = profile?.phone?.trim() || fallback.phone || null\n\n return {\n displayName:\n profile?.display_name?.trim() ||\n profile?.name?.trim() ||\n fallback.displayName ||\n \"\",\n founderName:\n readProfileExtra(profile, extraKeys.founderName ?? []) ||\n fallback.founderName ||\n \"\",\n dashboardDemoUrl:\n readProfileExtra(profile, extraKeys.dashboardDemoUrl ?? []) ||\n fallback.dashboardDemoUrl ||\n \"\",\n profilePhotoSrc:\n readProfileExtra(profile, extraKeys.profilePhotoSrc ?? []) ||\n fallback.profilePhotoSrc ||\n \"\",\n email,\n linkedin: social.linkedin,\n social,\n phone,\n address: profile?.address?.trim() || fallback.address || null,\n googleMapsUrl:\n profile?.google_maps_url?.trim() || fallback.googleMapsUrl || null,\n googleMapsEmbedUrl:\n readProfileExtra(profile, extraKeys.googleMapsEmbedUrl ?? []) ||\n fallback.googleMapsEmbedUrl ||\n null,\n hours:\n readProfileExtra(profile, extraKeys.hours ?? []) || fallback.hours || null,\n serviceArea:\n readProfileExtra(profile, extraKeys.serviceArea ?? []) ||\n fallback.serviceArea ||\n null,\n privacyUrl: profile?.legal?.privacy_policy_url?.trim() || fallback.privacyUrl || \"/privacy\",\n termsUrl: profile?.legal?.terms_url?.trim() || fallback.termsUrl || \"/terms\",\n cta: {\n label: profile?.cta?.label?.trim() || null,\n url: profile?.cta?.url?.trim() || null,\n },\n }\n}\n\nexport async function getResolvedSiteContact(): Promise<ResolvedSiteContact> {\n const profile = await loadSiteProfile()\n return resolveSiteContact(profile)\n}\n\n/** Non-null social profile URLs in a stable order for JSON-LD `sameAs`. */\nexport function listResolvedSocialUrls(social: JmpSiteSocialLinks): string[] {\n return [\n social.linkedin,\n social.instagram,\n social.facebook,\n social.x,\n social.youtube,\n ].filter((url): url is string => Boolean(url))\n}\n\nexport async function loadBlogPosts(locale?: string): Promise<JmpBlogPost[]> {\n const c = getJmpContentConfig()\n if (!c) {\n return []\n }\n try {\n const posts = await getJmpBlogPosts(c, locale ? { locale } : undefined)\n return sortBlogPosts(posts)\n } catch {\n return []\n }\n}\n\nexport async function loadBlogPost(\n slug: string,\n locale?: string\n): Promise<JmpBlogPost | null> {\n const c = getJmpContentConfig()\n if (!c) {\n return null\n }\n try {\n return await getJmpBlogPost(c, slug, locale)\n } catch {\n return null\n }\n}\n\nexport async function loadFaqs(locale?: string): Promise<JmpFaqItem[]> {\n const c = getJmpContentConfig()\n if (!c) {\n return []\n }\n try {\n const faqs = await getJmpFaqs(c, locale ? { locale } : undefined)\n return sortFaqs(faqs)\n } catch {\n return []\n }\n}\n\nexport async function loadFaqBySlug(\n slug: string,\n locale?: string\n): Promise<JmpFaqItem | null> {\n const normalized = slug.trim()\n if (!normalized) {\n return null\n }\n const items = await loadFaqs(locale)\n return (\n items.find((item) => item.slug === normalized || item.id === normalized) ?? null\n )\n}\n\nexport async function loadLandingPages(filters?: {\n kind?: JmpLandingPageKind\n locale?: string\n}): Promise<JmpLandingPage[]> {\n const c = getJmpContentConfig()\n if (!c) {\n return []\n }\n try {\n return await getJmpLandingPages(c, filters)\n } catch {\n return []\n }\n}\n\nexport async function loadLandingPageDetail(\n kind: JmpLandingPageKind,\n slug: string,\n locale?: string\n): Promise<JmpLandingPageDetail | null> {\n const c = getJmpContentConfig()\n if (!c) {\n return null\n }\n try {\n return await getJmpLandingPageDetail(c, kind, slug, locale)\n } catch {\n return null\n }\n}\n\nexport async function loadLandingPageSitemap(): Promise<JmpLandingPageSitemapEntry[]> {\n const c = getJmpContentConfig()\n if (!c) {\n return []\n }\n try {\n return await getJmpLandingPageSitemap(c)\n } catch {\n return []\n }\n}\n\nexport async function loadLocations(): Promise<JmpWebsiteLocation[]> {\n const c = getJmpContentConfig()\n if (!c) {\n return []\n }\n try {\n return await getJmpLocations(c)\n } catch {\n return []\n }\n}\n\nexport async function loadLocationDetail(\n slug: string\n): Promise<JmpWebsiteLocationDetail | null> {\n const c = getJmpContentConfig()\n if (!c) {\n return null\n }\n try {\n return await getJmpLocationDetail(c, slug)\n } catch {\n return null\n }\n}\n\nexport async function loadTrustBundle(): Promise<JmpTrustBundle | null> {\n const c = getJmpContentConfig()\n if (!c) {\n return null\n }\n try {\n return await getJmpTrustBundle(c)\n } catch {\n return null\n }\n}\n\nexport function filterFeaturedTrustQuotes(\n testimonials: JmpTestimonial[],\n placement: \"testimonials\" | \"reviews\",\n limit = 2,\n): JmpTestimonial[] {\n return testimonials\n .filter((item) => {\n if (!item.featured) {\n return false\n }\n const bucket = item.placement?.trim().toLowerCase()\n if (placement === \"reviews\") {\n return bucket === \"reviews\"\n }\n return !bucket || bucket === \"testimonials\"\n })\n .sort((a, b) => a.sort_order - b.sort_order)\n .slice(0, limit)\n}\n"],"mappings":"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","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  getOrCreateJmpAnalyticsFromBrowserEnv,
3
3
  isJmpTrackingConsentGranted,
4
4
  subscribeJmpTrackingConsent
5
- } from "./chunk-NI7R6QZQ.js";
5
+ } from "./chunk-KTPL3R5E.js";
6
6
  import {
7
7
  readJmpPublicEnvFromProcess
8
8
  } from "./chunk-AIFJ7DVO.js";
@@ -130,4 +130,4 @@ export {
130
130
  JmpNextAnalytics,
131
131
  JmpSiteRoot
132
132
  };
133
- //# sourceMappingURL=chunk-KPTMZQCY.js.map
133
+ //# sourceMappingURL=chunk-JMALYARK.js.map
@@ -987,20 +987,30 @@ function sortWrapperSlots(slots) {
987
987
  function afterContentWrapperUse(config) {
988
988
  scheduleContentWrapperSync(config);
989
989
  }
990
- async function getJmpBlogPosts(config) {
990
+ async function getJmpBlogPosts(config, filters) {
991
+ const params = new URLSearchParams();
992
+ if (filters?.locale) {
993
+ params.set("locale", filters.locale);
994
+ }
995
+ const query = params.toString();
991
996
  const data = await getContent(
992
997
  config,
993
- "/api/content/blog"
998
+ `/api/content/blog${query ? `?${query}` : ""}`
994
999
  );
995
1000
  markContentWrapper("blog");
996
1001
  afterContentWrapperUse(config);
997
1002
  return data.posts;
998
1003
  }
999
- async function getJmpBlogPost(config, slug) {
1004
+ async function getJmpBlogPost(config, slug, locale) {
1000
1005
  try {
1006
+ const params = new URLSearchParams();
1007
+ if (locale) {
1008
+ params.set("locale", locale);
1009
+ }
1010
+ const query = params.toString();
1001
1011
  const data = await getContent(
1002
1012
  config,
1003
- `/api/content/blog/${encodeURIComponent(slug)}`
1013
+ `/api/content/blog/${encodeURIComponent(slug)}${query ? `?${query}` : ""}`
1004
1014
  );
1005
1015
  markContentWrapper("blog");
1006
1016
  afterContentWrapperUse(config);
@@ -1012,15 +1022,62 @@ async function getJmpBlogPost(config, slug) {
1012
1022
  throw error;
1013
1023
  }
1014
1024
  }
1015
- async function getJmpFaqs(config) {
1025
+ async function getJmpBlogPostDetail(config, slug, locale) {
1026
+ try {
1027
+ const params = new URLSearchParams();
1028
+ if (locale) {
1029
+ params.set("locale", locale);
1030
+ }
1031
+ const query = params.toString();
1032
+ const data = await getContent(
1033
+ config,
1034
+ `/api/content/blog/${encodeURIComponent(slug)}${query ? `?${query}` : ""}`
1035
+ );
1036
+ markContentWrapper("blog");
1037
+ afterContentWrapperUse(config);
1038
+ return data;
1039
+ } catch (error) {
1040
+ if (error instanceof Error && error.message.includes("HTTP 404")) {
1041
+ return null;
1042
+ }
1043
+ throw error;
1044
+ }
1045
+ }
1046
+ async function getJmpFaqs(config, filters) {
1047
+ const params = new URLSearchParams();
1048
+ if (filters?.locale) {
1049
+ params.set("locale", filters.locale);
1050
+ }
1051
+ const query = params.toString();
1016
1052
  const data = await getContent(
1017
1053
  config,
1018
- "/api/content/faqs"
1054
+ `/api/content/faqs${query ? `?${query}` : ""}`
1019
1055
  );
1020
1056
  markContentWrapper("faq");
1021
1057
  afterContentWrapperUse(config);
1022
1058
  return data.faqs;
1023
1059
  }
1060
+ async function getJmpFaqDetail(config, slug, locale) {
1061
+ try {
1062
+ const params = new URLSearchParams();
1063
+ if (locale) {
1064
+ params.set("locale", locale);
1065
+ }
1066
+ const query = params.toString();
1067
+ const data = await getContent(
1068
+ config,
1069
+ `/api/content/faqs/${encodeURIComponent(slug)}${query ? `?${query}` : ""}`
1070
+ );
1071
+ markContentWrapper("faq");
1072
+ afterContentWrapperUse(config);
1073
+ return data;
1074
+ } catch (error) {
1075
+ if (error instanceof Error && error.message.includes("HTTP 404")) {
1076
+ return null;
1077
+ }
1078
+ throw error;
1079
+ }
1080
+ }
1024
1081
  async function getJmpLandingPages(config, filters) {
1025
1082
  const params = new URLSearchParams();
1026
1083
  if (filters?.kind) {
@@ -1175,9 +1232,9 @@ setContentWrapperSyncHandler(registerJmpContentWrappers);
1175
1232
  // src/content/client.ts
1176
1233
  function createJmpContentClient(config) {
1177
1234
  return {
1178
- getBlogPosts: () => getJmpBlogPosts(config),
1179
- getBlogPost: (slug) => getJmpBlogPost(config, slug),
1180
- getFaqs: () => getJmpFaqs(config),
1235
+ getBlogPosts: (filters) => getJmpBlogPosts(config, filters),
1236
+ getBlogPost: (slug, locale) => getJmpBlogPost(config, slug, locale),
1237
+ getFaqs: (filters) => getJmpFaqs(config, filters),
1181
1238
  getLandingPages: (filters) => getJmpLandingPages(config, filters),
1182
1239
  getLandingPageDetail: (kind, slug, locale) => getJmpLandingPageDetail(config, kind, slug, locale),
1183
1240
  getLandingPageSitemap: () => getJmpLandingPageSitemap(config),
@@ -1253,7 +1310,9 @@ export {
1253
1310
  resetContentWrapperDiscoveryForTests,
1254
1311
  getJmpBlogPosts,
1255
1312
  getJmpBlogPost,
1313
+ getJmpBlogPostDetail,
1256
1314
  getJmpFaqs,
1315
+ getJmpFaqDetail,
1257
1316
  getJmpLandingPages,
1258
1317
  getJmpLandingPageDetail,
1259
1318
  getJmpLandingPageSitemap,
@@ -1271,4 +1330,4 @@ export {
1271
1330
  getOrCreateJmpAnalyticsFromBrowserEnv,
1272
1331
  createJmpContentClientFromServerEnv
1273
1332
  };
1274
- //# sourceMappingURL=chunk-NI7R6QZQ.js.map
1333
+ //# sourceMappingURL=chunk-KTPL3R5E.js.map