@jmp-technologies/analytics 0.1.36 → 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.
- package/README.md +1 -1
- package/dist/astro/client.cjs +82 -42
- package/dist/astro/client.cjs.map +1 -1
- package/dist/astro/client.js +2 -2
- package/dist/astro/content.cjs +99 -69
- package/dist/astro/content.cjs.map +1 -1
- package/dist/astro/content.js +3 -3
- package/dist/astro/integration.cjs +100 -66
- package/dist/astro/integration.cjs.map +1 -1
- package/dist/astro/integration.js +3 -3
- package/dist/astro/middleware.cjs +93 -66
- package/dist/astro/middleware.cjs.map +1 -1
- package/dist/astro/middleware.js +2 -2
- package/dist/astro/register.cjs +100 -66
- package/dist/astro/register.cjs.map +1 -1
- package/dist/astro/register.js +3 -3
- package/dist/{chunk-3ZEMXII6.js → chunk-D43AEUXU.js} +3 -3
- package/dist/{chunk-AIFJ7DVO.js → chunk-EMZXL6VF.js} +193 -105
- package/dist/chunk-EMZXL6VF.js.map +1 -0
- package/dist/{chunk-HFLU7HQE.js → chunk-PTXPNIMF.js} +2 -2
- package/dist/{chunk-YFG3AQ35.js → chunk-RT2YYDCK.js} +12 -8
- package/dist/chunk-RT2YYDCK.js.map +1 -0
- package/dist/{chunk-AGGLRTUQ.js → chunk-TN6PGIB5.js} +2 -2
- package/dist/{chunk-RNZTKIC6.js → chunk-UHXWHKHJ.js} +3 -3
- package/dist/{chunk-NAQU6RAE.js → chunk-VQF6QYLR.js} +3 -3
- package/dist/index.cjs +105 -75
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/next/content.cjs +99 -69
- package/dist/next/content.cjs.map +1 -1
- package/dist/next/content.js +3 -3
- package/dist/next/instrumentation.cjs +100 -66
- package/dist/next/instrumentation.cjs.map +1 -1
- package/dist/next/instrumentation.js +2 -2
- package/dist/next/landing-pages.cjs +151 -129
- package/dist/next/landing-pages.cjs.map +1 -1
- package/dist/next/landing-pages.js +7 -8
- package/dist/next/landing-pages.js.map +1 -1
- package/dist/next/locations.cjs +110 -88
- package/dist/next/locations.cjs.map +1 -1
- package/dist/next/locations.js +7 -8
- package/dist/next/locations.js.map +1 -1
- package/dist/next/middleware.cjs +93 -66
- package/dist/next/middleware.cjs.map +1 -1
- package/dist/next/middleware.js +2 -2
- package/dist/next/site-root-server.cjs +99 -69
- package/dist/next/site-root-server.cjs.map +1 -1
- package/dist/next/site-root-server.js +4 -4
- package/dist/next.cjs +36 -2
- package/dist/next.cjs.map +1 -1
- package/dist/next.js +4 -4
- package/dist/react.cjs +87 -53
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-AIFJ7DVO.js.map +0 -1
- package/dist/chunk-RI3KKDPX.js +0 -75
- package/dist/chunk-RI3KKDPX.js.map +0 -1
- package/dist/chunk-YFG3AQ35.js.map +0 -1
- /package/dist/{chunk-3ZEMXII6.js.map → chunk-D43AEUXU.js.map} +0 -0
- /package/dist/{chunk-HFLU7HQE.js.map → chunk-PTXPNIMF.js.map} +0 -0
- /package/dist/{chunk-AGGLRTUQ.js.map → chunk-TN6PGIB5.js.map} +0 -0
- /package/dist/{chunk-RNZTKIC6.js.map → chunk-UHXWHKHJ.js.map} +0 -0
- /package/dist/{chunk-NAQU6RAE.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.
|
|
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
|
-
|
|
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 {
|