@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
@@ -106,6 +106,9 @@ type JmpBlogPost = {
106
106
  id: string;
107
107
  title: string;
108
108
  slug: string;
109
+ locale: string;
110
+ translation_group_id?: string;
111
+ path?: string;
109
112
  excerpt: string | null;
110
113
  body: string;
111
114
  seo_title: string | null;
@@ -117,15 +120,31 @@ type JmpBlogPost = {
117
120
  published_at: string | null;
118
121
  updated_at: string;
119
122
  };
123
+ type JmpContentLocaleAlternate = {
124
+ locale: string;
125
+ slug: string;
126
+ path: string;
127
+ };
128
+ type JmpBlogPostDetail = {
129
+ post: JmpBlogPost;
130
+ alternates: JmpContentLocaleAlternate[];
131
+ };
120
132
  type JmpFaqItem = {
121
133
  id: string;
122
134
  slug: string;
135
+ locale: string;
136
+ translation_group_id?: string;
137
+ path?: string;
123
138
  question: string;
124
139
  answer: string;
125
140
  category?: string | null;
126
141
  sort_order: number;
127
142
  updated_at: string;
128
143
  };
144
+ type JmpFaqItemDetail = {
145
+ faq: JmpFaqItem;
146
+ alternates: JmpContentLocaleAlternate[];
147
+ };
129
148
  type JmpLandingPageKind = "service" | "location";
130
149
  type JmpLandingPage = {
131
150
  id: string;
@@ -290,6 +309,10 @@ type JmpSiteProfile = {
290
309
  extras: Record<string, string | null>;
291
310
  /** GA4 measurement ID from jmp-dashboard (null = no portal-managed GA tag). */
292
311
  ga_measurement_id: string | null;
312
+ /** Site default locale (BCP 47). Omitted prefix on public URLs. */
313
+ default_locale?: string;
314
+ /** Locales this site may publish content in. */
315
+ enabled_locales?: string[];
293
316
  };
294
317
  type TrackPageViewOptions = {
295
318
  path?: string;
@@ -360,4 +383,4 @@ type TrackServerPageViewOptions = {
360
383
  sessionId?: string;
361
384
  };
362
385
 
363
- export { type JmpTrustSummary as A, type LeadMetadataValue as B, normalizeJmpContentManifest as C, stableJmpManifestFingerprint as D, type JmpBlogPost as J, type LeadMetadata as L, type TrackPageViewOptions as T, type JmpFaqItem as a, type JmpLandingPage as b, type JmpLandingPageDetail as c, type JmpLandingPageKind as d, type JmpLandingPageSitemapEntry as e, type JmpSiteProfile as f, type JmpTestimonial as g, type JmpTrustBundle as h, type JmpWebsiteLocation as i, type JmpWebsiteLocationDetail as j, type JmpContentWrapper as k, type JmpContentManifest as l, type JmpContentConfig as m, type JmpServerRequestLike as n, type JmpAnalyticsConfig as o, type JmpEventType as p, type TrackLeadOptions as q, type TrackServerPageViewOptions as r, type JmpContactExtraManifest as s, type JmpContentRouteManifest as t, type JmpContentWrapperReportMode as u, type JmpCredential as v, type JmpPartnerLogo as w, type JmpTrustBlockManifest as x, type JmpTrustSection as y, type JmpTrustStat as z };
386
+ export { type JmpTrustBlockManifest as A, type JmpTrustSection as B, type JmpTrustStat as C, type JmpTrustSummary as D, type LeadMetadataValue as E, normalizeJmpContentManifest as F, stableJmpManifestFingerprint as G, type JmpBlogPost as J, type LeadMetadata as L, type TrackPageViewOptions as T, type JmpFaqItem as a, type JmpLandingPage as b, type JmpLandingPageDetail as c, type JmpLandingPageKind as d, type JmpLandingPageSitemapEntry as e, type JmpSiteProfile as f, type JmpTestimonial as g, type JmpTrustBundle as h, type JmpWebsiteLocation as i, type JmpWebsiteLocationDetail as j, type JmpContentWrapper as k, type JmpContentManifest as l, type JmpContentConfig as m, type JmpServerRequestLike as n, type JmpAnalyticsConfig as o, type JmpEventType as p, type TrackLeadOptions as q, type TrackServerPageViewOptions as r, type JmpBlogPostDetail as s, type JmpFaqItemDetail as t, type JmpContactExtraManifest as u, type JmpContentLocaleAlternate as v, type JmpContentRouteManifest as w, type JmpContentWrapperReportMode as x, type JmpCredential as y, type JmpPartnerLogo as z };
@@ -1,4 +1,4 @@
1
- import { b as JmpLandingPage, d as JmpLandingPageKind } from './types-DRljY1Yy.js';
1
+ import { b as JmpLandingPage, d as JmpLandingPageKind } from './types-BdC3SRH-.js';
2
2
 
3
3
  /** Strip lightweight markdown for meta descriptions and schema text fields. */
4
4
  declare function plainTextFromMarkdown(input: string, maxLength?: number): string;
@@ -1,4 +1,4 @@
1
- import { b as JmpLandingPage, d as JmpLandingPageKind } from './types-DRljY1Yy.cjs';
1
+ import { b as JmpLandingPage, d as JmpLandingPageKind } from './types-BdC3SRH-.cjs';
2
2
 
3
3
  /** Strip lightweight markdown for meta descriptions and schema text fields. */
4
4
  declare function plainTextFromMarkdown(input: string, maxLength?: number): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jmp-technologies/analytics",
3
- "version": "0.1.32",
3
+ "version": "0.1.33",
4
4
  "description": "JMP Analytics tracking plus blog, FAQ, trust content, and site contact profile for client websites",
5
5
  "license": "UNLICENSED",
6
6
  "keywords": [
@@ -1 +0,0 @@
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(): Promise<JmpBlogPost[]> {\n const c = getJmpContentConfig()\n if (!c) {\n return []\n }\n try {\n const posts = await getJmpBlogPosts(c)\n return sortBlogPosts(posts)\n } catch {\n return []\n }\n}\n\nexport async function loadBlogPost(slug: string): Promise<JmpBlogPost | null> {\n const c = getJmpContentConfig()\n if (!c) {\n return null\n }\n try {\n return await getJmpBlogPost(c, slug)\n } catch {\n return null\n }\n}\n\nexport async function loadFaqs(): Promise<JmpFaqItem[]> {\n const c = getJmpContentConfig()\n if (!c) {\n return []\n }\n try {\n const faqs = await getJmpFaqs(c)\n return sortFaqs(faqs)\n } catch {\n return []\n }\n}\n\nexport async function loadFaqBySlug(slug: string): Promise<JmpFaqItem | null> {\n const normalized = slug.trim()\n if (!normalized) {\n return null\n }\n const items = await loadFaqs()\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":[]}