@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
package/package.json CHANGED
@@ -1,41 +1,8 @@
1
1
  {
2
2
  "name": "@c15t/scripts",
3
- "version": "3.0.0-alpha.2",
4
- "description": "Consent-aware script integrations for Google Tag Manager, Google Consent Mode v2, GA4, Google Ads, Meta Pixel, and more.",
5
- "keywords": [
6
- "adobe-analytics",
7
- "amplitude",
8
- "analytics-consent",
9
- "c15t",
10
- "ccpa",
11
- "clearbit",
12
- "cmp",
13
- "consent",
14
- "consent-mode",
15
- "consent-mode-v2",
16
- "ga4",
17
- "gdpr",
18
- "google-ads",
19
- "google-tag",
20
- "google-tag-manager",
21
- "gtm",
22
- "heap",
23
- "hightouch",
24
- "lgpd",
25
- "linkedin-insights",
26
- "logrocket",
27
- "meta-pixel",
28
- "microsoft-uet",
29
- "pinterest-tag",
30
- "pirsch",
31
- "posthog",
32
- "privacy",
33
- "rudderstack",
34
- "script-loader",
35
- "tiktok-pixel",
36
- "x-pixel"
37
- ],
38
- "homepage": "https://c15t.com/docs/frameworks/javascript/script-loader",
3
+ "version": "3.0.0-alpha.3",
4
+ "description": "Deprecated v3 compatibility package for @c15t/integrations. Migrate before v4.",
5
+ "homepage": "https://c15t.com/docs/upgrade-v3#rename-the-integrations-dependency",
39
6
  "bugs": {
40
7
  "url": "https://github.com/c15t/c15t/issues"
41
8
  },
@@ -49,249 +16,35 @@
49
16
  "dist",
50
17
  "dist-types",
51
18
  "AGENTS.md",
19
+ "SKILL.md",
52
20
  "docs"
53
21
  ],
54
22
  "type": "module",
55
23
  "sideEffects": false,
