@adv-re/segment-wrapper 4.36.2 → 5.0.0-beta.1
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 +50 -45
- package/dist/index.d.mts +17 -92
- package/dist/index.d.ts +17 -92
- package/dist/index.js +198 -308
- package/dist/index.mjs +195 -306
- package/package.json +2 -2
- package/umd/index.js +1 -1
package/dist/index.js
CHANGED
|
@@ -1517,7 +1517,6 @@ var require_adobeVisitorApi = __commonJS({
|
|
|
1517
1517
|
// src/index.ts
|
|
1518
1518
|
var index_exports = {};
|
|
1519
1519
|
__export(index_exports, {
|
|
1520
|
-
CONSENT_STATES: () => CONSENT_STATES,
|
|
1521
1520
|
EVENTS: () => EVENTS,
|
|
1522
1521
|
TCFEvents: () => TCFEvents,
|
|
1523
1522
|
UserGDPR: () => UserGDPR,
|
|
@@ -1527,6 +1526,7 @@ __export(index_exports, {
|
|
|
1527
1526
|
default: () => index_default,
|
|
1528
1527
|
getAdobeMCVisitorID: () => getAdobeMCVisitorID,
|
|
1529
1528
|
getAdobeVisitorData: () => getAdobeVisitorData,
|
|
1529
|
+
getCampaignDetails: () => getCampaignDetails,
|
|
1530
1530
|
getConfig: () => getConfig,
|
|
1531
1531
|
getStorageItem: () => getStorageItem,
|
|
1532
1532
|
getUniversalId: () => getUniversalId,
|
|
@@ -1541,7 +1541,8 @@ __export(index_exports, {
|
|
|
1541
1541
|
setConfig: () => setConfig,
|
|
1542
1542
|
setStorageItem: () => setStorageItem,
|
|
1543
1543
|
storage: () => storage,
|
|
1544
|
-
toCookieDomain: () => toCookieDomain
|
|
1544
|
+
toCookieDomain: () => toCookieDomain,
|
|
1545
|
+
trackingTagsTypes: () => trackingTagsTypes
|
|
1545
1546
|
});
|
|
1546
1547
|
module.exports = __toCommonJS(index_exports);
|
|
1547
1548
|
|
|
@@ -1645,237 +1646,6 @@ var getAdobeMCVisitorID = async () => {
|
|
|
1645
1646
|
return getConfig("importAdobeVisitorId") === true ? importVisitorApiAndGetAdobeMCVisitorID() : getAdobeMarketingCloudVisitorIdFromWindow();
|
|
1646
1647
|
};
|
|
1647
1648
|
|
|
1648
|
-
// src/events.ts
|
|
1649
|
-
var EVENTS = {
|
|
1650
|
-
GA4_INIT_EVENT_SENT: "ga4InitEventSent"
|
|
1651
|
-
};
|
|
1652
|
-
|
|
1653
|
-
// src/middlewares/source/pageReferrer.ts
|
|
1654
|
-
var referrerState = {
|
|
1655
|
-
spaReferrer: "",
|
|
1656
|
-
referrer: ""
|
|
1657
|
-
};
|
|
1658
|
-
var utils = {
|
|
1659
|
-
/**
|
|
1660
|
-
* @returns The referrer of the document
|
|
1661
|
-
*/
|
|
1662
|
-
getDocumentReferrer: () => document.referrer,
|
|
1663
|
-
/**
|
|
1664
|
-
* @returns The actual location with protocol, domain and pathname
|
|
1665
|
-
*/
|
|
1666
|
-
getActualLocation: () => {
|
|
1667
|
-
const { origin, pathname } = window.location;
|
|
1668
|
-
return `${origin}${pathname}`;
|
|
1669
|
-
},
|
|
1670
|
-
/**
|
|
1671
|
-
* @returns The actual query string
|
|
1672
|
-
*/
|
|
1673
|
-
getActualQueryString: () => {
|
|
1674
|
-
const { search } = window.location;
|
|
1675
|
-
return search;
|
|
1676
|
-
}
|
|
1677
|
-
};
|
|
1678
|
-
var getPageReferrer = ({ isPageTrack = false } = {}) => {
|
|
1679
|
-
const { referrer, spaReferrer } = referrerState;
|
|
1680
|
-
const referrerToUse = isPageTrack ? referrer : spaReferrer;
|
|
1681
|
-
return referrerToUse || utils.getDocumentReferrer();
|
|
1682
|
-
};
|
|
1683
|
-
var updatePageReferrer = () => {
|
|
1684
|
-
referrerState.spaReferrer = getPageReferrer({ isPageTrack: true });
|
|
1685
|
-
referrerState.referrer = utils.getActualLocation();
|
|
1686
|
-
};
|
|
1687
|
-
var pageReferrer = ({ payload, next }) => {
|
|
1688
|
-
const {
|
|
1689
|
-
obj: { context }
|
|
1690
|
-
} = payload;
|
|
1691
|
-
const { isPageTrack } = context;
|
|
1692
|
-
const referrer = getPageReferrer({ isPageTrack });
|
|
1693
|
-
payload.obj.context = {
|
|
1694
|
-
...context,
|
|
1695
|
-
page: {
|
|
1696
|
-
...context.page,
|
|
1697
|
-
referrer
|
|
1698
|
-
}
|
|
1699
|
-
};
|
|
1700
|
-
if (isPageTrack) {
|
|
1701
|
-
updatePageReferrer();
|
|
1702
|
-
}
|
|
1703
|
-
next(payload);
|
|
1704
|
-
};
|
|
1705
|
-
|
|
1706
|
-
// src/repositories/googleRepository.ts
|
|
1707
|
-
var FIELDS = {
|
|
1708
|
-
clientId: "client_id",
|
|
1709
|
-
sessionId: "session_id"
|
|
1710
|
-
};
|
|
1711
|
-
var DEFAULT_DATA_LAYER_NAME = "dataLayer";
|
|
1712
|
-
var CONSENT_STATES = {
|
|
1713
|
-
granted: "granted",
|
|
1714
|
-
denied: "denied"
|
|
1715
|
-
};
|
|
1716
|
-
var CONSENT_STATE_GRANTED_VALUE = 1;
|
|
1717
|
-
var CONSENT_STATE_DENIED_VALUE = 2;
|
|
1718
|
-
var STC = {
|
|
1719
|
-
QUERY: "stc",
|
|
1720
|
-
SPLIT_SYMBOL: "-",
|
|
1721
|
-
CAMPAIGN_SPLIT_SYMBOL: ":"
|
|
1722
|
-
};
|
|
1723
|
-
var UTM_CAMPAIGN = "utm_campaign";
|
|
1724
|
-
var UTM_MEDIUM = "utm_medium";
|
|
1725
|
-
var UTM_SOURCE = "utm_source";
|
|
1726
|
-
var UTM_CONTENT = "utm_content";
|
|
1727
|
-
var UTM_CAMPAIGN_ID = "utm_id";
|
|
1728
|
-
var UTM_TERM = "utm_term";
|
|
1729
|
-
var STC_MEDIUM_TRANSFORMATIONS = {
|
|
1730
|
-
aff: "affiliate",
|
|
1731
|
-
dis: "display",
|
|
1732
|
-
em: "email",
|
|
1733
|
-
met: "paid-metasearch",
|
|
1734
|
-
sem: "paid-search",
|
|
1735
|
-
rt: "display",
|
|
1736
|
-
sm: "social-media",
|
|
1737
|
-
sp: "paid-social",
|
|
1738
|
-
pn: "push-notification",
|
|
1739
|
-
cs: "cross-sites"
|
|
1740
|
-
};
|
|
1741
|
-
var STC_INVALID_CONTENT = "na";
|
|
1742
|
-
var DEFAULT_GA_INIT_EVENT = "sui";
|
|
1743
|
-
var EMPTY_STC = { medium: null, source: null, campaign: null };
|
|
1744
|
-
var loadScript = async (src) => new Promise(function(resolve, reject) {
|
|
1745
|
-
const script = document.createElement("script");
|
|
1746
|
-
script.src = src;
|
|
1747
|
-
script.onload = () => resolve();
|
|
1748
|
-
script.onerror = reject;
|
|
1749
|
-
document.head.appendChild(script);
|
|
1750
|
-
});
|
|
1751
|
-
var loadGoogleAnalytics = async () => {
|
|
1752
|
-
const googleAnalyticsMeasurementId = getConfig("googleAnalyticsMeasurementId");
|
|
1753
|
-
const dataLayerName = getConfig("googleAnalyticsDataLayer") || DEFAULT_DATA_LAYER_NAME;
|
|
1754
|
-
if (!googleAnalyticsMeasurementId) return Promise.resolve(false);
|
|
1755
|
-
const gtagScript = `https://www.googletagmanager.com/gtag/js?id=${googleAnalyticsMeasurementId}&l=${dataLayerName}`;
|
|
1756
|
-
return loadScript(gtagScript).then(() => true);
|
|
1757
|
-
};
|
|
1758
|
-
var triggerGoogleAnalyticsInitEvent = (sessionId) => {
|
|
1759
|
-
const eventName = getConfig("googleAnalyticsInitEvent") ?? DEFAULT_GA_INIT_EVENT;
|
|
1760
|
-
const eventPrefix = `ga_event_${eventName}_`;
|
|
1761
|
-
const eventKey = `${eventPrefix}${sessionId}`;
|
|
1762
|
-
if (typeof window.gtag === "undefined") return;
|
|
1763
|
-
if (!localStorage.getItem(eventKey)) {
|
|
1764
|
-
window.gtag("event", eventName);
|
|
1765
|
-
console.log(`Sending GA4 event "${eventName}" for the session "${sessionId}"`);
|
|
1766
|
-
localStorage.setItem(eventKey, "true");
|
|
1767
|
-
if (typeof window.dispatchEvent === "function") {
|
|
1768
|
-
const event = new CustomEvent(EVENTS.GA4_INIT_EVENT_SENT, {
|
|
1769
|
-
detail: { eventName, sessionId }
|
|
1770
|
-
});
|
|
1771
|
-
window.dispatchEvent(event);
|
|
1772
|
-
}
|
|
1773
|
-
}
|
|
1774
|
-
Object.keys(localStorage).forEach((key) => {
|
|
1775
|
-
if (key.startsWith(eventPrefix) && key !== eventKey) {
|
|
1776
|
-
localStorage.removeItem(key);
|
|
1777
|
-
}
|
|
1778
|
-
});
|
|
1779
|
-
};
|
|
1780
|
-
var getGoogleField = async (field) => {
|
|
1781
|
-
const googleAnalyticsMeasurementId = getConfig("googleAnalyticsMeasurementId");
|
|
1782
|
-
if (!googleAnalyticsMeasurementId) return Promise.resolve(void 0);
|
|
1783
|
-
return new Promise((resolve) => {
|
|
1784
|
-
window.gtag?.("get", googleAnalyticsMeasurementId, field, resolve);
|
|
1785
|
-
});
|
|
1786
|
-
};
|
|
1787
|
-
var trackingTagsTypes = {
|
|
1788
|
-
STC: "stc",
|
|
1789
|
-
UTM: "utm"
|
|
1790
|
-
};
|
|
1791
|
-
var getCampaignDetails = ({ needsTransformation = true } = {}) => {
|
|
1792
|
-
const { medium, source, campaign, content, term } = readQueryParams();
|
|
1793
|
-
if (!medium || !source || !campaign) return null;
|
|
1794
|
-
const [id, name] = campaign.split(STC.CAMPAIGN_SPLIT_SYMBOL);
|
|
1795
|
-
if (!id && !name) return null;
|
|
1796
|
-
const needsContent = typeof content !== "undefined" && content !== STC_INVALID_CONTENT;
|
|
1797
|
-
return {
|
|
1798
|
-
campaign: {
|
|
1799
|
-
medium: needsTransformation && STC_MEDIUM_TRANSFORMATIONS[medium] || medium,
|
|
1800
|
-
...typeof name !== "undefined" && { id },
|
|
1801
|
-
name: name ?? id,
|
|
1802
|
-
source,
|
|
1803
|
-
...needsContent && { content },
|
|
1804
|
-
...typeof term !== "undefined" && { term }
|
|
1805
|
-
}
|
|
1806
|
-
};
|
|
1807
|
-
};
|
|
1808
|
-
function readQueryParams() {
|
|
1809
|
-
const search = utils.getActualQueryString();
|
|
1810
|
-
const searchParams = new URLSearchParams(search);
|
|
1811
|
-
return getConfig("trackingTagsType") === trackingTagsTypes.UTM ? readFromUtm(searchParams) : readFromStc(searchParams);
|
|
1812
|
-
}
|
|
1813
|
-
function readFromStc(searchParams) {
|
|
1814
|
-
if (!hasStc(searchParams)) return EMPTY_STC;
|
|
1815
|
-
const stc = searchParams.get(STC.QUERY);
|
|
1816
|
-
const [medium, source, campaign, content, term] = stc?.split(STC.SPLIT_SYMBOL) || [];
|
|
1817
|
-
return { medium, source, campaign, content, term };
|
|
1818
|
-
}
|
|
1819
|
-
function hasStc(searchParams) {
|
|
1820
|
-
return searchParams.has(STC.QUERY);
|
|
1821
|
-
}
|
|
1822
|
-
function readFromUtm(searchParams) {
|
|
1823
|
-
const campaignId = searchParams.get(UTM_CAMPAIGN_ID);
|
|
1824
|
-
const campaignName = searchParams.get(UTM_CAMPAIGN);
|
|
1825
|
-
const medium = searchParams.get(UTM_MEDIUM);
|
|
1826
|
-
const source = searchParams.get(UTM_SOURCE);
|
|
1827
|
-
const content = searchParams.get(UTM_CONTENT);
|
|
1828
|
-
const term = searchParams.get(UTM_TERM);
|
|
1829
|
-
const campaign = campaignId ? `${campaignId}${STC.CAMPAIGN_SPLIT_SYMBOL}${campaignName}` : campaignName;
|
|
1830
|
-
const missingAnyMandatoryFields = !medium || !source || !campaign;
|
|
1831
|
-
if (missingAnyMandatoryFields && hasStc(searchParams)) {
|
|
1832
|
-
return readFromStc(searchParams);
|
|
1833
|
-
}
|
|
1834
|
-
return {
|
|
1835
|
-
campaign,
|
|
1836
|
-
medium,
|
|
1837
|
-
source,
|
|
1838
|
-
content: content ?? void 0,
|
|
1839
|
-
term: term ?? void 0
|
|
1840
|
-
};
|
|
1841
|
-
}
|
|
1842
|
-
var getGoogleClientId = async () => getGoogleField(FIELDS.clientId);
|
|
1843
|
-
var getGoogleSessionId = async () => {
|
|
1844
|
-
const sessionId = await getGoogleField(FIELDS.sessionId);
|
|
1845
|
-
if (sessionId) {
|
|
1846
|
-
triggerGoogleAnalyticsInitEvent(sessionId);
|
|
1847
|
-
}
|
|
1848
|
-
return sessionId;
|
|
1849
|
-
};
|
|
1850
|
-
function getGoogleConsentValue(consentType = "analytics_storage") {
|
|
1851
|
-
try {
|
|
1852
|
-
const value = window.google_tag_data?.ics?.getConsentState?.(consentType);
|
|
1853
|
-
if (value === CONSENT_STATE_GRANTED_VALUE) return CONSENT_STATES.granted;
|
|
1854
|
-
if (value === CONSENT_STATE_DENIED_VALUE) return CONSENT_STATES.denied;
|
|
1855
|
-
return void 0;
|
|
1856
|
-
} catch {
|
|
1857
|
-
return void 0;
|
|
1858
|
-
}
|
|
1859
|
-
}
|
|
1860
|
-
var getConsentState = () => getGoogleConsentValue() ?? CONSENT_STATES.denied;
|
|
1861
|
-
var setGoogleUserId = (userId) => {
|
|
1862
|
-
const googleAnalyticsMeasurementId = getConfig("googleAnalyticsMeasurementId");
|
|
1863
|
-
if (!googleAnalyticsMeasurementId || !userId) return;
|
|
1864
|
-
window.gtag?.("set", "user_id", userId);
|
|
1865
|
-
};
|
|
1866
|
-
var sendGoogleConsents = (mode = "default", consents) => {
|
|
1867
|
-
window.gtag?.(
|
|
1868
|
-
"consent",
|
|
1869
|
-
mode,
|
|
1870
|
-
consents || {
|
|
1871
|
-
analytics_storage: CONSENT_STATES.denied,
|
|
1872
|
-
ad_user_data: CONSENT_STATES.denied,
|
|
1873
|
-
ad_personalization: CONSENT_STATES.denied,
|
|
1874
|
-
ad_storage: CONSENT_STATES.denied
|
|
1875
|
-
}
|
|
1876
|
-
);
|
|
1877
|
-
};
|
|
1878
|
-
|
|
1879
1649
|
// src/tcf.ts
|
|
1880
1650
|
var TCF_COOKIE_KEY = "borosTcf";
|
|
1881
1651
|
var TCF_API_VERSION = 2;
|
|
@@ -1929,17 +1699,30 @@ var checkTcfIsAvailable = () => {
|
|
|
1929
1699
|
};
|
|
1930
1700
|
var checkHasUserConsentedAnalytics = (userConsents) => NEEDED_PURPOSES.analytics.every((purposeId) => userConsents[`${purposeId}`]);
|
|
1931
1701
|
var checkHasUserConsentedAdvertising = (userConsents) => NEEDED_PURPOSES.advertising.every((purposeId) => userConsents[`${purposeId}`]);
|
|
1932
|
-
var trackTcf = ({ gdprPrivacy }) =>
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
)
|
|
1702
|
+
var trackTcf = ({ gdprPrivacy }) => {
|
|
1703
|
+
const isAnalyticsAccepted = gdprPrivacy.analytics === USER_GDPR.ACCEPTED;
|
|
1704
|
+
const isAdvertisingAccepted = gdprPrivacy.advertising === USER_GDPR.ACCEPTED;
|
|
1705
|
+
return segmentWrapper_default.track(
|
|
1706
|
+
CMP_TRACK_EVENT,
|
|
1707
|
+
{
|
|
1708
|
+
...TCF_TRACK_PROPERTIES,
|
|
1709
|
+
...getConfig("tcfTrackDefaultProperties") || {}
|
|
1710
|
+
},
|
|
1711
|
+
{
|
|
1712
|
+
// Consent Mode properties for Segment → GA4 mapping (v5)
|
|
1713
|
+
// These are sent as event properties and mapped in Segment GA4 Device Mode to GA4 Consent Mode
|
|
1714
|
+
google_consents: {
|
|
1715
|
+
analytics_storage: isAnalyticsAccepted ? "granted" : "denied",
|
|
1716
|
+
ad_storage: isAdvertisingAccepted ? "granted" : "denied",
|
|
1717
|
+
ad_user_data: isAdvertisingAccepted ? "granted" : "denied",
|
|
1718
|
+
ad_personalization: isAdvertisingAccepted ? "granted" : "denied"
|
|
1719
|
+
},
|
|
1720
|
+
// Keep gdpr_privacy in context for compatibility with other integrations
|
|
1721
|
+
gdpr_privacy: gdprPrivacy.analytics,
|
|
1722
|
+
gdpr_privacy_advertising: gdprPrivacy.advertising
|
|
1723
|
+
}
|
|
1724
|
+
);
|
|
1725
|
+
};
|
|
1943
1726
|
var getGdprPrivacyValue = () => {
|
|
1944
1727
|
const gdprPrivacyValue = gdprState.get();
|
|
1945
1728
|
if (gdprPrivacyValue !== void 0) return Promise.resolve(gdprPrivacyValue);
|
|
@@ -1947,6 +1730,9 @@ var getGdprPrivacyValue = () => {
|
|
|
1947
1730
|
gdprState.addListener((gdprPrivacyValue2) => resolve(gdprPrivacyValue2));
|
|
1948
1731
|
});
|
|
1949
1732
|
};
|
|
1733
|
+
var getGdprPrivacyValueSync = () => {
|
|
1734
|
+
return gdprState.get();
|
|
1735
|
+
};
|
|
1950
1736
|
var checkAnalyticsGdprIsAccepted = (gdprPrivacyValue) => {
|
|
1951
1737
|
return gdprPrivacyValue?.analytics === USER_GDPR.ACCEPTED;
|
|
1952
1738
|
};
|
|
@@ -2009,11 +1795,7 @@ function initTcfTracking() {
|
|
|
2009
1795
|
analytics: analyticsStateKey,
|
|
2010
1796
|
advertising: advertisingStateKey
|
|
2011
1797
|
};
|
|
2012
|
-
|
|
2013
|
-
const isDidomiMigration = isClient && window.sessionStorage.getItem(MIGRATION_DIDOMI_SEGMENT_WRAPPER_FLAG);
|
|
2014
|
-
return !isDidomiMigration && trackTcf({
|
|
2015
|
-
gdprPrivacy
|
|
2016
|
-
});
|
|
1798
|
+
trackTcf({ gdprPrivacy });
|
|
2017
1799
|
}
|
|
2018
1800
|
}
|
|
2019
1801
|
});
|
|
@@ -2121,14 +1903,10 @@ var getTrackIntegrations = async ({
|
|
|
2121
1903
|
}) => {
|
|
2122
1904
|
const isGdprAccepted = checkAnalyticsGdprIsAccepted(gdprPrivacyValue);
|
|
2123
1905
|
let marketingCloudVisitorId;
|
|
2124
|
-
let sessionId;
|
|
2125
|
-
let clientId;
|
|
2126
1906
|
try {
|
|
2127
1907
|
if (isGdprAccepted) {
|
|
2128
1908
|
marketingCloudVisitorId = await getAdobeMCVisitorID();
|
|
2129
1909
|
}
|
|
2130
|
-
sessionId = await getGoogleSessionId();
|
|
2131
|
-
clientId = await getGoogleClientId();
|
|
2132
1910
|
} catch (error) {
|
|
2133
1911
|
console.error(error);
|
|
2134
1912
|
}
|
|
@@ -2136,10 +1914,7 @@ var getTrackIntegrations = async ({
|
|
|
2136
1914
|
return {
|
|
2137
1915
|
...restOfIntegrations,
|
|
2138
1916
|
"Adobe Analytics": marketingCloudVisitorId ? { marketingCloudVisitorId } : true,
|
|
2139
|
-
"Google Analytics 4":
|
|
2140
|
-
clientId,
|
|
2141
|
-
sessionId
|
|
2142
|
-
} : true
|
|
1917
|
+
"Google Analytics 4 Web": true
|
|
2143
1918
|
};
|
|
2144
1919
|
};
|
|
2145
1920
|
var getRestOfIntegrations = ({
|
|
@@ -2178,9 +1953,6 @@ var getExternalIds = ({
|
|
|
2178
1953
|
);
|
|
2179
1954
|
return { externalIds: uniqueExternalIds };
|
|
2180
1955
|
};
|
|
2181
|
-
var getConsentValue = (gdprValue) => {
|
|
2182
|
-
return gdprValue === USER_GDPR.ACCEPTED ? CONSENT_STATES.granted : CONSENT_STATES.denied;
|
|
2183
|
-
};
|
|
2184
1956
|
var decorateContextWithNeededData = async ({
|
|
2185
1957
|
event = "",
|
|
2186
1958
|
context = {}
|
|
@@ -2192,10 +1964,6 @@ var decorateContextWithNeededData = async ({
|
|
|
2192
1964
|
getTrackIntegrations({ gdprPrivacyValue, event }),
|
|
2193
1965
|
getXandrId({ gdprPrivacyValueAdvertising })
|
|
2194
1966
|
]);
|
|
2195
|
-
const analyticsConsentValue = getGoogleConsentValue("analytics_storage") ?? getConsentValue(gdprPrivacyValueAnalytics);
|
|
2196
|
-
const adUserDataConsentValue = getGoogleConsentValue("ad_user_data") ?? getConsentValue(gdprPrivacyValueAdvertising);
|
|
2197
|
-
const adPersonalizationConsentValue = getGoogleConsentValue("ad_personalization") ?? getConsentValue(gdprPrivacyValueAdvertising);
|
|
2198
|
-
const adStorageConsentValue = getGoogleConsentValue("ad_storage") ?? getConsentValue(gdprPrivacyValueAdvertising);
|
|
2199
1967
|
if (!isGdprAccepted) {
|
|
2200
1968
|
context.integrations = {
|
|
2201
1969
|
...context.integrations ?? {},
|
|
@@ -2204,21 +1972,13 @@ var decorateContextWithNeededData = async ({
|
|
|
2204
1972
|
Webhook: true
|
|
2205
1973
|
};
|
|
2206
1974
|
}
|
|
2207
|
-
const google_consents = {
|
|
2208
|
-
analytics_storage: analyticsConsentValue,
|
|
2209
|
-
ad_user_data: adUserDataConsentValue,
|
|
2210
|
-
ad_personalization: adPersonalizationConsentValue,
|
|
2211
|
-
ad_storage: adStorageConsentValue
|
|
2212
|
-
};
|
|
2213
1975
|
return {
|
|
2214
1976
|
...context,
|
|
2215
1977
|
...!isGdprAccepted && { ip: "0.0.0.0" },
|
|
2216
1978
|
...getExternalIds({ context, xandrId }),
|
|
2217
|
-
|
|
2218
|
-
clientVersion: `segment-wrapper@${"4.36.2"}`,
|
|
1979
|
+
clientVersion: `segment-wrapper@${"5.0.0-beta.1"}`,
|
|
2219
1980
|
gdpr_privacy: gdprPrivacyValueAnalytics,
|
|
2220
1981
|
gdpr_privacy_advertising: gdprPrivacyValueAdvertising,
|
|
2221
|
-
google_consents,
|
|
2222
1982
|
integrations: {
|
|
2223
1983
|
...context.integrations,
|
|
2224
1984
|
...integrations
|
|
@@ -2244,10 +2004,6 @@ var track = (event, properties, context = {}, callback) => new Promise((resolve)
|
|
|
2244
2004
|
resolve();
|
|
2245
2005
|
}
|
|
2246
2006
|
};
|
|
2247
|
-
const needsConsentManagement = getConfig("googleAnalyticsConsentManagement");
|
|
2248
|
-
if (needsConsentManagement && event === CMP_TRACK_EVENT) {
|
|
2249
|
-
sendGoogleConsents("update", newContext.google_consents);
|
|
2250
|
-
}
|
|
2251
2007
|
window.analytics.track(
|
|
2252
2008
|
event,
|
|
2253
2009
|
newProperties,
|
|
@@ -2267,7 +2023,6 @@ var track = (event, properties, context = {}, callback) => new Promise((resolve)
|
|
|
2267
2023
|
var identify = async (userIdParam, traits, options, callback) => {
|
|
2268
2024
|
const gdprPrivacyValue = await getGdprPrivacyValue();
|
|
2269
2025
|
const userId = getUserId(userIdParam);
|
|
2270
|
-
setGoogleUserId(userId);
|
|
2271
2026
|
return window.analytics.identify(
|
|
2272
2027
|
userId,
|
|
2273
2028
|
checkAnalyticsGdprIsAccepted(gdprPrivacyValue) ? traits : {},
|
|
@@ -2311,14 +2066,166 @@ if (isClient) {
|
|
|
2311
2066
|
}
|
|
2312
2067
|
}
|
|
2313
2068
|
|
|
2069
|
+
// src/middlewares/source/pageReferrer.ts
|
|
2070
|
+
var referrerState = {
|
|
2071
|
+
spaReferrer: "",
|
|
2072
|
+
referrer: ""
|
|
2073
|
+
};
|
|
2074
|
+
var utils = {
|
|
2075
|
+
/**
|
|
2076
|
+
* @returns The referrer of the document
|
|
2077
|
+
*/
|
|
2078
|
+
getDocumentReferrer: () => document.referrer,
|
|
2079
|
+
/**
|
|
2080
|
+
* @returns The actual location with protocol, domain and pathname
|
|
2081
|
+
*/
|
|
2082
|
+
getActualLocation: () => {
|
|
2083
|
+
const { origin, pathname } = window.location;
|
|
2084
|
+
return `${origin}${pathname}`;
|
|
2085
|
+
},
|
|
2086
|
+
/**
|
|
2087
|
+
* @returns The actual query string
|
|
2088
|
+
*/
|
|
2089
|
+
getActualQueryString: () => {
|
|
2090
|
+
const { search } = window.location;
|
|
2091
|
+
return search;
|
|
2092
|
+
}
|
|
2093
|
+
};
|
|
2094
|
+
var getPageReferrer = ({ isPageTrack = false } = {}) => {
|
|
2095
|
+
const { referrer, spaReferrer } = referrerState;
|
|
2096
|
+
const referrerToUse = isPageTrack ? referrer : spaReferrer;
|
|
2097
|
+
return referrerToUse || utils.getDocumentReferrer();
|
|
2098
|
+
};
|
|
2099
|
+
var updatePageReferrer = () => {
|
|
2100
|
+
referrerState.spaReferrer = getPageReferrer({ isPageTrack: true });
|
|
2101
|
+
referrerState.referrer = utils.getActualLocation();
|
|
2102
|
+
};
|
|
2103
|
+
var pageReferrer = ({ payload, next }) => {
|
|
2104
|
+
const {
|
|
2105
|
+
obj: { context }
|
|
2106
|
+
} = payload;
|
|
2107
|
+
const { isPageTrack } = context;
|
|
2108
|
+
const referrer = getPageReferrer({ isPageTrack });
|
|
2109
|
+
payload.obj.context = {
|
|
2110
|
+
...context,
|
|
2111
|
+
page: {
|
|
2112
|
+
...context.page,
|
|
2113
|
+
referrer
|
|
2114
|
+
}
|
|
2115
|
+
};
|
|
2116
|
+
if (isPageTrack) {
|
|
2117
|
+
updatePageReferrer();
|
|
2118
|
+
}
|
|
2119
|
+
next(payload);
|
|
2120
|
+
};
|
|
2121
|
+
|
|
2122
|
+
// src/repositories/googleRepository.ts
|
|
2123
|
+
var STC = {
|
|
2124
|
+
QUERY: "stc",
|
|
2125
|
+
SPLIT_SYMBOL: "-",
|
|
2126
|
+
CAMPAIGN_SPLIT_SYMBOL: ":"
|
|
2127
|
+
};
|
|
2128
|
+
var UTM_CAMPAIGN = "utm_campaign";
|
|
2129
|
+
var UTM_MEDIUM = "utm_medium";
|
|
2130
|
+
var UTM_SOURCE = "utm_source";
|
|
2131
|
+
var UTM_CONTENT = "utm_content";
|
|
2132
|
+
var UTM_CAMPAIGN_ID = "utm_id";
|
|
2133
|
+
var UTM_TERM = "utm_term";
|
|
2134
|
+
var STC_MEDIUM_TRANSFORMATIONS = {
|
|
2135
|
+
aff: "affiliate",
|
|
2136
|
+
dis: "display",
|
|
2137
|
+
em: "email",
|
|
2138
|
+
met: "paid-metasearch",
|
|
2139
|
+
sem: "paid-search",
|
|
2140
|
+
rt: "display",
|
|
2141
|
+
sm: "social-media",
|
|
2142
|
+
sp: "paid-social",
|
|
2143
|
+
pn: "push-notification",
|
|
2144
|
+
cs: "cross-sites"
|
|
2145
|
+
};
|
|
2146
|
+
var STC_INVALID_CONTENT = "na";
|
|
2147
|
+
var EMPTY_STC = { medium: null, source: null, campaign: null };
|
|
2148
|
+
var trackingTagsTypes = {
|
|
2149
|
+
STC: "stc",
|
|
2150
|
+
UTM: "utm"
|
|
2151
|
+
};
|
|
2152
|
+
var getCampaignDetails = ({ needsTransformation = true } = {}) => {
|
|
2153
|
+
const { medium, source, campaign, content, term } = readQueryParams();
|
|
2154
|
+
if (!medium || !source || !campaign) return null;
|
|
2155
|
+
const [id, name] = campaign.split(STC.CAMPAIGN_SPLIT_SYMBOL);
|
|
2156
|
+
if (!id && !name) return null;
|
|
2157
|
+
const needsContent = typeof content !== "undefined" && content !== STC_INVALID_CONTENT;
|
|
2158
|
+
return {
|
|
2159
|
+
campaign: {
|
|
2160
|
+
medium: needsTransformation && STC_MEDIUM_TRANSFORMATIONS[medium] || medium,
|
|
2161
|
+
...typeof name !== "undefined" && { id },
|
|
2162
|
+
name: name ?? id,
|
|
2163
|
+
source,
|
|
2164
|
+
...needsContent && { content },
|
|
2165
|
+
...typeof term !== "undefined" && { term }
|
|
2166
|
+
}
|
|
2167
|
+
};
|
|
2168
|
+
};
|
|
2169
|
+
function readQueryParams() {
|
|
2170
|
+
const search = utils.getActualQueryString();
|
|
2171
|
+
const searchParams = new URLSearchParams(search);
|
|
2172
|
+
return getConfig("trackingTagsType") === trackingTagsTypes.UTM ? readFromUtm(searchParams) : readFromStc(searchParams);
|
|
2173
|
+
}
|
|
2174
|
+
function readFromStc(searchParams) {
|
|
2175
|
+
if (!hasStc(searchParams)) return EMPTY_STC;
|
|
2176
|
+
const stc = searchParams.get(STC.QUERY);
|
|
2177
|
+
const [medium, source, campaign, content, term] = stc?.split(STC.SPLIT_SYMBOL) || [];
|
|
2178
|
+
return { medium, source, campaign, content, term };
|
|
2179
|
+
}
|
|
2180
|
+
function hasStc(searchParams) {
|
|
2181
|
+
return searchParams.has(STC.QUERY);
|
|
2182
|
+
}
|
|
2183
|
+
function readFromUtm(searchParams) {
|
|
2184
|
+
const campaignId = searchParams.get(UTM_CAMPAIGN_ID);
|
|
2185
|
+
const campaignName = searchParams.get(UTM_CAMPAIGN);
|
|
2186
|
+
const medium = searchParams.get(UTM_MEDIUM);
|
|
2187
|
+
const source = searchParams.get(UTM_SOURCE);
|
|
2188
|
+
const content = searchParams.get(UTM_CONTENT);
|
|
2189
|
+
const term = searchParams.get(UTM_TERM);
|
|
2190
|
+
const campaign = campaignId ? `${campaignId}${STC.CAMPAIGN_SPLIT_SYMBOL}${campaignName}` : campaignName;
|
|
2191
|
+
const missingAnyMandatoryFields = !medium || !source || !campaign;
|
|
2192
|
+
if (missingAnyMandatoryFields && hasStc(searchParams)) {
|
|
2193
|
+
return readFromStc(searchParams);
|
|
2194
|
+
}
|
|
2195
|
+
return {
|
|
2196
|
+
campaign,
|
|
2197
|
+
medium,
|
|
2198
|
+
source,
|
|
2199
|
+
content: content ?? void 0,
|
|
2200
|
+
term: term ?? void 0
|
|
2201
|
+
};
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2314
2204
|
// src/middlewares/source/campaignContext.ts
|
|
2315
2205
|
var campaignContext = ({ payload, next }) => {
|
|
2316
|
-
const
|
|
2317
|
-
|
|
2318
|
-
|
|
2206
|
+
const campaignDetails = getCampaignDetails();
|
|
2207
|
+
payload.obj.context = {
|
|
2208
|
+
...payload.obj.context,
|
|
2209
|
+
...campaignDetails
|
|
2210
|
+
};
|
|
2211
|
+
next(payload);
|
|
2212
|
+
};
|
|
2213
|
+
|
|
2214
|
+
// src/middlewares/source/consentMode.ts
|
|
2215
|
+
var consentMode = ({ payload, next }) => {
|
|
2216
|
+
const gdprPrivacyValue = getGdprPrivacyValueSync();
|
|
2217
|
+
if (gdprPrivacyValue) {
|
|
2218
|
+
const { analytics, advertising } = gdprPrivacyValue;
|
|
2219
|
+
const isAnalyticsAccepted = analytics === USER_GDPR.ACCEPTED;
|
|
2220
|
+
const isAdvertisingAccepted = advertising === USER_GDPR.ACCEPTED;
|
|
2319
2221
|
payload.obj.context = {
|
|
2320
2222
|
...payload.obj.context,
|
|
2321
|
-
|
|
2223
|
+
google_consents: {
|
|
2224
|
+
analytics_storage: isAnalyticsAccepted ? "granted" : "denied",
|
|
2225
|
+
ad_storage: isAdvertisingAccepted ? "granted" : "denied",
|
|
2226
|
+
ad_user_data: isAdvertisingAccepted ? "granted" : "denied",
|
|
2227
|
+
ad_personalization: isAdvertisingAccepted ? "granted" : "denied"
|
|
2228
|
+
}
|
|
2322
2229
|
};
|
|
2323
2230
|
}
|
|
2324
2231
|
next(payload);
|
|
@@ -2548,6 +2455,11 @@ var TCFEvents = /* @__PURE__ */ ((TCFEvents2) => {
|
|
|
2548
2455
|
return TCFEvents2;
|
|
2549
2456
|
})(TCFEvents || {});
|
|
2550
2457
|
|
|
2458
|
+
// src/events.ts
|
|
2459
|
+
var EVENTS = {
|
|
2460
|
+
GA4_INIT_EVENT_SENT: "ga4InitEventSent"
|
|
2461
|
+
};
|
|
2462
|
+
|
|
2551
2463
|
// src/utils/storage.ts
|
|
2552
2464
|
var storage = ({
|
|
2553
2465
|
type = "localStorage",
|
|
@@ -2605,6 +2517,7 @@ var addMiddlewares = () => {
|
|
|
2605
2517
|
const experimentalPageDataMiddleware = getConfig("experimentalPageDataMiddleware");
|
|
2606
2518
|
window.analytics.addSourceMiddleware?.(userTraits);
|
|
2607
2519
|
window.analytics.addSourceMiddleware?.(defaultContextProperties);
|
|
2520
|
+
window.analytics.addSourceMiddleware?.(consentMode);
|
|
2608
2521
|
window.analytics.addSourceMiddleware?.(campaignContext);
|
|
2609
2522
|
window.analytics.addSourceMiddleware?.(userScreenInfo);
|
|
2610
2523
|
window.analytics.addSourceMiddleware?.(pageReferrer);
|
|
@@ -2613,37 +2526,12 @@ var addMiddlewares = () => {
|
|
|
2613
2526
|
}
|
|
2614
2527
|
};
|
|
2615
2528
|
if (isClient && window.analytics) {
|
|
2616
|
-
const googleAnalyticsMeasurementId = getConfig("googleAnalyticsMeasurementId");
|
|
2617
|
-
const dataLayerName = getConfig("googleAnalyticsDataLayer") || DEFAULT_DATA_LAYER_NAME;
|
|
2618
|
-
const needsConsentManagement = getConfig("googleAnalyticsConsentManagement");
|
|
2619
|
-
if (googleAnalyticsMeasurementId) {
|
|
2620
|
-
const googleAnalyticsConfig = getConfig("googleAnalyticsConfig");
|
|
2621
|
-
window[dataLayerName] = window[dataLayerName] || [];
|
|
2622
|
-
window.gtag = window.gtag || function gtag() {
|
|
2623
|
-
;
|
|
2624
|
-
window[dataLayerName].push(arguments);
|
|
2625
|
-
};
|
|
2626
|
-
window.gtag("js", /* @__PURE__ */ new Date());
|
|
2627
|
-
if (needsConsentManagement) {
|
|
2628
|
-
sendGoogleConsents();
|
|
2629
|
-
}
|
|
2630
|
-
window.gtag("config", googleAnalyticsMeasurementId, {
|
|
2631
|
-
cookie_prefix: "segment",
|
|
2632
|
-
send_page_view: false,
|
|
2633
|
-
...googleAnalyticsConfig,
|
|
2634
|
-
...getCampaignDetails()
|
|
2635
|
-
});
|
|
2636
|
-
loadGoogleAnalytics().catch((error) => {
|
|
2637
|
-
console.error("[segment-wrapper] Failed to load Google Analytics", error);
|
|
2638
|
-
});
|
|
2639
|
-
}
|
|
2640
2529
|
window.analytics.ready(checkAnonymousId);
|
|
2641
2530
|
window.analytics.addSourceMiddleware ? addMiddlewares() : window.analytics.ready(addMiddlewares);
|
|
2642
2531
|
}
|
|
2643
2532
|
var index_default = segmentWrapper_default;
|
|
2644
2533
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2645
2534
|
0 && (module.exports = {
|
|
2646
|
-
CONSENT_STATES,
|
|
2647
2535
|
EVENTS,
|
|
2648
2536
|
TCFEvents,
|
|
2649
2537
|
UserGDPR,
|
|
@@ -2652,6 +2540,7 @@ var index_default = segmentWrapper_default;
|
|
|
2652
2540
|
createUniversalId,
|
|
2653
2541
|
getAdobeMCVisitorID,
|
|
2654
2542
|
getAdobeVisitorData,
|
|
2543
|
+
getCampaignDetails,
|
|
2655
2544
|
getConfig,
|
|
2656
2545
|
getStorageItem,
|
|
2657
2546
|
getUniversalId,
|
|
@@ -2666,7 +2555,8 @@ var index_default = segmentWrapper_default;
|
|
|
2666
2555
|
setConfig,
|
|
2667
2556
|
setStorageItem,
|
|
2668
2557
|
storage,
|
|
2669
|
-
toCookieDomain
|
|
2558
|
+
toCookieDomain,
|
|
2559
|
+
trackingTagsTypes
|
|
2670
2560
|
});
|
|
2671
2561
|
/**
|
|
2672
2562
|
* @license
|