@c15t/scripts 3.0.0-alpha.1 → 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 -59
  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 -137
  13. package/dist/engine/compile.js +2 -89
  14. package/dist/engine/runtime.js +2 -448
  15. package/dist/events.js +2 -0
  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 -392
  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 -0
  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 -66
  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 -0
  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 -56
  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 -0
  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 -59
  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 -0
  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 -458
  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 -0
  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 -93
  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 -0
  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 -158
  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 -0
  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 -94
  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 -59
  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/concepts/consent-state.md +357 -0
  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 -33
  207. package/docs/customization/recipes.md +839 -47
  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 +166 -36
  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 +168 -160
  245. package/docs/integrations/ahrefs-analytics.md +153 -155
  246. package/docs/integrations/amplitude.md +163 -157
  247. package/docs/integrations/building-integrations.md +136 -37
  248. package/docs/integrations/clearbit.md +155 -155
  249. package/docs/integrations/cloudflare-web-analytics.md +157 -157
  250. package/docs/integrations/cloudflare-zaraz.md +210 -262
  251. package/docs/integrations/crisp.md +165 -159
  252. package/docs/integrations/databuddy.md +158 -174
  253. package/docs/integrations/fathom-analytics.md +159 -157
  254. package/docs/integrations/front-chat.md +322 -0
  255. package/docs/integrations/google-maps.md +119 -84
  256. package/docs/integrations/google-tag-manager.md +179 -164
  257. package/docs/integrations/google-tag.md +164 -161
  258. package/docs/integrations/heap.md +164 -156
  259. package/docs/integrations/hightouch.md +162 -158
  260. package/docs/integrations/hotjar.md +160 -156
  261. package/docs/integrations/intercom.md +184 -154
  262. package/docs/integrations/klaviyo.md +486 -0
  263. package/docs/integrations/linkedin-insights.md +175 -151
  264. package/docs/integrations/logrocket.md +161 -157
  265. package/docs/integrations/matomo-analytics.md +189 -179
  266. package/docs/integrations/meta-pixel.md +189 -151
  267. package/docs/integrations/microsoft-clarity.md +164 -156
  268. package/docs/integrations/microsoft-uet.md +149 -155
  269. package/docs/integrations/mixpanel-analytics.md +156 -161
  270. package/docs/integrations/one-dollar-stats.md +306 -0
  271. package/docs/integrations/openai-pixel.md +205 -302
  272. package/docs/integrations/overview.md +143 -83
  273. package/docs/integrations/pinterest-tag.md +329 -0
  274. package/docs/integrations/pirsch.md +170 -160
  275. package/docs/integrations/plausible-analytics.md +173 -159
  276. package/docs/integrations/posthog.md +227 -242
  277. package/docs/integrations/promptwatch.md +155 -155
  278. package/docs/integrations/reddit-pixel.md +186 -158
  279. package/docs/integrations/rudderstack.md +202 -187
  280. package/docs/integrations/rybbit-analytics.md +172 -161
  281. package/docs/integrations/segment.md +183 -155
  282. package/docs/integrations/snapchat-pixel.md +187 -157
  283. package/docs/integrations/tiktok-pixel.md +172 -151
  284. package/docs/integrations/umami-analytics.md +164 -159
  285. package/docs/integrations/vercel-analytics.md +167 -158
  286. package/docs/integrations/x-pixel.md +177 -151
  287. package/docs/integrations/youtube.md +122 -87
  288. package/docs/upgrade-v3.md +490 -354
  289. package/package.json +12 -236
  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 -94
  295. package/docs/frameworks/next/script-loader.md +0 -210
  296. package/docs/frameworks/react/script-loader.md +0 -63
  297. package/docs/guides/consent-state.md +0 -60
  298. package/docs/guides/deployment-modes.md +0 -75
  299. package/docs/integrations/clear-on-revocation.md +0 -167
  300. package/docs/integrations/granular-consent.md +0 -208