56
24
  "exports": {
57
- "./adobe-analytics": {
58
- "types": "./dist-types/vendors/analytics/adobe-analytics.d.ts",
59
- "import": "./dist/vendors/analytics/adobe-analytics.js",
60
- "default": "./dist/vendors/analytics/adobe-analytics.js"
61
- },
62
- "./ahrefs-analytics": {
63
- "types": "./dist-types/vendors/analytics/ahrefs-analytics.d.ts",
64
- "import": "./dist/vendors/analytics/ahrefs-analytics.js",
65
- "default": "./dist/vendors/analytics/ahrefs-analytics.js"
66
- },
67
- "./amplitude": {
68
- "types": "./dist-types/vendors/analytics/amplitude.d.ts",
69
- "import": "./dist/vendors/analytics/amplitude.js",
70
- "default": "./dist/vendors/analytics/amplitude.js"
71
- },
72
- "./cloudflare-web-analytics": {
73
- "types": "./dist-types/vendors/analytics/cloudflare-web-analytics.d.ts",
74
- "import": "./dist/vendors/analytics/cloudflare-web-analytics.js",
75
- "default": "./dist/vendors/analytics/cloudflare-web-analytics.js"
76
- },
77
- "./clearbit": {
78
- "types": "./dist-types/vendors/analytics/clearbit.d.ts",
79
- "import": "./dist/vendors/analytics/clearbit.js",
80
- "default": "./dist/vendors/analytics/clearbit.js"
81
- },
82
- "./microsoft-clarity": {
83
- "types": "./dist-types/vendors/analytics/microsoft-clarity.d.ts",
84
- "import": "./dist/vendors/analytics/microsoft-clarity.js",
85
- "default": "./dist/vendors/analytics/microsoft-clarity.js"
86
- },
87
- "./databuddy": {
88
- "types": "./dist-types/vendors/analytics/databuddy.d.ts",
89
- "import": "./dist/vendors/analytics/databuddy.js",
90
- "default": "./dist/vendors/analytics/databuddy.js"
91
- },
92
- "./fathom-analytics": {
93
- "types": "./dist-types/vendors/analytics/fathom-analytics.d.ts",
94
- "import": "./dist/vendors/analytics/fathom-analytics.js",
95
- "default": "./dist/vendors/analytics/fathom-analytics.js"
96
- },
97
- "./heap": {
98
- "types": "./dist-types/vendors/analytics/heap.d.ts",
99
- "import": "./dist/vendors/analytics/heap.js",
100
- "default": "./dist/vendors/analytics/heap.js"
101
- },
102
- "./hotjar": {
103
- "types": "./dist-types/vendors/analytics/hotjar.d.ts",
104
- "import": "./dist/vendors/analytics/hotjar.js",
105
- "default": "./dist/vendors/analytics/hotjar.js"
106
- },
107
- "./hightouch": {
108
- "types": "./dist-types/vendors/analytics/hightouch.d.ts",
109
- "import": "./dist/vendors/analytics/hightouch.js",
110
- "default": "./dist/vendors/analytics/hightouch.js"
111
- },
112
- "./rudderstack": {
113
- "types": "./dist-types/vendors/analytics/rudderstack.d.ts",
114
- "import": "./dist/vendors/analytics/rudderstack.js",
115
- "default": "./dist/vendors/analytics/rudderstack.js"
116
- },
117
- "./logrocket": {
118
- "types": "./dist-types/vendors/analytics/logrocket.d.ts",
119
- "import": "./dist/vendors/analytics/logrocket.js",
120
- "default": "./dist/vendors/analytics/logrocket.js"
121
- },
122
- "./google-tag": {
123
- "types": "./dist-types/vendors/analytics/google-tag.d.ts",
124
- "import": "./dist/vendors/analytics/google-tag.js",
125
- "default": "./dist/vendors/analytics/google-tag.js"
126
- },
127
- "./matomo-analytics": {
128
- "types": "./dist-types/vendors/analytics/matomo-analytics.d.ts",
129
- "import": "./dist/vendors/analytics/matomo-analytics.js",
130
- "default": "./dist/vendors/analytics/matomo-analytics.js"
131
- },
132
- "./mixpanel-analytics": {
133
- "types": "./dist-types/vendors/analytics/mixpanel-analytics.d.ts",
134
- "import": "./dist/vendors/analytics/mixpanel-analytics.js",
135
- "default": "./dist/vendors/analytics/mixpanel-analytics.js"
136
- },
137
- "./one-dollar-stats": {
138
- "types": "./dist-types/vendors/analytics/one-dollar-stats.d.ts",
139
- "import": "./dist/vendors/analytics/one-dollar-stats.js",
140
- "default": "./dist/vendors/analytics/one-dollar-stats.js"
141
- },
142
- "./pirsch": {
143
- "types": "./dist-types/vendors/analytics/pirsch.d.ts",
144
- "import": "./dist/vendors/analytics/pirsch.js",
145
- "default": "./dist/vendors/analytics/pirsch.js"
146
- },
147
- "./plausible-analytics": {
148
- "types": "./dist-types/vendors/analytics/plausible-analytics.d.ts",
149
- "import": "./dist/vendors/analytics/plausible-analytics.js",
150
- "default": "./dist/vendors/analytics/plausible-analytics.js"
151
- },
152
- "./posthog": {
153
- "types": "./dist-types/vendors/analytics/posthog.d.ts",
154
- "import": "./dist/vendors/analytics/posthog.js",
155
- "default": "./dist/vendors/analytics/posthog.js"
156
- },
157
- "./promptwatch": {
158
- "types": "./dist-types/vendors/analytics/promptwatch.d.ts",
159
- "import": "./dist/vendors/analytics/promptwatch.js",
160
- "default": "./dist/vendors/analytics/promptwatch.js"
161
- },
162
- "./segment": {
163
- "types": "./dist-types/vendors/analytics/segment.d.ts",
164
- "import": "./dist/vendors/analytics/segment.js",
165
- "default": "./dist/vendors/analytics/segment.js"
166
- },
167
- "./rybbit-analytics": {
168
- "types": "./dist-types/vendors/analytics/rybbit-analytics.d.ts",
169
- "import": "./dist/vendors/analytics/rybbit-analytics.js",
170
- "default": "./dist/vendors/analytics/rybbit-analytics.js"
171
- },
172
- "./umami-analytics": {
173
- "types": "./dist-types/vendors/analytics/umami-analytics.d.ts",
174
- "import": "./dist/vendors/analytics/umami-analytics.js",
175
- "default": "./dist/vendors/analytics/umami-analytics.js"
176
- },
177
- "./vercel-analytics": {
178
- "types": "./dist-types/vendors/analytics/vercel-analytics.d.ts",
179
- "import": "./dist/vendors/analytics/vercel-analytics.js",
180
- "default": "./dist/vendors/analytics/vercel-analytics.js"
181
- },
182
- "./crisp": {
183
- "types": "./dist-types/vendors/functional/crisp.d.ts",
184
- "import": "./dist/vendors/functional/crisp.js",
185
- "default": "./dist/vendors/functional/crisp.js"
186
- },
187
- "./front-chat": {
188
- "types": "./dist-types/vendors/functional/front-chat.d.ts",
189
- "import": "./dist/vendors/functional/front-chat.js",
190
- "default": "./dist/vendors/functional/front-chat.js"
191
- },
192
- "./intercom": {
193
- "types": "./dist-types/vendors/functional/intercom.d.ts",
194
- "import": "./dist/vendors/functional/intercom.js",
195
- "default": "./dist/vendors/functional/intercom.js"
196
- },
197
- "./cloudflare-zaraz": {
198
- "types": "./dist-types/vendors/tag-managers/cloudflare-zaraz.d.ts",
199
- "import": "./dist/vendors/tag-managers/cloudflare-zaraz.js",
200
- "default": "./dist/vendors/tag-managers/cloudflare-zaraz.js"
201
- },
202
- "./google-tag-manager": {
203
- "types": "./dist-types/vendors/tag-managers/google-tag-manager.d.ts",
204
- "import": "./dist/vendors/tag-managers/google-tag-manager.js",
205
- "default": "./dist/vendors/tag-managers/google-tag-manager.js"
206
- },
207
- "./linkedin-insights": {
208
- "types": "./dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts",
209
- "import": "./dist/vendors/ads-and-pixels/linkedin-insights.js",
210
- "default": "./dist/vendors/ads-and-pixels/linkedin-insights.js"
211
- },
212
- "./meta-pixel": {
213
- "types": "./dist-types/vendors/ads-and-pixels/meta-pixel.d.ts",
214
- "import": "./dist/vendors/ads-and-pixels/meta-pixel.js",
215
- "default": "./dist/vendors/ads-and-pixels/meta-pixel.js"
216
- },
217
- "./openai-pixel": {
218
- "types": "./dist-types/vendors/ads-and-pixels/openai-pixel.d.ts",
219
- "import": "./dist/vendors/ads-and-pixels/openai-pixel.js",
220
- "default": "./dist/vendors/ads-and-pixels/openai-pixel.js"
221
- },
222
- "./pinterest-tag": {
223
- "types": "./dist-types/vendors/ads-and-pixels/pinterest-tag.d.ts",
224
- "import": "./dist/vendors/ads-and-pixels/pinterest-tag.js",
225
- "default": "./dist/vendors/ads-and-pixels/pinterest-tag.js"
226
- },
227
- "./reddit-pixel": {
228
- "types": "./dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts",
229
- "import": "./dist/vendors/ads-and-pixels/reddit-pixel.js",
230
- "default": "./dist/vendors/ads-and-pixels/reddit-pixel.js"
231
- },
232
- "./microsoft-uet": {
233
- "types": "./dist-types/vendors/ads-and-pixels/microsoft-uet.d.ts",
234
- "import": "./dist/vendors/ads-and-pixels/microsoft-uet.js",
235
- "default": "./dist/vendors/ads-and-pixels/microsoft-uet.js"
236
- },
237
- "./snapchat-pixel": {
238
- "types": "./dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts",
239
- "import": "./dist/vendors/ads-and-pixels/snapchat-pixel.js",
240
- "default": "./dist/vendors/ads-and-pixels/snapchat-pixel.js"
241
- },
242
- "./tiktok-pixel": {
243
- "types": "./dist-types/vendors/ads-and-pixels/tiktok-pixel.d.ts",
244
- "import": "./dist/vendors/ads-and-pixels/tiktok-pixel.js",
245
- "default": "./dist/vendors/ads-and-pixels/tiktok-pixel.js"
246
- },
247
- "./x-pixel": {
248
- "types": "./dist-types/vendors/ads-and-pixels/x-pixel.d.ts",
249
- "import": "./dist/vendors/ads-and-pixels/x-pixel.js",
250
- "default": "./dist/vendors/ads-and-pixels/x-pixel.js"
251
- },
252
- "./registry": {
253
- "types": "./dist-types/registry.d.ts",
254
- "import": "./dist/registry.js",
255
- "default": "./dist/registry.js"
256
- },
257
25
  "./*": {
258
26
  "types": "./dist-types/*.d.ts",
259
27
  "import": "./dist/*.js",
260
28
  "default": "./dist/*.js"
261
- },
262
- "./events": {
263
- "types": "./dist-types/events.d.ts",
264
- "import": "./dist/events.js",
265
- "default": "./dist/events.js"
266
29
  }
267
30
  },
