@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.
Files changed (300) hide show
  1. package/AGENTS.md +129 -63
  2. package/README.md +8 -29
  3. package/SKILL.md +33 -0
  4. package/dist/adobe-analytics.js +2 -0
  5. package/dist/ahrefs-analytics.js +2 -0
  6. package/dist/amplitude.js +2 -0
  7. package/dist/clearbit.js +2 -0
  8. package/dist/cloudflare-web-analytics.js +2 -0
  9. package/dist/cloudflare-zaraz.js +2 -0
  10. package/dist/crisp.js +2 -0
  11. package/dist/databuddy.js +2 -0
  12. package/dist/e2e-test-utils.js +2 -139
  13. package/dist/engine/compile.js +2 -89
  14. package/dist/engine/runtime.js +2 -448
  15. package/dist/events.js +2 -218
  16. package/dist/fathom-analytics.js +2 -0
  17. package/dist/front-chat.js +2 -0
  18. package/dist/google-tag-manager.js +2 -0
  19. package/dist/google-tag.js +2 -0
  20. package/dist/heap.js +2 -0
  21. package/dist/hightouch.js +2 -0
  22. package/dist/hotjar.js +2 -0
  23. package/dist/intercom.js +2 -0
  24. package/dist/klaviyo.js +2 -0
  25. package/dist/linkedin-insights.js +2 -0
  26. package/dist/logrocket.js +2 -0
  27. package/dist/matomo-analytics.js +2 -0
  28. package/dist/meta-pixel.js +2 -0
  29. package/dist/microsoft-clarity.js +2 -0
  30. package/dist/microsoft-uet.js +2 -0
  31. package/dist/mixpanel-analytics.js +2 -0
  32. package/dist/one-dollar-stats.js +2 -0
  33. package/dist/openai-pixel.js +2 -0
  34. package/dist/pinterest-tag.js +2 -0
  35. package/dist/pirsch.js +2 -0
  36. package/dist/plausible-analytics.js +2 -0
  37. package/dist/posthog.js +2 -0
  38. package/dist/promptwatch.js +2 -0
  39. package/dist/reddit-pixel.js +2 -0
  40. package/dist/registry.js +2 -422
  41. package/dist/resolve.js +2 -33
  42. package/dist/rudderstack.js +2 -0
  43. package/dist/rybbit-analytics.js +2 -0
  44. package/dist/segment.js +2 -0
  45. package/dist/snapchat-pixel.js +2 -0
  46. package/dist/tiktok-pixel.js +2 -0
  47. package/dist/types.js +2 -16
  48. package/dist/umami-analytics.js +2 -0
  49. package/dist/vendors/_shared/attributes.js +2 -14
  50. package/dist/vendors/_shared/google-consent.js +2 -27
  51. package/dist/vendors/_shared/install-builders.js +2 -21
  52. package/dist/vendors/_shared/required-id.js +2 -0
  53. package/dist/vendors/_shared/script-url.js +2 -28
  54. package/dist/vendors/ads-and-pixels/linkedin-insights.js +2 -48
  55. package/dist/vendors/ads-and-pixels/meta-pixel.js +2 -153
  56. package/dist/vendors/ads-and-pixels/microsoft-uet.js +2 -110
  57. package/dist/vendors/ads-and-pixels/openai-pixel.js +2 -88
  58. package/dist/vendors/ads-and-pixels/pinterest-tag.js +2 -123
  59. package/dist/vendors/ads-and-pixels/reddit-pixel.js +2 -107
  60. package/dist/vendors/ads-and-pixels/snapchat-pixel.js +2 -87
  61. package/dist/vendors/ads-and-pixels/tiktok-pixel.js +2 -89
  62. package/dist/vendors/ads-and-pixels/x-pixel.js +2 -48
  63. package/dist/vendors/analytics/adobe-analytics.js +2 -49
  64. package/dist/vendors/analytics/ahrefs-analytics.js +2 -27
  65. package/dist/vendors/analytics/amplitude.js +2 -134
  66. package/dist/vendors/analytics/clearbit.js +2 -28
  67. package/dist/vendors/analytics/cloudflare-web-analytics.js +2 -32
  68. package/dist/vendors/analytics/databuddy.js +2 -103
  69. package/dist/vendors/analytics/fathom-analytics.js +2 -35
  70. package/dist/vendors/analytics/google-tag.js +2 -78
  71. package/dist/vendors/analytics/heap.js +2 -134
  72. package/dist/vendors/analytics/hightouch.js +2 -109
  73. package/dist/vendors/analytics/hotjar.js +2 -44
  74. package/dist/vendors/analytics/logrocket.js +2 -58
  75. package/dist/vendors/analytics/matomo-analytics.js +2 -191
  76. package/dist/vendors/analytics/microsoft-clarity.js +2 -100
  77. package/dist/vendors/analytics/mixpanel-analytics.js +2 -93
  78. package/dist/vendors/analytics/one-dollar-stats.js +2 -30
  79. package/dist/vendors/analytics/pirsch.js +2 -67
  80. package/dist/vendors/analytics/plausible-analytics.js +2 -81
  81. package/dist/vendors/analytics/posthog.js +2 -200
  82. package/dist/vendors/analytics/promptwatch.js +2 -29
  83. package/dist/vendors/analytics/rudderstack.js +2 -183
  84. package/dist/vendors/analytics/rybbit-analytics.js +2 -63
  85. package/dist/vendors/analytics/segment.js +2 -65
  86. package/dist/vendors/analytics/umami-analytics.js +2 -39
  87. package/dist/vendors/analytics/vercel-analytics.js +2 -53
  88. package/dist/vendors/email-and-sms/klaviyo.js +2 -0
  89. package/dist/vendors/functional/crisp.js +2 -100
  90. package/dist/vendors/functional/front-chat.js +2 -64
  91. package/dist/vendors/functional/intercom.js +2 -45
  92. package/dist/vendors/tag-managers/cloudflare-zaraz.js +2 -98
  93. package/dist/vendors/tag-managers/google-tag-manager.js +2 -73
  94. package/dist/vercel-analytics.js +2 -0
  95. package/dist/x-pixel.js +2 -0
  96. package/dist-types/adobe-analytics.d.ts +2 -0
  97. package/dist-types/ahrefs-analytics.d.ts +2 -0
  98. package/dist-types/amplitude.d.ts +2 -0
  99. package/dist-types/clearbit.d.ts +2 -0
  100. package/dist-types/cloudflare-web-analytics.d.ts +2 -0
  101. package/dist-types/cloudflare-zaraz.d.ts +2 -0
  102. package/dist-types/crisp.d.ts +2 -0
  103. package/dist-types/databuddy.d.ts +2 -0
  104. package/dist-types/e2e-test-utils.d.ts +2 -0
  105. package/dist-types/engine/compile.d.ts +2 -3
  106. package/dist-types/engine/runtime.d.ts +2 -3
  107. package/dist-types/events.d.ts +2 -46
  108. package/dist-types/fathom-analytics.d.ts +2 -0
  109. package/dist-types/front-chat.d.ts +2 -0
  110. package/dist-types/google-tag-manager.d.ts +2 -0
  111. package/dist-types/google-tag.d.ts +2 -0
  112. package/dist-types/heap.d.ts +2 -0
  113. package/dist-types/hightouch.d.ts +2 -0
  114. package/dist-types/hotjar.d.ts +2 -0
  115. package/dist-types/intercom.d.ts +2 -0
  116. package/dist-types/klaviyo.d.ts +2 -0
  117. package/dist-types/linkedin-insights.d.ts +2 -0
  118. package/dist-types/logrocket.d.ts +2 -0
  119. package/dist-types/matomo-analytics.d.ts +2 -0
  120. package/dist-types/meta-pixel.d.ts +2 -0
  121. package/dist-types/microsoft-clarity.d.ts +2 -0
  122. package/dist-types/microsoft-uet.d.ts +2 -0
  123. package/dist-types/mixpanel-analytics.d.ts +2 -0
  124. package/dist-types/one-dollar-stats.d.ts +2 -0
  125. package/dist-types/openai-pixel.d.ts +2 -0
  126. package/dist-types/pinterest-tag.d.ts +2 -0
  127. package/dist-types/pirsch.d.ts +2 -0
  128. package/dist-types/plausible-analytics.d.ts +2 -0
  129. package/dist-types/posthog.d.ts +2 -0
  130. package/dist-types/promptwatch.d.ts +2 -0
  131. package/dist-types/reddit-pixel.d.ts +2 -0
  132. package/dist-types/registry.d.ts +2 -485
  133. package/dist-types/resolve.d.ts +2 -9
  134. package/dist-types/rudderstack.d.ts +2 -0
  135. package/dist-types/rybbit-analytics.d.ts +2 -0
  136. package/dist-types/segment.d.ts +2 -0
  137. package/dist-types/snapchat-pixel.d.ts +2 -0
  138. package/dist-types/tiktok-pixel.d.ts +2 -0
  139. package/dist-types/types.d.ts +2 -314
  140. package/dist-types/umami-analytics.d.ts +2 -0
  141. package/dist-types/vendors/_shared/attributes.d.ts +2 -35
  142. package/dist-types/vendors/_shared/google-consent.d.ts +2 -47
  143. package/dist-types/vendors/_shared/install-builders.d.ts +2 -30
  144. package/dist-types/vendors/_shared/required-id.d.ts +2 -0
  145. package/dist-types/vendors/_shared/script-url.d.ts +2 -75
  146. package/dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts +2 -92
  147. package/dist-types/vendors/ads-and-pixels/meta-pixel.d.ts +2 -289
  148. package/dist-types/vendors/ads-and-pixels/microsoft-uet.d.ts +2 -105
  149. package/dist-types/vendors/ads-and-pixels/openai-pixel.d.ts +2 -211
  150. package/dist-types/vendors/ads-and-pixels/pinterest-tag.d.ts +2 -295
  151. package/dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts +2 -210
  152. package/dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts +2 -171
  153. package/dist-types/vendors/ads-and-pixels/tiktok-pixel.d.ts +2 -106
  154. package/dist-types/vendors/ads-and-pixels/x-pixel.d.ts +2 -183
  155. package/dist-types/vendors/analytics/adobe-analytics.d.ts +2 -75
  156. package/dist-types/vendors/analytics/ahrefs-analytics.d.ts +2 -62
  157. package/dist-types/vendors/analytics/amplitude.d.ts +2 -234
  158. package/dist-types/vendors/analytics/clearbit.d.ts +2 -60
  159. package/dist-types/vendors/analytics/cloudflare-web-analytics.d.ts +2 -67
  160. package/dist-types/vendors/analytics/databuddy.d.ts +2 -147
  161. package/dist-types/vendors/analytics/fathom-analytics.d.ts +2 -90
  162. package/dist-types/vendors/analytics/google-tag.d.ts +2 -95
  163. package/dist-types/vendors/analytics/heap.d.ts +2 -316
  164. package/dist-types/vendors/analytics/hightouch.d.ts +2 -285
  165. package/dist-types/vendors/analytics/hotjar.d.ts +2 -73
  166. package/dist-types/vendors/analytics/logrocket.d.ts +2 -101
  167. package/dist-types/vendors/analytics/matomo-analytics.d.ts +2 -41
  168. package/dist-types/vendors/analytics/microsoft-clarity.d.ts +2 -97
  169. package/dist-types/vendors/analytics/mixpanel-analytics.d.ts +2 -113
  170. package/dist-types/vendors/analytics/one-dollar-stats.d.ts +2 -39
  171. package/dist-types/vendors/analytics/pirsch.d.ts +2 -96
  172. package/dist-types/vendors/analytics/plausible-analytics.d.ts +2 -122
  173. package/dist-types/vendors/analytics/posthog.d.ts +2 -175
  174. package/dist-types/vendors/analytics/promptwatch.d.ts +2 -36
  175. package/dist-types/vendors/analytics/rudderstack.d.ts +2 -330
  176. package/dist-types/vendors/analytics/rybbit-analytics.d.ts +2 -82
  177. package/dist-types/vendors/analytics/segment.d.ts +2 -164
  178. package/dist-types/vendors/analytics/umami-analytics.d.ts +2 -93
  179. package/dist-types/vendors/analytics/vercel-analytics.d.ts +2 -66
  180. package/dist-types/vendors/email-and-sms/klaviyo.d.ts +2 -0
  181. package/dist-types/vendors/functional/crisp.d.ts +2 -78
  182. package/dist-types/vendors/functional/front-chat.d.ts +2 -62
  183. package/dist-types/vendors/functional/intercom.d.ts +2 -135
  184. package/dist-types/vendors/tag-managers/cloudflare-zaraz.d.ts +2 -39
  185. package/dist-types/vendors/tag-managers/google-tag-manager.d.ts +2 -96
  186. package/dist-types/vercel-analytics.d.ts +2 -0
  187. package/dist-types/x-pixel.d.ts +2 -0
  188. package/docs/README.md +129 -63
  189. package/docs/assets/v3/bottom-bar.png +0 -0
  190. package/docs/assets/v3/brand-card.png +0 -0
  191. package/docs/assets/v3/brand-preferences.png +0 -0
  192. package/docs/assets/v3/choice-wall.png +0 -0
  193. package/docs/assets/v3/headless-bar-html.png +0 -0
  194. package/docs/assets/v3/headless-bar-mobile.png +0 -0
  195. package/docs/assets/v3/headless-bar.png +0 -0
  196. package/docs/assets/v3/slim-bar.png +0 -0
  197. package/docs/concepts/choose-your-setup.md +87 -0
  198. package/docs/concepts/consent-categories.md +84 -0
  199. package/docs/{guides → concepts}/consent-state.md +71 -101
  200. package/docs/{guides → concepts}/data-fetching.md +31 -27
  201. package/docs/concepts/how-consent-works.md +123 -0
  202. package/docs/concepts/policies.md +71 -0
  203. package/docs/customization/class-names.md +202 -0
  204. package/docs/customization/dark-mode.md +157 -0
  205. package/docs/customization/motion.md +119 -0
  206. package/docs/customization/overview.md +67 -34
  207. package/docs/customization/recipes.md +839 -49
  208. package/docs/customization/slots.md +216 -35
  209. package/docs/customization/stylesheets.md +147 -0
  210. package/docs/customization/tailwind.md +842 -0
  211. package/docs/customization/tokens.md +163 -96
  212. package/docs/customization/translations.md +61 -3
  213. package/docs/frameworks/astro/embeds.md +160 -0
  214. package/docs/frameworks/astro/network-blocker.md +86 -0
  215. package/docs/frameworks/astro/scripts.md +146 -0
  216. package/docs/frameworks/html/embeds.md +142 -0
  217. package/docs/frameworks/html/network-blocker.md +105 -0
  218. package/docs/frameworks/html/scripts.md +164 -0
  219. package/docs/frameworks/javascript/scripts.md +119 -0
  220. package/docs/frameworks/next/embeds.md +90 -0
  221. package/docs/frameworks/next/network-blocker.md +153 -0
  222. package/docs/frameworks/next/scripts.md +196 -0
  223. package/docs/frameworks/nuxt/embeds.md +81 -0
  224. package/docs/frameworks/nuxt/network-blocker.md +97 -0
  225. package/docs/frameworks/nuxt/scripts.md +89 -0
  226. package/docs/frameworks/react/embeds.md +89 -0
  227. package/docs/frameworks/react/network-blocker.md +140 -0
  228. package/docs/frameworks/react/scripts.md +115 -0
  229. package/docs/frameworks/svelte/embeds.md +96 -0
  230. package/docs/frameworks/svelte/network-blocker.md +141 -0
  231. package/docs/frameworks/svelte/scripts.md +137 -0
  232. package/docs/frameworks/sveltekit/embeds.md +103 -0
  233. package/docs/frameworks/sveltekit/network-blocker.md +149 -0
  234. package/docs/frameworks/sveltekit/scripts.md +141 -0
  235. package/docs/frameworks/tanstack-start/embeds.md +96 -0
  236. package/docs/frameworks/tanstack-start/network-blocker.md +145 -0
  237. package/docs/frameworks/tanstack-start/scripts.md +103 -0
  238. package/docs/frameworks/vue/embeds.md +84 -0
  239. package/docs/frameworks/vue/network-blocker.md +99 -0
  240. package/docs/frameworks/vue/scripts.md +93 -0
  241. package/docs/guides/banner-experiments.md +654 -0
  242. package/docs/guides/troubleshooting.md +120 -47
  243. package/docs/guides/verify-consent.md +81 -49
  244. package/docs/integrations/adobe-analytics.md +167 -159
  245. package/docs/integrations/ahrefs-analytics.md +152 -154
  246. package/docs/integrations/amplitude.md +162 -156
  247. package/docs/integrations/building-integrations.md +136 -37
  248. package/docs/integrations/clearbit.md +154 -154
  249. package/docs/integrations/cloudflare-web-analytics.md +156 -156
  250. package/docs/integrations/cloudflare-zaraz.md +209 -261
  251. package/docs/integrations/crisp.md +164 -158
  252. package/docs/integrations/databuddy.md +157 -173
  253. package/docs/integrations/fathom-analytics.md +158 -156
  254. package/docs/integrations/front-chat.md +167 -167
  255. package/docs/integrations/google-maps.md +118 -83
  256. package/docs/integrations/google-tag-manager.md +178 -163
  257. package/docs/integrations/google-tag.md +163 -160
  258. package/docs/integrations/heap.md +163 -155
  259. package/docs/integrations/hightouch.md +161 -157
  260. package/docs/integrations/hotjar.md +159 -155
  261. package/docs/integrations/intercom.md +183 -153
  262. package/docs/integrations/klaviyo.md +486 -0
  263. package/docs/integrations/linkedin-insights.md +174 -150
  264. package/docs/integrations/logrocket.md +160 -156
  265. package/docs/integrations/matomo-analytics.md +188 -178
  266. package/docs/integrations/meta-pixel.md +188 -150
  267. package/docs/integrations/microsoft-clarity.md +163 -155
  268. package/docs/integrations/microsoft-uet.md +148 -154
  269. package/docs/integrations/mixpanel-analytics.md +155 -160
  270. package/docs/integrations/one-dollar-stats.md +166 -165
  271. package/docs/integrations/openai-pixel.md +204 -301
  272. package/docs/integrations/overview.md +137 -80
  273. package/docs/integrations/pinterest-tag.md +191 -183
  274. package/docs/integrations/pirsch.md +169 -159
  275. package/docs/integrations/plausible-analytics.md +172 -158
  276. package/docs/integrations/posthog.md +226 -241
  277. package/docs/integrations/promptwatch.md +154 -154
  278. package/docs/integrations/reddit-pixel.md +185 -157
  279. package/docs/integrations/rudderstack.md +201 -186
  280. package/docs/integrations/rybbit-analytics.md +171 -160
  281. package/docs/integrations/segment.md +182 -154
  282. package/docs/integrations/snapchat-pixel.md +186 -156
  283. package/docs/integrations/tiktok-pixel.md +171 -150
  284. package/docs/integrations/umami-analytics.md +163 -158
  285. package/docs/integrations/vercel-analytics.md +166 -157
  286. package/docs/integrations/x-pixel.md +176 -150
  287. package/docs/integrations/youtube.md +121 -86
  288. package/docs/upgrade-v3.md +475 -467
  289. package/package.json +10 -257
  290. package/dist-types/__tests__/helpers.d.ts +0 -141
  291. package/docs/assets/v3/brand-bar.png +0 -0
  292. package/docs/assets/v3/mobile-card.png +0 -0
  293. package/docs/assets/v3/preferences.png +0 -0
  294. package/docs/frameworks/javascript/script-loader.md +0 -100
  295. package/docs/frameworks/next/script-loader.md +0 -216
  296. package/docs/frameworks/react/script-loader.md +0 -69
  297. package/docs/guides/deployment-modes.md +0 -75
  298. package/docs/guides/shared-consent-controls.md +0 -158
  299. package/docs/integrations/clear-on-revocation.md +0 -167
  300. package/docs/integrations/granular-consent.md +0 -210
