@c15t/scripts 2.0.1 → 2.2.0-canary-20260727202135

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 (182) hide show
  1. package/AGENTS.md +62 -0
  2. package/README.md +41 -29
  3. package/dist/e2e-test-utils.cjs +51 -10
  4. package/dist/e2e-test-utils.js +37 -3
  5. package/dist/engine/compile.cjs +9 -5
  6. package/dist/engine/runtime.cjs +111 -17
  7. package/dist/engine/runtime.js +102 -12
  8. package/dist/registry.cjs +423 -0
  9. package/dist/registry.js +372 -0
  10. package/dist/resolve.cjs +9 -5
  11. package/dist/types.cjs +32 -10
  12. package/dist/types.js +10 -1
  13. package/dist/vendors/_shared/attributes.cjs +55 -0
  14. package/dist/vendors/_shared/attributes.js +14 -0
  15. package/dist/vendors/_shared/google-consent.cjs +69 -0
  16. package/dist/vendors/_shared/google-consent.js +27 -0
  17. package/dist/vendors/_shared/install-builders.cjs +59 -0
  18. package/dist/vendors/_shared/install-builders.js +21 -0
  19. package/dist/vendors/_shared/script-url.cjs +78 -0
  20. package/dist/vendors/_shared/script-url.js +28 -0
  21. package/dist/{linkedin-insights.cjs → vendors/ads-and-pixels/linkedin-insights.cjs} +11 -7
  22. package/dist/{linkedin-insights.js → vendors/ads-and-pixels/linkedin-insights.js} +2 -2
  23. package/dist/vendors/ads-and-pixels/meta-pixel.cjs +206 -0
  24. package/dist/vendors/ads-and-pixels/meta-pixel.js +153 -0
  25. package/dist/{microsoft-uet.cjs → vendors/ads-and-pixels/microsoft-uet.cjs} +42 -21
  26. package/dist/{microsoft-uet.js → vendors/ads-and-pixels/microsoft-uet.js} +31 -14
  27. package/dist/vendors/ads-and-pixels/reddit-pixel.cjs +151 -0
  28. package/dist/vendors/ads-and-pixels/reddit-pixel.js +107 -0
  29. package/dist/vendors/ads-and-pixels/snapchat-pixel.cjs +131 -0
  30. package/dist/vendors/ads-and-pixels/snapchat-pixel.js +87 -0
  31. package/dist/{tiktok-pixel.cjs → vendors/ads-and-pixels/tiktok-pixel.cjs} +11 -7
  32. package/dist/{tiktok-pixel.js → vendors/ads-and-pixels/tiktok-pixel.js} +2 -2
  33. package/dist/{x-pixel.cjs → vendors/ads-and-pixels/x-pixel.cjs} +15 -8
  34. package/dist/{x-pixel.js → vendors/ads-and-pixels/x-pixel.js} +6 -3
  35. package/dist/vendors/analytics/adobe-analytics.cjs +90 -0
  36. package/dist/vendors/analytics/adobe-analytics.js +49 -0
  37. package/dist/vendors/analytics/ahrefs-analytics.cjs +68 -0
  38. package/dist/vendors/analytics/ahrefs-analytics.js +27 -0
  39. package/dist/vendors/analytics/amplitude.cjs +193 -0
  40. package/dist/vendors/analytics/amplitude.js +134 -0
  41. package/dist/vendors/analytics/clearbit.cjs +69 -0
  42. package/dist/vendors/analytics/clearbit.js +28 -0
  43. package/dist/vendors/analytics/cloudflare-web-analytics.cjs +73 -0
  44. package/dist/vendors/analytics/cloudflare-web-analytics.js +32 -0
  45. package/dist/{databuddy.cjs → vendors/analytics/databuddy.cjs} +14 -10
  46. package/dist/{databuddy.js → vendors/analytics/databuddy.js} +3 -3
  47. package/dist/vendors/analytics/fathom-analytics.cjs +76 -0
  48. package/dist/vendors/analytics/fathom-analytics.js +35 -0
  49. package/dist/{google-tag.cjs → vendors/analytics/google-tag.cjs} +18 -35
  50. package/dist/{google-tag.js → vendors/analytics/google-tag.js} +7 -28
  51. package/dist/vendors/analytics/heap.cjs +181 -0
  52. package/dist/vendors/analytics/heap.js +134 -0
  53. package/dist/vendors/analytics/hightouch.cjs +153 -0
  54. package/dist/vendors/analytics/hightouch.js +109 -0
  55. package/dist/vendors/analytics/hotjar.cjs +85 -0
  56. package/dist/vendors/analytics/hotjar.js +44 -0
  57. package/dist/vendors/analytics/logrocket.cjs +99 -0
  58. package/dist/vendors/analytics/logrocket.js +58 -0
  59. package/dist/vendors/analytics/matomo-analytics.cjs +232 -0
  60. package/dist/vendors/analytics/matomo-analytics.js +191 -0
  61. package/dist/vendors/analytics/microsoft-clarity.cjs +138 -0
  62. package/dist/vendors/analytics/microsoft-clarity.js +97 -0
  63. package/dist/vendors/analytics/mixpanel-analytics.cjs +134 -0
  64. package/dist/vendors/analytics/mixpanel-analytics.js +93 -0
  65. package/dist/vendors/analytics/pirsch.cjs +108 -0
  66. package/dist/vendors/analytics/pirsch.js +67 -0
  67. package/dist/vendors/analytics/plausible-analytics.cjs +122 -0
  68. package/dist/vendors/analytics/plausible-analytics.js +81 -0
  69. package/dist/vendors/analytics/posthog.cjs +204 -0
  70. package/dist/vendors/analytics/posthog.js +163 -0
  71. package/dist/vendors/analytics/promptwatch.cjs +70 -0
  72. package/dist/vendors/analytics/promptwatch.js +29 -0
  73. package/dist/vendors/analytics/rudderstack.cjs +227 -0
  74. package/dist/vendors/analytics/rudderstack.js +183 -0
  75. package/dist/vendors/analytics/rybbit-analytics.cjs +104 -0
  76. package/dist/vendors/analytics/rybbit-analytics.js +63 -0
  77. package/dist/vendors/analytics/segment.cjs +97 -0
  78. package/dist/vendors/analytics/segment.js +56 -0
  79. package/dist/vendors/analytics/umami-analytics.cjs +80 -0
  80. package/dist/vendors/analytics/umami-analytics.js +39 -0
  81. package/dist/vendors/analytics/vercel-analytics.cjs +94 -0
  82. package/dist/vendors/analytics/vercel-analytics.js +53 -0
  83. package/dist/vendors/functional/crisp.cjs +143 -0
  84. package/dist/vendors/functional/crisp.js +102 -0
  85. package/dist/vendors/functional/intercom.cjs +89 -0
  86. package/dist/vendors/functional/intercom.js +45 -0
  87. package/dist/{google-tag-manager.cjs → vendors/tag-managers/google-tag-manager.cjs} +17 -34
  88. package/dist/{google-tag-manager.js → vendors/tag-managers/google-tag-manager.js} +6 -27
  89. package/dist-types/__tests__/helpers.d.ts +141 -0
  90. package/dist-types/engine/runtime.d.ts +1 -1
  91. package/dist-types/registry.d.ts +440 -0
  92. package/dist-types/types.d.ts +53 -2
  93. package/dist-types/vendors/_shared/attributes.d.ts +35 -0
  94. package/dist-types/vendors/_shared/google-consent.d.ts +47 -0
  95. package/dist-types/vendors/_shared/install-builders.d.ts +30 -0
  96. package/dist-types/vendors/_shared/script-url.d.ts +75 -0
  97. package/dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts +92 -0
  98. package/dist-types/vendors/ads-and-pixels/meta-pixel.d.ts +289 -0
  99. package/dist-types/{microsoft-uet.d.ts → vendors/ads-and-pixels/microsoft-uet.d.ts} +45 -34
  100. package/dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts +211 -0
  101. package/dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts +171 -0
  102. package/dist-types/{tiktok-pixel.d.ts → vendors/ads-and-pixels/tiktok-pixel.d.ts} +48 -33
  103. package/dist-types/{x-pixel.d.ts → vendors/ads-and-pixels/x-pixel.d.ts} +34 -17
  104. package/dist-types/vendors/analytics/adobe-analytics.d.ts +75 -0
  105. package/dist-types/vendors/analytics/ahrefs-analytics.d.ts +62 -0
  106. package/dist-types/vendors/analytics/amplitude.d.ts +234 -0
  107. package/dist-types/vendors/analytics/clearbit.d.ts +60 -0
  108. package/dist-types/vendors/analytics/cloudflare-web-analytics.d.ts +67 -0
  109. package/dist-types/{databuddy.d.ts → vendors/analytics/databuddy.d.ts} +25 -25
  110. package/dist-types/vendors/analytics/fathom-analytics.d.ts +90 -0
  111. package/dist-types/{google-tag.d.ts → vendors/analytics/google-tag.d.ts} +21 -24
  112. package/dist-types/vendors/analytics/heap.d.ts +316 -0
  113. package/dist-types/vendors/analytics/hightouch.d.ts +285 -0
  114. package/dist-types/vendors/analytics/hotjar.d.ts +73 -0
  115. package/dist-types/vendors/analytics/logrocket.d.ts +101 -0
  116. package/dist-types/vendors/analytics/matomo-analytics.d.ts +41 -0
  117. package/dist-types/vendors/analytics/microsoft-clarity.d.ts +98 -0
  118. package/dist-types/vendors/analytics/mixpanel-analytics.d.ts +113 -0
  119. package/dist-types/vendors/analytics/pirsch.d.ts +96 -0
  120. package/dist-types/vendors/analytics/plausible-analytics.d.ts +122 -0
  121. package/dist-types/vendors/analytics/posthog.d.ts +154 -0
  122. package/dist-types/vendors/analytics/promptwatch.d.ts +36 -0
  123. package/dist-types/vendors/analytics/rudderstack.d.ts +330 -0
  124. package/dist-types/vendors/analytics/rybbit-analytics.d.ts +82 -0
  125. package/dist-types/vendors/analytics/segment.d.ts +158 -0
  126. package/dist-types/vendors/analytics/umami-analytics.d.ts +93 -0
  127. package/dist-types/vendors/analytics/vercel-analytics.d.ts +66 -0
  128. package/dist-types/vendors/functional/crisp.d.ts +78 -0
  129. package/dist-types/vendors/functional/intercom.d.ts +135 -0
  130. package/dist-types/{google-tag-manager.d.ts → vendors/tag-managers/google-tag-manager.d.ts} +22 -25
  131. package/docs/README.md +62 -0
  132. package/docs/frameworks/javascript/script-loader.md +354 -0
  133. package/docs/frameworks/next/script-loader.md +499 -0
  134. package/docs/frameworks/react/script-loader.md +553 -0
  135. package/docs/integrations/adobe-analytics.md +160 -0
  136. package/docs/integrations/ahrefs-analytics.md +157 -0
  137. package/docs/integrations/amplitude.md +230 -0
  138. package/docs/integrations/building-integrations.md +239 -0
  139. package/docs/integrations/clearbit.md +130 -0
  140. package/docs/integrations/cloudflare-web-analytics.md +126 -0
  141. package/docs/integrations/crisp.md +140 -0
  142. package/docs/integrations/databuddy.md +205 -0
  143. package/docs/integrations/fathom-analytics.md +150 -0
  144. package/docs/integrations/google-maps.md +263 -0
  145. package/docs/integrations/google-tag-manager.md +154 -0
  146. package/docs/integrations/google-tag.md +134 -0
  147. package/docs/integrations/heap.md +219 -0
  148. package/docs/integrations/hightouch.md +199 -0
  149. package/docs/integrations/hotjar.md +143 -0
  150. package/docs/integrations/intercom.md +144 -0
  151. package/docs/integrations/linkedin-insights.md +161 -0
  152. package/docs/integrations/logrocket.md +175 -0
  153. package/docs/integrations/matomo-analytics.md +171 -0
  154. package/docs/integrations/meta-pixel.md +412 -0
  155. package/docs/integrations/microsoft-clarity.md +173 -0
  156. package/docs/integrations/microsoft-uet.md +156 -0
  157. package/docs/integrations/mixpanel-analytics.md +130 -0
  158. package/docs/integrations/overview.md +149 -0
  159. package/docs/integrations/pirsch.md +142 -0
  160. package/docs/integrations/plausible-analytics.md +154 -0
  161. package/docs/integrations/posthog.md +258 -0
  162. package/docs/integrations/promptwatch.md +121 -0
  163. package/docs/integrations/reddit-pixel.md +241 -0
  164. package/docs/integrations/rudderstack.md +271 -0
  165. package/docs/integrations/rybbit-analytics.md +143 -0
  166. package/docs/integrations/segment.md +146 -0
  167. package/docs/integrations/snapchat-pixel.md +163 -0
  168. package/docs/integrations/tiktok-pixel.md +123 -0
  169. package/docs/integrations/umami-analytics.md +148 -0
  170. package/docs/integrations/vercel-analytics.md +141 -0
  171. package/docs/integrations/x-pixel.md +157 -0
  172. package/docs/integrations/youtube.md +193 -0
  173. package/docs/shared/react/guides/script-loader.md +309 -0
  174. package/package.json +223 -8
  175. package/readme.json +8 -4
  176. package/dist/meta-pixel.cjs +0 -129
  177. package/dist/meta-pixel.js +0 -89
  178. package/dist/posthog.cjs +0 -137
  179. package/dist/posthog.js +0 -100
  180. package/dist-types/linkedin-insights.d.ts +0 -79
  181. package/dist-types/meta-pixel.d.ts +0 -185
  182. package/dist-types/posthog.d.ts +0 -112