@@ -1,81 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- const plausible_analytics_buildPlausibleScriptUrl = function(options) {
4
- if (options.scriptId) return `https://plausible.io/js/pa-${options.scriptId}.js`;
5
- if (options.extension) {
6
- let extensions;
7
- extensions = Array.isArray(options.extension) ? options.extension.join('.') : options.extension;
8
- return `https://plausible.io/js/script.${extensions}.js`;
9
- }
10
- return "https://plausible.io/js/script.js";
11
- };
12
- const plausible_analytics_buildPlausibleInitOptions = function(options) {
13
- const initOptions = {};
14
- if (options.customProperties) initOptions.customProperties = options.customProperties;
15
- if (options.endpoint) initOptions.endpoint = options.endpoint;
16
- if (options.fileDownloads) initOptions.fileDownloads = options.fileDownloads;
17
- if (void 0 !== options.hashBasedRouting) initOptions.hashBasedRouting = options.hashBasedRouting;
18
- if (void 0 !== options.autoCapturePageviews) initOptions.autoCapturePageviews = options.autoCapturePageviews;
19
- if (void 0 !== options.captureOnLocalhost) initOptions.captureOnLocalhost = options.captureOnLocalhost;
20
- return initOptions;
21
- };
22
- const plausibleAnalyticsManifest = {
23
- ...vendorManifestContract,
24
- bootstrap: [
25
- {
26
- ifUndefined: true,
27
- name: 'plausible',
28
- properties: {
29
- o: '{{initOptions}}'
30
- },
31
- queue: {
32
- property: 'q'
33
- },
34
- queueFormat: 'array',
35
- type: 'defineStubFunction'
36
- }
37
- ],
38
- category: 'measurement',
39
- install: [
40
- {
41
- attributes: {
42
- 'data-api': '{{apiAttribute}}',
43
- 'data-domain': '{{domain}}'
44
- },
45
- defer: true,
46
- src: "{{scriptUrl}}",
47
- type: 'loadScript'
48
- }
49
- ],
50
- vendor: 'plausible-analytics'
51
- };
52
- const plausible_analytics_plausibleAnalytics = function(options) {
53
- let scriptId;
54
- if (options.scriptId) scriptId = options.scriptId.trim();
55
- let domain;
56
- if (options.domain) domain = options.domain.trim();
57
- if (!scriptId && !domain) throw new Error("plausibleAnalytics: missing scriptId or domain");
58
- const normalizedOptions = {
59
- ...options
60
- };
61
- if (scriptId) normalizedOptions.scriptId = scriptId;
62
- else delete normalizedOptions.scriptId;
63
- if (domain) normalizedOptions.domain = domain;
64
- else delete normalizedOptions.domain;
65
- const manifestOptions = {
66
- apiAttribute: void 0,
67
- domain: void 0,
68
- initOptions: plausible_analytics_buildPlausibleInitOptions(normalizedOptions),
69
- scriptUrl: normalizedOptions.scriptUrl ?? plausible_analytics_buildPlausibleScriptUrl(normalizedOptions)
70
- };
71
- if (scriptId) {
72
- manifestOptions.domain = void 0;
73
- manifestOptions.apiAttribute = void 0;
74
- } else {
75
- manifestOptions.domain = domain;
76
- manifestOptions.apiAttribute = normalizedOptions.endpoint;
77
- }
78
- const resolved = resolveManifest(plausibleAnalyticsManifest, manifestOptions);
79
- return resolved;
80
- };
81
- export { plausibleAnalyticsManifest, plausible_analytics_plausibleAnalytics as plausibleAnalytics };
1
+ /** @deprecated Use @c15t/integrations/vendors/analytics/plausible-analytics. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/analytics/plausible-analytics';
@@ -1,200 +1,2 @@
1
- import { resolveManifest } from "../../resolve.js";
2
- import { vendorManifestContract } from "../../types.js";
3
- import { stripTrailingSlashes } from "../_shared/script-url.js";
4
- const DEFAULT_API_HOST = 'https://eu.i.posthog.com';
5
- const DEFAULT_SCRIPT_URL = 'https://eu-assets.i.posthog.com/static/array.js';
6
- const DEFAULT_UI_HOST = 'https://eu.posthog.com';
7
- const DEFAULTS_DATE = '2026-01-30';
8
- const REGION_HOSTS = {
9
- eu: {
10
- apiHost: DEFAULT_API_HOST,
11
- scriptUrl: DEFAULT_SCRIPT_URL,
12
- uiHost: DEFAULT_UI_HOST
13
- },
14
- us: {
15
- apiHost: 'https://us.i.posthog.com',
16
- scriptUrl: 'https://us-assets.i.posthog.com/static/array.js',
17
- uiHost: 'https://us.posthog.com'
18
- }
19
- };
20
- const posthog_normalizeHost = function(host) {
21
- return stripTrailingSlashes(host);
22
- };
23
- const posthog_regionFromHost = function(host) {
24
- const normalized = posthog_normalizeHost(host);
25
- if (/^https:\/\/(?<capture1>app|us|us-assets)(?<capture2>\.i)?\.posthog\.com$/iu.test(normalized)) return 'us';
26
- if (/^https:\/\/(?<capture1>eu|eu-assets)(?<capture2>\.i)?\.posthog\.com$/iu.test(normalized)) return 'eu';
27
- };
28
- const posthog_deriveScriptUrlFromApiHost = function(apiHost) {
29
- const normalized = posthog_normalizeHost(apiHost);
30
- const region = posthog_regionFromHost(normalized);
31
- if (region) return REGION_HOSTS[region].scriptUrl;
32
- return `${normalized}/static/array.js`;
33
- };
34
- const posthog_resolvePosthogHosts = function(options) {
35
- const regionDefaults = REGION_HOSTS[options.region ?? 'eu'];
36
- const apiHost = posthog_normalizeHost(options.apiHost ?? regionDefaults.apiHost);
37
- const inferredRegion = posthog_regionFromHost(apiHost);
38
- let uiHost;
39
- uiHost = void 0 !== options.uiHost ? options.uiHost : inferredRegion ? REGION_HOSTS[inferredRegion].uiHost : void 0 === options.region ? apiHost : REGION_HOSTS[options.region].uiHost;
40
- let scriptUrl;
41
- scriptUrl = void 0 !== options.scriptUrl ? options.scriptUrl : void 0 === options.apiHost ? regionDefaults.scriptUrl : posthog_deriveScriptUrlFromApiHost(apiHost);
42
- return {
43
- apiHost,
44
- scriptUrl,
45
- uiHost: posthog_normalizeHost(uiHost)
46
- };
47
- };
48
- const posthogManifest = {
49
- ...vendorManifestContract,
50
- alwaysLoad: true,
51
- bootstrap: [
52
- {
53
- ifUndefined: true,
54
- name: 'posthog',
55
- type: 'setGlobal',
56
- value: []
57
- },
58
- {
59
- ifGlobalIsQueue: true,
60
- path: [
61
- 'posthog',
62
- '_i'
63
- ],
64
- type: 'setGlobalPath',
65
- value: [
66
- [
67
- '{{id}}',
68
- '{{initOptions}}',
69
- 'posthog'
70
- ]
71
- ]
72
- },
73
- {
74
- ifGlobalIsQueue: true,
75
- path: [
76
- 'posthog',
77
- 'people'
78
- ],
79
- type: 'setGlobalPath',
80
- value: []
81
- },
82
- {
83
- methods: [
84
- 'capture',
85
- 'opt_in_capturing',
86
- 'opt_out_capturing'
87
- ],
88
- target: 'posthog',
89
- type: 'defineQueueMethods'
90
- },
91
- {
92
- ifGlobalIsQueue: true,
93
- methods: [
94
- {
95
- behavior: 'noop',
96
- name: 'init'
97
- },
98
- {
99
- behavior: 'return',
100
- name: 'get_explicit_consent_status',
101
- value: 'pending'
102
- }
103
- ],
104
- target: 'posthog',
105
- type: 'defineGlobalMethods'
106
- }
107
- ],
108
- category: 'measurement',
109
- install: [
110
- {
111
- async: true,
112
- attributes: {
113
- crossorigin: 'anonymous',
114
- 'data-api-host': '{{apiHost}}',
115
- 'data-ui-host': '{{uiHost}}'
116
- },
117
- src: "{{scriptUrl}}",
118
- type: 'loadScript'
119
- }
120
- ],
121
- onBeforeLoadDenied: [
122
- {
123
- queue: 'posthog',
124
- type: 'pushToQueue',
125
- value: [
126
- 'opt_out_capturing'
127
- ]
128
- }
129
- ],
130
- onBeforeLoadGranted: [
131
- {
132
- queue: 'posthog',
133
- type: 'pushToQueue',
134
- value: [
135
- 'opt_in_capturing',
136
- {
137
- captureEventName: null
138
- }
139
- ]
140
- }
141
- ],
142
- onConsentDenied: [
143
- {
144
- global: 'posthog',
145
- method: 'opt_out_capturing',
146
- type: 'callGlobal'
147
- }
148
- ],
149
- onConsentGranted: [
150
- {
151
- global: 'posthog',
152
- method: 'opt_in_capturing',
153
- type: 'callGlobal'
154
- }
155
- ],
156
- onLoadDenied: [
157
- {
158
- global: 'posthog',
159
- method: 'opt_out_capturing',
160
- type: 'callGlobal'
161
- }
162
- ],
163
- onLoadGranted: [
164
- {
165
- args: [
166
- {
167
- captureEventName: null
168
- }
169
- ],
170
- global: 'posthog',
171
- method: 'opt_in_capturing',
172
- type: 'callGlobal'
173
- }
174
- ],
175
- vendor: 'posthog'
176
- };
177
- const posthog_posthog = function(options) {
178
- if ('disabled' === options.loadMode) return {
179
- callbackOnly: true,
180
- category: 'measurement',
181
- id: 'posthog'
182
- };
183
- const { apiHost, uiHost, scriptUrl } = posthog_resolvePosthogHosts(options);
184
- const resolved = resolveManifest(posthogManifest, {
185
- apiHost,
186
- id: options.id,
187
- initOptions: {
188
- cookieless_mode: 'on_reject',
189
- defaults: DEFAULTS_DATE,
190
- ...options.initOptions,
191
- api_host: apiHost,
192
- ui_host: uiHost
193
- },
194
- scriptUrl,
195
- uiHost
196
- });
197
- if ('after-consent' === options.loadMode) resolved.alwaysLoad = void 0;
198
- return resolved;
199
- };
200
- export { posthogManifest, posthog_posthog as posthog };
1
+ /** @deprecated Use @c15t/integrations/vendors/analytics/posthog. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/analytics/posthog';
@@ -1,29 +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 promptwatchManifest = {
5
- ...vendorManifestContract,
6
- category: 'measurement',
7
- install: [
8
- {
9
- async: true,
10
- attributes: {
11
- 'data-project-id': '{{projectId}}'
12
- },
13
- src: "{{scriptUrl}}",
14
- type: 'loadScript'
15
- }
16
- ],
17
- vendor: 'promptwatch'
18
- };
19
- const promptwatch_promptwatch = function({ projectId, scriptUrl }) {
20
- const normalizedProjectId = projectId.trim();
21
- if (0 === normalizedProjectId.length) throw new Error('promptwatch: invalid projectId - must be a non-empty string');
22
- const defaultScriptUrl = 'https://ingest.promptwatch.com/js/client.min.js';
23
- const normalizedScriptUrl = resolveScriptUrl(trimToUndefined(scriptUrl), defaultScriptUrl);
24
- return resolveManifest(promptwatchManifest, {
25
- projectId: normalizedProjectId,
26
- scriptUrl: normalizedScriptUrl
27
- });
28
- };
29
- export { promptwatchManifest, promptwatch_promptwatch as promptwatch };
1
+ /** @deprecated Use @c15t/integrations/vendors/analytics/promptwatch. Compatibility ends in v4. */
2
+ export * from '@c15t/integrations/vendors/analytics/promptwatch';
@@ -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,56 +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
- global: 'analytics',
30
- method: 'page',
31
- type: 'callGlobal'
32
- },
33
- {
34
- async: true,
35
- src: "{{scriptUrl}}",
36
- type: 'loadScript'
37
- }
38
- ],
39
- vendor: 'segment'
40
- };
41
- const segment_segment = function({ writeKey, trackPageView = true, scriptUrl }) {
42
- let normalizedWriteKey = '';
43
- if ('string' == typeof writeKey) normalizedWriteKey = writeKey.trim();
44
- if (0 === normalizedWriteKey.length) throw new Error('segment: missing or invalid writeKey');
45
- const segmentCdnBase = 'https://cdn.segment.com/analytics.js/v1';
46
- const defaultScriptUrl = `${segmentCdnBase}/${normalizedWriteKey}/analytics.min.js`;
47
- let manifest = segmentManifest;
48
- if (!trackPageView) manifest = {
49
- ...segmentManifest,
50
- install: segmentManifest.install.filter((step)=>!('callGlobal' === step.type && 'analytics' === step.global && 'page' === step.method))
51
- };
52
- return resolveManifest(manifest, {
53
- scriptUrl: resolveScriptUrl(scriptUrl, defaultScriptUrl)
54
- });
55
- };
56
- 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';