@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.
Files changed (202) hide show
  1. package/AGENTS.md +77 -48
  2. package/README.md +4 -3
  3. package/dist/e2e-test-utils.js +60 -24
  4. package/dist/engine/compile.js +45 -45
  5. package/dist/engine/runtime.js +130 -119
  6. package/dist/registry.js +196 -176
  7. package/dist/resolve.js +12 -12
  8. package/dist/vendors/_shared/attributes.js +5 -5
  9. package/dist/vendors/_shared/google-consent.js +10 -10
  10. package/dist/vendors/_shared/install-builders.js +9 -9
  11. package/dist/vendors/_shared/script-url.js +12 -12
  12. package/dist/vendors/ads-and-pixels/linkedin-insights.js +16 -16
  13. package/dist/vendors/ads-and-pixels/meta-pixel.js +82 -82
  14. package/dist/vendors/ads-and-pixels/microsoft-uet.js +57 -57
  15. package/dist/vendors/ads-and-pixels/openai-pixel.js +88 -0
  16. package/dist/vendors/ads-and-pixels/reddit-pixel.js +39 -39
  17. package/dist/vendors/ads-and-pixels/snapchat-pixel.js +25 -25
  18. package/dist/vendors/ads-and-pixels/tiktok-pixel.js +31 -31
  19. package/dist/vendors/ads-and-pixels/x-pixel.js +17 -17
  20. package/dist/vendors/analytics/adobe-analytics.js +17 -17
  21. package/dist/vendors/analytics/ahrefs-analytics.js +8 -8
  22. package/dist/vendors/analytics/amplitude.js +39 -39
  23. package/dist/vendors/analytics/clearbit.js +11 -11
  24. package/dist/vendors/analytics/cloudflare-web-analytics.js +13 -13
  25. package/dist/vendors/analytics/databuddy.js +45 -45
  26. package/dist/vendors/analytics/fathom-analytics.js +15 -15
  27. package/dist/vendors/analytics/google-tag.js +23 -23
  28. package/dist/vendors/analytics/heap.js +37 -37
  29. package/dist/vendors/analytics/hightouch.js +30 -30
  30. package/dist/vendors/analytics/hotjar.js +14 -14
  31. package/dist/vendors/analytics/logrocket.js +24 -24
  32. package/dist/vendors/analytics/matomo-analytics.js +51 -51
  33. package/dist/vendors/analytics/microsoft-clarity.js +34 -31
  34. package/dist/vendors/analytics/mixpanel-analytics.js +31 -31
  35. package/dist/vendors/analytics/pirsch.js +27 -27
  36. package/dist/vendors/analytics/plausible-analytics.js +24 -24
  37. package/dist/vendors/analytics/posthog.js +84 -79
  38. package/dist/vendors/analytics/promptwatch.js +8 -8
  39. package/dist/vendors/analytics/rudderstack.js +50 -50
  40. package/dist/vendors/analytics/rybbit-analytics.js +30 -30
  41. package/dist/vendors/analytics/segment.js +16 -16
  42. package/dist/vendors/analytics/umami-analytics.js +16 -16
  43. package/dist/vendors/analytics/vercel-analytics.js +22 -22
  44. package/dist/vendors/functional/crisp.js +49 -51
  45. package/dist/vendors/functional/intercom.js +18 -18
  46. package/dist/vendors/tag-managers/cloudflare-zaraz.js +98 -0
  47. package/dist/vendors/tag-managers/google-tag-manager.js +20 -20
  48. package/dist-types/__tests__/helpers.d.ts +11 -11
  49. package/dist-types/engine/compile.d.ts +3 -3
  50. package/dist-types/engine/runtime.d.ts +3 -3
  51. package/dist-types/registry.d.ts +191 -173
  52. package/dist-types/resolve.d.ts +3 -3
  53. package/dist-types/types.d.ts +2 -2
  54. package/dist-types/vendors/_shared/attributes.d.ts +2 -2
  55. package/dist-types/vendors/_shared/google-consent.d.ts +2 -2
  56. package/dist-types/vendors/_shared/install-builders.d.ts +2 -2
  57. package/dist-types/vendors/_shared/script-url.d.ts +6 -6
  58. package/dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts +14 -14
  59. package/dist-types/vendors/ads-and-pixels/meta-pixel.d.ts +27 -27
  60. package/dist-types/vendors/ads-and-pixels/microsoft-uet.d.ts +40 -40
  61. package/dist-types/vendors/ads-and-pixels/openai-pixel.d.ts +211 -0
  62. package/dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts +28 -29
  63. package/dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts +23 -23
  64. package/dist-types/vendors/ads-and-pixels/tiktok-pixel.d.ts +22 -22
  65. package/dist-types/vendors/ads-and-pixels/x-pixel.d.ts +15 -15
  66. package/dist-types/vendors/analytics/adobe-analytics.d.ts +3 -3
  67. package/dist-types/vendors/analytics/ahrefs-analytics.d.ts +5 -5
  68. package/dist-types/vendors/analytics/amplitude.d.ts +24 -24
  69. package/dist-types/vendors/analytics/clearbit.d.ts +5 -5
  70. package/dist-types/vendors/analytics/cloudflare-web-analytics.d.ts +6 -6
  71. package/dist-types/vendors/analytics/databuddy.d.ts +34 -31
  72. package/dist-types/vendors/analytics/fathom-analytics.d.ts +8 -8
  73. package/dist-types/vendors/analytics/google-tag.d.ts +17 -17
  74. package/dist-types/vendors/analytics/heap.d.ts +17 -17
  75. package/dist-types/vendors/analytics/hightouch.d.ts +15 -15
  76. package/dist-types/vendors/analytics/hotjar.d.ts +9 -9
  77. package/dist-types/vendors/analytics/logrocket.d.ts +11 -11
  78. package/dist-types/vendors/analytics/matomo-analytics.d.ts +3 -3
  79. package/dist-types/vendors/analytics/microsoft-clarity.d.ts +12 -13
  80. package/dist-types/vendors/analytics/mixpanel-analytics.d.ts +20 -20
  81. package/dist-types/vendors/analytics/pirsch.d.ts +10 -10
  82. package/dist-types/vendors/analytics/plausible-analytics.d.ts +13 -13
  83. package/dist-types/vendors/analytics/posthog.d.ts +35 -32
  84. package/dist-types/vendors/analytics/promptwatch.d.ts +5 -5
  85. package/dist-types/vendors/analytics/rudderstack.d.ts +16 -16
  86. package/dist-types/vendors/analytics/rybbit-analytics.d.ts +15 -15
  87. package/dist-types/vendors/analytics/segment.d.ts +11 -11
  88. package/dist-types/vendors/analytics/umami-analytics.d.ts +9 -9
  89. package/dist-types/vendors/analytics/vercel-analytics.d.ts +13 -13
  90. package/dist-types/vendors/functional/crisp.d.ts +9 -9
  91. package/dist-types/vendors/functional/intercom.d.ts +12 -12
  92. package/dist-types/vendors/tag-managers/cloudflare-zaraz.d.ts +39 -0
  93. package/dist-types/vendors/tag-managers/google-tag-manager.d.ts +16 -16
  94. package/docs/README.md +77 -48
  95. package/docs/assets/v3/brand-bar.png +0 -0
  96. package/docs/assets/v3/brand-card.png +0 -0
  97. package/docs/assets/v3/choice-wall.png +0 -0
  98. package/docs/assets/v3/mobile-card.png +0 -0
  99. package/docs/assets/v3/preferences.png +0 -0
  100. package/docs/customization/overview.md +45 -0
  101. package/docs/customization/recipes.md +79 -0
  102. package/docs/customization/slots.md +55 -0
  103. package/docs/customization/tokens.md +76 -0
  104. package/docs/customization/translations.md +49 -0
  105. package/docs/frameworks/javascript/script-loader.md +81 -343
  106. package/docs/frameworks/next/script-loader.md +164 -455
  107. package/docs/frameworks/react/script-loader.md +41 -533
  108. package/docs/guides/consent-state.md +60 -0
  109. package/docs/guides/data-fetching.md +163 -0
  110. package/docs/guides/deployment-modes.md +75 -0
  111. package/docs/guides/troubleshooting.md +68 -0
  112. package/docs/guides/verify-consent.md +62 -0
  113. package/docs/integrations/adobe-analytics.md +239 -105
  114. package/docs/integrations/ahrefs-analytics.md +238 -104
  115. package/docs/integrations/amplitude.md +219 -157
  116. package/docs/integrations/building-integrations.md +36 -223
  117. package/docs/integrations/clear-on-revocation.md +167 -0
  118. package/docs/integrations/clearbit.md +247 -86
  119. package/docs/integrations/cloudflare-web-analytics.md +250 -84
  120. package/docs/integrations/cloudflare-zaraz.md +399 -0
  121. package/docs/integrations/crisp.md +251 -97
  122. package/docs/integrations/databuddy.md +259 -153
  123. package/docs/integrations/fathom-analytics.md +239 -96
  124. package/docs/integrations/google-maps.md +328 -207
  125. package/docs/integrations/google-tag-manager.md +248 -96
  126. package/docs/integrations/google-tag.md +261 -90
  127. package/docs/integrations/granular-consent.md +208 -0
  128. package/docs/integrations/heap.md +222 -149
  129. package/docs/integrations/hightouch.md +225 -131
  130. package/docs/integrations/hotjar.md +239 -90
  131. package/docs/integrations/intercom.md +239 -98
  132. package/docs/integrations/linkedin-insights.md +243 -113
  133. package/docs/integrations/logrocket.md +241 -123
  134. package/docs/integrations/matomo-analytics.md +256 -111
  135. package/docs/integrations/meta-pixel.md +197 -324
  136. package/docs/integrations/microsoft-clarity.md +233 -114
  137. package/docs/integrations/microsoft-uet.md +245 -110
  138. package/docs/integrations/mixpanel-analytics.md +252 -87
  139. package/docs/integrations/openai-pixel.md +441 -0
  140. package/docs/integrations/overview.md +96 -133
  141. package/docs/integrations/pirsch.md +249 -96
  142. package/docs/integrations/plausible-analytics.md +241 -100
  143. package/docs/integrations/posthog.md +353 -214
  144. package/docs/integrations/promptwatch.md +251 -81
  145. package/docs/integrations/reddit-pixel.md +226 -173
  146. package/docs/integrations/rudderstack.md +244 -187
  147. package/docs/integrations/rybbit-analytics.md +244 -91
  148. package/docs/integrations/segment.md +238 -92
  149. package/docs/integrations/snapchat-pixel.md +240 -110
  150. package/docs/integrations/tiktok-pixel.md +249 -81
  151. package/docs/integrations/umami-analytics.md +242 -95
  152. package/docs/integrations/vercel-analytics.md +242 -90
  153. package/docs/integrations/x-pixel.md +238 -104
  154. package/docs/integrations/youtube.md +359 -142
  155. package/docs/upgrade-v3.md +381 -0
  156. package/package.json +90 -78
  157. package/dist/e2e-test-utils.cjs +0 -166
  158. package/dist/engine/compile.cjs +0 -130
  159. package/dist/engine/runtime.cjs +0 -475
  160. package/dist/registry.cjs +0 -423
  161. package/dist/resolve.cjs +0 -71
  162. package/dist/types.cjs +0 -69
  163. package/dist/vendors/_shared/attributes.cjs +0 -55
  164. package/dist/vendors/_shared/google-consent.cjs +0 -69
  165. package/dist/vendors/_shared/install-builders.cjs +0 -59
  166. package/dist/vendors/_shared/script-url.cjs +0 -78
  167. package/dist/vendors/ads-and-pixels/linkedin-insights.cjs +0 -89
  168. package/dist/vendors/ads-and-pixels/meta-pixel.cjs +0 -206
  169. package/dist/vendors/ads-and-pixels/microsoft-uet.cjs +0 -151
  170. package/dist/vendors/ads-and-pixels/reddit-pixel.cjs +0 -151
  171. package/dist/vendors/ads-and-pixels/snapchat-pixel.cjs +0 -131
  172. package/dist/vendors/ads-and-pixels/tiktok-pixel.cjs +0 -130
  173. package/dist/vendors/ads-and-pixels/x-pixel.cjs +0 -92
  174. package/dist/vendors/analytics/adobe-analytics.cjs +0 -90
  175. package/dist/vendors/analytics/ahrefs-analytics.cjs +0 -68
  176. package/dist/vendors/analytics/amplitude.cjs +0 -193
  177. package/dist/vendors/analytics/clearbit.cjs +0 -69
  178. package/dist/vendors/analytics/cloudflare-web-analytics.cjs +0 -73
  179. package/dist/vendors/analytics/databuddy.cjs +0 -144
  180. package/dist/vendors/analytics/fathom-analytics.cjs +0 -76
  181. package/dist/vendors/analytics/google-tag.cjs +0 -107
  182. package/dist/vendors/analytics/heap.cjs +0 -181
  183. package/dist/vendors/analytics/hightouch.cjs +0 -153
  184. package/dist/vendors/analytics/hotjar.cjs +0 -85
  185. package/dist/vendors/analytics/logrocket.cjs +0 -99
  186. package/dist/vendors/analytics/matomo-analytics.cjs +0 -232
  187. package/dist/vendors/analytics/microsoft-clarity.cjs +0 -138
  188. package/dist/vendors/analytics/mixpanel-analytics.cjs +0 -134
  189. package/dist/vendors/analytics/pirsch.cjs +0 -108
  190. package/dist/vendors/analytics/plausible-analytics.cjs +0 -122
  191. package/dist/vendors/analytics/posthog.cjs +0 -236
  192. package/dist/vendors/analytics/promptwatch.cjs +0 -70
  193. package/dist/vendors/analytics/rudderstack.cjs +0 -227
  194. package/dist/vendors/analytics/rybbit-analytics.cjs +0 -104
  195. package/dist/vendors/analytics/segment.cjs +0 -97
  196. package/dist/vendors/analytics/umami-analytics.cjs +0 -80
  197. package/dist/vendors/analytics/vercel-analytics.cjs +0 -94
  198. package/dist/vendors/functional/crisp.cjs +0 -143
  199. package/dist/vendors/functional/intercom.cjs +0 -89
  200. package/dist/vendors/tag-managers/google-tag-manager.cjs +0 -100
  201. package/docs/shared/react/guides/script-loader.md +0 -311
  202. 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
