@c15t/scripts 2.2.0 → 3.0.0-alpha.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/AGENTS.md +77 -48
- package/README.md +4 -3
- package/dist/e2e-test-utils.js +60 -24
- package/dist/engine/compile.js +45 -45
- package/dist/engine/runtime.js +130 -119
- package/dist/registry.js +196 -176
- package/dist/resolve.js +12 -12
- package/dist/vendors/_shared/attributes.js +5 -5
- package/dist/vendors/_shared/google-consent.js +10 -10
- package/dist/vendors/_shared/install-builders.js +9 -9
- package/dist/vendors/_shared/script-url.js +12 -12
- package/dist/vendors/ads-and-pixels/linkedin-insights.js +16 -16
- package/dist/vendors/ads-and-pixels/meta-pixel.js +82 -82
- package/dist/vendors/ads-and-pixels/microsoft-uet.js +57 -57
- package/dist/vendors/ads-and-pixels/openai-pixel.js +88 -0
- package/dist/vendors/ads-and-pixels/reddit-pixel.js +39 -39
- package/dist/vendors/ads-and-pixels/snapchat-pixel.js +25 -25
- package/dist/vendors/ads-and-pixels/tiktok-pixel.js +31 -31
- package/dist/vendors/ads-and-pixels/x-pixel.js +17 -17
- package/dist/vendors/analytics/adobe-analytics.js +17 -17
- package/dist/vendors/analytics/ahrefs-analytics.js +8 -8
- package/dist/vendors/analytics/amplitude.js +39 -39
- package/dist/vendors/analytics/clearbit.js +11 -11
- package/dist/vendors/analytics/cloudflare-web-analytics.js +13 -13
- package/dist/vendors/analytics/databuddy.js +45 -45
- package/dist/vendors/analytics/fathom-analytics.js +15 -15
- package/dist/vendors/analytics/google-tag.js +23 -23
- package/dist/vendors/analytics/heap.js +37 -37
- package/dist/vendors/analytics/hightouch.js +30 -30
- package/dist/vendors/analytics/hotjar.js +14 -14
- package/dist/vendors/analytics/logrocket.js +24 -24
- package/dist/vendors/analytics/matomo-analytics.js +51 -51
- package/dist/vendors/analytics/microsoft-clarity.js +34 -31
- package/dist/vendors/analytics/mixpanel-analytics.js +31 -31
- package/dist/vendors/analytics/pirsch.js +27 -27
- package/dist/vendors/analytics/plausible-analytics.js +24 -24
- package/dist/vendors/analytics/posthog.js +84 -79
- package/dist/vendors/analytics/promptwatch.js +8 -8
- package/dist/vendors/analytics/rudderstack.js +50 -50
- package/dist/vendors/analytics/rybbit-analytics.js +30 -30
- package/dist/vendors/analytics/segment.js +16 -16
- package/dist/vendors/analytics/umami-analytics.js +16 -16
- package/dist/vendors/analytics/vercel-analytics.js +22 -22
- package/dist/vendors/functional/crisp.js +49 -51
- package/dist/vendors/functional/intercom.js +18 -18
- package/dist/vendors/tag-managers/cloudflare-zaraz.js +98 -0
- package/dist/vendors/tag-managers/google-tag-manager.js +20 -20
- package/dist-types/__tests__/helpers.d.ts +11 -11
- package/dist-types/engine/compile.d.ts +3 -3
- package/dist-types/engine/runtime.d.ts +3 -3
- package/dist-types/registry.d.ts +191 -173
- package/dist-types/resolve.d.ts +3 -3
- package/dist-types/types.d.ts +2 -2
- package/dist-types/vendors/_shared/attributes.d.ts +2 -2
- package/dist-types/vendors/_shared/google-consent.d.ts +2 -2
- package/dist-types/vendors/_shared/install-builders.d.ts +2 -2
- package/dist-types/vendors/_shared/script-url.d.ts +6 -6
- package/dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts +14 -14
- package/dist-types/vendors/ads-and-pixels/meta-pixel.d.ts +27 -27
- package/dist-types/vendors/ads-and-pixels/microsoft-uet.d.ts +40 -40
- package/dist-types/vendors/ads-and-pixels/openai-pixel.d.ts +211 -0
- package/dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts +28 -29
- package/dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts +23 -23
- package/dist-types/vendors/ads-and-pixels/tiktok-pixel.d.ts +22 -22
- package/dist-types/vendors/ads-and-pixels/x-pixel.d.ts +15 -15
- package/dist-types/vendors/analytics/adobe-analytics.d.ts +3 -3
- package/dist-types/vendors/analytics/ahrefs-analytics.d.ts +5 -5
- package/dist-types/vendors/analytics/amplitude.d.ts +24 -24
- package/dist-types/vendors/analytics/clearbit.d.ts +5 -5
- package/dist-types/vendors/analytics/cloudflare-web-analytics.d.ts +6 -6
- package/dist-types/vendors/analytics/databuddy.d.ts +34 -31
- package/dist-types/vendors/analytics/fathom-analytics.d.ts +8 -8
- package/dist-types/vendors/analytics/google-tag.d.ts +17 -17
- package/dist-types/vendors/analytics/heap.d.ts +17 -17
- package/dist-types/vendors/analytics/hightouch.d.ts +15 -15
- package/dist-types/vendors/analytics/hotjar.d.ts +9 -9
- package/dist-types/vendors/analytics/logrocket.d.ts +11 -11
- package/dist-types/vendors/analytics/matomo-analytics.d.ts +3 -3
- package/dist-types/vendors/analytics/microsoft-clarity.d.ts +12 -13
- package/dist-types/vendors/analytics/mixpanel-analytics.d.ts +20 -20
- package/dist-types/vendors/analytics/pirsch.d.ts +10 -10
- package/dist-types/vendors/analytics/plausible-analytics.d.ts +13 -13
- package/dist-types/vendors/analytics/posthog.d.ts +35 -32
- package/dist-types/vendors/analytics/promptwatch.d.ts +5 -5
- package/dist-types/vendors/analytics/rudderstack.d.ts +16 -16
- package/dist-types/vendors/analytics/rybbit-analytics.d.ts +15 -15
- package/dist-types/vendors/analytics/segment.d.ts +11 -11
- package/dist-types/vendors/analytics/umami-analytics.d.ts +9 -9
- package/dist-types/vendors/analytics/vercel-analytics.d.ts +13 -13
- package/dist-types/vendors/functional/crisp.d.ts +9 -9
- package/dist-types/vendors/functional/intercom.d.ts +12 -12
- package/dist-types/vendors/tag-managers/cloudflare-zaraz.d.ts +39 -0
- package/dist-types/vendors/tag-managers/google-tag-manager.d.ts +16 -16
- package/docs/README.md +77 -48
- package/docs/assets/v3/brand-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/mobile-card.png +0 -0
- package/docs/assets/v3/preferences.png +0 -0
- package/docs/customization/overview.md +45 -0
- package/docs/customization/recipes.md +79 -0
- package/docs/customization/slots.md +55 -0
- package/docs/customization/tokens.md +76 -0
- package/docs/customization/translations.md +49 -0
- package/docs/frameworks/javascript/script-loader.md +81 -343
- package/docs/frameworks/next/script-loader.md +164 -455
- package/docs/frameworks/react/script-loader.md +41 -533
- package/docs/guides/consent-state.md +60 -0
- package/docs/guides/data-fetching.md +163 -0
- package/docs/guides/deployment-modes.md +75 -0
- package/docs/guides/troubleshooting.md +68 -0
- package/docs/guides/verify-consent.md +62 -0
- package/docs/integrations/adobe-analytics.md +239 -105
- package/docs/integrations/ahrefs-analytics.md +238 -104
- package/docs/integrations/amplitude.md +219 -157
- package/docs/integrations/building-integrations.md +36 -223
- package/docs/integrations/clear-on-revocation.md +167 -0
- package/docs/integrations/clearbit.md +247 -86
- package/docs/integrations/cloudflare-web-analytics.md +250 -84
- package/docs/integrations/cloudflare-zaraz.md +399 -0
- package/docs/integrations/crisp.md +251 -97
- package/docs/integrations/databuddy.md +259 -153
- package/docs/integrations/fathom-analytics.md +239 -96
- package/docs/integrations/google-maps.md +328 -207
- package/docs/integrations/google-tag-manager.md +248 -96
- package/docs/integrations/google-tag.md +261 -90
- package/docs/integrations/granular-consent.md +208 -0
- package/docs/integrations/heap.md +222 -149
- package/docs/integrations/hightouch.md +225 -131
- package/docs/integrations/hotjar.md +239 -90
- package/docs/integrations/intercom.md +239 -98
- package/docs/integrations/linkedin-insights.md +243 -113
- package/docs/integrations/logrocket.md +241 -123
- package/docs/integrations/matomo-analytics.md +256 -111
- package/docs/integrations/meta-pixel.md +197 -324
- package/docs/integrations/microsoft-clarity.md +233 -114
- package/docs/integrations/microsoft-uet.md +245 -110
- package/docs/integrations/mixpanel-analytics.md +252 -87
- package/docs/integrations/openai-pixel.md +441 -0
- package/docs/integrations/overview.md +96 -133
- package/docs/integrations/pirsch.md +249 -96
- package/docs/integrations/plausible-analytics.md +241 -100
- package/docs/integrations/posthog.md +353 -214
- package/docs/integrations/promptwatch.md +251 -81
- package/docs/integrations/reddit-pixel.md +226 -173
- package/docs/integrations/rudderstack.md +244 -187
- package/docs/integrations/rybbit-analytics.md +244 -91
- package/docs/integrations/segment.md +238 -92
- package/docs/integrations/snapchat-pixel.md +240 -110
- package/docs/integrations/tiktok-pixel.md +249 -81
- package/docs/integrations/umami-analytics.md +242 -95
- package/docs/integrations/vercel-analytics.md +242 -90
- package/docs/integrations/x-pixel.md +238 -104
- package/docs/integrations/youtube.md +359 -142
- package/docs/upgrade-v3.md +381 -0
- package/package.json +90 -78
- package/dist/e2e-test-utils.cjs +0 -166
- package/dist/engine/compile.cjs +0 -130
- package/dist/engine/runtime.cjs +0 -475
- package/dist/registry.cjs +0 -423
- package/dist/resolve.cjs +0 -71
- package/dist/types.cjs +0 -69
- package/dist/vendors/_shared/attributes.cjs +0 -55
- package/dist/vendors/_shared/google-consent.cjs +0 -69
- package/dist/vendors/_shared/install-builders.cjs +0 -59
- package/dist/vendors/_shared/script-url.cjs +0 -78
- package/dist/vendors/ads-and-pixels/linkedin-insights.cjs +0 -89
- package/dist/vendors/ads-and-pixels/meta-pixel.cjs +0 -206
- package/dist/vendors/ads-and-pixels/microsoft-uet.cjs +0 -151
- package/dist/vendors/ads-and-pixels/reddit-pixel.cjs +0 -151
- package/dist/vendors/ads-and-pixels/snapchat-pixel.cjs +0 -131
- package/dist/vendors/ads-and-pixels/tiktok-pixel.cjs +0 -130
- package/dist/vendors/ads-and-pixels/x-pixel.cjs +0 -92
- package/dist/vendors/analytics/adobe-analytics.cjs +0 -90
- package/dist/vendors/analytics/ahrefs-analytics.cjs +0 -68
- package/dist/vendors/analytics/amplitude.cjs +0 -193
- package/dist/vendors/analytics/clearbit.cjs +0 -69
- package/dist/vendors/analytics/cloudflare-web-analytics.cjs +0 -73
- package/dist/vendors/analytics/databuddy.cjs +0 -144
- package/dist/vendors/analytics/fathom-analytics.cjs +0 -76
- package/dist/vendors/analytics/google-tag.cjs +0 -107
- package/dist/vendors/analytics/heap.cjs +0 -181
- package/dist/vendors/analytics/hightouch.cjs +0 -153
- package/dist/vendors/analytics/hotjar.cjs +0 -85
- package/dist/vendors/analytics/logrocket.cjs +0 -99
- package/dist/vendors/analytics/matomo-analytics.cjs +0 -232
- package/dist/vendors/analytics/microsoft-clarity.cjs +0 -138
- package/dist/vendors/analytics/mixpanel-analytics.cjs +0 -134
- package/dist/vendors/analytics/pirsch.cjs +0 -108
- package/dist/vendors/analytics/plausible-analytics.cjs +0 -122
- package/dist/vendors/analytics/posthog.cjs +0 -236
- package/dist/vendors/analytics/promptwatch.cjs +0 -70
- package/dist/vendors/analytics/rudderstack.cjs +0 -227
- package/dist/vendors/analytics/rybbit-analytics.cjs +0 -104
- package/dist/vendors/analytics/segment.cjs +0 -97
- package/dist/vendors/analytics/umami-analytics.cjs +0 -80
- package/dist/vendors/analytics/vercel-analytics.cjs +0 -94
- package/dist/vendors/functional/crisp.cjs +0 -143
- package/dist/vendors/functional/intercom.cjs +0 -89
- package/dist/vendors/tag-managers/google-tag-manager.cjs +0 -100
- package/docs/shared/react/guides/script-loader.md +0 -311
- package/readme.json +0 -19
|
@@ -3,57 +3,57 @@ import { runtimeTimestampValue, vendorManifestContract } from "../../types.js";
|
|
|
3
3
|
import { GOOGLE_CONSENT_MODE_V2_DEFAULT_MAPPING, withOptionalConsentMapping } from "../_shared/google-consent.js";
|
|
4
4
|
const googleTagManagerManifest = {
|
|
5
5
|
...vendorManifestContract,
|
|
6
|
-
vendor: 'google-tag-manager',
|
|
7
|
-
category: 'necessary',
|
|
8
6
|
alwaysLoad: true,
|
|
9
7
|
bootstrap: [
|
|
10
8
|
{
|
|
11
|
-
|
|
9
|
+
ifUndefined: true,
|
|
12
10
|
name: 'dataLayer',
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
type: 'setGlobal',
|
|
12
|
+
value: []
|
|
15
13
|
},
|
|
16
14
|
{
|
|
17
|
-
|
|
15
|
+
ifUndefined: true,
|
|
18
16
|
name: 'gtag',
|
|
19
17
|
queue: 'dataLayer',
|
|
20
|
-
|
|
18
|
+
type: 'defineQueueFunction'
|
|
21
19
|
}
|
|
22
20
|
],
|
|
21
|
+
category: 'necessary',
|
|
22
|
+
consentMapping: GOOGLE_CONSENT_MODE_V2_DEFAULT_MAPPING,
|
|
23
|
+
consentSignal: 'gtag',
|
|
23
24
|
install: [
|
|
24
25
|
{
|
|
25
|
-
type: 'pushToQueue',
|
|
26
26
|
queue: 'dataLayer',
|
|
27
|
+
type: 'pushToQueue',
|
|
27
28
|
value: {
|
|
28
|
-
'gtm.
|
|
29
|
-
|
|
29
|
+
event: 'gtm.js',
|
|
30
|
+
'gtm.start': runtimeTimestampValue
|
|
30
31
|
}
|
|
31
32
|
},
|
|
32
33
|
{
|
|
33
|
-
|
|
34
|
+
async: true,
|
|
34
35
|
src: 'https://www.googletagmanager.com/gtm.js?id={{id}}',
|
|
35
|
-
|
|
36
|
+
type: 'loadScript'
|
|
36
37
|
}
|
|
37
38
|
],
|
|
38
39
|
onConsentChange: [
|
|
39
40
|
{
|
|
40
|
-
type: 'callGlobal',
|
|
41
|
-
global: 'gtag',
|
|
42
41
|
args: [
|
|
43
42
|
'event',
|
|
44
43
|
'{{updateEventName}}'
|
|
45
|
-
]
|
|
44
|
+
],
|
|
45
|
+
global: 'gtag',
|
|
46
|
+
type: 'callGlobal'
|
|
46
47
|
}
|
|
47
48
|
],
|
|
48
|
-
|
|
49
|
-
consentSignal: 'gtag'
|
|
49
|
+
vendor: 'google-tag-manager'
|
|
50
50
|
};
|
|
51
|
-
function
|
|
51
|
+
const google_tag_manager_googleTagManager = function({ id, updateEventName, consentMapping }) {
|
|
52
52
|
const manifest = withOptionalConsentMapping(googleTagManagerManifest, consentMapping);
|
|
53
53
|
const resolved = resolveManifest(manifest, {
|
|
54
54
|
id,
|
|
55
55
|
updateEventName: updateEventName ?? 'consent-update'
|
|
56
56
|
});
|
|
57
57
|
return resolved;
|
|
58
|
-
}
|
|
59
|
-
export {
|
|
58
|
+
};
|
|
59
|
+
export { googleTagManagerManifest, google_tag_manager_googleTagManager as googleTagManager };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ConsentState, Script, ScriptCallbackInfo } from 'c15t';
|
|
2
|
-
import {
|
|
1
|
+
import type { ConsentState, Script, ScriptCallbackInfo } from '@c15t/core';
|
|
2
|
+
import type { BuiltInScriptIntegrationKey } from '../registry.js';
|
|
3
3
|
/**
|
|
4
4
|
* Typed view of `globalThis` used by script helper tests.
|
|
5
5
|
*
|
|
@@ -31,7 +31,7 @@ export interface ExpectedScriptSnapshot {
|
|
|
31
31
|
/** Expected consent-revocation persistence flag from the generated script. */
|
|
32
32
|
persistAfterConsentRevoked: boolean | undefined;
|
|
33
33
|
/** Expected remote script URL from the generated helper script. */
|
|
34
|
-
src: string;
|
|
34
|
+
src: string | undefined;
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Consent state with only required storage enabled.
|
|
@@ -59,9 +59,9 @@ export type CallbackInfoOverrides = Partial<ScriptCallbackInfo> & Pick<ScriptCal
|
|
|
59
59
|
* Defaults model a denied-consent callback for the same DOM element ID as the
|
|
60
60
|
* script ID, while allowing individual tests to override the relevant fields.
|
|
61
61
|
*/
|
|
62
|
-
export declare
|
|
62
|
+
export declare const createCallbackInfo: (overrides: CallbackInfoOverrides) => ScriptCallbackInfo;
|
|
63
63
|
export type LifecycleCallbackOverrides = Partial<Omit<ScriptCallbackInfo, 'id'>>;
|
|
64
|
-
export declare
|
|
64
|
+
export declare const runOnBeforeLoad: (script: Pick<Script, 'id' | 'onBeforeLoad'>, overrides?: LifecycleCallbackOverrides) => void;
|
|
65
65
|
/**
|
|
66
66
|
* Returns a mutable test-friendly reference to the global object.
|
|
67
67
|
*
|
|
@@ -73,7 +73,7 @@ export declare function runOnBeforeLoad(script: Pick<Script, 'id' | 'onBeforeLoa
|
|
|
73
73
|
* globalRef.dataLayer = [];
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
|
-
export declare
|
|
76
|
+
export declare const getTestGlobal: () => TestGlobal;
|
|
77
77
|
/**
|
|
78
78
|
* Registers browser-like setup and teardown hooks for script helper tests.
|
|
79
79
|
*
|
|
@@ -90,7 +90,7 @@ export declare function getTestGlobal(): TestGlobal;
|
|
|
90
90
|
* });
|
|
91
91
|
* ```
|
|
92
92
|
*/
|
|
93
|
-
export declare
|
|
93
|
+
export declare const setupScriptHelperTest: () => void;
|
|
94
94
|
/**
|
|
95
95
|
* Asserts that a helper-generated script matches registry metadata and
|
|
96
96
|
* expected script fields.
|
|
@@ -117,7 +117,7 @@ export declare function setupScriptHelperTest(): void;
|
|
|
117
117
|
* );
|
|
118
118
|
* ```
|
|
119
119
|
*/
|
|
120
|
-
export declare
|
|
120
|
+
export declare const expectScriptMatchesIntegration: (key: BuiltInScriptIntegrationKey, script: HelperScriptSnapshot, expected: ExpectedScriptSnapshot) => void;
|
|
121
121
|
/**
|
|
122
122
|
* Converts an array-like value into a plain array.
|
|
123
123
|
*
|
|
@@ -136,6 +136,6 @@ export declare function expectScriptMatchesIntegration(key: BuiltInScriptIntegra
|
|
|
136
136
|
* }
|
|
137
137
|
* ```
|
|
138
138
|
*/
|
|
139
|
-
export declare
|
|
140
|
-
export declare
|
|
141
|
-
export declare
|
|
139
|
+
export declare const toArgumentsArray: (value: unknown) => unknown[];
|
|
140
|
+
export declare const expectGoogleConsentDefault: (entry: unknown) => void;
|
|
141
|
+
export declare const expectStubCommandQueue: (stub: unknown, queueKey: string, commands: unknown[][]) => void;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { ResolvedManifest, VendorManifest } from '../types';
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
1
|
+
import type { ResolvedManifest, VendorManifest } from '../types.js';
|
|
2
|
+
export declare const interpolateValue: (value: unknown, config: Record<string, unknown>) => unknown;
|
|
3
|
+
export declare const compileManifest: (manifest: VendorManifest, config?: Record<string, unknown>) => ResolvedManifest;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export declare
|
|
1
|
+
import type { Script } from '@c15t/core';
|
|
2
|
+
import type { ResolvedManifest } from '../types.js';
|
|
3
|
+
export declare const resolvedManifestToScript: (resolvedManifest: ResolvedManifest) => Script;
|