@jmp-technologies/analytics 0.1.36 → 0.1.38

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 (97) hide show
  1. package/README.md +1 -1
  2. package/dist/astro/client.cjs +83 -42
  3. package/dist/astro/client.cjs.map +1 -1
  4. package/dist/astro/client.d.cts +2 -2
  5. package/dist/astro/client.d.ts +2 -2
  6. package/dist/astro/client.js +2 -2
  7. package/dist/astro/content.cjs +137 -70
  8. package/dist/astro/content.cjs.map +1 -1
  9. package/dist/astro/content.d.cts +5 -4
  10. package/dist/astro/content.d.ts +5 -4
  11. package/dist/astro/content.js +5 -3
  12. package/dist/astro/integration.cjs +104 -66
  13. package/dist/astro/integration.cjs.map +1 -1
  14. package/dist/astro/integration.js +3 -3
  15. package/dist/astro/middleware.cjs +96 -66
  16. package/dist/astro/middleware.cjs.map +1 -1
  17. package/dist/astro/middleware.d.cts +2 -2
  18. package/dist/astro/middleware.d.ts +2 -2
  19. package/dist/astro/middleware.js +2 -2
  20. package/dist/astro/register.cjs +104 -66
  21. package/dist/astro/register.cjs.map +1 -1
  22. package/dist/astro/register.js +3 -3
  23. package/dist/{chunk-AIFJ7DVO.js → chunk-6WQMWPEY.js} +196 -105
  24. package/dist/chunk-6WQMWPEY.js.map +1 -0
  25. package/dist/{chunk-YFG3AQ35.js → chunk-EBU4DKHW.js} +47 -9
  26. package/dist/chunk-EBU4DKHW.js.map +1 -0
  27. package/dist/{chunk-AGGLRTUQ.js → chunk-JVFN7MF2.js} +2 -2
  28. package/dist/{chunk-3ZEMXII6.js → chunk-NCF3J4HV.js} +3 -3
  29. package/dist/{chunk-HFLU7HQE.js → chunk-ONIPLMOY.js} +2 -2
  30. package/dist/{chunk-NAQU6RAE.js → chunk-PQOTEV6O.js} +3 -3
  31. package/dist/{chunk-RNZTKIC6.js → chunk-WHUHCTBQ.js} +16 -3
  32. package/dist/chunk-WHUHCTBQ.js.map +1 -0
  33. package/dist/{create-jmp-analytics-Bz0-K0Af.d.cts → create-jmp-analytics-DMSXmVIH.d.cts} +1 -1
  34. package/dist/{create-jmp-analytics-DRjrlWUn.d.ts → create-jmp-analytics-JZ3pqNBQ.d.ts} +1 -1
  35. package/dist/index.cjs +145 -76
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.d.cts +10 -6
  38. package/dist/index.d.ts +10 -6
  39. package/dist/index.js +6 -2
  40. package/dist/next/content.cjs +138 -70
  41. package/dist/next/content.cjs.map +1 -1
  42. package/dist/next/content.d.cts +5 -4
  43. package/dist/next/content.d.ts +5 -4
  44. package/dist/next/content.js +6 -3
  45. package/dist/next/content.js.map +1 -1
  46. package/dist/next/instrumentation.cjs +104 -66
  47. package/dist/next/instrumentation.cjs.map +1 -1
  48. package/dist/next/instrumentation.js +2 -2
  49. package/dist/next/landing-pages.cjs +155 -129
  50. package/dist/next/landing-pages.cjs.map +1 -1
  51. package/dist/next/landing-pages.d.cts +2 -2
  52. package/dist/next/landing-pages.d.ts +2 -2
  53. package/dist/next/landing-pages.js +7 -8
  54. package/dist/next/landing-pages.js.map +1 -1
  55. package/dist/next/locations.cjs +114 -88
  56. package/dist/next/locations.cjs.map +1 -1
  57. package/dist/next/locations.d.cts +2 -2
  58. package/dist/next/locations.d.ts +2 -2
  59. package/dist/next/locations.js +7 -8
  60. package/dist/next/locations.js.map +1 -1
  61. package/dist/next/middleware.cjs +96 -66
  62. package/dist/next/middleware.cjs.map +1 -1
  63. package/dist/next/middleware.d.cts +2 -2
  64. package/dist/next/middleware.d.ts +2 -2
  65. package/dist/next/middleware.js +2 -2
  66. package/dist/next/site-root-server.cjs +103 -69
  67. package/dist/next/site-root-server.cjs.map +1 -1
  68. package/dist/next/site-root-server.js +4 -4
  69. package/dist/next.cjs +37 -2
  70. package/dist/next.cjs.map +1 -1
  71. package/dist/next.d.cts +3 -3
  72. package/dist/next.d.ts +3 -3
  73. package/dist/next.js +4 -4
  74. package/dist/react.cjs +88 -53
  75. package/dist/react.cjs.map +1 -1
  76. package/dist/react.d.cts +2 -2
  77. package/dist/react.d.ts +2 -2
  78. package/dist/react.js +3 -3
  79. package/dist/{site-config-Cgq67uQ1.d.cts → site-config-BLnwuRC2.d.ts} +9 -3
  80. package/dist/{site-config-BxEmJxBB.d.ts → site-config-BZJS8Hp_.d.cts} +9 -3
  81. package/dist/{track-page-view-BCX1Dsfk.d.cts → track-page-view-BJQqn2Bg.d.cts} +1 -1
  82. package/dist/{track-page-view-74Su6lQY.d.ts → track-page-view-DGKRUIxm.d.ts} +1 -1
  83. package/dist/{types-yNgoakwk.d.ts → types-CYrgEwUF.d.cts} +16 -2
  84. package/dist/{types-yNgoakwk.d.cts → types-CYrgEwUF.d.ts} +16 -2
  85. package/dist/{utils-BLoWWfSw.d.ts → utils-B1Nt3sBU.d.ts} +1 -1
  86. package/dist/{utils-UPTIdK1D.d.cts → utils-U6TGMIAB.d.cts} +1 -1
  87. package/docs/legal-and-privacy.md +2 -2
  88. package/package.json +1 -1
  89. package/dist/chunk-AIFJ7DVO.js.map +0 -1
  90. package/dist/chunk-RI3KKDPX.js +0 -75
  91. package/dist/chunk-RI3KKDPX.js.map +0 -1
  92. package/dist/chunk-RNZTKIC6.js.map +0 -1
  93. package/dist/chunk-YFG3AQ35.js.map +0 -1
  94. /package/dist/{chunk-AGGLRTUQ.js.map → chunk-JVFN7MF2.js.map} +0 -0
  95. /package/dist/{chunk-3ZEMXII6.js.map → chunk-NCF3J4HV.js.map} +0 -0
  96. /package/dist/{chunk-HFLU7HQE.js.map → chunk-ONIPLMOY.js.map} +0 -0
  97. /package/dist/{chunk-NAQU6RAE.js.map → chunk-PQOTEV6O.js.map} +0 -0