- type: 'setGlobal',
9
+ ifUndefined: true,
12
10
  name: 'dataLayer',
13
- value: [],
14
- ifUndefined: true
11
+ type: 'setGlobal',
12
+ value: []
15
13
  },
16
14
  {
17
- type: 'defineQueueFunction',
15
+ ifUndefined: true,
18
16
  name: 'gtag',
19
17
  queue: 'dataLayer',
20
- ifUndefined: true
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.start': runtimeTimestampValue,
29
- event: 'gtm.js'
29
+ event: 'gtm.js',
30
+ 'gtm.start': runtimeTimestampValue
30
31
  }
31
32
  },
32
33
  {
33
- type: 'loadScript',
34
+ async: true,
34
35
  src: 'https://www.googletagmanager.com/gtm.js?id={{id}}',
35
- async: true
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
- consentMapping: GOOGLE_CONSENT_MODE_V2_DEFAULT_MAPPING,
49
- consentSignal: 'gtag'
49
+ vendor: 'google-tag-manager'
50
50
  };
51
- function googleTagManager({ id, updateEventName, consentMapping }) {
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 { googleTagManager, googleTagManagerManifest };
58
+ };
59
+ export { googleTagManagerManifest, google_tag_manager_googleTagManager as googleTagManager };
@@ -1,5 +1,5 @@
1
- import type { ConsentState, Script, ScriptCallbackInfo } from 'c15t';
2
- import { type BuiltInScriptIntegrationKey } from '../registry';
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 function createCallbackInfo(overrides: CallbackInfoOverrides): ScriptCallbackInfo;
62
+ export declare const createCallbackInfo: (overrides: CallbackInfoOverrides) => ScriptCallbackInfo;
63
63
  export type LifecycleCallbackOverrides = Partial<Omit<ScriptCallbackInfo, 'id'>>;
