@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.
- package/README.md +1 -1
- package/dist/astro/client.cjs +83 -42
- package/dist/astro/client.cjs.map +1 -1
- package/dist/astro/client.d.cts +2 -2
- package/dist/astro/client.d.ts +2 -2
- package/dist/astro/client.js +2 -2
- package/dist/astro/content.cjs +137 -70
- package/dist/astro/content.cjs.map +1 -1
- package/dist/astro/content.d.cts +5 -4
- package/dist/astro/content.d.ts +5 -4
- package/dist/astro/content.js +5 -3
- package/dist/astro/integration.cjs +104 -66
- package/dist/astro/integration.cjs.map +1 -1
- package/dist/astro/integration.js +3 -3
- package/dist/astro/middleware.cjs +96 -66
- package/dist/astro/middleware.cjs.map +1 -1
- package/dist/astro/middleware.d.cts +2 -2
- package/dist/astro/middleware.d.ts +2 -2
- package/dist/astro/middleware.js +2 -2
- package/dist/astro/register.cjs +104 -66
- package/dist/astro/register.cjs.map +1 -1
- package/dist/astro/register.js +3 -3
- package/dist/{chunk-AIFJ7DVO.js → chunk-6WQMWPEY.js} +196 -105
- package/dist/chunk-6WQMWPEY.js.map +1 -0
- package/dist/{chunk-YFG3AQ35.js → chunk-EBU4DKHW.js} +47 -9
- package/dist/chunk-EBU4DKHW.js.map +1 -0
- package/dist/{chunk-AGGLRTUQ.js → chunk-JVFN7MF2.js} +2 -2
- package/dist/{chunk-3ZEMXII6.js → chunk-NCF3J4HV.js} +3 -3
- package/dist/{chunk-HFLU7HQE.js → chunk-ONIPLMOY.js} +2 -2
- package/dist/{chunk-NAQU6RAE.js → chunk-PQOTEV6O.js} +3 -3
- package/dist/{chunk-RNZTKIC6.js → chunk-WHUHCTBQ.js} +16 -3
- package/dist/chunk-WHUHCTBQ.js.map +1 -0
- package/dist/{create-jmp-analytics-Bz0-K0Af.d.cts → create-jmp-analytics-DMSXmVIH.d.cts} +1 -1
- package/dist/{create-jmp-analytics-DRjrlWUn.d.ts → create-jmp-analytics-JZ3pqNBQ.d.ts} +1 -1
- package/dist/index.cjs +145 -76
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -6
- package/dist/index.d.ts +10 -6
- package/dist/index.js +6 -2
- package/dist/next/content.cjs +138 -70
- package/dist/next/content.cjs.map +1 -1
- package/dist/next/content.d.cts +5 -4
- package/dist/next/content.d.ts +5 -4
- package/dist/next/content.js +6 -3
- package/dist/next/content.js.map +1 -1
- package/dist/next/instrumentation.cjs +104 -66
- package/dist/next/instrumentation.cjs.map +1 -1
- package/dist/next/instrumentation.js +2 -2
- package/dist/next/landing-pages.cjs +155 -129
- package/dist/next/landing-pages.cjs.map +1 -1
- package/dist/next/landing-pages.d.cts +2 -2
- package/dist/next/landing-pages.d.ts +2 -2
- package/dist/next/landing-pages.js +7 -8
- package/dist/next/landing-pages.js.map +1 -1
- package/dist/next/locations.cjs +114 -88
- package/dist/next/locations.cjs.map +1 -1
- package/dist/next/locations.d.cts +2 -2
- package/dist/next/locations.d.ts +2 -2
- package/dist/next/locations.js +7 -8
- package/dist/next/locations.js.map +1 -1
- package/dist/next/middleware.cjs +96 -66
- package/dist/next/middleware.cjs.map +1 -1
- package/dist/next/middleware.d.cts +2 -2
- package/dist/next/middleware.d.ts +2 -2
- package/dist/next/middleware.js +2 -2
- package/dist/next/site-root-server.cjs +103 -69
- package/dist/next/site-root-server.cjs.map +1 -1
- package/dist/next/site-root-server.js +4 -4
- package/dist/next.cjs +37 -2
- package/dist/next.cjs.map +1 -1
- package/dist/next.d.cts +3 -3
- package/dist/next.d.ts +3 -3
- package/dist/next.js +4 -4
- package/dist/react.cjs +88 -53
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +3 -3
- package/dist/{site-config-Cgq67uQ1.d.cts → site-config-BLnwuRC2.d.ts} +9 -3
- package/dist/{site-config-BxEmJxBB.d.ts → site-config-BZJS8Hp_.d.cts} +9 -3
- package/dist/{track-page-view-BCX1Dsfk.d.cts → track-page-view-BJQqn2Bg.d.cts} +1 -1
- package/dist/{track-page-view-74Su6lQY.d.ts → track-page-view-DGKRUIxm.d.ts} +1 -1
- package/dist/{types-yNgoakwk.d.ts → types-CYrgEwUF.d.cts} +16 -2
- package/dist/{types-yNgoakwk.d.cts → types-CYrgEwUF.d.ts} +16 -2
- package/dist/{utils-BLoWWfSw.d.ts → utils-B1Nt3sBU.d.ts} +1 -1
- package/dist/{utils-UPTIdK1D.d.cts → utils-U6TGMIAB.d.cts} +1 -1
- package/docs/legal-and-privacy.md +2 -2
- 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-RNZTKIC6.js.map +0 -1
- package/dist/chunk-YFG3AQ35.js.map +0 -1
- /package/dist/{chunk-AGGLRTUQ.js.map → chunk-JVFN7MF2.js.map} +0 -0
- /package/dist/{chunk-3ZEMXII6.js.map → chunk-NCF3J4HV.js.map} +0 -0
- /package/dist/{chunk-HFLU7HQE.js.map → chunk-ONIPLMOY.js.map} +0 -0
- /package/dist/{chunk-NAQU6RAE.js.map → chunk-PQOTEV6O.js.map} +0 -0
package/dist/astro/content.cjs
CHANGED
|
@@ -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.
|
|
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(
|
|
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
|
-
|
|
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,
|