268
31
  "publishConfig": {
269
32
  "access": "public"
270
33
  },
271
34
  "scripts": {
272
- "build": "rslib build && bun ../../scripts/normalize-dist-types.mjs",
35
+ "build": "bun build-compat.ts",
273
36
  "build:docs": "bun ../../scripts/generate-package-docs.ts @c15t/scripts",
274
- "check-types": "tsc --noEmit && tsc -p live-vendors --noEmit",
275
- "dev": "sh -c 'rslib build --no-dts --no-clean && rslib build --watch --no-dts --no-clean'",
37
+ "check-types": "tsc --noEmit",
276
38
  "fmt": "bun oxfmt .",
277
- "lint": "bun oxlint ./src ./live-vendors",
39
+ "lint": "bun oxlint build-compat.ts __tests__",
278
40
  "prepack": "bun run build:docs",
279
- "test": "vitest run",
280
- "test:live-vendors": "bun --tsconfig-override live-vendors/tsconfig.json live-vendors/runner.ts",
281
- "test:watch": "vitest"
41
+ "test": "vitest run"
282
42
  },
283
43
  "dependencies": {
284
- "@c15t/core": "3.0.0-alpha.3"
44
+ "@c15t/integrations": "3.0.0-alpha.3"
285
45
  },
286
46
  "devDependencies": {
287
47
  "@c15t/typescript-config": "0.0.1",
288
- "@c15t/vitest-config": "1.0.0",
289
- "playwright": "1.58.2",
290
48
  "typescript": "7.0.2"
291
- },
292
- "browserslist": [
293
- ">0.2%",
294
- "not dead",
295
- "not op_mini all"
296
- ]
49
+ }
297
50
  }