64
- export declare function runOnBeforeLoad(script: Pick<Script, 'id' | 'onBeforeLoad'>, overrides?: LifecycleCallbackOverrides): void;
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 function getTestGlobal(): TestGlobal;
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 function setupScriptHelperTest(): void;
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 function expectScriptMatchesIntegration(key: BuiltInScriptIntegrationKey, script: HelperScriptSnapshot, expected: ExpectedScriptSnapshot): void;
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 function toArgumentsArray(value: unknown): unknown[];
140
- export declare function expectGoogleConsentDefault(entry: unknown): void;
141
- export declare function expectStubCommandQueue(stub: unknown, queueKey: string, commands: unknown[][]): void;
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 function interpolateValue(value: unknown, config: Record<string, unknown>): unknown;
3
- export declare function compileManifest(manifest: VendorManifest, config?: Record<string, unknown>): ResolvedManifest;
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 { type Script } from 'c15t';
2
- import { type ResolvedManifest } from '../types';
3
- export declare function resolvedManifestToScript(resolvedManifest: ResolvedManifest): Script;
1
+ import type { Script } from '@c15t/core';
2
+ import type { ResolvedManifest } from '../types.js';
3
+ export declare const resolvedManifestToScript: (resolvedManifest: ResolvedManifest) => Script;