@jmp-technologies/analytics 0.1.35 → 0.1.37

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 (111) hide show
  1. package/README.md +1 -1
  2. package/dist/astro/client.cjs +82 -42
  3. package/dist/astro/client.cjs.map +1 -1
  4. package/dist/astro/client.d.cts +18 -0
  5. package/dist/astro/client.d.ts +18 -0
  6. package/dist/astro/client.js +2 -2
  7. package/dist/astro/content.cjs +99 -69
  8. package/dist/astro/content.cjs.map +1 -1
  9. package/dist/astro/content.d.cts +53 -0
  10. package/dist/astro/content.d.ts +53 -0
  11. package/dist/astro/content.js +3 -3
  12. package/dist/astro/integration.cjs +100 -66
  13. package/dist/astro/integration.cjs.map +1 -1
  14. package/dist/astro/integration.d.cts +36 -0
  15. package/dist/astro/integration.d.ts +36 -0
  16. package/dist/astro/integration.js +3 -3
  17. package/dist/astro/middleware.cjs +93 -66
  18. package/dist/astro/middleware.cjs.map +1 -1
  19. package/dist/astro/middleware.d.cts +19 -0
  20. package/dist/astro/middleware.d.ts +19 -0
  21. package/dist/astro/middleware.js +2 -2
  22. package/dist/astro/register.cjs +100 -66
  23. package/dist/astro/register.cjs.map +1 -1
  24. package/dist/astro/register.d.cts +7 -0
  25. package/dist/astro/register.d.ts +7 -0
  26. package/dist/astro/register.js +3 -3
  27. package/dist/{chunk-VUCOCFVE.js → chunk-D43AEUXU.js} +3 -3
  28. package/dist/{chunk-AIFJ7DVO.js → chunk-EMZXL6VF.js} +193 -105
  29. package/dist/chunk-EMZXL6VF.js.map +1 -0
  30. package/dist/{chunk-HFLU7HQE.js → chunk-PTXPNIMF.js} +2 -2
  31. package/dist/{chunk-6SMPRPQ3.js → chunk-RT2YYDCK.js} +12 -8
  32. package/dist/chunk-RT2YYDCK.js.map +1 -0
  33. package/dist/{chunk-4ZUW24F6.js → chunk-TN6PGIB5.js} +2 -2
  34. package/dist/{chunk-3ET7F6MZ.js → chunk-UHXWHKHJ.js} +3 -3
  35. package/dist/chunk-UHXWHKHJ.js.map +1 -0
  36. package/dist/{chunk-G322JCI3.js → chunk-VQF6QYLR.js} +3 -3
  37. package/dist/create-jmp-analytics-Bz0-K0Af.d.cts +69 -0
  38. package/dist/create-jmp-analytics-DRjrlWUn.d.ts +69 -0
  39. package/dist/env-public-B6Y0DG68.d.cts +14 -0
  40. package/dist/env-public-B6Y0DG68.d.ts +14 -0
  41. package/dist/index.cjs +105 -75
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.cts +110 -0
  44. package/dist/index.d.ts +110 -0
  45. package/dist/index.js +2 -2
  46. package/dist/landing-capture-C8pyZWuF.d.cts +4 -0
  47. package/dist/landing-capture-C8pyZWuF.d.ts +4 -0
  48. package/dist/next/content.cjs +99 -69
  49. package/dist/next/content.cjs.map +1 -1
  50. package/dist/next/content.d.cts +23 -0
  51. package/dist/next/content.d.ts +23 -0
  52. package/dist/next/content.js +3 -3
  53. package/dist/next/google-tag.d.cts +17 -0
  54. package/dist/next/google-tag.d.ts +17 -0
  55. package/dist/next/instrumentation.cjs +100 -66
  56. package/dist/next/instrumentation.cjs.map +1 -1
  57. package/dist/next/instrumentation.d.cts +7 -0
  58. package/dist/next/instrumentation.d.ts +7 -0
  59. package/dist/next/instrumentation.js +2 -2
  60. package/dist/next/landing-capture-script-server.d.cts +14 -0
  61. package/dist/next/landing-capture-script-server.d.ts +14 -0
  62. package/dist/next/landing-pages.cjs +151 -129
  63. package/dist/next/landing-pages.cjs.map +1 -1
  64. package/dist/next/landing-pages.d.cts +92 -0
  65. package/dist/next/landing-pages.d.ts +92 -0
  66. package/dist/next/landing-pages.js +7 -8
  67. package/dist/next/landing-pages.js.map +1 -1
  68. package/dist/next/locations.cjs +110 -88
  69. package/dist/next/locations.cjs.map +1 -1
  70. package/dist/next/locations.d.cts +55 -0
  71. package/dist/next/locations.d.ts +55 -0
  72. package/dist/next/locations.js +7 -8
  73. package/dist/next/locations.js.map +1 -1
  74. package/dist/next/middleware.cjs +93 -66
  75. package/dist/next/middleware.cjs.map +1 -1
  76. package/dist/next/middleware.d.cts +10 -0
  77. package/dist/next/middleware.d.ts +10 -0
  78. package/dist/next/middleware.js +2 -2
  79. package/dist/next/site-root-server.cjs +99 -69
  80. package/dist/next/site-root-server.cjs.map +1 -1
  81. package/dist/next/site-root-server.d.cts +24 -0
  82. package/dist/next/site-root-server.d.ts +24 -0
  83. package/dist/next/site-root-server.js +4 -4
  84. package/dist/next.cjs +36 -2
  85. package/dist/next.cjs.map +1 -1
  86. package/dist/next.d.cts +50 -0
  87. package/dist/next.d.ts +50 -0
  88. package/dist/next.js +4 -4
  89. package/dist/react.cjs +87 -53
  90. package/dist/react.cjs.map +1 -1
  91. package/dist/react.d.cts +22 -0
  92. package/dist/react.d.ts +22 -0
  93. package/dist/react.js +3 -3
  94. package/dist/site-config-BxEmJxBB.d.ts +74 -0
  95. package/dist/site-config-Cgq67uQ1.d.cts +74 -0
  96. package/dist/track-page-view-74Su6lQY.d.ts +12 -0
  97. package/dist/track-page-view-BCX1Dsfk.d.cts +12 -0
  98. package/dist/types-yNgoakwk.d.cts +397 -0
  99. package/dist/types-yNgoakwk.d.ts +397 -0
  100. package/dist/utils-BLoWWfSw.d.ts +15 -0
  101. package/dist/utils-UPTIdK1D.d.cts +15 -0
  102. package/package.json +3 -2
  103. package/dist/chunk-3ET7F6MZ.js.map +0 -1
  104. package/dist/chunk-6SMPRPQ3.js.map +0 -1
  105. package/dist/chunk-AIFJ7DVO.js.map +0 -1
  106. package/dist/chunk-RI3KKDPX.js +0 -75
  107. package/dist/chunk-RI3KKDPX.js.map +0 -1
  108. /package/dist/{chunk-VUCOCFVE.js.map → chunk-D43AEUXU.js.map} +0 -0
  109. /package/dist/{chunk-HFLU7HQE.js.map → chunk-PTXPNIMF.js.map} +0 -0
  110. /package/dist/{chunk-4ZUW24F6.js.map → chunk-TN6PGIB5.js.map} +0 -0
  111. /package/dist/{chunk-G322JCI3.js.map → chunk-VQF6QYLR.js.map} +0 -0
