@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
package/dist/index.cjs CHANGED
@@ -41,6 +41,8 @@ __export(index_exports, {
41
41
  getJmpLandingPageDetail: () => getJmpLandingPageDetail,
42
42
  getJmpLandingPageSitemap: () => getJmpLandingPageSitemap,
43
43
  getJmpLandingPages: () => getJmpLandingPages,
44
+ getJmpLegalDocument: () => getJmpLegalDocument,
45
+ getJmpLegalDocuments: () => getJmpLegalDocuments,
44
46
  getJmpLocationDetail: () => getJmpLocationDetail,
45
47
  getJmpLocations: () => getJmpLocations,
46
48
  getJmpPopularPages: () => getJmpPopularPages,
@@ -348,7 +350,7 @@ function extractMailtoTarget(href) {
348
350
  }
349
351
 
350
352
  // package.json
351
- var version = "0.1.36";
353
+ var version = "0.1.38";
352
354
 
353
355
  // src/constants.ts
354
356
  var JMP_ANALYTICS_SDK_VERSION = version;
@@ -857,6 +859,104 @@ function createJmpAnalytics(config) {
857
859
  };
858
860
  }
859
861
 
862
+ // src/env-public.ts
863
+ function firstDefined(...values) {
864
+ for (const v of values) {
865
+ if (v) return v;
866
+ }
867
+ return void 0;
868
+ }
869
+ function readJmpPublicEnvFromProcessEnv() {
870
+ if (typeof process === "undefined" || !process.env) {
871
+ return {};
872
+ }
873
+ const { env } = process;
874
+ const analyticsUrl = firstDefined(
875
+ env.NEXT_PUBLIC_JMP_ANALYTICS_URL,
876
+ env.PUBLIC_JMP_ANALYTICS_URL
877
+ );
878
+ const trackingKey = firstDefined(
879
+ env.NEXT_PUBLIC_JMP_TRACKING_KEY,
880
+ env.PUBLIC_JMP_TRACKING_KEY
881
+ );
882
+ const requireConsentRaw = firstDefined(
883
+ env.NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT,
884
+ env.PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT
885
+ );
886
+ const autoContactRaw = firstDefined(
887
+ env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS,
888
+ env.PUBLIC_JMP_AUTO_CONTACT_LINKS
889
+ );
890
+ return {
891
+ analyticsUrl,
892
+ trackingKey,
893
+ requireConsent: requireConsentRaw === "true",
894
+ autoContactLinks: autoContactRaw === "true"
895
+ };
896
+ }
897
+ function readJmpPublicEnvFromProcess(overrides) {
898
+ const fromEnv = readJmpPublicEnvFromProcessEnv();
899
+ return {
900
+ analyticsUrl: firstDefined(overrides?.analyticsUrl, fromEnv.analyticsUrl),
901
+ trackingKey: firstDefined(overrides?.trackingKey, fromEnv.trackingKey),
902
+ requireConsent: overrides?.requireConsent ?? fromEnv.requireConsent,
903
+ autoContactLinks: overrides?.autoContactLinks ?? fromEnv.autoContactLinks
904
+ };
905
+ }
906
+
907
+ // src/site-config.ts
908
+ var registeredSite = null;
909
+ function defineJmpSite(definition) {
910
+ registeredSite = definition;
911
+ return definition;
912
+ }
913
+ function getJmpSiteDefinition() {
914
+ return registeredSite;
915
+ }
916
+ function getJmpContentConfig() {
917
+ const { analyticsUrl, trackingKey } = readJmpPublicEnvFromProcess();
918
+ if (!analyticsUrl || !trackingKey) {
919
+ return null;
920
+ }
921
+ const site = getJmpSiteDefinition();
922
+ const contentWrappers = site?.contentWrappers ?? void 0;
923
+ const inferredMode = contentWrappers && contentWrappers.length > 0 ? "manual" : void 0;
924
+ return {
925
+ baseUrl: analyticsUrl,
926
+ trackingKey,
927
+ contentWrappers,
928
+ contentManifest: site?.contentManifest ?? void 0,
929
+ contentWrapperMode: site?.contentWrapperMode ?? inferredMode
930
+ };
931
+ }
932
+
933
+ // src/landing-pages/utils.ts
934
+ function resolveJmpSiteUrl(override) {
935
+ const fromArg = override?.trim().replace(/\/$/, "");
936
+ if (fromArg) return fromArg;
937
+ const fromConfig = getJmpSiteDefinition()?.siteUrl?.trim().replace(/\/$/, "");
938
+ return fromConfig || null;
939
+ }
940
+
941
+ // src/request-origin.ts
942
+ function resolveJmpRequestOrigin() {
943
+ const fromSite = resolveJmpSiteUrl();
944
+ if (fromSite) {
945
+ return fromSite;
946
+ }
947
+ if (typeof process === "undefined") {
948
+ return null;
949
+ }
950
+ return process.env.NEXT_PUBLIC_SITE_URL?.trim().replace(/\/$/, "") || null;
951
+ }
952
+ function withJmpOriginHeader(headers) {
953
+ const origin = resolveJmpRequestOrigin();
954
+ if (!origin) {
955
+ return headers;
956
+ }
957
+ return { ...headers, Origin: origin };
958
+ }
959
+
860
960
  // src/server/page-view.ts
861
961
  async function trackJmpServerPageView(config, options = {}) {
862
962
  const baseUrl = normalizeBaseUrl(config.baseUrl);
@@ -867,10 +967,10 @@ async function trackJmpServerPageView(config, options = {}) {
867
967
  const visitorUserAgent = options.userAgent ?? getHeader(options.request?.headers, "user-agent");
868
968
  const visitorReferer = options.referer ?? getHeader(options.request?.headers, "referer");
869
969
  const path = options.path ?? pathFromRequestUrl(options.request?.url);
870
- const headers = {
970
+ const headers = withJmpOriginHeader({
871
971
  "Content-Type": "application/json",
872
972
  "X-JMP-Tracking-Key": config.trackingKey
873
- };
973
+ });
874
974
  if (visitorUserAgent) {
875
975
  headers["X-JMP-Visitor-User-Agent"] = visitorUserAgent;
876
976
  }
@@ -1104,6 +1204,11 @@ function inferWrapperSlotsFromManifest(manifest) {
1104
1204
  }
1105
1205
 
1106
1206
  // src/content/fetch.ts
1207
+ function jmpContentRequestHeaders(config) {
1208
+ return withJmpOriginHeader({
1209
+ "X-JMP-Tracking-Key": config.trackingKey
1210
+ });
1211
+ }
1107
1212
  async function getContent(config, path) {
1108
1213
  const text = await getContentText(config, path);
1109
1214
  try {
@@ -1126,9 +1231,7 @@ async function getContentText(config, path) {
1126
1231
  }
1127
1232
  const res = await resolvedFetch(url, {
1128
1233
  method: "GET",
1129
- headers: {
1130
- "X-JMP-Tracking-Key": config.trackingKey
1131
- }
1234
+ headers: jmpContentRequestHeaders(config)
1132
1235
  });
1133
1236
  const text = await res.text();
1134
1237
  if (!res.ok) {
@@ -1155,6 +1258,7 @@ var WRAPPER_SLOT_ORDER = [
1155
1258
  "blog",
1156
1259
  "faq",
1157
1260
  "contact",
1261
+ "legal",
1158
1262
  "trust",
1159
1263
  "trust.summary",
1160
1264
  "trust.testimonials",
@@ -1181,7 +1285,7 @@ function markTrustBundleWrappers(bundle) {
1181
1285
  }
1182
1286
  }
1183
1287
  function inferTrustWrapperSlots(bundle) {
1184
- const slots = /* @__PURE__ */ new Set(["trust"]);
1288
+ const slots = /* @__PURE__ */ new Set();
1185
1289
  const { summary, testimonials, stats, logos, credentials } = bundle;
1186
1290
  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());
1187
1291
  if (hasSummary) {
@@ -1359,6 +1463,35 @@ async function getJmpFaqs(config, filters) {
1359
1463
  afterContentWrapperUse(config);
1360
1464
  return data.faqs;
1361
1465
  }
1466
+ async function getJmpLegalDocument(config, slug) {
1467
+ const key = slug.trim().toLowerCase();
1468
+ if (!key) {
1469
+ return null;
1470
+ }
1471
+ try {
1472
+ const data = await getContent(
1473
+ config,
1474
+ `/api/content/legal?slug=${encodeURIComponent(key)}`
1475
+ );
1476
+ markContentWrapper("legal");
1477
+ afterContentWrapperUse(config);
1478
+ return data.document;
1479
+ } catch (error) {
1480
+ if (error instanceof Error && error.message.includes("HTTP 404")) {
1481
+ return null;
1482
+ }
1483
+ throw error;
1484
+ }
1485
+ }
1486
+ async function getJmpLegalDocuments(config) {
1487
+ const data = await getContent(
1488
+ config,
1489
+ "/api/content/legal"
1490
+ );
1491
+ markContentWrapper("legal");
1492
+ afterContentWrapperUse(config);
1493
+ return data.documents;
1494
+ }
1362
1495
  async function getJmpFaqDetail(config, slug, locale) {
1363
1496
  try {
1364
1497
  const params = new URLSearchParams();
@@ -1526,7 +1659,7 @@ async function registerJmpContentWrappers(config) {
1526
1659
  method: "POST",
1527
1660
  headers: {
1528
1661
  "Content-Type": "application/json",
1529
- "X-JMP-Tracking-Key": config.trackingKey
1662
+ ...jmpContentRequestHeaders(config)
1530
1663
  },
1531
1664
  body: JSON.stringify(body)
1532
1665
  });
@@ -1554,6 +1687,8 @@ function createJmpContentClient(config) {
1554
1687
  getBlogPosts: (filters) => getJmpBlogPosts(config, filters),
1555
1688
  getBlogPost: (slug, locale) => getJmpBlogPost(config, slug, locale),
1556
1689
  getFaqs: (filters) => getJmpFaqs(config, filters),
1690
+ getLegalDocument: (slug) => getJmpLegalDocument(config, slug),
1691
+ getLegalDocuments: () => getJmpLegalDocuments(config),
1557
1692
  getLandingPages: (filters) => getJmpLandingPages(config, filters),
1558
1693
  getLandingPageDetail: (kind, slug, locale) => getJmpLandingPageDetail(config, kind, slug, locale),
1559
1694
  getLandingPageSitemap: () => getJmpLandingPageSitemap(config),
@@ -1565,74 +1700,6 @@ function createJmpContentClient(config) {
1565
1700
  };
1566
1701
  }
1567
1702
 
1568
- // src/env-public.ts
1569
- function firstDefined(...values) {
1570
- for (const v of values) {
1571
- if (v) return v;
1572
- }
1573
- return void 0;
1574
- }
1575
- function readJmpPublicEnvFromProcessEnv() {
1576
- if (typeof process === "undefined" || !process.env) {
1577
- return {};
1578
- }
1579
- const { env } = process;
1580
- const analyticsUrl = firstDefined(
1581
- env.NEXT_PUBLIC_JMP_ANALYTICS_URL,
1582
- env.PUBLIC_JMP_ANALYTICS_URL
1583
- );
1584
- const trackingKey = firstDefined(
1585
- env.NEXT_PUBLIC_JMP_TRACKING_KEY,
1586
- env.PUBLIC_JMP_TRACKING_KEY
1587
- );
1588
- const requireConsentRaw = firstDefined(
1589
- env.NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT,
1590
- env.PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT
1591
- );
1592
- const autoContactRaw = firstDefined(
1593
- env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS,
1594
- env.PUBLIC_JMP_AUTO_CONTACT_LINKS
1595
- );
1596
- return {
1597
- analyticsUrl,
1598
- trackingKey,
1599
- requireConsent: requireConsentRaw === "true",
1600
- autoContactLinks: autoContactRaw === "true"
1601
- };
1602
- }
1603
- function readJmpPublicEnvFromProcess(overrides) {
1604
- const fromEnv = readJmpPublicEnvFromProcessEnv();
1605
- return {
1606
- analyticsUrl: firstDefined(overrides?.analyticsUrl, fromEnv.analyticsUrl),
1607
- trackingKey: firstDefined(overrides?.trackingKey, fromEnv.trackingKey),
1608
- requireConsent: overrides?.requireConsent ?? fromEnv.requireConsent,
1609
- autoContactLinks: overrides?.autoContactLinks ?? fromEnv.autoContactLinks
1610
- };
1611
- }
1612
-
1613
- // src/site-config.ts
1614
- var registeredSite = null;
1615
- function defineJmpSite(definition) {
1616
- registeredSite = definition;
1617
- return definition;
1618
- }
1619
- function getJmpSiteDefinition() {
1620
- return registeredSite;
1621
- }
1622
- function getJmpContentConfig() {
1623
- const { analyticsUrl, trackingKey } = readJmpPublicEnvFromProcess();
1624
- if (!analyticsUrl || !trackingKey) {
1625
- return null;
1626
- }
1627
- const site = getJmpSiteDefinition();
1628
- return {
1629
- baseUrl: analyticsUrl,
1630
- trackingKey,
1631
- contentWrappers: site?.contentWrappers ?? void 0,
1632
- contentManifest: site?.contentManifest ?? void 0
1633
- };
1634
- }
1635
-
1636
1703
  // src/env/browser.ts
1637
1704
  function getJmpBrowserAnalyticsConfigFromEnv(overrides) {
1638
1705
  const pub = readJmpPublicEnvFromProcess();
@@ -1700,6 +1767,8 @@ function createJmpContentClientFromServerEnv(overrides) {
1700
1767
  getJmpLandingPageDetail,
1701
1768
  getJmpLandingPageSitemap,
1702
1769
  getJmpLandingPages,
1770
+ getJmpLegalDocument,
1771
+ getJmpLegalDocuments,
1703
1772
  getJmpLocationDetail,
1704
1773
  getJmpLocations,
1705
1774
  getJmpPopularPages,