@c15t/scripts 3.0.0-alpha.2 → 3.0.0-alpha.3
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/AGENTS.md +129 -63
- package/README.md +8 -29
- package/SKILL.md +33 -0
- package/dist/adobe-analytics.js +2 -0
- package/dist/ahrefs-analytics.js +2 -0
- package/dist/amplitude.js +2 -0
- package/dist/clearbit.js +2 -0
- package/dist/cloudflare-web-analytics.js +2 -0
- package/dist/cloudflare-zaraz.js +2 -0
- package/dist/crisp.js +2 -0
- package/dist/databuddy.js +2 -0
- package/dist/e2e-test-utils.js +2 -139
- package/dist/engine/compile.js +2 -89
- package/dist/engine/runtime.js +2 -448
- package/dist/events.js +2 -218
- package/dist/fathom-analytics.js +2 -0
- package/dist/front-chat.js +2 -0
- package/dist/google-tag-manager.js +2 -0
- package/dist/google-tag.js +2 -0
- package/dist/heap.js +2 -0
- package/dist/hightouch.js +2 -0
- package/dist/hotjar.js +2 -0
- package/dist/intercom.js +2 -0
- package/dist/klaviyo.js +2 -0
- package/dist/linkedin-insights.js +2 -0
- package/dist/logrocket.js +2 -0
- package/dist/matomo-analytics.js +2 -0
- package/dist/meta-pixel.js +2 -0
- package/dist/microsoft-clarity.js +2 -0
- package/dist/microsoft-uet.js +2 -0
- package/dist/mixpanel-analytics.js +2 -0
- package/dist/one-dollar-stats.js +2 -0
- package/dist/openai-pixel.js +2 -0
- package/dist/pinterest-tag.js +2 -0
- package/dist/pirsch.js +2 -0
- package/dist/plausible-analytics.js +2 -0
- package/dist/posthog.js +2 -0
- package/dist/promptwatch.js +2 -0
- package/dist/reddit-pixel.js +2 -0
- package/dist/registry.js +2 -422
- package/dist/resolve.js +2 -33
- package/dist/rudderstack.js +2 -0
- package/dist/rybbit-analytics.js +2 -0
- package/dist/segment.js +2 -0
- package/dist/snapchat-pixel.js +2 -0
- package/dist/tiktok-pixel.js +2 -0
- package/dist/types.js +2 -16
- package/dist/umami-analytics.js +2 -0
- package/dist/vendors/_shared/attributes.js +2 -14
- package/dist/vendors/_shared/google-consent.js +2 -27
- package/dist/vendors/_shared/install-builders.js +2 -21
- package/dist/vendors/_shared/required-id.js +2 -0
- package/dist/vendors/_shared/script-url.js +2 -28
- package/dist/vendors/ads-and-pixels/linkedin-insights.js +2 -48
- package/dist/vendors/ads-and-pixels/meta-pixel.js +2 -153
- package/dist/vendors/ads-and-pixels/microsoft-uet.js +2 -110
- package/dist/vendors/ads-and-pixels/openai-pixel.js +2 -88
- package/dist/vendors/ads-and-pixels/pinterest-tag.js +2 -123
- package/dist/vendors/ads-and-pixels/reddit-pixel.js +2 -107
- package/dist/vendors/ads-and-pixels/snapchat-pixel.js +2 -87
- package/dist/vendors/ads-and-pixels/tiktok-pixel.js +2 -89
- package/dist/vendors/ads-and-pixels/x-pixel.js +2 -48
- package/dist/vendors/analytics/adobe-analytics.js +2 -49
- package/dist/vendors/analytics/ahrefs-analytics.js +2 -27
- package/dist/vendors/analytics/amplitude.js +2 -134
- package/dist/vendors/analytics/clearbit.js +2 -28
- package/dist/vendors/analytics/cloudflare-web-analytics.js +2 -32
- package/dist/vendors/analytics/databuddy.js +2 -103
- package/dist/vendors/analytics/fathom-analytics.js +2 -35
- package/dist/vendors/analytics/google-tag.js +2 -78
- package/dist/vendors/analytics/heap.js +2 -134
- package/dist/vendors/analytics/hightouch.js +2 -109
- package/dist/vendors/analytics/hotjar.js +2 -44
- package/dist/vendors/analytics/logrocket.js +2 -58
- package/dist/vendors/analytics/matomo-analytics.js +2 -191
- package/dist/vendors/analytics/microsoft-clarity.js +2 -100
- package/dist/vendors/analytics/mixpanel-analytics.js +2 -93
- package/dist/vendors/analytics/one-dollar-stats.js +2 -30
- package/dist/vendors/analytics/pirsch.js +2 -67
- package/dist/vendors/analytics/plausible-analytics.js +2 -81
- package/dist/vendors/analytics/posthog.js +2 -200
- package/dist/vendors/analytics/promptwatch.js +2 -29
- package/dist/vendors/analytics/rudderstack.js +2 -183
- package/dist/vendors/analytics/rybbit-analytics.js +2 -63
- package/dist/vendors/analytics/segment.js +2 -65
- package/dist/vendors/analytics/umami-analytics.js +2 -39
- package/dist/vendors/analytics/vercel-analytics.js +2 -53
- package/dist/vendors/email-and-sms/klaviyo.js +2 -0
- package/dist/vendors/functional/crisp.js +2 -100
- package/dist/vendors/functional/front-chat.js +2 -64
- package/dist/vendors/functional/intercom.js +2 -45
- package/dist/vendors/tag-managers/cloudflare-zaraz.js +2 -98
- package/dist/vendors/tag-managers/google-tag-manager.js +2 -73
- package/dist/vercel-analytics.js +2 -0
- package/dist/x-pixel.js +2 -0
- package/dist-types/adobe-analytics.d.ts +2 -0
- package/dist-types/ahrefs-analytics.d.ts +2 -0
- package/dist-types/amplitude.d.ts +2 -0
- package/dist-types/clearbit.d.ts +2 -0
- package/dist-types/cloudflare-web-analytics.d.ts +2 -0
- package/dist-types/cloudflare-zaraz.d.ts +2 -0
- package/dist-types/crisp.d.ts +2 -0
- package/dist-types/databuddy.d.ts +2 -0
- package/dist-types/e2e-test-utils.d.ts +2 -0
- package/dist-types/engine/compile.d.ts +2 -3
- package/dist-types/engine/runtime.d.ts +2 -3
- package/dist-types/events.d.ts +2 -46
- package/dist-types/fathom-analytics.d.ts +2 -0
- package/dist-types/front-chat.d.ts +2 -0
- package/dist-types/google-tag-manager.d.ts +2 -0
- package/dist-types/google-tag.d.ts +2 -0
- package/dist-types/heap.d.ts +2 -0
- package/dist-types/hightouch.d.ts +2 -0
- package/dist-types/hotjar.d.ts +2 -0
- package/dist-types/intercom.d.ts +2 -0
- package/dist-types/klaviyo.d.ts +2 -0
- package/dist-types/linkedin-insights.d.ts +2 -0
- package/dist-types/logrocket.d.ts +2 -0
- package/dist-types/matomo-analytics.d.ts +2 -0
- package/dist-types/meta-pixel.d.ts +2 -0
- package/dist-types/microsoft-clarity.d.ts +2 -0
- package/dist-types/microsoft-uet.d.ts +2 -0
- package/dist-types/mixpanel-analytics.d.ts +2 -0
- package/dist-types/one-dollar-stats.d.ts +2 -0
- package/dist-types/openai-pixel.d.ts +2 -0
- package/dist-types/pinterest-tag.d.ts +2 -0
- package/dist-types/pirsch.d.ts +2 -0
- package/dist-types/plausible-analytics.d.ts +2 -0
- package/dist-types/posthog.d.ts +2 -0
- package/dist-types/promptwatch.d.ts +2 -0
- package/dist-types/reddit-pixel.d.ts +2 -0
- package/dist-types/registry.d.ts +2 -485
- package/dist-types/resolve.d.ts +2 -9
- package/dist-types/rudderstack.d.ts +2 -0
- package/dist-types/rybbit-analytics.d.ts +2 -0
- package/dist-types/segment.d.ts +2 -0
- package/dist-types/snapchat-pixel.d.ts +2 -0
- package/dist-types/tiktok-pixel.d.ts +2 -0
- package/dist-types/types.d.ts +2 -314
- package/dist-types/umami-analytics.d.ts +2 -0
- package/dist-types/vendors/_shared/attributes.d.ts +2 -35
- package/dist-types/vendors/_shared/google-consent.d.ts +2 -47
- package/dist-types/vendors/_shared/install-builders.d.ts +2 -30
- package/dist-types/vendors/_shared/required-id.d.ts +2 -0
- package/dist-types/vendors/_shared/script-url.d.ts +2 -75
- package/dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts +2 -92
- package/dist-types/vendors/ads-and-pixels/meta-pixel.d.ts +2 -289
- package/dist-types/vendors/ads-and-pixels/microsoft-uet.d.ts +2 -105
- package/dist-types/vendors/ads-and-pixels/openai-pixel.d.ts +2 -211
- package/dist-types/vendors/ads-and-pixels/pinterest-tag.d.ts +2 -295
- package/dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts +2 -210
- package/dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts +2 -171
- package/dist-types/vendors/ads-and-pixels/tiktok-pixel.d.ts +2 -106
- package/dist-types/vendors/ads-and-pixels/x-pixel.d.ts +2 -183
- package/dist-types/vendors/analytics/adobe-analytics.d.ts +2 -75
- package/dist-types/vendors/analytics/ahrefs-analytics.d.ts +2 -62
- package/dist-types/vendors/analytics/amplitude.d.ts +2 -234
- package/dist-types/vendors/analytics/clearbit.d.ts +2 -60
- package/dist-types/vendors/analytics/cloudflare-web-analytics.d.ts +2 -67
- package/dist-types/vendors/analytics/databuddy.d.ts +2 -147
- package/dist-types/vendors/analytics/fathom-analytics.d.ts +2 -90
- package/dist-types/vendors/analytics/google-tag.d.ts +2 -95
- package/dist-types/vendors/analytics/heap.d.ts +2 -316
- package/dist-types/vendors/analytics/hightouch.d.ts +2 -285
- package/dist-types/vendors/analytics/hotjar.d.ts +2 -73
- package/dist-types/vendors/analytics/logrocket.d.ts +2 -101
- package/dist-types/vendors/analytics/matomo-analytics.d.ts +2 -41
- package/dist-types/vendors/analytics/microsoft-clarity.d.ts +2 -97
- package/dist-types/vendors/analytics/mixpanel-analytics.d.ts +2 -113
- package/dist-types/vendors/analytics/one-dollar-stats.d.ts +2 -39
- package/dist-types/vendors/analytics/pirsch.d.ts +2 -96
- package/dist-types/vendors/analytics/plausible-analytics.d.ts +2 -122
- package/dist-types/vendors/analytics/posthog.d.ts +2 -175
- package/dist-types/vendors/analytics/promptwatch.d.ts +2 -36
- package/dist-types/vendors/analytics/rudderstack.d.ts +2 -330
- package/dist-types/vendors/analytics/rybbit-analytics.d.ts +2 -82
- package/dist-types/vendors/analytics/segment.d.ts +2 -164
- package/dist-types/vendors/analytics/umami-analytics.d.ts +2 -93
- package/dist-types/vendors/analytics/vercel-analytics.d.ts +2 -66
- package/dist-types/vendors/email-and-sms/klaviyo.d.ts +2 -0
- package/dist-types/vendors/functional/crisp.d.ts +2 -78
- package/dist-types/vendors/functional/front-chat.d.ts +2 -62
- package/dist-types/vendors/functional/intercom.d.ts +2 -135
- package/dist-types/vendors/tag-managers/cloudflare-zaraz.d.ts +2 -39
- package/dist-types/vendors/tag-managers/google-tag-manager.d.ts +2 -96
- package/dist-types/vercel-analytics.d.ts +2 -0
- package/dist-types/x-pixel.d.ts +2 -0
- package/docs/README.md +129 -63
- package/docs/assets/v3/bottom-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/brand-preferences.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/headless-bar-html.png +0 -0
- package/docs/assets/v3/headless-bar-mobile.png +0 -0
- package/docs/assets/v3/headless-bar.png +0 -0
- package/docs/assets/v3/slim-bar.png +0 -0
- package/docs/concepts/choose-your-setup.md +87 -0
- package/docs/concepts/consent-categories.md +84 -0
- package/docs/{guides → concepts}/consent-state.md +71 -101
- package/docs/{guides → concepts}/data-fetching.md +31 -27
- package/docs/concepts/how-consent-works.md +123 -0
- package/docs/concepts/policies.md +71 -0
- package/docs/customization/class-names.md +202 -0
- package/docs/customization/dark-mode.md +157 -0
- package/docs/customization/motion.md +119 -0
- package/docs/customization/overview.md +67 -34
- package/docs/customization/recipes.md +839 -49
- package/docs/customization/slots.md +216 -35
- package/docs/customization/stylesheets.md +147 -0
- package/docs/customization/tailwind.md +842 -0
- package/docs/customization/tokens.md +163 -96
- package/docs/customization/translations.md +61 -3
- package/docs/frameworks/astro/embeds.md +160 -0
- package/docs/frameworks/astro/network-blocker.md +86 -0
- package/docs/frameworks/astro/scripts.md +146 -0
- package/docs/frameworks/html/embeds.md +142 -0
- package/docs/frameworks/html/network-blocker.md +105 -0
- package/docs/frameworks/html/scripts.md +164 -0
- package/docs/frameworks/javascript/scripts.md +119 -0
- package/docs/frameworks/next/embeds.md +90 -0
- package/docs/frameworks/next/network-blocker.md +153 -0
- package/docs/frameworks/next/scripts.md +196 -0
- package/docs/frameworks/nuxt/embeds.md +81 -0
- package/docs/frameworks/nuxt/network-blocker.md +97 -0
- package/docs/frameworks/nuxt/scripts.md +89 -0
- package/docs/frameworks/react/embeds.md +89 -0
- package/docs/frameworks/react/network-blocker.md +140 -0
- package/docs/frameworks/react/scripts.md +115 -0
- package/docs/frameworks/svelte/embeds.md +96 -0
- package/docs/frameworks/svelte/network-blocker.md +141 -0
- package/docs/frameworks/svelte/scripts.md +137 -0
- package/docs/frameworks/sveltekit/embeds.md +103 -0
- package/docs/frameworks/sveltekit/network-blocker.md +149 -0
- package/docs/frameworks/sveltekit/scripts.md +141 -0
- package/docs/frameworks/tanstack-start/embeds.md +96 -0
- package/docs/frameworks/tanstack-start/network-blocker.md +145 -0
- package/docs/frameworks/tanstack-start/scripts.md +103 -0
- package/docs/frameworks/vue/embeds.md +84 -0
- package/docs/frameworks/vue/network-blocker.md +99 -0
- package/docs/frameworks/vue/scripts.md +93 -0
- package/docs/guides/banner-experiments.md +654 -0
- package/docs/guides/troubleshooting.md +120 -47
- package/docs/guides/verify-consent.md +81 -49
- package/docs/integrations/adobe-analytics.md +167 -159
- package/docs/integrations/ahrefs-analytics.md +152 -154
- package/docs/integrations/amplitude.md +162 -156
- package/docs/integrations/building-integrations.md +136 -37
- package/docs/integrations/clearbit.md +154 -154
- package/docs/integrations/cloudflare-web-analytics.md +156 -156
- package/docs/integrations/cloudflare-zaraz.md +209 -261
- package/docs/integrations/crisp.md +164 -158
- package/docs/integrations/databuddy.md +157 -173
- package/docs/integrations/fathom-analytics.md +158 -156
- package/docs/integrations/front-chat.md +167 -167
- package/docs/integrations/google-maps.md +118 -83
- package/docs/integrations/google-tag-manager.md +178 -163
- package/docs/integrations/google-tag.md +163 -160
- package/docs/integrations/heap.md +163 -155
- package/docs/integrations/hightouch.md +161 -157
- package/docs/integrations/hotjar.md +159 -155
- package/docs/integrations/intercom.md +183 -153
- package/docs/integrations/klaviyo.md +486 -0
- package/docs/integrations/linkedin-insights.md +174 -150
- package/docs/integrations/logrocket.md +160 -156
- package/docs/integrations/matomo-analytics.md +188 -178
- package/docs/integrations/meta-pixel.md +188 -150
- package/docs/integrations/microsoft-clarity.md +163 -155
- package/docs/integrations/microsoft-uet.md +148 -154
- package/docs/integrations/mixpanel-analytics.md +155 -160
- package/docs/integrations/one-dollar-stats.md +166 -165
- package/docs/integrations/openai-pixel.md +204 -301
- package/docs/integrations/overview.md +137 -80
- package/docs/integrations/pinterest-tag.md +191 -183
- package/docs/integrations/pirsch.md +169 -159
- package/docs/integrations/plausible-analytics.md +172 -158
- package/docs/integrations/posthog.md +226 -241
- package/docs/integrations/promptwatch.md +154 -154
- package/docs/integrations/reddit-pixel.md +185 -157
- package/docs/integrations/rudderstack.md +201 -186
- package/docs/integrations/rybbit-analytics.md +171 -160
- package/docs/integrations/segment.md +182 -154
- package/docs/integrations/snapchat-pixel.md +186 -156
- package/docs/integrations/tiktok-pixel.md +171 -150
- package/docs/integrations/umami-analytics.md +163 -158
- package/docs/integrations/vercel-analytics.md +166 -157
- package/docs/integrations/x-pixel.md +176 -150
- package/docs/integrations/youtube.md +121 -86
- package/docs/upgrade-v3.md +475 -467
- package/package.json +10 -257
- package/dist-types/__tests__/helpers.d.ts +0 -141
- package/docs/assets/v3/brand-bar.png +0 -0
- package/docs/assets/v3/mobile-card.png +0 -0
- package/docs/assets/v3/preferences.png +0 -0
- package/docs/frameworks/javascript/script-loader.md +0 -100
- package/docs/frameworks/next/script-loader.md +0 -216
- package/docs/frameworks/react/script-loader.md +0 -69
- package/docs/guides/deployment-modes.md +0 -75
- package/docs/guides/shared-consent-controls.md +0 -158
- package/docs/integrations/clear-on-revocation.md +0 -167
- package/docs/integrations/granular-consent.md +0 -210
|
@@ -1,98 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
'functionality',
|
|
4
|
-
'experience',
|
|
5
|
-
'measurement',
|
|
6
|
-
'marketing'
|
|
7
|
-
];
|
|
8
|
-
const readyEvent = 'zarazConsentAPIReady';
|
|
9
|
-
const isConsentApi = (api)=>'object' == typeof api && null !== api && 'APIReady' in api && true === api.APIReady && 'getAll' in api && 'function' == typeof api.getAll && 'set' in api && 'function' == typeof api.set && 'sendQueuedEvents' in api && 'function' == typeof api.sendQueuedEvents;
|
|
10
|
-
const getConsentApi = ()=>{
|
|
11
|
-
if ("u" < typeof window || !('zaraz' in window)) return;
|
|
12
|
-
const { zaraz } = window;
|
|
13
|
-
if ('object' != typeof zaraz || null === zaraz || !('consent' in zaraz)) return;
|
|
14
|
-
return isConsentApi(zaraz.consent) ? zaraz.consent : void 0;
|
|
15
|
-
};
|
|
16
|
-
const cloudflareZaraz = (options)=>{
|
|
17
|
-
const mappings = new Map();
|
|
18
|
-
for (const category of consentCategories)for (const purpose of options.purposes[category] ?? []){
|
|
19
|
-
if (!purpose.trim() || purpose !== purpose.trim()) throw new Error('Zaraz purpose IDs must be non-empty and have no surrounding whitespace.');
|
|
20
|
-
if (mappings.has(purpose)) throw new Error(`Zaraz purpose '${purpose}' is mapped more than once.`);
|
|
21
|
-
mappings.set(purpose, category);
|
|
22
|
-
}
|
|
23
|
-
if (0 === mappings.size) throw new Error('Map at least one Zaraz purpose to a c15t category.');
|
|
24
|
-
let latest;
|
|
25
|
-
let listeningDocument;
|
|
26
|
-
let initialized = false;
|
|
27
|
-
const pendingReplay = new Set();
|
|
28
|
-
const synchronize = ()=>{
|
|
29
|
-
const api = getConsentApi();
|
|
30
|
-
if (!latest || !api) return false;
|
|
31
|
-
const previous = api.getAll();
|
|
32
|
-
const permissions = {};
|
|
33
|
-
let changed = false;
|
|
34
|
-
for (const purpose of Object.keys(previous)){
|
|
35
|
-
const category = mappings.get(purpose);
|
|
36
|
-
const allowed = void 0 !== category && true === latest[category];
|
|
37
|
-
Object.defineProperty(permissions, purpose, {
|
|
38
|
-
enumerable: true,
|
|
39
|
-
value: allowed
|
|
40
|
-
});
|
|
41
|
-
changed ||= previous[purpose] !== allowed;
|
|
42
|
-
if (allowed && true !== previous[purpose]) pendingReplay.add(purpose);
|
|
43
|
-
}
|
|
44
|
-
for (const purpose of pendingReplay)if (true !== permissions[purpose]) pendingReplay.delete(purpose);
|
|
45
|
-
if (false !== options.hideBuiltInModal && true === api.modal) api.modal = false;
|
|
46
|
-
if (changed) api.set(permissions);
|
|
47
|
-
if (pendingReplay.size > 0 && false !== options.sendQueuedEvents) api.sendQueuedEvents();
|
|
48
|
-
pendingReplay.clear();
|
|
49
|
-
return true;
|
|
50
|
-
};
|
|
51
|
-
const apply = ()=>{
|
|
52
|
-
try {
|
|
53
|
-
if (!synchronize()) return false;
|
|
54
|
-
} catch (error) {
|
|
55
|
-
if (!options.onError) throw error;
|
|
56
|
-
options.onError(error);
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
listeningDocument?.removeEventListener(readyEvent, apply);
|
|
60
|
-
listeningDocument = void 0;
|
|
61
|
-
if (!initialized) {
|
|
62
|
-
initialized = true;
|
|
63
|
-
options.onReady?.();
|
|
64
|
-
}
|
|
65
|
-
return true;
|
|
66
|
-
};
|
|
67
|
-
const update = ({ consents })=>{
|
|
68
|
-
latest = consents;
|
|
69
|
-
if ("u" < typeof document) return;
|
|
70
|
-
let applied = false;
|
|
71
|
-
try {
|
|
72
|
-
applied = apply();
|
|
73
|
-
} finally{
|
|
74
|
-
if (!applied && !listeningDocument) {
|
|
75
|
-
listeningDocument = document;
|
|
76
|
-
document.addEventListener(readyEvent, apply);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
return {
|
|
81
|
-
alwaysLoad: true,
|
|
82
|
-
callbackOnly: true,
|
|
83
|
-
category: 'necessary',
|
|
84
|
-
id: 'cloudflare-zaraz',
|
|
85
|
-
onConsentChange: (info)=>{
|
|
86
|
-
if (info.hasConsent) update(info);
|
|
87
|
-
},
|
|
88
|
-
onDispose: ()=>{
|
|
89
|
-
listeningDocument?.removeEventListener(readyEvent, apply);
|
|
90
|
-
listeningDocument = void 0;
|
|
91
|
-
latest = void 0;
|
|
92
|
-
initialized = false;
|
|
93
|
-
pendingReplay.clear();
|
|
94
|
-
},
|
|
95
|
-
onLoad: update
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
export { cloudflareZaraz };
|
|
1
|
+
/** @deprecated Use @c15t/integrations/vendors/tag-managers/cloudflare-zaraz. Compatibility ends in v4. */
|
|
2
|
+
export * from '@c15t/integrations/vendors/tag-managers/cloudflare-zaraz';
|
|
@@ -1,73 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { GOOGLE_CONSENT_MODE_V2_DEFAULT_MAPPING, withOptionalConsentMapping } from "../_shared/google-consent.js";
|
|
4
|
-
const googleTagManagerManifest = {
|
|
5
|
-
...vendorManifestContract,
|
|
6
|
-
alwaysLoad: true,
|
|
7
|
-
bootstrap: [
|
|
8
|
-
{
|
|
9
|
-
ifUndefined: true,
|
|
10
|
-
name: 'dataLayer',
|
|
11
|
-
type: 'setGlobal',
|
|
12
|
-
value: []
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
ifUndefined: true,
|
|
16
|
-
name: 'gtag',
|
|
17
|
-
queue: 'dataLayer',
|
|
18
|
-
type: 'defineQueueFunction'
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
category: 'necessary',
|
|
22
|
-
consentMapping: GOOGLE_CONSENT_MODE_V2_DEFAULT_MAPPING,
|
|
23
|
-
consentSignal: 'gtag',
|
|
24
|
-
install: [
|
|
25
|
-
{
|
|
26
|
-
queue: 'dataLayer',
|
|
27
|
-
type: 'pushToQueue',
|
|
28
|
-
value: {
|
|
29
|
-
event: 'gtm.js',
|
|
30
|
-
'gtm.start': runtimeTimestampValue
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
async: true,
|
|
35
|
-
src: 'https://www.googletagmanager.com/gtm.js?id={{id}}',
|
|
36
|
-
type: 'loadScript'
|
|
37
|
-
}
|
|
38
|
-
],
|
|
39
|
-
onConsentChange: [
|
|
40
|
-
{
|
|
41
|
-
args: [
|
|
42
|
-
'event',
|
|
43
|
-
'{{updateEventName}}'
|
|
44
|
-
],
|
|
45
|
-
global: 'gtag',
|
|
46
|
-
type: 'callGlobal'
|
|
47
|
-
}
|
|
48
|
-
],
|
|
49
|
-
vendor: 'google-tag-manager'
|
|
50
|
-
};
|
|
51
|
-
const google_tag_manager_googleTagManager = function({ id, dataLayer = 'dataLayer', updateEventName, consentMapping }) {
|
|
52
|
-
let manifest = withOptionalConsentMapping(googleTagManagerManifest, consentMapping);
|
|
53
|
-
if ('dataLayer' !== dataLayer) {
|
|
54
|
-
manifest = JSON.parse(JSON.stringify(manifest).replace(/"(?:dataLayer|gtag)"/gu, (token)=>JSON.stringify('"dataLayer"' === token ? dataLayer : `${dataLayer}Gtag`)).replace('gtm.js?id={{id}}', `gtm.js?id={{id}}&l=${encodeURIComponent(dataLayer)}`));
|
|
55
|
-
manifest = {
|
|
56
|
-
...manifest,
|
|
57
|
-
consentSignal: 'gtag',
|
|
58
|
-
consentSignalTarget: `${dataLayer}Gtag`
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
const resolved = resolveManifest(manifest, {
|
|
62
|
-
id,
|
|
63
|
-
updateEventName: updateEventName ?? 'consent-update'
|
|
64
|
-
});
|
|
65
|
-
return {
|
|
66
|
-
...resolved,
|
|
67
|
-
attributes: {
|
|
68
|
-
...resolved.attributes,
|
|
69
|
-
'data-c15t-layer': dataLayer
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
export { googleTagManagerManifest, google_tag_manager_googleTagManager as googleTagManager };
|
|
1
|
+
/** @deprecated Use @c15t/integrations/vendors/tag-managers/google-tag-manager. Compatibility ends in v4. */
|
|
2
|
+
export * from '@c15t/integrations/vendors/tag-managers/google-tag-manager';
|
package/dist/x-pixel.js
ADDED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export declare const compileManifest: (manifest: VendorManifest, config?: Record<string, unknown>) => ResolvedManifest;
|
|
1
|
+
/** @deprecated Use @c15t/integrations/engine/compile. Compatibility ends in v4. */
|
|
2
|
+
export * from '@c15t/integrations/engine/compile';
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const resolvedManifestToScript: (resolvedManifest: ResolvedManifest) => Script;
|
|
1
|
+
/** @deprecated Use @c15t/integrations/engine/runtime. Compatibility ends in v4. */
|
|
2
|
+
export * from '@c15t/integrations/engine/runtime';
|
package/dist-types/events.d.ts
CHANGED
|
@@ -1,46 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export type EventProperties = Record<string, string | number | boolean>;
|
|
4
|
-
/** Runtime inputs: the host owns event names, c15t owns delivery eligibility. */
|
|
5
|
-
export interface EventDispatcherOptions {
|
|
6
|
-
scripts: readonly Script[];
|
|
7
|
-
getSnapshot: () => ConsentSnapshot;
|
|
8
|
-
/** SDKs needing explicit SPA pageviews. Omit SDKs that track history themselves. */
|
|
9
|
-
pageviews?: readonly string[];
|
|
10
|
-
/** Injectable browser globals for testing or embedded runtimes. */
|
|
11
|
-
globals?: object;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Deliver events only to configured integrations with current analytics consent.
|
|
15
|
-
* Denied events are discarded, and a vendor error does not stop other deliveries.
|
|
16
|
-
*
|
|
17
|
-
* @param options - Scripts, current consent snapshot, optional SPA integrations
|
|
18
|
-
* and browser globals used to call their SDKs.
|
|
19
|
-
* @returns A dispatcher with `track` for named events and `pageview` for SPA
|
|
20
|
-
* navigation. The first pageview seeds the path without sending; later calls
|
|
21
|
-
* ignore duplicate paths and hash-only changes. Only configured `pageviews`
|
|
22
|
-
* integrations receive navigation events.
|
|
23
|
-
* @example
|
|
24
|
-
* ```ts
|
|
25
|
-
* const events = createEventDispatcher({ scripts, getSnapshot: kernel.getSnapshot,
|
|
26
|
-
* pageviews: ['segment'] });
|
|
27
|
-
* events.pageview(location.pathname);
|
|
28
|
-
* events.track('search', { length: 4 });
|
|
29
|
-
* events.pageview('/results');
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
export declare const createEventDispatcher: (options: EventDispatcherOptions) => {
|
|
33
|
-
/**
|
|
34
|
-
* Seed the initial path, then deliver permitted navigation events.
|
|
35
|
-
* @param path - Current path, including any query and hash. Hash-only changes are ignored.
|
|
36
|
-
* @returns Nothing. The first call and duplicate paths do not send events.
|
|
37
|
-
*/
|
|
38
|
-
pageview(path: string): void;
|
|
39
|
-
/**
|
|
40
|
-
* Send a named event to each configured, currently permitted integration.
|
|
41
|
-
* @param event - Application event name understood by the configured SDKs.
|
|
42
|
-
* @param properties - Flat metadata copied for each vendor delivery.
|
|
43
|
-
* @returns Nothing. Denied events are discarded and SDK errors are isolated.
|
|
44
|
-
*/
|
|
45
|
-
track(event: string, properties?: EventProperties): void;
|
|
46
|
-
};
|
|
1
|
+
/** @deprecated Use @c15t/integrations/events. Compatibility ends in v4. */
|
|
2
|
+
export * from '@c15t/integrations/events';
|