@@ -55,7 +55,7 @@ var import_navigation = require("next/navigation");
55
55
  var LANDING_REFERER_COOKIE_MAX_AGE_SEC = 30 * 60;
56
56
 
57
57
  // package.json
58
- var version = "0.1.35";
58
+ var version = "0.1.37";
59
59
 
60
60
  // src/constants.ts
61
61
  var JMP_ANALYTICS_SDK_VERSION = version;
@@ -69,6 +69,149 @@ function normalizeBaseUrl(baseUrl) {
69
69
  return baseUrl.replace(/\/$/, "");
70
70
  }
71
71
 
72
+ // src/env-public.ts
73
+ function firstDefined(...values) {
74
+ for (const v of values) {
75
+ if (v) return v;
76
+ }
77
+ return void 0;
78
+ }
79
+ function readJmpPublicEnvFromProcessEnv() {
80
+ if (typeof process === "undefined" || !process.env) {
81
+ return {};
82
+ }
83
+ const { env } = process;
84
+ const analyticsUrl = firstDefined(
85
+ env.NEXT_PUBLIC_JMP_ANALYTICS_URL,
86
+ env.PUBLIC_JMP_ANALYTICS_URL
87
+ );
88
+ const trackingKey = firstDefined(
89
+ env.NEXT_PUBLIC_JMP_TRACKING_KEY,
90
+ env.PUBLIC_JMP_TRACKING_KEY
91
+ );
92
+ const requireConsentRaw = firstDefined(
93
+ env.NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT,
94
+ env.PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT
95
+ );
96
+ const autoContactRaw = firstDefined(
97
+ env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS,
98
+ env.PUBLIC_JMP_AUTO_CONTACT_LINKS
99
+ );
100
+ return {
101
+ analyticsUrl,
102
+ trackingKey,
103
+ requireConsent: requireConsentRaw === "true",
104
+ autoContactLinks: autoContactRaw === "true"
105
+ };
106
+ }
107
+ function readJmpPublicEnvFromProcess(overrides) {
108
+ const fromEnv = readJmpPublicEnvFromProcessEnv();
109
+ return {
110
+ analyticsUrl: firstDefined(overrides?.analyticsUrl, fromEnv.analyticsUrl),
111
+ trackingKey: firstDefined(overrides?.trackingKey, fromEnv.trackingKey),
112
+ requireConsent: overrides?.requireConsent ?? fromEnv.requireConsent,
113
+ autoContactLinks: overrides?.autoContactLinks ?? fromEnv.autoContactLinks
114
+ };
115
+ }
116
+
117
+ // src/site-config.ts
118
+ var registeredSite = null;
119
+ function getJmpSiteDefinition() {
120
+ return registeredSite;
121
+ }
122
+ function getJmpContentConfig() {
123
+ const { analyticsUrl, trackingKey } = readJmpPublicEnvFromProcess();
124
+ if (!analyticsUrl || !trackingKey) {
125
+ return null;
126
+ }
127
+ const site = getJmpSiteDefinition();
128
+ return {
129
+ baseUrl: analyticsUrl,
130
+ trackingKey,
131
+ contentWrappers: site?.contentWrappers ?? void 0,
132
+ contentManifest: site?.contentManifest ?? void 0
133
+ };
134
+ }
135
+
136
+ // src/landing-pages/hub.ts
137
+ var JMP_LANDING_HUB = {
138
+ location: {
139
+ title: "Areas we serve",
140
+ path: "/areas",
141
+ description: "Local pages for cities and regions we work in.",
142
+ breadcrumb: "Areas",
143
+ segment: "areas"
144
+ },
145
+ service: {
146
+ title: "Services",
147
+ path: "/services",
148
+ description: "What we offer and how we help.",
149
+ breadcrumb: "Services",
150
+ segment: "services"
151
+ }
152
+ };
153
+ function jmpLandingKindSegment(kind) {
154
+ return JMP_LANDING_HUB[kind].segment;
155
+ }
156
+
157
+ // src/landing-pages/utils.ts
158
+ function plainTextFromMarkdown(input, maxLength = 5e3) {
159
+ return input.replace(/[#*_`[\]]/g, "").trim().slice(0, maxLength);
160
+ }
161
+ function resolveJmpSiteUrl(override) {
162
+ const fromArg = override?.trim().replace(/\/$/, "");
163
+ if (fromArg) return fromArg;
164
+ const fromConfig = getJmpSiteDefinition()?.siteUrl?.trim().replace(/\/$/, "");
165
+ return fromConfig || null;
166
+ }
167
+ function absoluteJmpSiteUrl(path, siteUrl) {
168
+ const base = resolveJmpSiteUrl(siteUrl);
169
+ if (!base) {
170
+ return path.startsWith("/") ? path : `/${path}`;
171
+ }
172
+ const normalized = path.startsWith("/") ? path : `/${path}`;
173
+ return `${base}${normalized}`;
174
+ }
175
+ function filterJmpLandingPagesForDefaultLocale(pages, kind) {
176
+ const segment = jmpLandingKindSegment(kind);
177
+ return pages.filter((page) => {
178
+ const parts = page.path.split("/").filter(Boolean);
179
+ return parts[0] === segment;
180
+ });
181
+ }
182
+ function filterJmpLandingPagesForLocalizedRoutes(pages, kind) {
183
+ const segment = jmpLandingKindSegment(kind);
184
+ return pages.filter((page) => {
185
+ const parts = page.path.split("/").filter(Boolean);
186
+ return parts.length >= 3 && parts[1] === segment;
187
+ });
188
+ }
189
+ function jmpLocalizedLandingStaticParams(pages, kind) {
190
+ return filterJmpLandingPagesForLocalizedRoutes(pages, kind).map((page) => {
191
+ const [locale, , slug] = page.path.split("/").filter(Boolean);
192
+ return { locale, slug };
193
+ });
194
+ }
195
+
196
+ // src/request-origin.ts
197
+ function resolveJmpRequestOrigin() {
198
+ const fromSite = resolveJmpSiteUrl();
199
+ if (fromSite) {
200
+ return fromSite;
201
+ }
202
+ if (typeof process === "undefined") {
203
+ return null;
204
+ }
205
+ return process.env.NEXT_PUBLIC_SITE_URL?.trim().replace(/\/$/, "") || null;
206
+ }
207
+ function withJmpOriginHeader(headers) {
208
+ const origin = resolveJmpRequestOrigin();
209
+ if (!origin) {
210
+ return headers;
211
+ }
212
+ return { ...headers, Origin: origin };
213
+ }
214
+
72
215
  // src/content/manifest.ts
73
216
  var JMP_CONTENT_MANIFEST_VERSION = 1;
74
217
  var TRUST_SECTIONS = /* @__PURE__ */ new Set([
@@ -273,6 +416,11 @@ function inferWrapperSlotsFromManifest(manifest) {
273
416
  }
274
417
 
275
418
  // src/content/fetch.ts
419
+ function jmpContentRequestHeaders(config) {
420
+ return withJmpOriginHeader({
421
+ "X-JMP-Tracking-Key": config.trackingKey
422
+ });
423
+ }
276
424
  async function getContent(config, path) {
277
425
  const text = await getContentText(config, path);
278
426
  try {
@@ -295,9 +443,7 @@ async function getContentText(config, path) {
295
443
  }
296
444
  const res = await resolvedFetch(url, {
297
445
  method: "GET",
298
- headers: {
299
- "X-JMP-Tracking-Key": config.trackingKey
300
- }
446
+ headers: jmpContentRequestHeaders(config)
301
447
  });
302
448
  const text = await res.text();
303
449
  if (!res.ok) {
@@ -482,7 +628,7 @@ async function registerJmpContentWrappers(config) {
482
628
  method: "POST",
483
629
  headers: {
484
630
  "Content-Type": "application/json",
485
- "X-JMP-Tracking-Key": config.trackingKey
631
+ ...jmpContentRequestHeaders(config)
486
632
  },
487
633
  body: JSON.stringify(body)
488
634
  });
@@ -504,70 +650,6 @@ async function registerJmpContentWrappers(config) {
504
650
  }
505
651
  setContentWrapperSyncHandler(registerJmpContentWrappers);
506
652
 
507
- // src/env-public.ts
508
- function firstDefined(...values) {
509
- for (const v of values) {
510
- if (v) return v;
511
- }
512
- return void 0;
513
- }
514
- function readJmpPublicEnvFromProcessEnv() {
515
- if (typeof process === "undefined" || !process.env) {
516
- return {};
517
- }
518
- const { env } = process;
519
- const analyticsUrl = firstDefined(
520
- env.NEXT_PUBLIC_JMP_ANALYTICS_URL,
521
- env.PUBLIC_JMP_ANALYTICS_URL
522
- );
523
- const trackingKey = firstDefined(
524
- env.NEXT_PUBLIC_JMP_TRACKING_KEY,
525
- env.PUBLIC_JMP_TRACKING_KEY
526
- );
527
- const requireConsentRaw = firstDefined(
528
- env.NEXT_PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT,
529
- env.PUBLIC_JMP_ANALYTICS_REQUIRE_CONSENT
530
- );
531
- const autoContactRaw = firstDefined(
532
- env.NEXT_PUBLIC_JMP_AUTO_CONTACT_LINKS,
533
- env.PUBLIC_JMP_AUTO_CONTACT_LINKS
534
- );
535
- return {
536
- analyticsUrl,
537
- trackingKey,
538
- requireConsent: requireConsentRaw === "true",
539
- autoContactLinks: autoContactRaw === "true"
540
- };
541
- }
542
- function readJmpPublicEnvFromProcess(overrides) {
543
- const fromEnv = readJmpPublicEnvFromProcessEnv();
544
- return {
545
- analyticsUrl: firstDefined(overrides?.analyticsUrl, fromEnv.analyticsUrl),
546
- trackingKey: firstDefined(overrides?.trackingKey, fromEnv.trackingKey),
547
- requireConsent: overrides?.requireConsent ?? fromEnv.requireConsent,
548
- autoContactLinks: overrides?.autoContactLinks ?? fromEnv.autoContactLinks
549
- };
550
- }
551
-
552
- // src/site-config.ts
553
- var registeredSite = null;
554
- function getJmpSiteDefinition() {
555
- return registeredSite;
556
- }
557
- function getJmpContentConfig() {
558
- const { analyticsUrl, trackingKey } = readJmpPublicEnvFromProcess();
559
- if (!analyticsUrl || !trackingKey) {
560
- return null;
561
- }
562
- const site = getJmpSiteDefinition();
563
- return {
564
- baseUrl: analyticsUrl,
565
- trackingKey,
566
- contentWrappers: site?.contentWrappers ?? void 0,
567
- contentManifest: site?.contentManifest ?? void 0
568
- };
569
- }
570
-
571
653
  // src/content/site-content.ts
572
654
  async function loadLandingPages(filters) {
573
655
  const c = getJmpContentConfig();
@@ -592,66 +674,6 @@ async function loadLandingPageDetail(kind, slug, locale) {
592
674
  }
593
675
  }
594
676
 
595
- // src/landing-pages/hub.ts
596
- var JMP_LANDING_HUB = {
597
- location: {
598
- title: "Areas we serve",
599
- path: "/areas",
600
- description: "Local pages for cities and regions we work in.",
601
- breadcrumb: "Areas",
602
- segment: "areas"
603
- },
604
- service: {
605
- title: "Services",
606
- path: "/services",
607
- description: "What we offer and how we help.",
608
- breadcrumb: "Services",
609
- segment: "services"
610
- }
611
- };
612
- function jmpLandingKindSegment(kind) {
613
- return JMP_LANDING_HUB[kind].segment;
614
- }
615
-
616
- // src/landing-pages/utils.ts
617
- function plainTextFromMarkdown(input, maxLength = 5e3) {
618
- return input.replace(/[#*_`[\]]/g, "").trim().slice(0, maxLength);
619
- }
620
- function resolveJmpSiteUrl(override) {
621
- const fromArg = override?.trim().replace(/\/$/, "");
622
- if (fromArg) return fromArg;
623
- const fromConfig = getJmpSiteDefinition()?.siteUrl?.trim().replace(/\/$/, "");
624
- return fromConfig || null;
625
- }
626
- function absoluteJmpSiteUrl(path, siteUrl) {
627
- const base = resolveJmpSiteUrl(siteUrl);
628
- if (!base) {
629
- return path.startsWith("/") ? path : `/${path}`;
630
- }
631
- const normalized = path.startsWith("/") ? path : `/${path}`;
632
- return `${base}${normalized}`;
633
- }
634
- function filterJmpLandingPagesForDefaultLocale(pages, kind) {
635
- const segment = jmpLandingKindSegment(kind);
636
- return pages.filter((page) => {
637
- const parts = page.path.split("/").filter(Boolean);
638
- return parts[0] === segment;
639
- });
640
- }
641
- function filterJmpLandingPagesForLocalizedRoutes(pages, kind) {
642
- const segment = jmpLandingKindSegment(kind);
643
- return pages.filter((page) => {
644
- const parts = page.path.split("/").filter(Boolean);
645
- return parts.length >= 3 && parts[1] === segment;
646
- });
647
- }
648
- function jmpLocalizedLandingStaticParams(pages, kind) {
649
- return filterJmpLandingPagesForLocalizedRoutes(pages, kind).map((page) => {
650
- const [locale, , slug] = page.path.split("/").filter(Boolean);
651
- return { locale, slug };
652
- });
653
- }
654
-
655
677
  // src/landing-pages/json-ld.ts
656
678
  function jmpBreadcrumbListJsonLd(items, siteUrl) {
657
679
  return {