@@ -1,183 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- import { resolveScriptUrl, trimToUndefined } from "../_shared/script-url.js";
4
- const DEFAULT_RUDDERSTACK_SCRIPT_URL = 'https://cdn.rudderlabs.com/v3/modern/rsa.min.js';
5
- const RUDDERSTACK_QUEUE_METHODS = [
6
- 'setDefaultInstanceKey',
7
- 'load',
8
- 'ready',
9
- 'page',
10
- 'track',
11
- 'identify',
12
- 'alias',
13
- 'group',
14
- 'reset',
15
- 'setAnonymousId',
16
- 'startSession',
17
- 'endSession',
18
- 'consent',
19
- 'addCustomIntegration'
20
- ];
21
- const rudderstackManifest = {
22
- ...vendorManifestContract,
23
- bootstrap: [
24
- {
25
- ifUndefined: true,
26
- name: 'rudderanalytics',
27
- type: 'setGlobal',
28
- value: []
29
- },
30
- {
31
- name: 'RudderSnippetVersion',
32
- type: 'setGlobal',
33
- value: '3.0.32'
34
- },
35
- {
36
- name: 'rudderAnalyticsBuildType',
37
- type: 'setGlobal',
38
- value: 'modern'
39
- },
40
- {
41
- path: [
42
- 'rudderanalytics',
43
- 'snippetExecuted'
44
- ],
45
- type: 'setGlobalPath',
46
- value: true
47
- },
48
- {
49
- methods: [
50
- ...RUDDERSTACK_QUEUE_METHODS
51
- ],
52
- target: 'rudderanalytics',
53
- type: 'defineQueueMethods'
54
- }
55
- ],
56
- category: 'measurement',
57
- install: [
58
- {
59
- args: [
60
- '{{writeKey}}',
61
- '{{dataPlaneUrl}}',
62
- '{{loadOptions}}'
63
- ],
64
- global: 'rudderanalytics',
65
- method: 'load',
66
- type: 'callGlobal'
67
- },
68
- {
69
- global: 'rudderanalytics',
70
- method: 'page',
71
- type: 'callGlobal'
72
- },
73
- {
74
- async: true,
75
- attributes: {
76
- 'data-loader': 'RS_JS_SDK',
77
- 'data-rsa-write-key': '{{writeKey}}'
78
- },
79
- src: "{{scriptUrl}}",
80
- type: 'loadScript'
81
- }
82
- ],
83
- vendor: 'rudderstack'
84
- };
85
- const rudderstack_validateRequiredString = function(value, label) {
86
- const normalized = 'string' == typeof value ? value.trim() : '';
87
- if (0 === normalized.length) throw new Error(`rudderstack: missing or invalid ${label}`);
88
- return normalized;
89
- };
90
- const rudderstack_validateOptionalHttpsScriptUrl = function(scriptUrl) {
91
- if (void 0 === scriptUrl) return;
92
- let parsed;
93
- try {
94
- parsed = new URL(scriptUrl);
95
- } catch {
96
- throw new Error("rudderstack: scriptUrl must be a valid https URL");
97
- }
98
- if ('https:' !== parsed.protocol) throw new Error("rudderstack: scriptUrl must be a valid https URL");
99
- return scriptUrl;
100
- };
101
- const rudderstack_isJsonObjectValue = function(value) {
102
- return 'object' == typeof value && null !== value && !Array.isArray(value);
103
- };
104
- const rudderstack_validateConsentMapping = function(consentManagement) {
105
- const normalized = {};
106
- for (const [category, ids] of Object.entries(consentManagement.mapping)){
107
- if (!Array.isArray(ids)) throw new Error(`rudderstack: consentManagement.mapping.${category} must be an array of consent IDs`);
108
- const trimmed = ids.map((id)=>{
109
- if ('string' == typeof id) return id.trim();
110
- return '';
111
- }).filter((id)=>id.length > 0);
112
- if (0 === trimmed.length) throw new Error(`rudderstack: consentManagement.mapping.${category} is declared but contains no valid consent IDs`);
113
- normalized[category] = trimmed;
114
- }
115
- if (0 === Object.keys(normalized).length) throw new Error('rudderstack: consentManagement.mapping must map at least one c15t category to a non-empty list of RudderStack consent IDs');
116
- return normalized;
117
- };
118
- const rudderstack_buildPreConsentLoadOptions = function(loadOptions) {
119
- let userConsentManagement = {};
120
- if (rudderstack_isJsonObjectValue(loadOptions.consentManagement)) userConsentManagement = loadOptions.consentManagement;
121
- let userPreConsent = {};
122
- if (rudderstack_isJsonObjectValue(loadOptions.preConsent)) userPreConsent = loadOptions.preConsent;
123
- let storage = {
124
- strategy: 'none'
125
- };
126
- if (rudderstack_isJsonObjectValue(userPreConsent.storage)) storage = userPreConsent.storage;
127
- return {
128
- ...loadOptions,
129
- preConsent: {
130
- ...userPreConsent,
131
- enabled: true,
132
- events: {
133
- delivery: 'buffer'
134
- },
135
- storage
136
- },
137
- consentManagement: {
138
- ...userConsentManagement,
139
- enabled: true,
140
- provider: 'custom'
141
- }
142
- };
143
- };
144
- const rudderstack_validateDataPlaneUrl = function(dataPlaneUrl) {
145
- const normalized = rudderstack_validateRequiredString(dataPlaneUrl, 'dataPlaneUrl');
146
- let parsed;
147
- try {
148
- parsed = new URL(normalized);
149
- } catch {
150
- throw new Error('rudderstack: dataPlaneUrl must be a valid https URL');
151
- }
152
- if ('https:' !== parsed.protocol) throw new Error('rudderstack: dataPlaneUrl must be a valid https URL');
153
- return normalized;
154
- };
155
- const rudderstack_rudderstack = function({ writeKey, dataPlaneUrl, consentManagement, loadOptions = {}, trackPageView = true, scriptUrl }) {
156
- const normalizedWriteKey = rudderstack_validateRequiredString(writeKey, 'writeKey');
157
- const normalizedDataPlaneUrl = rudderstack_validateDataPlaneUrl(dataPlaneUrl);
158
- let manifest = rudderstackManifest;
159
- let resolvedLoadOptions = loadOptions;
160
- if (consentManagement) {
161
- const consentMapping = rudderstack_validateConsentMapping(consentManagement);
162
- manifest = {
163
- ...manifest,
164
- alwaysLoad: true,
165
- consentMapping,
166
- consentSignal: 'rudderstack',
167
- consentSignalTarget: 'rudderanalytics',
168
- persistAfterConsentRevoked: true
169
- };
170
- resolvedLoadOptions = rudderstack_buildPreConsentLoadOptions(loadOptions);
171
- }
172
- if (!trackPageView) manifest = {
173
- ...manifest,
174
- install: manifest.install.filter((step)=>!('callGlobal' === step.type && 'rudderanalytics' === step.global && 'page' === step.method))
175
- };
176
- return resolveManifest(manifest, {
177
- dataPlaneUrl: normalizedDataPlaneUrl,
178
- loadOptions: resolvedLoadOptions,
179
- scriptUrl: resolveScriptUrl(rudderstack_validateOptionalHttpsScriptUrl(trimToUndefined(scriptUrl)), DEFAULT_RUDDERSTACK_SCRIPT_URL),
180
- writeKey: normalizedWriteKey
181
- });
182
- };
183
- export { RUDDERSTACK_QUEUE_METHODS, rudderstackManifest, rudderstack_rudderstack as rudderstack };
1
+ /** @deprecated Use @c15t/integrations/vendors/analytics/rudderstack. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/analytics/rudderstack';
@@ -1,63 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- import { booleanDataAttribute } from "../_shared/attributes.js";
4
- import { joinUrlPath } from "../_shared/script-url.js";
5
- const rybbitAnalyticsManifest = {
6
- ...vendorManifestContract,
7
- category: 'measurement',
8
- install: [
9
- {
10
- attributes: {
11
- 'data-api-key': '{{apiKey}}',
12
- 'data-auto-track-pageview': '{{autoTrackPageview}}',
13
- 'data-debounce': '{{debounce}}',
14
- 'data-mask-patterns': '{{maskPatterns}}',
15
- 'data-session-replay': '{{sessionReplay}}',
16
- 'data-site-id': '{{siteId}}',
17
- 'data-skip-patterns': '{{skipPatterns}}',
18
- 'data-track-errors': '{{trackErrors}}',
19
- 'data-track-outbound': '{{trackOutbound}}',
20
- 'data-track-query': '{{trackQuery}}',
21
- 'data-track-spa': '{{trackSpa}}',
22
- 'data-web-vitals': '{{webVitals}}'
23
- },
24
- defer: true,
25
- src: "{{scriptUrl}}",
26
- type: 'loadScript'
27
- }
28
- ],
29
- vendor: 'rybbit-analytics'
30
- };
31
- const rybbit_analytics_getRybbitScriptUrl = function(options) {
32
- const url = options.scriptUrl?.trim();
33
- if (url && url.length > 0) return url;
34
- if (options.analyticsHost) return joinUrlPath(options.analyticsHost, "script.js");
35
- return "https://app.rybbit.io/api/script.js";
36
- };
37
- const rybbit_analytics_rybbitAnalytics = function(options) {
38
- let siteId;
39
- siteId = void 0 === options.siteId || null === options.siteId ? '' : String(options.siteId).trim();
40
- if (0 === siteId.length) throw new Error('rybbitAnalytics: missing siteId');
41
- let debounce;
42
- if (void 0 !== options.debounce) debounce = String(options.debounce);
43
- let skipPatterns;
44
- if (options.skipPatterns) skipPatterns = JSON.stringify(options.skipPatterns);
45
- let maskPatterns;
46
- if (options.maskPatterns) maskPatterns = JSON.stringify(options.maskPatterns);
47
- return resolveManifest(rybbitAnalyticsManifest, {
48
- apiKey: options.apiKey,
49
- autoTrackPageview: booleanDataAttribute(options.autoTrackPageview),
50
- debounce,
51
- maskPatterns,
52
- scriptUrl: rybbit_analytics_getRybbitScriptUrl(options),
53
- sessionReplay: booleanDataAttribute(options.sessionReplay),
54
- siteId,
55
- skipPatterns,
56
- trackErrors: booleanDataAttribute(options.trackErrors),
57
- trackOutbound: booleanDataAttribute(options.trackOutbound),
58
- trackQuery: booleanDataAttribute(options.trackQuery),
59
- trackSpa: booleanDataAttribute(options.trackSpa),
60
- webVitals: booleanDataAttribute(options.webVitals)
61
- });
62
- };
63
- export { rybbitAnalyticsManifest, rybbit_analytics_rybbitAnalytics as rybbitAnalytics };
1
+ /** @deprecated Use @c15t/integrations/vendors/analytics/rybbit-analytics. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/analytics/rybbit-analytics';
@@ -1,65 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- import { resolveScriptUrl } from "../_shared/script-url.js";
4
- const segmentManifest = {
5
- ...vendorManifestContract,
6
- bootstrap: [
7
- {
8
- ifUndefined: true,
9
- name: 'analytics',
10
- type: 'setGlobal',
11
- value: []
12
- },
13
- {
14
- methods: [
15
- 'track',
16
- 'page',
17
- 'identify',
18
- 'group',
19
- 'alias',
20
- 'reset'
21
- ],
22
- target: 'analytics',
23
- type: 'defineQueueMethods'
24
- }
25
- ],
26
- category: 'measurement',
27
- install: [
28
- {
29
- path: [
30
- 'analytics',
31
- '_loadOptions'
32
- ],
33
- type: 'setGlobalPath',
34
- value: '{{loadOptions}}'
35
- },
36
- {
37
- global: 'analytics',
38
- method: 'page',
39
- type: 'callGlobal'
40
- },
41
- {
42
- async: true,
43
- src: "{{scriptUrl}}",
44
- type: 'loadScript'
45
- }
46
- ],
47
- vendor: 'segment'
48
- };
49
- const segment_segment = function({ writeKey, loadOptions = {}, trackPageView = true, scriptUrl }) {
50
- let normalizedWriteKey = '';
51
- if ('string' == typeof writeKey) normalizedWriteKey = writeKey.trim();
52
- if (0 === normalizedWriteKey.length) throw new Error('segment: missing or invalid writeKey');
53
- const segmentCdnBase = 'https://cdn.segment.com/analytics.js/v1';
54
- const defaultScriptUrl = `${segmentCdnBase}/${normalizedWriteKey}/analytics.min.js`;
55
- let manifest = segmentManifest;
56
- if (!trackPageView) manifest = {
57
- ...segmentManifest,
58
- install: segmentManifest.install.filter((step)=>!('callGlobal' === step.type && 'analytics' === step.global && 'page' === step.method))
59
- };
60
- return resolveManifest(manifest, {
61
- loadOptions,
62
- scriptUrl: resolveScriptUrl(scriptUrl, defaultScriptUrl)
63
- });
64
- };
65
- export { segmentManifest, segment_segment as segment };
1
+ /** @deprecated Use @c15t/integrations/vendors/analytics/segment. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/analytics/segment';
@@ -1,39 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- import { booleanDataAttribute, listDataAttribute } from "../_shared/attributes.js";
4
- import { resolveScriptUrl } from "../_shared/script-url.js";
5
- const umamiAnalyticsManifest = {
6
- ...vendorManifestContract,
7
- category: 'measurement',
8
- install: [
9
- {
10
- attributes: {
11
- 'data-auto-track': '{{autoTrackAttribute}}',
12
- 'data-before-send': '{{beforeSend}}',
13
- 'data-domains': '{{domains}}',
14
- 'data-host-url': '{{hostUrl}}',
15
- 'data-tag': '{{tag}}',
16
- 'data-website-id': '{{websiteId}}'
17
- },
18
- defer: true,
19
- src: "{{scriptUrl}}",
20
- type: 'loadScript'
21
- }
22
- ],
23
- vendor: 'umami-analytics'
24
- };
25
- const umami_analytics_umamiAnalytics = function(options) {
26
- const websiteId = options.websiteId.trim();
27
- if (0 === websiteId.length) throw new Error('umamiAnalytics: invalid websiteId - must be a non-empty string');
28
- const resolved = resolveManifest(umamiAnalyticsManifest, {
29
- autoTrackAttribute: booleanDataAttribute(options.autoTrack),
30
- beforeSend: options.beforeSend,
31
- domains: listDataAttribute(options.domains),
32
- hostUrl: options.hostUrl,
33
- scriptUrl: resolveScriptUrl(options.scriptUrl, "https://cloud.umami.is/script.js"),
34
- tag: options.tag,
35
- websiteId
36
- });
37
- return resolved;
38
- };
39
- export { umamiAnalyticsManifest, umami_analytics_umamiAnalytics as umamiAnalytics };
1
+ /** @deprecated Use @c15t/integrations/vendors/analytics/umami-analytics. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/analytics/umami-analytics';
@@ -1,53 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- const vercelAnalyticsManifest = {
4
- ...vendorManifestContract,
5
- bootstrap: [
6
- {
7
- ifUndefined: true,
8
- name: 'vaq',
9
- type: 'setGlobal',
10
- value: []
11
- },
12
- {
13
- ifUndefined: true,
14
- name: 'va',
15
- queue: {
16
- global: 'vaq'
17
- },
18
- queueFormat: 'array',
19
- type: 'defineStubFunction'
20
- }
21
- ],
22
- category: 'measurement',
23
- install: [
24
- {
25
- attributes: {
26
- 'data-disable-auto-track': '{{disableAutoTrackAttribute}}',
27
- 'data-dsn': '{{dsn}}',
28
- 'data-endpoint': '{{endpoint}}',
29
- 'data-sdkn': 'c15t'
30
- },
31
- defer: true,
32
- src: "{{scriptUrl}}",
33
- type: 'loadScript'
34
- }
35
- ],
36
- vendor: 'vercel-analytics'
37
- };
38
- const vercel_analytics_getVercelScriptUrl = function(options) {
39
- if (options.scriptUrl) return options.scriptUrl;
40
- if ('development' === options.mode || options.debug) return "https://va.vercel-scripts.com/v1/script.debug.js";
41
- return "https://va.vercel-scripts.com/v1/script.js";
42
- };
43
- const vercel_analytics_vercelAnalytics = function(options = {}) {
44
- let disableAutoTrackAttribute;
45
- if (options.disableAutoTrack) disableAutoTrackAttribute = '1';
46
- return resolveManifest(vercelAnalyticsManifest, {
47
- disableAutoTrackAttribute,
48
- dsn: options.dsn,
49
- endpoint: options.endpoint,
50
- scriptUrl: vercel_analytics_getVercelScriptUrl(options)
51
- });
52
- };
53
- export { vercelAnalyticsManifest, vercel_analytics_vercelAnalytics as vercelAnalytics };
1
+ /** @deprecated Use @c15t/integrations/vendors/analytics/vercel-analytics. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/analytics/vercel-analytics';
@@ -0,0 +1,2 @@
1
+ /** @deprecated Use @c15t/integrations/vendors/email-and-sms/klaviyo. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/email-and-sms/klaviyo';
@@ -1,100 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- const crispManifest = {
4
- ...vendorManifestContract,
5
- category: 'functionality',
6
- install: [
7
- {
8
- ifUndefined: false,
9
- name: '$crisp',
10
- type: 'setGlobal',
11
- value: []
12
- },
13
- {
14
- ifUndefined: false,
15
- name: 'CRISP_WEBSITE_ID',
16
- type: 'setGlobal',
17
- value: '{{websiteId}}'
18
- },
19
- {
20
- async: true,
21
- src: "{{scriptSrc}}",
22
- type: 'loadScript'
23
- }
24
- ],
25
- vendor: 'crisp'
26
- };
27
- const crisp_createCrispManifest = function(options) {
28
- const install = [
29
- {
30
- ifUndefined: false,
31
- name: '$crisp',
32
- type: 'setGlobal',
33
- value: []
34
- },
35
- {
36
- ifUndefined: false,
37
- name: 'CRISP_WEBSITE_ID',
38
- type: 'setGlobal',
39
- value: '{{websiteId}}'
40
- }
41
- ];
42
- if (void 0 !== options.locale || void 0 !== options.sessionMerge) {
43
- const value = {};
44
- if (void 0 !== options.locale) value.locale = '{{locale}}';
45
- if (void 0 !== options.sessionMerge) value.session_merge = '{{sessionMerge}}';
46
- install.push({
47
- ifUndefined: false,
48
- name: 'CRISP_RUNTIME_CONFIG',
49
- type: 'setGlobal',
50
- value
51
- });
52
- }
53
- if (options.cookieDomain) install.push({
54
- ifUndefined: false,
55
- name: 'CRISP_COOKIE_DOMAIN',
56
- type: 'setGlobal',
57
- value: '{{cookieDomain}}'
58
- });
59
- if (void 0 !== options.cookieExpiry) install.push({
60
- ifUndefined: false,
61
- name: 'CRISP_COOKIE_EXPIRE',
62
- type: 'setGlobal',
63
- value: '{{cookieExpiry}}'
64
- });
65
- if (options.tokenId) install.push({
66
- ifUndefined: false,
67
- name: 'CRISP_TOKEN_ID',
68
- type: 'setGlobal',
69
- value: '{{tokenId}}'
70
- });
71
- if (options.safeMode) install.push({
72
- queue: '$crisp',
73
- type: 'pushToQueue',
74
- value: [
75
- 'safe',
76
- true
77
- ]
78
- });
79
- install.push({
80
- async: true,
81
- src: "{{scriptSrc}}",
82
- type: 'loadScript'
83
- });
84
- return {
85
- ...crispManifest,
86
- install
87
- };
88
- };
89
- const crisp_crisp = function(options) {
90
- return resolveManifest(crisp_createCrispManifest(options), {
91
- cookieDomain: options.cookieDomain,
92
- cookieExpiry: options.cookieExpiry,
93
- locale: options.locale,
94
- scriptSrc: options.scriptSrc ?? 'https://client.crisp.chat/l.js',
95
- sessionMerge: options.sessionMerge,
96
- tokenId: options.tokenId,
97
- websiteId: options.websiteId
98
- });
99
- };
100
- export { crispManifest, crisp_crisp as crisp };
1
+ /** @deprecated Use @c15t/integrations/vendors/functional/crisp. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/functional/crisp';
@@ -1,64 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- import { resolveScriptUrl, trimToUndefined } from "../_shared/script-url.js";
4
- const FRONT_CHAT_SCRIPT_SRC = 'https://chat-assets.frontapp.com/v1/chat.bundle.js';
5
- const frontChatManifest = {
6
- ...vendorManifestContract,
7
- category: 'functionality',
8
- install: [
9
- {
10
- async: true,
11
- src: "{{scriptSrc}}",
12
- type: 'loadScript'
13
- }
14
- ],
15
- onLoadGranted: [
16
- {
17
- args: [
18
- 'init',
19
- '{{initOptions}}'
20
- ],
21
- global: 'FrontChat',
22
- type: 'callGlobal'
23
- }
24
- ],
25
- vendor: 'front-chat'
26
- };
27
- const front_chat_frontChat = function(options) {
28
- const chatId = 'string' == typeof options?.chatId ? options.chatId.trim() : '';
29
- if (!chatId) throw new Error('frontChat: chatId must be a non-empty string.');
30
- const scriptSrc = resolveScriptUrl(trimToUndefined(options.scriptSrc), FRONT_CHAT_SCRIPT_SRC);
31
- const nonce = trimToUndefined(options.nonce);
32
- const initOptions = {
33
- chatId,
34
- useDefaultLauncher: options.useDefaultLauncher ?? true
35
- };
36
- if (nonce) initOptions.nonce = nonce;
37
- const script = resolveManifest(frontChatManifest, {
38
- initOptions,
39
- scriptSrc
40
- });
41
- return {
42
- ...script,
43
- nonce,
44
- onLoad (info) {
45
- if (!info.hasConsent || !info.element?.isConnected) return;
46
- const loadedNonce = info.element.nonce;
47
- const resolved = loadedNonce ? resolveManifest(frontChatManifest, {
48
- initOptions: {
49
- ...initOptions,
50
- nonce: loadedNonce
51
- },
52
- scriptSrc
53
- }) : script;
54
- resolved.onLoad?.(info);
55
- },
56
- target: 'body'
57
- };
58
- };
59
- const front_chat_shutdownFrontChat = function() {
60
- if ("u" > typeof window && 'function' == typeof window.FrontChat) window.FrontChat('shutdown', {
61
- clearSession: true
62
- });
63
- };
64
- export { frontChatManifest, front_chat_frontChat as frontChat, front_chat_shutdownFrontChat as shutdownFrontChat };
1
+ /** @deprecated Use @c15t/integrations/vendors/functional/front-chat. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/functional/front-chat';
@@ -1,45 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- const INTERCOM_API_BASES = {
4
- au: 'https://api-iam.au.intercom.io',
5
- eu: 'https://api-iam.eu.intercom.io',
6
- us: 'https://api-iam.intercom.io'
7
- };
8
- const intercomManifest = {
9
- ...vendorManifestContract,
10
- category: 'functionality',
11
- install: [
12
- {
13
- ifUndefined: true,
14
- name: 'Intercom',
15
- queue: {
16
- property: 'q'
17
- },
18
- queueFormat: 'array',
19
- type: 'defineStubFunction'
20
- },
21
- {
22
- ifUndefined: false,
23
- name: 'intercomSettings',
24
- type: 'setGlobal',
25
- value: '{{settings}}'
26
- },
27
- {
28
- async: true,
29
- src: "{{scriptSrc}}",
30
- type: 'loadScript'
31
- }
32
- ],
33
- vendor: 'intercom'
34
- };
35
- const intercom_intercom = function({ appId, apiBase = INTERCOM_API_BASES.us, settings, scriptSrc }) {
36
- return resolveManifest(intercomManifest, {
37
- scriptSrc: scriptSrc ?? `https://widget.intercom.io/widget/${appId}`,
38
- settings: {
39
- ...settings ?? {},
40
- api_base: apiBase,
41
- app_id: appId
42
- }
43
- });
44
- };
45
- export { INTERCOM_API_BASES, intercomManifest, intercom_intercom as intercom };
1
+ /** @deprecated Use @c15t/integrations/vendors/functional/intercom. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/functional/intercom';