@@ -1,5 +1,16 @@
1
1
  import { emitScriptDebugEvent } from "c15t";
2
+ import { RUNTIME_VALUE_KIND } from "../types.js";
3
+ function isRuntimeValue(value) {
4
+ if (null === value || 'object' != typeof value || Array.isArray(value)) return false;
5
+ const candidate = value;
6
+ return candidate.kind === RUNTIME_VALUE_KIND && ('date' === candidate.value || 'timestamp' === candidate.value);
7
+ }
8
+ function resolveRuntimeValue(value) {
9
+ if ('date' === value.value) return new Date();
10
+ return Date.now();
11
+ }
2
12
  function cloneStepValue(value) {
13
+ if (isRuntimeValue(value)) return resolveRuntimeValue(value);
3
14
  if (value instanceof Date) return new Date(value);
4
15
  if (Array.isArray(value)) return value.map((item)=>cloneStepValue(item));
5
16
  if (null !== value && 'object' == typeof value) return Object.fromEntries(Object.entries(value).map(([key, nestedValue])=>[
@@ -110,12 +121,36 @@ function executeStep(step) {
110
121
  {
111
122
  const target = win[step.target];
112
123
  if (null === target || 'object' != typeof target && 'function' != typeof target) break;
124
+ if (!step.queue && !Array.isArray(target)) break;
113
125
  const targetRecord = target;
114
126
  for (const methodName of step.methods)targetRecord[methodName] = (...args)=>{
115
127
  const queueTarget = resolveQueueTarget(win, step.queue ?? {
116
128
  global: step.target
117
129
  }, targetRecord);
118
130
  if (!queueTarget) return;
131
+ if ('methodCall' === step.queueFormat || 'wrappedMethodCall' === step.queueFormat || 'voidMethodCall' === step.queueFormat) {
132
+ const promise = new Promise((resolve)=>{
133
+ queueTarget.push({
134
+ name: methodName,
135
+ args,
136
+ resolve
137
+ });
138
+ });
139
+ if ('wrappedMethodCall' === step.queueFormat) return {
140
+ promise
141
+ };
142
+ if ('voidMethodCall' === step.queueFormat) return;
143
+ return promise;
144
+ }
145
+ if ('callback' === step.queueFormat) return void queueTarget.push({
146
+ name: methodName,
147
+ fn: ()=>{
148
+ const latestTarget = win[step.target];
149
+ if (null === latestTarget || 'object' != typeof latestTarget && 'function' != typeof latestTarget) return;
150
+ const method = latestTarget[methodName];
151
+ if ('function' == typeof method) method.apply(latestTarget, args);
152
+ }
153
+ });
119
154
  queueTarget.push([
120
155
  methodName,
121
156
  ...args
@@ -123,6 +158,26 @@ function executeStep(step) {
123
158
  };
124
159
  break;
125
160
  }
161
+ case 'defineQueueClass':
162
+ {
163
+ const target = win[step.target];
164
+ if (null === target || 'object' != typeof target && 'function' != typeof target) break;
165
+ const queueProperty = step.queueProperty ?? '_q';
166
+ const QueueClass = function() {
167
+ this[queueProperty] = [];
168
+ };
169
+ const prototype = QueueClass.prototype;
170
+ for (const methodName of step.methods)prototype[methodName] = function(...args) {
171
+ const queueTarget = this[queueProperty];
172
+ if (Array.isArray(queueTarget)) queueTarget.push({
173
+ name: methodName,
174
+ args
175
+ });
176
+ return this;
177
+ };
178
+ target[step.name] = QueueClass;
179
+ break;
180
+ }
126
181
  case 'defineGlobalMethods':
127
182
  {
128
183
  const target = win[step.target];
@@ -222,22 +277,57 @@ function mapConsentState(mapping, consents) {
222
277
  }
223
278
  return result;
224
279
  }
280
+ function partitionConsentIds(mapping, consents) {
281
+ const allowedConsentIds = [];
282
+ const deniedConsentIds = [];
283
+ for (const [c15tCategory, consentIds] of Object.entries(mapping)){
284
+ const isGranted = consents[c15tCategory];
285
+ for (const consentId of consentIds)(isGranted ? allowedConsentIds : deniedConsentIds).push(consentId);
286
+ }
287
+ return {
288
+ allowedConsentIds,
289
+ deniedConsentIds
290
+ };
291
+ }
225
292
  function getConsentSignalSteps(resolvedManifest, mode, consents) {
226
293
  if (!resolvedManifest.consentMapping || !resolvedManifest.consentSignal) return [];
227
- const mapped = mapConsentState(resolvedManifest.consentMapping, consents);
228
294
  switch(resolvedManifest.consentSignal){
229
295
  case 'gtag':
230
- return [
231
- {
232
- type: 'callGlobal',
233
- global: resolvedManifest.consentSignalTarget ?? 'gtag',
234
- args: [
235
- 'consent',
236
- mode,
237
- mapped
238
- ]
239
- }
240
- ];
296
+ {
297
+ const mapped = mapConsentState(resolvedManifest.consentMapping, consents);
298
+ return [
299
+ {
300
+ type: 'callGlobal',
301
+ global: resolvedManifest.consentSignalTarget ?? 'gtag',
302
+ args: [
303
+ 'consent',
304
+ mode,
305
+ mapped
306
+ ]
307
+ }
308
+ ];
309
+ }
310
+ case 'rudderstack':
311
+ {
312
+ const partition = partitionConsentIds(resolvedManifest.consentMapping, consents);
313
+ return [
314
+ {
315
+ type: 'callGlobal',
316
+ global: resolvedManifest.consentSignalTarget ?? 'rudderanalytics',
317
+ method: 'consent',
318
+ args: [
319
+ {
320
+ consentManagement: {
321
+ enabled: true,
322
+ provider: 'custom',
323
+ allowedConsentIds: partition.allowedConsentIds,
324
+ deniedConsentIds: partition.deniedConsentIds
325
+ }
326
+ }
327
+ ]
328
+ }
329
+ ];
330
+ }
241
331
  }
242
332
  }
243
333
  function resolvedManifestToScript(resolvedManifest) {
@@ -0,0 +1,423 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ const BUILT_IN_INTEGRATION_CATEGORIES = [
31
+ {
32
+ key: 'analytics',
33
+ label: 'Analytics'
34
+ },
35
+ {
36
+ key: 'ads-and-pixels',
37
+ label: 'Ads & Pixels'
38
+ },
39
+ {
40
+ key: 'functional',
41
+ label: 'Functional'
42
+ },
43
+ {
44
+ key: 'tag-manager',
45
+ label: 'Tag Managers'
46
+ }
47
+ ];
48
+ const builtInScriptIntegrations = [
49
+ {
50
+ key: 'googleTagManager',
51
+ vendor: 'google-tag-manager',
52
+ label: 'Google Tag Manager',
53
+ hint: "GTM container script",
54
+ docsSlug: 'google-tag-manager',
55
+ packageSubpath: 'google-tag-manager',
56
+ integrationCategory: 'tag-manager',
57
+ consentCategory: 'necessary'
58
+ },
59
+ {
60
+ key: 'gtag',
61
+ vendor: 'gtag',
62
+ label: 'Google Tag (gtag.js)',
63
+ hint: 'Google Analytics 4',
64
+ docsSlug: 'google-tag',
65
+ packageSubpath: 'google-tag',
66
+ integrationCategory: 'analytics',
67
+ consentCategory: 'measurement'
68
+ },
69
+ {
70
+ key: 'ahrefsAnalytics',
71
+ vendor: 'ahrefs-analytics',
72
+ label: 'Ahrefs Analytics',
73
+ hint: 'Cookieless web analytics from Ahrefs',
74
+ docsSlug: 'ahrefs-analytics',
75
+ packageSubpath: 'ahrefs-analytics',
76
+ integrationCategory: 'analytics',
77
+ consentCategory: 'measurement'
78
+ },
79
+ {
80
+ key: 'adobeAnalytics',
81
+ vendor: 'adobe-analytics',
82
+ label: 'Adobe Analytics',
83
+ hint: 'Adobe Experience Platform tags',
84
+ docsSlug: 'adobe-analytics',
85
+ packageSubpath: 'adobe-analytics',
86
+ integrationCategory: 'analytics',
87
+ consentCategory: 'measurement'
88
+ },
89
+ {
90
+ key: 'amplitude',
91
+ vendor: 'amplitude',
92
+ label: 'Amplitude',
93
+ hint: 'Product analytics',
94
+ docsSlug: 'amplitude',
95
+ packageSubpath: 'amplitude',
96
+ integrationCategory: 'analytics',
97
+ consentCategory: 'measurement'
98
+ },
99
+ {
100
+ key: 'cloudflareWebAnalytics',
101
+ vendor: 'cloudflare-web-analytics',
102
+ label: 'Cloudflare Web Analytics',
103
+ hint: 'Cookieless analytics from Cloudflare',
104
+ docsSlug: 'cloudflare-web-analytics',
105
+ packageSubpath: 'cloudflare-web-analytics',
106
+ integrationCategory: 'analytics',
107
+ consentCategory: 'measurement'
108
+ },
109
+ {
110
+ key: 'clearbit',
111
+ vendor: 'clearbit',
112
+ label: 'Clearbit',
113
+ hint: 'Visitor and company enrichment',
114
+ docsSlug: 'clearbit',
115
+ packageSubpath: 'clearbit',
116
+ integrationCategory: 'analytics',
117
+ consentCategory: 'marketing'
118
+ },
119
+ {
120
+ key: 'microsoft-clarity',
121
+ vendor: 'microsoft-clarity',
122
+ label: 'Microsoft Clarity',
123
+ hint: 'Session replay and heatmaps',
124
+ docsSlug: 'microsoft-clarity',
125
+ packageSubpath: 'microsoft-clarity',
126
+ integrationCategory: 'analytics',
127
+ consentCategory: 'measurement'
128
+ },
129
+ {
130
+ key: 'databuddy',
131
+ vendor: 'databuddy',
132
+ label: 'Databuddy',
133
+ hint: 'Data collection',
134
+ docsSlug: 'databuddy',
135
+ packageSubpath: 'databuddy',
136
+ integrationCategory: 'analytics',
137
+ consentCategory: 'measurement'
138
+ },
139
+ {
140
+ key: 'fathomAnalytics',
141
+ vendor: 'fathom-analytics',
142
+ label: 'Fathom Analytics',
143
+ hint: 'Privacy-friendly cookieless analytics',
144
+ docsSlug: 'fathom-analytics',
145
+ packageSubpath: 'fathom-analytics',
146
+ integrationCategory: 'analytics',
147
+ consentCategory: 'measurement'
148
+ },
149
+ {
150
+ key: 'heap',
151
+ vendor: 'heap',
152
+ label: 'Heap',
153
+ hint: 'Autocapture product analytics',
154
+ docsSlug: 'heap',
155
+ packageSubpath: 'heap',
156
+ integrationCategory: 'analytics',
157
+ consentCategory: 'measurement'
158
+ },
159
+ {
160
+ key: 'mixpanelAnalytics',
161
+ vendor: 'mixpanel-analytics',
162
+ label: 'Mixpanel Analytics',
163
+ hint: 'Product analytics and funnels',
164
+ docsSlug: 'mixpanel-analytics',
165
+ packageSubpath: 'mixpanel-analytics',
166
+ integrationCategory: 'analytics',
167
+ consentCategory: 'measurement'
168
+ },
169
+ {
170
+ key: 'hotjar',
171
+ vendor: 'hotjar',
172
+ label: 'Hotjar',
173
+ hint: 'Heatmaps and session recordings',
174
+ docsSlug: 'hotjar',
175
+ packageSubpath: 'hotjar',
176
+ integrationCategory: 'analytics',
177
+ consentCategory: 'measurement'
178
+ },
179
+ {
180
+ key: 'hightouch',
181
+ vendor: 'hightouch',
182
+ label: 'Hightouch',
183
+ hint: 'Customer data platform events',
184
+ docsSlug: 'hightouch',
185
+ packageSubpath: 'hightouch',
186
+ integrationCategory: 'analytics',
187
+ consentCategory: 'measurement'
188
+ },
189
+ {
190
+ key: 'rudderstack',
191
+ vendor: 'rudderstack',
192
+ label: 'RudderStack',
193
+ hint: 'Customer data platform events',
194
+ docsSlug: 'rudderstack',
195
+ packageSubpath: 'rudderstack',
196
+ integrationCategory: 'analytics',
197
+ consentCategory: 'measurement'
198
+ },
199
+ {
200
+ key: 'logRocket',
201
+ vendor: 'logrocket',
202
+ label: 'LogRocket',
203
+ hint: 'Session replay and monitoring',
204
+ docsSlug: 'logrocket',
205
+ packageSubpath: 'logrocket',
206
+ integrationCategory: 'analytics',
207
+ consentCategory: 'measurement'
208
+ },
209
+ {
210
+ key: 'matomoAnalytics',
211
+ vendor: 'matomo-analytics',
212
+ label: 'Matomo Analytics',
213
+ hint: 'Self-hosted privacy analytics',
214
+ docsSlug: 'matomo-analytics',
215
+ packageSubpath: 'matomo-analytics',
216
+ integrationCategory: 'analytics',
217
+ consentCategory: 'measurement'
218
+ },
219
+ {
220
+ key: 'posthog',
221
+ vendor: 'posthog',
222
+ label: 'PostHog',
223
+ hint: 'Product analytics',
224
+ docsSlug: 'posthog',
225
+ packageSubpath: 'posthog',
226
+ integrationCategory: 'analytics',
227
+ consentCategory: 'measurement'
228
+ },
229
+ {
230
+ key: 'promptwatch',
231
+ vendor: 'promptwatch',
232
+ label: 'Promptwatch',
233
+ hint: 'AI traffic analytics',
234
+ docsSlug: 'promptwatch',
235
+ packageSubpath: 'promptwatch',
236
+ integrationCategory: 'analytics',
237
+ consentCategory: 'measurement'
238
+ },
239
+ {
240
+ key: 'pirsch',
241
+ vendor: 'pirsch',
242
+ label: 'Pirsch',
243
+ hint: 'Privacy-friendly cookieless analytics',
244
+ docsSlug: 'pirsch',
245
+ packageSubpath: 'pirsch',
246
+ integrationCategory: 'analytics',
247
+ consentCategory: 'measurement'
248
+ },
249
+ {
250
+ key: 'segment',
251
+ vendor: 'segment',
252
+ label: 'Segment',
253
+ hint: 'Customer data platform',
254
+ docsSlug: 'segment',
255
+ packageSubpath: 'segment',
256
+ integrationCategory: 'analytics',
257
+ consentCategory: 'measurement'
258
+ },
259
+ {
260
+ key: 'rybbitAnalytics',
261
+ vendor: 'rybbit-analytics',
262
+ label: 'Rybbit Analytics',
263
+ hint: 'Privacy-friendly web analytics',
264
+ docsSlug: 'rybbit-analytics',
265
+ packageSubpath: 'rybbit-analytics',
266
+ integrationCategory: 'analytics',
267
+ consentCategory: 'measurement'
268
+ },
269
+ {
270
+ key: 'plausibleAnalytics',
271
+ vendor: 'plausible-analytics',
272
+ label: 'Plausible Analytics',
273
+ hint: 'Privacy-friendly cookieless analytics',
274
+ docsSlug: 'plausible-analytics',
275
+ packageSubpath: 'plausible-analytics',
276
+ integrationCategory: 'analytics',
277
+ consentCategory: 'measurement'
278
+ },
279
+ {
280
+ key: 'umamiAnalytics',
281
+ vendor: 'umami-analytics',
282
+ label: 'Umami Analytics',
283
+ hint: 'Open-source cookieless analytics',
284
+ docsSlug: 'umami-analytics',
285
+ packageSubpath: 'umami-analytics',
286
+ integrationCategory: 'analytics',
287
+ consentCategory: 'measurement'
288
+ },
289
+ {
290
+ key: 'vercelAnalytics',
291
+ vendor: 'vercel-analytics',
292
+ label: 'Vercel Analytics',
293
+ hint: 'Vercel web analytics',
294
+ docsSlug: 'vercel-analytics',
295
+ packageSubpath: 'vercel-analytics',
296
+ integrationCategory: 'analytics',
297
+ consentCategory: 'measurement'
298
+ },
299
+ {
300
+ key: 'crisp',
301
+ vendor: 'crisp',
302
+ label: 'Crisp',
303
+ hint: 'Live chat widget',
304
+ docsSlug: 'crisp',
305
+ packageSubpath: 'crisp',
306
+ integrationCategory: 'functional',
307
+ consentCategory: 'functionality'
308
+ },
309
+ {
310
+ key: 'intercom',
311
+ vendor: 'intercom',
312
+ label: 'Intercom',
313
+ hint: 'Messenger and live chat widget',
314
+ docsSlug: 'intercom',
315
+ packageSubpath: 'intercom',
316
+ integrationCategory: 'functional',
317
+ consentCategory: 'functionality'
318
+ },
319
+ {
320
+ key: 'metaPixel',
321
+ vendor: 'meta-pixel',
322
+ label: 'Meta Pixel',
323
+ hint: 'Facebook/Instagram tracking',
324
+ docsSlug: 'meta-pixel',
325
+ packageSubpath: 'meta-pixel',
326
+ integrationCategory: 'ads-and-pixels',
327
+ consentCategory: 'marketing'
328
+ },
329
+ {
330
+ key: 'redditPixel',
331
+ vendor: 'reddit-pixel',
332
+ label: 'Reddit Pixel',
333
+ hint: 'Reddit ads tracking',
334
+ docsSlug: 'reddit-pixel',
335
+ packageSubpath: 'reddit-pixel',
336
+ integrationCategory: 'ads-and-pixels',
337
+ consentCategory: 'marketing'
338
+ },
339
+ {
340
+ key: 'tiktokPixel',
341
+ vendor: 'tiktok-pixel',
342
+ label: 'TikTok Pixel',
343
+ hint: 'TikTok ads tracking',
344
+ docsSlug: 'tiktok-pixel',
345
+ packageSubpath: 'tiktok-pixel',
346
+ integrationCategory: 'ads-and-pixels',
347
+ consentCategory: 'marketing'
348
+ },
349
+ {
350
+ key: 'linkedinInsights',
351
+ vendor: 'linkedin-insights',
352
+ label: 'LinkedIn Insight Tag',
353
+ hint: 'LinkedIn conversion tracking',
354
+ docsSlug: 'linkedin-insights',
355
+ packageSubpath: 'linkedin-insights',
356
+ integrationCategory: 'ads-and-pixels',
357
+ consentCategory: 'marketing'
358
+ },
359
+ {
360
+ key: 'microsoftUet',
361
+ vendor: 'microsoft-uet',
362
+ label: 'Microsoft UET',
363
+ hint: 'Bing Ads tracking',
364
+ docsSlug: 'microsoft-uet',
365
+ packageSubpath: 'microsoft-uet',
366
+ integrationCategory: 'ads-and-pixels',
367
+ consentCategory: 'marketing'
368
+ },
369
+ {
370
+ key: 'snapchatPixel',
371
+ vendor: 'snapchat-pixel',
372
+ label: 'Snapchat Pixel',
373
+ hint: 'Snapchat ads tracking',
374
+ docsSlug: 'snapchat-pixel',
375
+ packageSubpath: 'snapchat-pixel',
376
+ integrationCategory: 'ads-and-pixels',
377
+ consentCategory: 'marketing'
378
+ },
379
+ {
380
+ key: 'xPixel',
381
+ vendor: 'x-pixel',
382
+ label: 'X (Twitter) Pixel',
383
+ hint: 'X/Twitter conversion tracking',
384
+ docsSlug: 'x-pixel',
385
+ packageSubpath: 'x-pixel',
386
+ integrationCategory: 'ads-and-pixels',
387
+ consentCategory: 'marketing'
388
+ }
389
+ ];
390
+ function getBuiltInScriptIntegration(key) {
391
+ const integration = builtInScriptIntegrations.find((item)=>item.key === key);
392
+ if (integration) return integration;
393
+ throw new Error(`Unknown built-in script integration: ${key}`);
394
+ }
395
+ function getBuiltInScriptIntegrationBySubpath(subpath) {
396
+ return builtInScriptIntegrations.find((integration)=>integration.packageSubpath === subpath);
397
+ }
398
+ function getBuiltInScriptIntegrationByVendor(vendor) {
399
+ return builtInScriptIntegrations.find((integration)=>integration.vendor === vendor);
400
+ }
401
+ __webpack_require__.d(__webpack_exports__, {
402
+ getBuiltInScriptIntegration: ()=>getBuiltInScriptIntegration,
403
+ getBuiltInScriptIntegrationBySubpath: ()=>getBuiltInScriptIntegrationBySubpath,
404
+ getBuiltInScriptIntegrationByVendor: ()=>getBuiltInScriptIntegrationByVendor
405
+ }, {
406
+ BUILT_IN_INTEGRATION_CATEGORIES: BUILT_IN_INTEGRATION_CATEGORIES,
407
+ builtInScriptIntegrations: builtInScriptIntegrations
408
+ });
409
+ exports.BUILT_IN_INTEGRATION_CATEGORIES = __webpack_exports__.BUILT_IN_INTEGRATION_CATEGORIES;
410
+ exports.builtInScriptIntegrations = __webpack_exports__.builtInScriptIntegrations;
411
+ exports.getBuiltInScriptIntegration = __webpack_exports__.getBuiltInScriptIntegration;
412
+ exports.getBuiltInScriptIntegrationBySubpath = __webpack_exports__.getBuiltInScriptIntegrationBySubpath;
413
+ exports.getBuiltInScriptIntegrationByVendor = __webpack_exports__.getBuiltInScriptIntegrationByVendor;
414
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
415
+ "BUILT_IN_INTEGRATION_CATEGORIES",
416
+ "builtInScriptIntegrations",
417
+ "getBuiltInScriptIntegration",
418
+ "getBuiltInScriptIntegrationBySubpath",
419
+ "getBuiltInScriptIntegrationByVendor"
420
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
421
+ Object.defineProperty(exports, '__esModule', {
422
+ value: true
423
+ });