@@ -1,141 +0,0 @@
1
- import type { ConsentState, Script, ScriptCallbackInfo } from '@c15t/core';
2
- import type { BuiltInScriptIntegrationKey } from '../registry.js';
3
- /**
4
- * Typed view of `globalThis` used by script helper tests.
5
- *
6
- * Additional string-keyed properties model browser and vendor globals created
7
- * during setup and individual test cases.
8
- */
9
- export type TestGlobal = typeof globalThis & Record<string, unknown>;
10
- /**
11
- * Snapshot of the script fields asserted by helper tests.
12
- */
13
- export interface HelperScriptSnapshot {
14
- /** Unique script identifier generated by the helper under test. */
15
- id: string;
16
- /** Consent category associated with the script integration. */
17
- category: unknown;
18
- /** Whether the script should load even before optional consent is granted. */
19
- alwaysLoad?: boolean;
20
- /** Whether the script stays loaded after consent for its category is revoked. */
21
- persistAfterConsentRevoked?: boolean;
22
- /** Remote script URL emitted by the helper, when applicable. */
23
- src?: string;
24
- }
25
- /**
26
- * Expected integration metadata and script attributes for a helper assertion.
27
- */
28
- export interface ExpectedScriptSnapshot {
29
- /** Expected `alwaysLoad` flag from the generated helper script. */
30
- alwaysLoad: boolean | undefined;
31
- /** Expected consent-revocation persistence flag from the generated script. */
32
- persistAfterConsentRevoked: boolean | undefined;
33
- /** Expected remote script URL from the generated helper script. */
34
- src: string | undefined;
35
- }
36
- /**
37
- * Consent state with only required storage enabled.
38
- *
39
- * `necessary` keeps essential storage on, `functionality` covers site
40
- * preferences, `measurement` controls analytics, `marketing` controls
41
- * advertising-related storage, and `experience` controls personalization.
42
- */
43
- export declare const deniedConsentState: ConsentState;
44
- /**
45
- * Consent state with required and measurement storage enabled.
46
- *
47
- * `necessary` keeps essential storage on, `functionality` covers site
48
- * preferences, `measurement` controls analytics, `marketing` controls
49
- * advertising-related storage, and `experience` controls personalization.
50
- */
51
- export declare const grantedMeasurementConsentState: ConsentState;
52
- /**
53
- * Required callback fields for creating a script lifecycle payload in tests.
54
- */
55
- export type CallbackInfoOverrides = Partial<ScriptCallbackInfo> & Pick<ScriptCallbackInfo, 'id'>;
56
- /**
57
- * Creates a fully typed callback payload for script lifecycle tests.
58
- *
59
- * Defaults model a denied-consent callback for the same DOM element ID as the
60
- * script ID, while allowing individual tests to override the relevant fields.
61
- */
62
- export declare const createCallbackInfo: (overrides: CallbackInfoOverrides) => ScriptCallbackInfo;
63
- export type LifecycleCallbackOverrides = Partial<Omit<ScriptCallbackInfo, 'id'>>;
64
- export declare const runOnBeforeLoad: (script: Pick<Script, 'id' | 'onBeforeLoad'>, overrides?: LifecycleCallbackOverrides) => void;
65
- /**
66
- * Returns a mutable test-friendly reference to the global object.
67
- *
68
- * @returns The current global object cast to `TestGlobal`.
69
- *
70
- * @example
71
- * ```ts
72
- * const globalRef = getTestGlobal();
73
- * globalRef.dataLayer = [];
74
- * ```
75
- */
76
- export declare const getTestGlobal: () => TestGlobal;
77
- /**
78
- * Registers browser-like setup and teardown hooks for script helper tests.
79
- *
80
- * Before each test, this installs mocked `window` and `document` globals.
81
- * After each test, it unstubs globals and removes vendor-specific globals left
82
- * behind by script execution.
83
- *
84
- * @returns Nothing.
85
- *
86
- * @example
87
- * ```ts
88
- * describe('googleTagManager', () => {
89
- * setupScriptHelperTest();
90
- * });
91
- * ```
92
- */
93
- export declare const setupScriptHelperTest: () => void;
94
- /**
95
- * Asserts that a helper-generated script matches registry metadata and
96
- * expected script fields.
97
- *
98
- * @param key - Built-in integration key used to find the registry entry.
99
- * @param script - Snapshot of the helper-generated script under test.
100
- * @param expected - Expected script metadata and output for the assertion.
101
- * @returns Nothing.
102
- *
103
- * @remarks
104
- * If `key` does not match any built-in integration, the assertion fails before
105
- * the non-null access is used.
106
- *
107
- * @example
108
- * ```ts
109
- * expectScriptMatchesIntegration(
110
- * 'googleTagManager',
111
- * googleTagManager({ id: 'GTM-123' }),
112
- * {
113
- * alwaysLoad: true,
114
- * persistAfterConsentRevoked: undefined,
115
- * src: 'https://www.googletagmanager.com/gtm.js?id=GTM-123',
116
- * }
117
- * );
118
- * ```
119
- */
120
- export declare const expectScriptMatchesIntegration: (key: BuiltInScriptIntegrationKey, script: HelperScriptSnapshot, expected: ExpectedScriptSnapshot) => void;
121
- /**
122
- * Converts an array-like value into a plain array.
123
- *
124
- * @param value - Array-like input such as `arguments`, a `NodeList`, or a
125
- * vendor queue entry.
126
- * @returns A new array containing the indexed values from `value`.
127
- *
128
- * @remarks
129
- * Passing `null` or `undefined` throws because `slice` requires an object-like
130
- * value.
131
- *
132
- * @example
133
- * ```ts
134
- * function collectArgs(...args: unknown[]) {
135
- * return toArgumentsArray(args);
136
- * }
137
- * ```
138
- */
139
- export declare const toArgumentsArray: (value: unknown) => unknown[];
140
- export declare const expectGoogleConsentDefault: (entry: unknown) => void;
141
- export declare const expectStubCommandQueue: (stub: unknown, queueKey: string, commands: unknown[][]) => void;
Binary file
Binary file
Binary file
@@ -1,100 +0,0 @@
1
- ---
2
- title: JavaScript script loading
3
- description: Attach a script loader to the consent kernel and dispose it with
4
- the application.
5
- group: frameworks
6
- ---
7
-
8
- ## Attach the loader before initialization
9
-
10
- Install `@c15t/scripts` alongside `c15t`. This browser example adds a
11
- marketing integration to a hosted kernel:
12
-
13
- ```ts
14
- import { createConsentKernel, createHostedTransport } from 'c15t';
15
- import { createPersistence } from 'c15t/modules/persistence';
16
- import { createScriptLoader } from 'c15t/modules/script-loader';
17
- import { metaPixel } from '@c15t/scripts/meta-pixel';
18
-
19
- const kernel = createConsentKernel({
20
- transport: createHostedTransport({ backendURL: 'https://your-project.inth.app' }),
21
- });
22
- const persistence = createPersistence({ kernel });
23
- const loader = createScriptLoader({ kernel, scripts: [metaPixel({ pixelId: '123456789012345' })] });
24
- await kernel.commands.init();
25
-
26
- function dispose() {
27
- loader.dispose();
28
- persistence.dispose();
29
- kernel.dispose();
30
- }
31
- ```
32
-
33
- Replace the URL and pixel ID. Call `dispose()` when your application tears down.
34
- The headless kernel does not render a banner; connect a policy-aware UI before
35
- shipping this integration. A framework provider already manages these modules,
36
- so do not attach a second loader to a provider-owned kernel.
37
-
38
- ## Keep one owner per vendor
39
-
40
- Use stable script IDs and remove the vendor's original snippet. Ordinary scripts
41
- wait for effective permission. Helpers with `alwaysLoad` instead load and signal
42
- permission through the vendor API. Read the individual integration guide before
43
- assuming all helpers have the same network behavior.
44
-
45
- The loader exposes `updateScripts`, `getLoadedScriptIds` and `dispose`.
46
- Unloading an element cannot reverse requests or code that already ran. Test
47
- revocation and vendor cleanup with [verification](../../guides/verify-consent.md).
48
-
49
- ## Dispose integration resources
50
-
51
- Ordinary scripts keep their mounted resource when `updateScripts` receives a
52
- fresh object with the same ID and unchanged element configuration. New callback
53
- functions alone do not reload the vendor or send a temporary denial. Changing
54
- the source, inline code or element attributes starts a new loading lifecycle.
55
- Consent conditions are reevaluated on every configuration update. Pending
56
- load and error events use the latest registered callbacks and consent state.
57
- Setting `persistAfterConsentRevoked` to `false` removes an owned retained element
58
- when the script no longer has consent.
59
-
60
- Custom script configurations can use `onDispose(info)` to release event
61
- listeners or other resources. Adding this hook opts the configuration into an
62
- object-owned lifecycle: replacing the object disposes its resources and starts
63
- again, even with the same ID. Keep these objects stable across framework
64
- rerenders. The loader also calls the hook when the configuration is removed or
65
- the loader is disposed, including configurations that never loaded.
66
- `info.element` contains the last loaded or retained element when available,
67
- even when configuration removal has already detached it.
68
-
69
- Duplicate references receive one cleanup per registration. Re-registering a
70
- removed object starts a new lifecycle. Updates requested from lifecycle
71
- callbacks run after the current pass; if several are requested, the latest
72
- configuration wins. Disposal stops further reconciliation. A callback feedback
73
- loop exceeding 100 consecutive passes disposes the loader and reports an
74
- `error` debug event. Avoid callbacks that keep changing consent or replacing
75
- their own configuration.
76
-
77
- `onBeforeLoad` prepares a loading attempt. If a callback changes consent or
78
- replaces configurations, the loader cancels that attempt before loading and
79
- reevaluates the latest state. A still-eligible script can retry preparation
80
- with a new element and updated consent. Make `onBeforeLoad` safe to repeat;
81
- use `onLoad` for initialization that requires a completed load. This also
82
- applies to callback-only scripts, whose `onLoad` is skipped when preparation
83
- invalidates the current pass.
84
-
85
- Consent revocation alone does not call `onDispose`. Use `onConsentChange` for
86
- vendor opt-out commands. Cleanup errors are reported through the loader's debug
87
- events and do not prevent other configurations from being cleaned up.
88
-
89
- ## Clear stored tracking data
90
-
91
- Script gating does not remove cookies or Web Storage entries that a script
92
- already wrote. Configure [clear on revocation](../../integrations/clear-on-revocation.md)
93
- on your runtime, or attach its module to your existing kernel, to remove
94
- declared data when its category is denied.
95
-
96
- ## Shared lifecycle controls
97
-
98
- See [shared consent controls](../../guides/shared-consent-controls.md) for external CMPs,
99
- preference delegation, withdrawal reloads, and application events. These controls
100
- use the same core runtime across frameworks.