@@ -32,6 +32,7 @@ __export(content_exports, {
32
32
  loadLandingPageDetail: () => loadLandingPageDetail,
33
33
  loadLandingPageSitemap: () => loadLandingPageSitemap,
34
34
  loadLandingPages: () => loadLandingPages,
35
+ loadLegalDocument: () => loadLegalDocument,
35
36
  loadLocationDetail: () => loadLocationDetail,
36
37
  loadLocations: () => loadLocations,
37
38
  loadPopularPages: () => loadPopularPages,
@@ -45,7 +46,7 @@ module.exports = __toCommonJS(content_exports);
45
46
  var LANDING_REFERER_COOKIE_MAX_AGE_SEC = 30 * 60;
46
47
 
47
48
  // package.json
48
- var version = "0.1.36";
49
+ var version = "0.1.38";
49
50
 
50
51
  // src/constants.ts
51
52
  var JMP_ANALYTICS_SDK_VERSION = version;
@@ -59,6 +60,100 @@ function normalizeBaseUrl(baseUrl) {
59
60
  return baseUrl.replace(/\/$/, "");
60
61
  }
61
62
 
63
+ // src/env-public.ts
64
+ function firstDefined(...values) {
65
+ for (const v of values) {
66
+ if (v) return v;
67
+ }
68
+ return void 0;
69
+ }
70
+ function readJmpPublicEnvFromProcessEnv() {
71
+ if (typeof process === "undefined" || !process.env) {
72
+ return {};
73
+ }
74
+ const { env } = process;
75
+ const analyticsUrl = firstDefined(
76
+ env.NEXT_PUBLIC_JMP_ANALYTICS_URL,
77
+ env.PUBLIC_JMP_ANALYTICS_URL
78
+ );
79
+ const trackingKey = firstDefined(
80
+ env.NEXT_PUBLIC_JMP_TRACKING_KEY,
81
+ env.PUBLIC_JMP_TRACKING_KEY
82
+ );
83
+ const requireConsentRaw = firstDefined(
84
+ env.NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT,
85
+ env.PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT
86
+ );
87
+ const autoContactRaw = firstDefined(
88
+ env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS,
89
+ env.PUBLIC_JMP_AUTO_CONTACT_LINKS
90
+ );
91
+ return {
92
+ analyticsUrl,
93
+ trackingKey,
94
+ requireConsent: requireConsentRaw === "true",
95
+ autoContactLinks: autoContactRaw === "true"
96
+ };
97
+ }
98
+ function readJmpPublicEnvFromProcess(overrides) {
99
+ const fromEnv = readJmpPublicEnvFromProcessEnv();
100
+ return {
101
+ analyticsUrl: firstDefined(overrides?.analyticsUrl, fromEnv.analyticsUrl),
102
+ trackingKey: firstDefined(overrides?.trackingKey, fromEnv.trackingKey),
103
+ requireConsent: overrides?.requireConsent ?? fromEnv.requireConsent,
104
+ autoContactLinks: overrides?.autoContactLinks ?? fromEnv.autoContactLinks
105
+ };
106
+ }
107
+
108
+ // src/site-config.ts
109
+ var registeredSite = null;
110
+ function getJmpSiteDefinition() {
111
+ return registeredSite;
112
+ }
113
+ function getJmpContentConfig() {
114
+ const { analyticsUrl, trackingKey } = readJmpPublicEnvFromProcess();
115
+ if (!analyticsUrl || !trackingKey) {
116
+ return null;
117
+ }
118
+ const site = getJmpSiteDefinition();
119
+ const contentWrappers = site?.contentWrappers ?? void 0;
120
+ const inferredMode = contentWrappers && contentWrappers.length > 0 ? "manual" : void 0;
121
+ return {
122
+ baseUrl: analyticsUrl,
123
+ trackingKey,
124
+ contentWrappers,
125
+ contentManifest: site?.contentManifest ?? void 0,
126
+ contentWrapperMode: site?.contentWrapperMode ?? inferredMode
127
+ };
128
+ }
129
+
130
+ // src/landing-pages/utils.ts
131
+ function resolveJmpSiteUrl(override) {
132
+ const fromArg = override?.trim().replace(/\/$/, "");
133
+ if (fromArg) return fromArg;
134
+ const fromConfig = getJmpSiteDefinition()?.siteUrl?.trim().replace(/\/$/, "");
135
+ return fromConfig || null;
136
+ }
137
+
138
+ // src/request-origin.ts
139
+ function resolveJmpRequestOrigin() {
140
+ const fromSite = resolveJmpSiteUrl();
141
+ if (fromSite) {
142
+ return fromSite;
143
+ }
144
+ if (typeof process === "undefined") {
145
+ return null;
146
+ }
147
+ return process.env.NEXT_PUBLIC_SITE_URL?.trim().replace(/\/$/, "") || null;
148
+ }
149
+ function withJmpOriginHeader(headers) {
150
+ const origin = resolveJmpRequestOrigin();
151
+ if (!origin) {
152
+ return headers;
153
+ }
154
+ return { ...headers, Origin: origin };
155
+ }
156
+
62
157
  // src/content/manifest.ts
63
158
  var JMP_CONTENT_MANIFEST_VERSION = 1;
64
159
  var TRUST_SECTIONS = /* @__PURE__ */ new Set([
@@ -263,6 +358,11 @@ function inferWrapperSlotsFromManifest(manifest) {
263
358
  }
264
359
 
265
360
  // src/content/fetch.ts
361
+ function jmpContentRequestHeaders(config) {
362
+ return withJmpOriginHeader({
363
+ "X-JMP-Tracking-Key": config.trackingKey
364
+ });
365
+ }
266
366
  async function getContent(config, path) {
267
367
  const text = await getContentText(config, path);
268
368
  try {
@@ -285,9 +385,7 @@ async function getContentText(config, path) {
285
385
  }
286
386
  const res = await resolvedFetch(url, {
287
387
  method: "GET",
288
- headers: {
289
- "X-JMP-Tracking-Key": config.trackingKey
290
- }
388
+ headers: jmpContentRequestHeaders(config)
291
389
  });
292
390
  const text = await res.text();
293
391
  if (!res.ok) {
@@ -314,6 +412,7 @@ var WRAPPER_SLOT_ORDER = [
314
412
  "blog",
315
413
  "faq",
316
414
  "contact",
415
+ "legal",
317
416
  "trust",
318
417
  "trust.summary",
319
418
  "trust.testimonials",
@@ -340,7 +439,7 @@ function markTrustBundleWrappers(bundle) {
340
439
  }
341
440
  }
342
441
  function inferTrustWrapperSlots(bundle) {
343
- const slots = /* @__PURE__ */ new Set(["trust"]);
442
+ const slots = /* @__PURE__ */ new Set();
344
443
  const { summary, testimonials, stats, logos, credentials } = bundle;
345
444
  const hasSummary = summary.google_rating != null || summary.google_review_count != null || Boolean(summary.google_reviews_url?.trim()) || Boolean(summary.yelp_url?.trim()) || Boolean(summary.trustpilot_url?.trim()) || Boolean(summary.disclaimer?.trim());
346
445
  if (hasSummary) {
@@ -487,6 +586,26 @@ async function getJmpFaqs(config, filters) {
487
586
  afterContentWrapperUse(config);
488
587
  return data.faqs;
489
588
  }
589
+ async function getJmpLegalDocument(config, slug) {
590
+ const key = slug.trim().toLowerCase();
591
+ if (!key) {
592
+ return null;
593
+ }
594
+ try {
595
+ const data = await getContent(
596
+ config,
597
+ `/api/content/legal?slug=${encodeURIComponent(key)}`
598
+ );
599
+ markContentWrapper("legal");
600
+ afterContentWrapperUse(config);
601
+ return data.document;
602
+ } catch (error) {
603
+ if (error instanceof Error && error.message.includes("HTTP 404")) {
604
+ return null;
605
+ }
606
+ throw error;
607
+ }
608
+ }
490
609
  async function getJmpLandingPages(config, filters) {
491
610
  const params = new URLSearchParams();
492
611
  if (filters?.kind) {
@@ -630,7 +749,7 @@ async function registerJmpContentWrappers(config) {
630
749
  method: "POST",
631
750
  headers: {
632
751
  "Content-Type": "application/json",
633
- "X-JMP-Tracking-Key": config.trackingKey
752
+ ...jmpContentRequestHeaders(config)
634
753
  },
635
754
  body: JSON.stringify(body)
636
755
  });
@@ -652,70 +771,6 @@ async function registerJmpContentWrappers(config) {
652
771
  }
653
772
  setContentWrapperSyncHandler(registerJmpContentWrappers);
654
773
 
655
- // src/env-public.ts
656
- function firstDefined(...values) {
657
- for (const v of values) {
658
- if (v) return v;
659
- }
660
- return void 0;
661
- }
662
- function readJmpPublicEnvFromProcessEnv() {
663
- if (typeof process === "undefined" || !process.env) {
664
- return {};
665
- }
666
- const { env } = process;
667
- const analyticsUrl = firstDefined(
668
- env.NEXT_PUBLIC_JMP_ANALYTICS_URL,
669
- env.PUBLIC_JMP_ANALYTICS_URL
670
- );
671
- const trackingKey = firstDefined(
672
- env.NEXT_PUBLIC_JMP_TRACKING_KEY,
673
- env.PUBLIC_JMP_TRACKING_KEY
674
- );
675
- const requireConsentRaw = firstDefined(
676
- env.NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT,
677
- env.PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT
678
- );
679
- const autoContactRaw = firstDefined(
680
- env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS,
681
- env.PUBLIC_JMP_AUTO_CONTACT_LINKS
682
- );
683
- return {
684
- analyticsUrl,
685
- trackingKey,
686
- requireConsent: requireConsentRaw === "true",
687
- autoContactLinks: autoContactRaw === "true"
688
- };
689
- }
690
- function readJmpPublicEnvFromProcess(overrides) {
691
- const fromEnv = readJmpPublicEnvFromProcessEnv();
692
- return {
693
- analyticsUrl: firstDefined(overrides?.analyticsUrl, fromEnv.analyticsUrl),
694
- trackingKey: firstDefined(overrides?.trackingKey, fromEnv.trackingKey),
695
- requireConsent: overrides?.requireConsent ?? fromEnv.requireConsent,
696
- autoContactLinks: overrides?.autoContactLinks ?? fromEnv.autoContactLinks
697
- };
698
- }
699
-
700
- // src/site-config.ts
701
- var registeredSite = null;
702
- function getJmpSiteDefinition() {
703
- return registeredSite;
704
- }
705
- function getJmpContentConfig() {
706
- const { analyticsUrl, trackingKey } = readJmpPublicEnvFromProcess();
707
- if (!analyticsUrl || !trackingKey) {
708
- return null;
709
- }
710
- const site = getJmpSiteDefinition();
711
- return {
712
- baseUrl: analyticsUrl,
713
- trackingKey,
714
- contentWrappers: site?.contentWrappers ?? void 0,
715
- contentManifest: site?.contentManifest ?? void 0
716
- };
717
- }
718
-
719
774
  // src/content/site-content.ts
720
775
  var DEFAULT_EXTRA_KEYS = {
721
776
  founderName: ["founder-name", "founder_name"],
@@ -852,6 +907,17 @@ async function loadFaqs(locale) {
852
907
  return [];
853
908
  }
854
909
  }
910
+ async function loadLegalDocument(slug) {
911
+ const c = getJmpContentConfig();
912
+ if (!c) {
913
+ return null;
914
+ }
915
+ try {
916
+ return await getJmpLegalDocument(c, slug);
917
+ } catch {
918
+ return null;
919
+ }
920
+ }
855
921
  async function loadFaqBySlug(slug, locale) {
856
922
  const normalized = slug.trim();
857
923
  if (!normalized) {
@@ -963,6 +1029,7 @@ async function loadPopularPages(filters) {
963
1029
  loadLandingPageDetail,
964
1030
  loadLandingPageSitemap,
965
1031
  loadLandingPages,
1032
+ loadLegalDocument,
966
1033
  loadLocationDetail,
967
1034
  loadLocations,
968
1035
  loadPopularPages,