@modernconsent/vendors 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/dist/abtasty-3G4JRT5W.js +21 -0
  3. package/dist/abtasty-3G4JRT5W.js.map +1 -0
  4. package/dist/abtasty.d.ts +8 -0
  5. package/dist/abtasty.js +53 -0
  6. package/dist/abtasty.js.map +1 -0
  7. package/dist/amplitude-CFLVTHYV.js +25 -0
  8. package/dist/amplitude-CFLVTHYV.js.map +1 -0
  9. package/dist/amplitude.d.ts +8 -0
  10. package/dist/amplitude.js +57 -0
  11. package/dist/amplitude.js.map +1 -0
  12. package/dist/chunk-6JXWYPMF.js +28 -0
  13. package/dist/chunk-6JXWYPMF.js.map +1 -0
  14. package/dist/chunk-TBZUWLOP.js +35 -0
  15. package/dist/chunk-TBZUWLOP.js.map +1 -0
  16. package/dist/clarity-KJPNK3FJ.js +29 -0
  17. package/dist/clarity-KJPNK3FJ.js.map +1 -0
  18. package/dist/clarity.d.ts +13 -0
  19. package/dist/clarity.js +39 -0
  20. package/dist/clarity.js.map +1 -0
  21. package/dist/criteo-XKQPP2XY.js +23 -0
  22. package/dist/criteo-XKQPP2XY.js.map +1 -0
  23. package/dist/criteo.d.ts +13 -0
  24. package/dist/criteo.js +55 -0
  25. package/dist/criteo.js.map +1 -0
  26. package/dist/gcmads-LKOHK6MW.js +23 -0
  27. package/dist/gcmads-LKOHK6MW.js.map +1 -0
  28. package/dist/gcmads.d.ts +10 -0
  29. package/dist/gcmads.js +33 -0
  30. package/dist/gcmads.js.map +1 -0
  31. package/dist/google-analytics-SSTM7QMW.js +37 -0
  32. package/dist/google-analytics-SSTM7QMW.js.map +1 -0
  33. package/dist/google-analytics.d.ts +14 -0
  34. package/dist/google-analytics.js +69 -0
  35. package/dist/google-analytics.js.map +1 -0
  36. package/dist/googleads-XPXUKIXQ.js +72 -0
  37. package/dist/googleads-XPXUKIXQ.js.map +1 -0
  38. package/dist/googleads.d.ts +14 -0
  39. package/dist/googleads.js +104 -0
  40. package/dist/googleads.js.map +1 -0
  41. package/dist/gtm-WFI6ABNK.js +25 -0
  42. package/dist/gtm-WFI6ABNK.js.map +1 -0
  43. package/dist/gtm.d.ts +13 -0
  44. package/dist/gtm.js +57 -0
  45. package/dist/gtm.js.map +1 -0
  46. package/dist/hotjar-YCFHYSKB.js +38 -0
  47. package/dist/hotjar-YCFHYSKB.js.map +1 -0
  48. package/dist/hotjar.d.ts +8 -0
  49. package/dist/hotjar.js +48 -0
  50. package/dist/hotjar.js.map +1 -0
  51. package/dist/hubspot-TLVPT4LG.js +31 -0
  52. package/dist/hubspot-TLVPT4LG.js.map +1 -0
  53. package/dist/hubspot.d.ts +8 -0
  54. package/dist/hubspot.js +63 -0
  55. package/dist/hubspot.js.map +1 -0
  56. package/dist/index.d.ts +9 -0
  57. package/dist/index.js +46 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/intercom-4MUKJZOV.js +42 -0
  60. package/dist/intercom-4MUKJZOV.js.map +1 -0
  61. package/dist/intercom.d.ts +14 -0
  62. package/dist/intercom.js +52 -0
  63. package/dist/intercom.js.map +1 -0
  64. package/dist/linkedin-insight-EH5OICV7.js +40 -0
  65. package/dist/linkedin-insight-EH5OICV7.js.map +1 -0
  66. package/dist/linkedin-insight.d.ts +16 -0
  67. package/dist/linkedin-insight.js +50 -0
  68. package/dist/linkedin-insight.js.map +1 -0
  69. package/dist/matomo-H4JJCYJR.js +29 -0
  70. package/dist/matomo-H4JJCYJR.js.map +1 -0
  71. package/dist/matomo.d.ts +14 -0
  72. package/dist/matomo.js +39 -0
  73. package/dist/matomo.js.map +1 -0
  74. package/dist/meta-pixel-26NJ4GZJ.js +34 -0
  75. package/dist/meta-pixel-26NJ4GZJ.js.map +1 -0
  76. package/dist/meta-pixel.d.ts +19 -0
  77. package/dist/meta-pixel.js +66 -0
  78. package/dist/meta-pixel.js.map +1 -0
  79. package/dist/piano-analytics-CZXSQQNF.js +30 -0
  80. package/dist/piano-analytics-CZXSQQNF.js.map +1 -0
  81. package/dist/piano-analytics.d.ts +10 -0
  82. package/dist/piano-analytics.js +62 -0
  83. package/dist/piano-analytics.js.map +1 -0
  84. package/dist/pinterest-pixel-B7J3RCSI.js +31 -0
  85. package/dist/pinterest-pixel-B7J3RCSI.js.map +1 -0
  86. package/dist/pinterest-pixel.d.ts +16 -0
  87. package/dist/pinterest-pixel.js +63 -0
  88. package/dist/pinterest-pixel.js.map +1 -0
  89. package/dist/plausible-GI4L4SM4.js +25 -0
  90. package/dist/plausible-GI4L4SM4.js.map +1 -0
  91. package/dist/plausible.d.ts +11 -0
  92. package/dist/plausible.js +57 -0
  93. package/dist/plausible.js.map +1 -0
  94. package/dist/posthog-N2HG7XOO.js +32 -0
  95. package/dist/posthog-N2HG7XOO.js.map +1 -0
  96. package/dist/posthog.d.ts +9 -0
  97. package/dist/posthog.js +42 -0
  98. package/dist/posthog.js.map +1 -0
  99. package/dist/reddit-pixel-SKXRCFEF.js +34 -0
  100. package/dist/reddit-pixel-SKXRCFEF.js.map +1 -0
  101. package/dist/reddit-pixel.d.ts +16 -0
  102. package/dist/reddit-pixel.js +66 -0
  103. package/dist/reddit-pixel.js.map +1 -0
  104. package/dist/segment-GZJFC57W.js +66 -0
  105. package/dist/segment-GZJFC57W.js.map +1 -0
  106. package/dist/segment.d.ts +13 -0
  107. package/dist/segment.js +76 -0
  108. package/dist/segment.js.map +1 -0
  109. package/dist/sentry-UIBASRVZ.js +27 -0
  110. package/dist/sentry-UIBASRVZ.js.map +1 -0
  111. package/dist/sentry.d.ts +10 -0
  112. package/dist/sentry.js +59 -0
  113. package/dist/sentry.js.map +1 -0
  114. package/dist/smartsupp-I6XHQISS.js +27 -0
  115. package/dist/smartsupp-I6XHQISS.js.map +1 -0
  116. package/dist/smartsupp.d.ts +14 -0
  117. package/dist/smartsupp.js +37 -0
  118. package/dist/smartsupp.js.map +1 -0
  119. package/dist/snapchat-pixel-SYR3ZSSB.js +37 -0
  120. package/dist/snapchat-pixel-SYR3ZSSB.js.map +1 -0
  121. package/dist/snapchat-pixel.d.ts +15 -0
  122. package/dist/snapchat-pixel.js +47 -0
  123. package/dist/snapchat-pixel.js.map +1 -0
  124. package/dist/tiktok-pixel-FDGVKGOH.js +70 -0
  125. package/dist/tiktok-pixel-FDGVKGOH.js.map +1 -0
  126. package/dist/tiktok-pixel.d.ts +14 -0
  127. package/dist/tiktok-pixel.js +80 -0
  128. package/dist/tiktok-pixel.js.map +1 -0
  129. package/package.json +58 -0
@@ -0,0 +1,63 @@
1
+ // src/utils/loader.ts
2
+ function loadScript(src, callback, attrs = {}) {
3
+ return new Promise((resolve, reject) => {
4
+ if (document.querySelector(`script[src="${src}"]`)) {
5
+ resolve();
6
+ return;
7
+ }
8
+ const script = document.createElement("script");
9
+ script.src = src;
10
+ script.async = true;
11
+ for (const [key, value] of Object.entries(attrs)) {
12
+ script.setAttribute(key, value);
13
+ }
14
+ script.onload = () => {
15
+ resolve();
16
+ };
17
+ script.onerror = () => {
18
+ reject(new Error(`Failed to load script: ${src}`));
19
+ };
20
+ document.head.appendChild(script);
21
+ });
22
+ }
23
+
24
+ // src/utils/purposes.ts
25
+ var PURPOSE_ANALYTICS = {
26
+ purposeLabel: {
27
+ fr: "Analyse de session utilisateur et mesure d'audience",
28
+ en: "User session analysis and audience measurement"
29
+ },
30
+ purposeDescription: {
31
+ fr: "Ces cookies nous permettent d'\xE9tablir des statistiques et volumes de fr\xE9quentation et d'utilisation des \xE9l\xE9ments du site.",
32
+ en: "These cookies allow us to compile statistics on site traffic and usage."
33
+ }
34
+ };
35
+
36
+ // src/hubspot.ts
37
+ var HubSpot = {
38
+ name: "HubSpot",
39
+ category: "Analytics",
40
+ description: "Suivi marketing, formulaires et analytics HubSpot.",
41
+ ...PURPOSE_ANALYTICS,
42
+ requireConsent: true,
43
+ artifacts: [
44
+ "__hssc",
45
+ "__hssrc",
46
+ "__hstc",
47
+ "hubspotutk",
48
+ "__hs_opt_out",
49
+ "__hs_do_not_track",
50
+ "__hs_initial_opt_in"
51
+ ],
52
+ init: (config) => {
53
+ if (!config?.portalId) return;
54
+ loadScript(`https://js.hs-scripts.com/${config.portalId}.js`, void 0, {
55
+ id: "hs-script-loader"
56
+ });
57
+ }
58
+ };
59
+ var hubspot_default = HubSpot;
60
+
61
+ export { hubspot_default as default };
62
+ //# sourceMappingURL=hubspot.js.map
63
+ //# sourceMappingURL=hubspot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/loader.ts","../src/utils/purposes.ts","../src/hubspot.ts"],"names":[],"mappings":";AAAO,SAAS,UAAA,CACd,GAAA,EACA,QAAA,EACA,KAAA,GAAgC,EAAC,EAClB;AACf,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AAItC,IAAA,IAAI,QAAA,CAAS,aAAA,CAAc,CAAA,YAAA,EAAe,GAAG,IAAI,CAAA,EAAG;AAClD,MAAA,OAAA,EAAQ;AAER,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAA,CAAO,GAAA,GAAM,GAAA;AACb,IAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AAEf,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AAChD,MAAA,MAAA,CAAO,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,IAChC;AAEA,IAAA,MAAA,CAAO,SAAS,MAAM;AACpB,MAAA,OAAA,EAAQ;AACG,IACb,CAAA;AAEA,IAAA,MAAA,CAAO,UAAU,MAAM;AACrB,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,GAAG,EAAE,CAAC,CAAA;AAAA,IACnD,CAAA;AACA,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,EAClC,CAAC,CAAA;AACH;;;AC5BO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,YAAA,EAAc;AAAA,IACZ,EAAA,EAAI,qDAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,EAAA,EAAI,uIAAA;AAAA,IACJ,EAAA,EAAI;AAAA;AAER,CAAA;;;ACNA,IAAM,OAAA,GAAiC;AAAA,EACrC,IAAA,EAAM,SAAA;AAAA,EACN,QAAA,EAAU,WAAA;AAAA,EACV,WAAA,EAAa,oDAAA;AAAA,EACb,GAAG,iBAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW;AAAA,IACT,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM,CAAC,MAAA,KAA0B;AAC/B,IAAA,IAAI,CAAC,QAAQ,QAAA,EAAU;AACvB,IAAA,UAAA,CAAW,CAAA,0BAAA,EAA6B,MAAA,CAAO,QAAQ,CAAA,GAAA,CAAA,EAAO,MAAA,EAAW;AAAA,MACvE,EAAA,EAAI;AAAA,KACL,CAAA;AAAA,EACH;AACF,CAAA;AAEA,IAAO,eAAA,GAAQ","file":"hubspot.js","sourcesContent":["export function loadScript(\n src: string,\n callback?: () => void,\n attrs: Record<string, string> = {},\n): Promise<void> {\n return new Promise((resolve, reject) => {\n /**\n * check if already loaded.\n */\n if (document.querySelector(`script[src=\"${src}\"]`)) {\n resolve();\n callback?.();\n return;\n }\n\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n\n for (const [key, value] of Object.entries(attrs)) {\n script.setAttribute(key, value);\n }\n\n script.onload = () => {\n resolve();\n callback?.();\n };\n\n script.onerror = () => {\n reject(new Error(`Failed to load script: ${src}`));\n };\n document.head.appendChild(script);\n });\n}\n","/**\n * Shared purpose labels and descriptions for built-in vendors.\n * Imported by each vendor — inlined at build time by tsup (zero runtime overhead).\n */\n\nexport const PURPOSE_ANALYTICS = {\n purposeLabel: {\n fr: \"Analyse de session utilisateur et mesure d'audience\",\n en: 'User session analysis and audience measurement',\n },\n purposeDescription: {\n fr: \"Ces cookies nous permettent d'établir des statistiques et volumes de fréquentation et d'utilisation des éléments du site.\",\n en: 'These cookies allow us to compile statistics on site traffic and usage.',\n },\n} as const;\n\nexport const PURPOSE_ADS = {\n purposeLabel: {\n fr: 'Ciblage publicitaire',\n en: 'Advertising targeting',\n },\n purposeDescription: {\n fr: 'Ces cookies sont utilisés pour vous proposer des publicités personnalisées en fonction de votre navigation.',\n en: 'These cookies are used to deliver personalized ads based on your browsing behavior.',\n },\n} as const;\n\nexport const PURPOSE_SUPPORT = {\n purposeLabel: {\n fr: 'Support et assistance',\n en: 'Support and assistance',\n },\n purposeDescription: {\n fr: \"Ces cookies permettent d'interagir avec notre service client et de bénéficier d'une assistance en direct.\",\n en: 'These cookies enable interaction with our customer support and provide live assistance.',\n },\n} as const;\n\nexport const PURPOSE_SOCIAL = {\n purposeLabel: {\n fr: 'Réseaux sociaux',\n en: 'Social media',\n },\n purposeDescription: {\n fr: \"Ces cookies permettent de partager du contenu sur les réseaux sociaux et d'interagir avec des plateformes tierces.\",\n en: 'These cookies allow sharing content on social media and interacting with third-party platforms.',\n },\n} as const;\n","import type { Vendor } from '@modernconsent/core';\nimport { loadScript } from './utils/loader';\nimport { PURPOSE_ANALYTICS } from './utils/purposes';\n\ntype HubSpotConfig = {\n portalId: string;\n};\n\nconst HubSpot: Vendor<HubSpotConfig> = {\n name: 'HubSpot',\n category: 'Analytics',\n description: 'Suivi marketing, formulaires et analytics HubSpot.',\n ...PURPOSE_ANALYTICS,\n requireConsent: true,\n artifacts: [\n '__hssc',\n '__hssrc',\n '__hstc',\n 'hubspotutk',\n '__hs_opt_out',\n '__hs_do_not_track',\n '__hs_initial_opt_in',\n ],\n init: (config: HubSpotConfig) => {\n if (!config?.portalId) return;\n loadScript(`https://js.hs-scripts.com/${config.portalId}.js`, undefined, {\n id: 'hs-script-loader',\n });\n },\n};\n\nexport default HubSpot;\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Registers a resolver for all built-in vendors.
3
+ * Vendors are loaded lazily — only when activated by user consent.
4
+ *
5
+ * @returns A cleanup function that removes the resolver.
6
+ */
7
+ declare function useBuiltinVendors(): () => void;
8
+
9
+ export { useBuiltinVendors };
package/dist/index.js ADDED
@@ -0,0 +1,46 @@
1
+ import { addResolver } from '@modernconsent/core';
2
+
3
+ // src/index.ts
4
+ var BUILTIN_LOADERS = {
5
+ // Analytics
6
+ "google-analytics": () => import('./google-analytics-SSTM7QMW.js'),
7
+ matomo: () => import('./matomo-H4JJCYJR.js'),
8
+ clarity: () => import('./clarity-KJPNK3FJ.js'),
9
+ hotjar: () => import('./hotjar-YCFHYSKB.js'),
10
+ hubspot: () => import('./hubspot-TLVPT4LG.js'),
11
+ amplitude: () => import('./amplitude-CFLVTHYV.js'),
12
+ "piano-analytics": () => import('./piano-analytics-CZXSQQNF.js'),
13
+ posthog: () => import('./posthog-N2HG7XOO.js'),
14
+ sentry: () => import('./sentry-UIBASRVZ.js'),
15
+ abtasty: () => import('./abtasty-3G4JRT5W.js'),
16
+ gtm: () => import('./gtm-WFI6ABNK.js'),
17
+ segment: () => import('./segment-GZJFC57W.js'),
18
+ plausible: () => import('./plausible-GI4L4SM4.js'),
19
+ // Advertising
20
+ googleads: () => import('./googleads-XPXUKIXQ.js'),
21
+ gcmads: () => import('./gcmads-LKOHK6MW.js'),
22
+ "meta-pixel": () => import('./meta-pixel-26NJ4GZJ.js'),
23
+ "linkedin-insight": () => import('./linkedin-insight-EH5OICV7.js'),
24
+ "tiktok-pixel": () => import('./tiktok-pixel-FDGVKGOH.js'),
25
+ criteo: () => import('./criteo-XKQPP2XY.js'),
26
+ "pinterest-pixel": () => import('./pinterest-pixel-B7J3RCSI.js'),
27
+ "snapchat-pixel": () => import('./snapchat-pixel-SYR3ZSSB.js'),
28
+ "reddit-pixel": () => import('./reddit-pixel-SKXRCFEF.js'),
29
+ // Support
30
+ intercom: () => import('./intercom-4MUKJZOV.js'),
31
+ smartsupp: () => import('./smartsupp-I6XHQISS.js')
32
+ };
33
+ function useBuiltinVendors() {
34
+ return addResolver((name) => {
35
+ const factory = BUILTIN_LOADERS[name];
36
+ if (!factory) return void 0;
37
+ return async () => {
38
+ const mod = await factory();
39
+ return mod.default ?? mod;
40
+ };
41
+ });
42
+ }
43
+
44
+ export { useBuiltinVendors };
45
+ //# sourceMappingURL=index.js.map
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAkBA,IAAM,eAAA,GAAsD;AAAA;AAAA,EAE1D,kBAAA,EAAoB,MAAM,OAAO,gCAAoB,CAAA;AAAA,EACrD,MAAA,EAAQ,MAAM,OAAO,sBAAU,CAAA;AAAA,EAC/B,OAAA,EAAS,MAAM,OAAO,uBAAW,CAAA;AAAA,EACjC,MAAA,EAAQ,MAAM,OAAO,sBAAU,CAAA;AAAA,EAC/B,OAAA,EAAS,MAAM,OAAO,uBAAW,CAAA;AAAA,EACjC,SAAA,EAAW,MAAM,OAAO,yBAAa,CAAA;AAAA,EACrC,iBAAA,EAAmB,MAAM,OAAO,+BAAmB,CAAA;AAAA,EACnD,OAAA,EAAS,MAAM,OAAO,uBAAW,CAAA;AAAA,EACjC,MAAA,EAAQ,MAAM,OAAO,sBAAU,CAAA;AAAA,EAC/B,OAAA,EAAS,MAAM,OAAO,uBAAW,CAAA;AAAA,EACjC,GAAA,EAAK,MAAM,OAAO,mBAAO,CAAA;AAAA,EACzB,OAAA,EAAS,MAAM,OAAO,uBAAW,CAAA;AAAA,EACjC,SAAA,EAAW,MAAM,OAAO,yBAAa,CAAA;AAAA;AAAA,EAGrC,SAAA,EAAW,MAAM,OAAO,yBAAa,CAAA;AAAA,EACrC,MAAA,EAAQ,MAAM,OAAO,sBAAU,CAAA;AAAA,EAC/B,YAAA,EAAc,MAAM,OAAO,0BAAc,CAAA;AAAA,EACzC,kBAAA,EAAoB,MAAM,OAAO,gCAAoB,CAAA;AAAA,EACrD,cAAA,EAAgB,MAAM,OAAO,4BAAgB,CAAA;AAAA,EAC7C,MAAA,EAAQ,MAAM,OAAO,sBAAU,CAAA;AAAA,EAC/B,iBAAA,EAAmB,MAAM,OAAO,+BAAmB,CAAA;AAAA,EACnD,gBAAA,EAAkB,MAAM,OAAO,8BAAkB,CAAA;AAAA,EACjD,cAAA,EAAgB,MAAM,OAAO,4BAAgB,CAAA;AAAA;AAAA,EAG7C,QAAA,EAAU,MAAM,OAAO,wBAAY,CAAA;AAAA,EACnC,SAAA,EAAW,MAAM,OAAO,yBAAa;AACvC,CAAA;AAQO,SAAS,iBAAA,GAAgC;AAC9C,EAAA,OAAO,WAAA,CAAY,CAAC,IAAA,KAAiB;AACnC,IAAA,MAAM,OAAA,GAAU,gBAAgB,IAAI,CAAA;AACpC,IAAA,IAAI,CAAC,SAAS,OAAO,MAAA;AACrB,IAAA,OAAO,YAAY;AACjB,MAAA,MAAM,GAAA,GAAM,MAAM,OAAA,EAAQ;AAC1B,MAAA,OAAO,IAAI,OAAA,IAAW,GAAA;AAAA,IACxB,CAAA;AAAA,EACF,CAAC,CAAA;AACH","file":"index.js","sourcesContent":["/**\n * Built-in vendor loaders — opt-in registration via useBuiltinVendors().\n *\n * NPM users call this function to register a resolver for all built-in\n * vendors. Each vendor is lazy-loaded via dynamic import — zero vendor\n * code is included unless the vendor is actually activated.\n *\n * @example\n * import { useBuiltinVendors } from '@modernconsent/vendors';\n * useBuiltinVendors();\n *\n * @example Cherry-pick a single vendor instead:\n * import { addResolver } from '@modernconsent/core';\n * import GA from '@modernconsent/vendors/google-analytics';\n * addResolver((name) => name === 'google-analytics' ? async () => GA : undefined);\n */\nimport { addResolver } from '@modernconsent/core';\n\nconst BUILTIN_LOADERS: Record<string, () => Promise<any>> = {\n // Analytics\n 'google-analytics': () => import('./google-analytics'),\n matomo: () => import('./matomo'),\n clarity: () => import('./clarity'),\n hotjar: () => import('./hotjar'),\n hubspot: () => import('./hubspot'),\n amplitude: () => import('./amplitude'),\n 'piano-analytics': () => import('./piano-analytics'),\n posthog: () => import('./posthog'),\n sentry: () => import('./sentry'),\n abtasty: () => import('./abtasty'),\n gtm: () => import('./gtm'),\n segment: () => import('./segment'),\n plausible: () => import('./plausible'),\n\n // Advertising\n googleads: () => import('./googleads'),\n gcmads: () => import('./gcmads'),\n 'meta-pixel': () => import('./meta-pixel'),\n 'linkedin-insight': () => import('./linkedin-insight'),\n 'tiktok-pixel': () => import('./tiktok-pixel'),\n criteo: () => import('./criteo'),\n 'pinterest-pixel': () => import('./pinterest-pixel'),\n 'snapchat-pixel': () => import('./snapchat-pixel'),\n 'reddit-pixel': () => import('./reddit-pixel'),\n\n // Support\n intercom: () => import('./intercom'),\n smartsupp: () => import('./smartsupp'),\n};\n\n/**\n * Registers a resolver for all built-in vendors.\n * Vendors are loaded lazily — only when activated by user consent.\n *\n * @returns A cleanup function that removes the resolver.\n */\nexport function useBuiltinVendors(): () => void {\n return addResolver((name: string) => {\n const factory = BUILTIN_LOADERS[name];\n if (!factory) return undefined;\n return async () => {\n const mod = await factory();\n return mod.default ?? mod;\n };\n });\n}\n"]}
@@ -0,0 +1,42 @@
1
+ import { PURPOSE_SUPPORT } from './chunk-TBZUWLOP.js';
2
+
3
+ // src/intercom.ts
4
+ var Intercom = {
5
+ name: "Intercom",
6
+ category: "Support",
7
+ description: "Messagerie client, chat en direct et base de connaissances.",
8
+ ...PURPOSE_SUPPORT,
9
+ requireConsent: true,
10
+ artifacts: ["intercom-id", "intercom-session", "intercom-device-id"],
11
+ init: (config) => {
12
+ if (!config?.appId) return;
13
+ window.intercomSettings = { app_id: config.appId };
14
+ (function() {
15
+ const w = window;
16
+ const ic = w.Intercom;
17
+ if (typeof ic === "function") {
18
+ ic("reattach_activator");
19
+ ic("update", w.intercomSettings);
20
+ } else {
21
+ const d = document;
22
+ const i = function(...args) {
23
+ i.c(args);
24
+ };
25
+ i.q = [];
26
+ i.c = function(args) {
27
+ i.q.push(args);
28
+ };
29
+ w.Intercom = i;
30
+ const s = d.createElement("script");
31
+ s.async = true;
32
+ s.src = `https://widget.intercom.io/widget/${config.appId}`;
33
+ d.head.appendChild(s);
34
+ }
35
+ })();
36
+ }
37
+ };
38
+ var intercom_default = Intercom;
39
+
40
+ export { intercom_default as default };
41
+ //# sourceMappingURL=intercom-4MUKJZOV.js.map
42
+ //# sourceMappingURL=intercom-4MUKJZOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/intercom.ts"],"names":[],"mappings":";;;AAcA,IAAM,QAAA,GAAmC;AAAA,EACvC,IAAA,EAAM,UAAA;AAAA,EACN,QAAA,EAAU,SAAA;AAAA,EACV,WAAA,EAAa,6DAAA;AAAA,EACb,GAAG,eAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW,CAAC,aAAA,EAAe,kBAAA,EAAoB,oBAAoB,CAAA;AAAA,EACnE,IAAA,EAAM,CAAC,MAAA,KAA2B;AAChC,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAEpB,IAAA,MAAA,CAAO,gBAAA,GAAmB,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM;AAEjD,IAAA,CAAC,WAAY;AACX,MAAA,MAAM,CAAA,GAAS,MAAA;AACf,MAAA,MAAM,KAAK,CAAA,CAAE,QAAA;AACb,MAAA,IAAI,OAAO,OAAO,UAAA,EAAY;AAC5B,QAAA,EAAA,CAAG,oBAAoB,CAAA;AACvB,QAAA,EAAA,CAAG,QAAA,EAAU,EAAE,gBAAgB,CAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,MAAM,CAAA,GAAI,QAAA;AACV,QAAA,MAAM,CAAA,GAAS,YAAa,IAAA,EAAa;AACvC,UAAA,CAAA,CAAE,EAAE,IAAI,CAAA;AAAA,QACV,CAAA;AACA,QAAA,CAAA,CAAE,IAAI,EAAC;AACP,QAAA,CAAA,CAAE,CAAA,GAAI,SAAU,IAAA,EAAW;AACzB,UAAA,CAAA,CAAE,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,QACf,CAAA;AACA,QAAA,CAAA,CAAE,QAAA,GAAW,CAAA;AACb,QAAA,MAAM,CAAA,GAAI,CAAA,CAAE,aAAA,CAAc,QAAQ,CAAA;AAClC,QAAA,CAAA,CAAE,KAAA,GAAQ,IAAA;AACV,QAAA,CAAA,CAAE,GAAA,GAAM,CAAA,kCAAA,EAAqC,MAAA,CAAO,KAAK,CAAA,CAAA;AACzD,QAAA,CAAA,CAAE,IAAA,CAAK,YAAY,CAAC,CAAA;AAAA,MACtB;AAAA,IACF,CAAA,GAAG;AAAA,EACL;AACF,CAAA;AAEA,IAAO,gBAAA,GAAQ","file":"intercom-4MUKJZOV.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { PURPOSE_SUPPORT } from './utils/purposes';\n\ntype IntercomConfig = {\n appId: string;\n};\n\ndeclare global {\n interface Window {\n Intercom: any;\n intercomSettings: any;\n }\n}\n\nconst Intercom: Vendor<IntercomConfig> = {\n name: 'Intercom',\n category: 'Support',\n description: 'Messagerie client, chat en direct et base de connaissances.',\n ...PURPOSE_SUPPORT,\n requireConsent: true,\n artifacts: ['intercom-id', 'intercom-session', 'intercom-device-id'],\n init: (config: IntercomConfig) => {\n if (!config?.appId) return;\n\n window.intercomSettings = { app_id: config.appId };\n\n (function () {\n const w: any = window;\n const ic = w.Intercom;\n if (typeof ic === 'function') {\n ic('reattach_activator');\n ic('update', w.intercomSettings);\n } else {\n const d = document;\n const i: any = function (...args: any[]) {\n i.c(args);\n };\n i.q = [];\n i.c = function (args: any) {\n i.q.push(args);\n };\n w.Intercom = i;\n const s = d.createElement('script') as HTMLScriptElement;\n s.async = true;\n s.src = `https://widget.intercom.io/widget/${config.appId}`;\n d.head.appendChild(s);\n }\n })();\n },\n};\n\nexport default Intercom;\n"]}
@@ -0,0 +1,14 @@
1
+ import { Vendor } from '@modernconsent/core';
2
+
3
+ type IntercomConfig = {
4
+ appId: string;
5
+ };
6
+ declare global {
7
+ interface Window {
8
+ Intercom: any;
9
+ intercomSettings: any;
10
+ }
11
+ }
12
+ declare const Intercom: Vendor<IntercomConfig>;
13
+
14
+ export { Intercom as default };
@@ -0,0 +1,52 @@
1
+ // src/utils/purposes.ts
2
+ var PURPOSE_SUPPORT = {
3
+ purposeLabel: {
4
+ fr: "Support et assistance",
5
+ en: "Support and assistance"
6
+ },
7
+ purposeDescription: {
8
+ fr: "Ces cookies permettent d'interagir avec notre service client et de b\xE9n\xE9ficier d'une assistance en direct.",
9
+ en: "These cookies enable interaction with our customer support and provide live assistance."
10
+ }
11
+ };
12
+
13
+ // src/intercom.ts
14
+ var Intercom = {
15
+ name: "Intercom",
16
+ category: "Support",
17
+ description: "Messagerie client, chat en direct et base de connaissances.",
18
+ ...PURPOSE_SUPPORT,
19
+ requireConsent: true,
20
+ artifacts: ["intercom-id", "intercom-session", "intercom-device-id"],
21
+ init: (config) => {
22
+ if (!config?.appId) return;
23
+ window.intercomSettings = { app_id: config.appId };
24
+ (function() {
25
+ const w = window;
26
+ const ic = w.Intercom;
27
+ if (typeof ic === "function") {
28
+ ic("reattach_activator");
29
+ ic("update", w.intercomSettings);
30
+ } else {
31
+ const d = document;
32
+ const i = function(...args) {
33
+ i.c(args);
34
+ };
35
+ i.q = [];
36
+ i.c = function(args) {
37
+ i.q.push(args);
38
+ };
39
+ w.Intercom = i;
40
+ const s = d.createElement("script");
41
+ s.async = true;
42
+ s.src = `https://widget.intercom.io/widget/${config.appId}`;
43
+ d.head.appendChild(s);
44
+ }
45
+ })();
46
+ }
47
+ };
48
+ var intercom_default = Intercom;
49
+
50
+ export { intercom_default as default };
51
+ //# sourceMappingURL=intercom.js.map
52
+ //# sourceMappingURL=intercom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/purposes.ts","../src/intercom.ts"],"names":[],"mappings":";AA2BO,IAAM,eAAA,GAAkB;AAAA,EAC7B,YAAA,EAAc;AAAA,IACZ,EAAA,EAAI,uBAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,EAAA,EAAI,iHAAA;AAAA,IACJ,EAAA,EAAI;AAAA;AAER,CAAA;;;ACtBA,IAAM,QAAA,GAAmC;AAAA,EACvC,IAAA,EAAM,UAAA;AAAA,EACN,QAAA,EAAU,SAAA;AAAA,EACV,WAAA,EAAa,6DAAA;AAAA,EACb,GAAG,eAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW,CAAC,aAAA,EAAe,kBAAA,EAAoB,oBAAoB,CAAA;AAAA,EACnE,IAAA,EAAM,CAAC,MAAA,KAA2B;AAChC,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAEpB,IAAA,MAAA,CAAO,gBAAA,GAAmB,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAM;AAEjD,IAAA,CAAC,WAAY;AACX,MAAA,MAAM,CAAA,GAAS,MAAA;AACf,MAAA,MAAM,KAAK,CAAA,CAAE,QAAA;AACb,MAAA,IAAI,OAAO,OAAO,UAAA,EAAY;AAC5B,QAAA,EAAA,CAAG,oBAAoB,CAAA;AACvB,QAAA,EAAA,CAAG,QAAA,EAAU,EAAE,gBAAgB,CAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,MAAM,CAAA,GAAI,QAAA;AACV,QAAA,MAAM,CAAA,GAAS,YAAa,IAAA,EAAa;AACvC,UAAA,CAAA,CAAE,EAAE,IAAI,CAAA;AAAA,QACV,CAAA;AACA,QAAA,CAAA,CAAE,IAAI,EAAC;AACP,QAAA,CAAA,CAAE,CAAA,GAAI,SAAU,IAAA,EAAW;AACzB,UAAA,CAAA,CAAE,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,QACf,CAAA;AACA,QAAA,CAAA,CAAE,QAAA,GAAW,CAAA;AACb,QAAA,MAAM,CAAA,GAAI,CAAA,CAAE,aAAA,CAAc,QAAQ,CAAA;AAClC,QAAA,CAAA,CAAE,KAAA,GAAQ,IAAA;AACV,QAAA,CAAA,CAAE,GAAA,GAAM,CAAA,kCAAA,EAAqC,MAAA,CAAO,KAAK,CAAA,CAAA;AACzD,QAAA,CAAA,CAAE,IAAA,CAAK,YAAY,CAAC,CAAA;AAAA,MACtB;AAAA,IACF,CAAA,GAAG;AAAA,EACL;AACF,CAAA;AAEA,IAAO,gBAAA,GAAQ","file":"intercom.js","sourcesContent":["/**\n * Shared purpose labels and descriptions for built-in vendors.\n * Imported by each vendor — inlined at build time by tsup (zero runtime overhead).\n */\n\nexport const PURPOSE_ANALYTICS = {\n purposeLabel: {\n fr: \"Analyse de session utilisateur et mesure d'audience\",\n en: 'User session analysis and audience measurement',\n },\n purposeDescription: {\n fr: \"Ces cookies nous permettent d'établir des statistiques et volumes de fréquentation et d'utilisation des éléments du site.\",\n en: 'These cookies allow us to compile statistics on site traffic and usage.',\n },\n} as const;\n\nexport const PURPOSE_ADS = {\n purposeLabel: {\n fr: 'Ciblage publicitaire',\n en: 'Advertising targeting',\n },\n purposeDescription: {\n fr: 'Ces cookies sont utilisés pour vous proposer des publicités personnalisées en fonction de votre navigation.',\n en: 'These cookies are used to deliver personalized ads based on your browsing behavior.',\n },\n} as const;\n\nexport const PURPOSE_SUPPORT = {\n purposeLabel: {\n fr: 'Support et assistance',\n en: 'Support and assistance',\n },\n purposeDescription: {\n fr: \"Ces cookies permettent d'interagir avec notre service client et de bénéficier d'une assistance en direct.\",\n en: 'These cookies enable interaction with our customer support and provide live assistance.',\n },\n} as const;\n\nexport const PURPOSE_SOCIAL = {\n purposeLabel: {\n fr: 'Réseaux sociaux',\n en: 'Social media',\n },\n purposeDescription: {\n fr: \"Ces cookies permettent de partager du contenu sur les réseaux sociaux et d'interagir avec des plateformes tierces.\",\n en: 'These cookies allow sharing content on social media and interacting with third-party platforms.',\n },\n} as const;\n","import type { Vendor } from '@modernconsent/core';\nimport { PURPOSE_SUPPORT } from './utils/purposes';\n\ntype IntercomConfig = {\n appId: string;\n};\n\ndeclare global {\n interface Window {\n Intercom: any;\n intercomSettings: any;\n }\n}\n\nconst Intercom: Vendor<IntercomConfig> = {\n name: 'Intercom',\n category: 'Support',\n description: 'Messagerie client, chat en direct et base de connaissances.',\n ...PURPOSE_SUPPORT,\n requireConsent: true,\n artifacts: ['intercom-id', 'intercom-session', 'intercom-device-id'],\n init: (config: IntercomConfig) => {\n if (!config?.appId) return;\n\n window.intercomSettings = { app_id: config.appId };\n\n (function () {\n const w: any = window;\n const ic = w.Intercom;\n if (typeof ic === 'function') {\n ic('reattach_activator');\n ic('update', w.intercomSettings);\n } else {\n const d = document;\n const i: any = function (...args: any[]) {\n i.c(args);\n };\n i.q = [];\n i.c = function (args: any) {\n i.q.push(args);\n };\n w.Intercom = i;\n const s = d.createElement('script') as HTMLScriptElement;\n s.async = true;\n s.src = `https://widget.intercom.io/widget/${config.appId}`;\n d.head.appendChild(s);\n }\n })();\n },\n};\n\nexport default Intercom;\n"]}
@@ -0,0 +1,40 @@
1
+ import { PURPOSE_ADS } from './chunk-TBZUWLOP.js';
2
+
3
+ // src/linkedin-insight.ts
4
+ var LinkedInInsight = {
5
+ name: "LinkedIn Insight Tag",
6
+ category: "Publicit\xE9",
7
+ description: "Suivi des conversions et retargeting pour les campagnes LinkedIn Ads.",
8
+ ...PURPOSE_ADS,
9
+ requireConsent: true,
10
+ artifacts: [
11
+ "li_sugr",
12
+ "bcookie",
13
+ "lidc",
14
+ "UserMatchHistory",
15
+ "AnalyticsSyncHistory",
16
+ "li_fat_id"
17
+ ],
18
+ init: (config) => {
19
+ if (!config?.partnerId) return;
20
+ window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
21
+ window._linkedin_data_partner_ids.push(config.partnerId);
22
+ (function(l) {
23
+ if (!l.lintrk) {
24
+ l.lintrk = function(...args) {
25
+ (l.lintrk.q = l.lintrk.q || []).push(args);
26
+ };
27
+ const s = document.getElementsByTagName("script")[0];
28
+ const b = document.createElement("script");
29
+ b.async = true;
30
+ b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
31
+ s.parentNode.insertBefore(b, s);
32
+ }
33
+ })(window);
34
+ }
35
+ };
36
+ var linkedin_insight_default = LinkedInInsight;
37
+
38
+ export { linkedin_insight_default as default };
39
+ //# sourceMappingURL=linkedin-insight-EH5OICV7.js.map
40
+ //# sourceMappingURL=linkedin-insight-EH5OICV7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/linkedin-insight.ts"],"names":[],"mappings":";;;AAcA,IAAM,eAAA,GAA0C;AAAA,EAC9C,IAAA,EAAM,sBAAA;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,WAAA,EAAa,uEAAA;AAAA,EACb,GAAG,WAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW;AAAA,IACT,SAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM,CAAC,MAAA,KAA2B;AAChC,IAAA,IAAI,CAAC,QAAQ,SAAA,EAAW;AAExB,IAAA,MAAA,CAAO,0BAAA,GAA6B,MAAA,CAAO,0BAAA,IAA8B,EAAC;AAC1E,IAAA,MAAA,CAAO,0BAAA,CAA2B,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AAEvD,IAAA,CAAC,SAAU,CAAA,EAAQ;AACjB,MAAA,IAAI,CAAC,EAAE,MAAA,EAAQ;AACb,QAAA,CAAA,CAAE,MAAA,GAAS,YAAa,IAAA,EAAa;AACnC,UAAA,CAAC,CAAA,CAAE,OAAO,CAAA,GAAI,CAAA,CAAE,OAAO,CAAA,IAAK,EAAC,EAAG,IAAA,CAAK,IAAI,CAAA;AAAA,QAC3C,CAAA;AACA,QAAA,MAAM,CAAA,GAAI,QAAA,CAAS,oBAAA,CAAqB,QAAQ,EAAE,CAAC,CAAA;AACnD,QAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AACzC,QAAA,CAAA,CAAE,KAAA,GAAQ,IAAA;AACV,QAAA,CAAA,CAAE,GAAA,GAAM,wDAAA;AACR,QAAA,CAAA,CAAE,UAAA,CAAY,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA;AAAA,MACjC;AAAA,IACF,GAAG,MAAM,CAAA;AAAA,EACX;AACF,CAAA;AAEA,IAAO,wBAAA,GAAQ","file":"linkedin-insight-EH5OICV7.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { PURPOSE_ADS } from './utils/purposes';\n\ntype LinkedInConfig = {\n partnerId: string;\n};\n\ndeclare global {\n interface Window {\n _linkedin_data_partner_ids: string[];\n lintrk: ((...args: any[]) => void) & { q?: any[] };\n }\n}\n\nconst LinkedInInsight: Vendor<LinkedInConfig> = {\n name: 'LinkedIn Insight Tag',\n category: 'Publicité',\n description: 'Suivi des conversions et retargeting pour les campagnes LinkedIn Ads.',\n ...PURPOSE_ADS,\n requireConsent: true,\n artifacts: [\n 'li_sugr',\n 'bcookie',\n 'lidc',\n 'UserMatchHistory',\n 'AnalyticsSyncHistory',\n 'li_fat_id',\n ],\n init: (config: LinkedInConfig) => {\n if (!config?.partnerId) return;\n\n window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];\n window._linkedin_data_partner_ids.push(config.partnerId);\n\n (function (l: any) {\n if (!l.lintrk) {\n l.lintrk = function (...args: any[]) {\n (l.lintrk.q = l.lintrk.q || []).push(args);\n };\n const s = document.getElementsByTagName('script')[0];\n const b = document.createElement('script') as HTMLScriptElement;\n b.async = true;\n b.src = 'https://snap.licdn.com/li.lms-analytics/insight.min.js';\n s.parentNode!.insertBefore(b, s);\n }\n })(window);\n },\n};\n\nexport default LinkedInInsight;\n"]}
@@ -0,0 +1,16 @@
1
+ import { Vendor } from '@modernconsent/core';
2
+
3
+ type LinkedInConfig = {
4
+ partnerId: string;
5
+ };
6
+ declare global {
7
+ interface Window {
8
+ _linkedin_data_partner_ids: string[];
9
+ lintrk: ((...args: any[]) => void) & {
10
+ q?: any[];
11
+ };
12
+ }
13
+ }
14
+ declare const LinkedInInsight: Vendor<LinkedInConfig>;
15
+
16
+ export { LinkedInInsight as default };
@@ -0,0 +1,50 @@
1
+ // src/utils/purposes.ts
2
+ var PURPOSE_ADS = {
3
+ purposeLabel: {
4
+ fr: "Ciblage publicitaire",
5
+ en: "Advertising targeting"
6
+ },
7
+ purposeDescription: {
8
+ fr: "Ces cookies sont utilis\xE9s pour vous proposer des publicit\xE9s personnalis\xE9es en fonction de votre navigation.",
9
+ en: "These cookies are used to deliver personalized ads based on your browsing behavior."
10
+ }
11
+ };
12
+
13
+ // src/linkedin-insight.ts
14
+ var LinkedInInsight = {
15
+ name: "LinkedIn Insight Tag",
16
+ category: "Publicit\xE9",
17
+ description: "Suivi des conversions et retargeting pour les campagnes LinkedIn Ads.",
18
+ ...PURPOSE_ADS,
19
+ requireConsent: true,
20
+ artifacts: [
21
+ "li_sugr",
22
+ "bcookie",
23
+ "lidc",
24
+ "UserMatchHistory",
25
+ "AnalyticsSyncHistory",
26
+ "li_fat_id"
27
+ ],
28
+ init: (config) => {
29
+ if (!config?.partnerId) return;
30
+ window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
31
+ window._linkedin_data_partner_ids.push(config.partnerId);
32
+ (function(l) {
33
+ if (!l.lintrk) {
34
+ l.lintrk = function(...args) {
35
+ (l.lintrk.q = l.lintrk.q || []).push(args);
36
+ };
37
+ const s = document.getElementsByTagName("script")[0];
38
+ const b = document.createElement("script");
39
+ b.async = true;
40
+ b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
41
+ s.parentNode.insertBefore(b, s);
42
+ }
43
+ })(window);
44
+ }
45
+ };
46
+ var linkedin_insight_default = LinkedInInsight;
47
+
48
+ export { linkedin_insight_default as default };
49
+ //# sourceMappingURL=linkedin-insight.js.map
50
+ //# sourceMappingURL=linkedin-insight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/purposes.ts","../src/linkedin-insight.ts"],"names":[],"mappings":";AAgBO,IAAM,WAAA,GAAc;AAAA,EACzB,YAAA,EAAc;AAAA,IACZ,EAAA,EAAI,sBAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,EAAA,EAAI,sHAAA;AAAA,IACJ,EAAA,EAAI;AAAA;AAER,CAAA;;;ACXA,IAAM,eAAA,GAA0C;AAAA,EAC9C,IAAA,EAAM,sBAAA;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,WAAA,EAAa,uEAAA;AAAA,EACb,GAAG,WAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW;AAAA,IACT,SAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM,CAAC,MAAA,KAA2B;AAChC,IAAA,IAAI,CAAC,QAAQ,SAAA,EAAW;AAExB,IAAA,MAAA,CAAO,0BAAA,GAA6B,MAAA,CAAO,0BAAA,IAA8B,EAAC;AAC1E,IAAA,MAAA,CAAO,0BAAA,CAA2B,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AAEvD,IAAA,CAAC,SAAU,CAAA,EAAQ;AACjB,MAAA,IAAI,CAAC,EAAE,MAAA,EAAQ;AACb,QAAA,CAAA,CAAE,MAAA,GAAS,YAAa,IAAA,EAAa;AACnC,UAAA,CAAC,CAAA,CAAE,OAAO,CAAA,GAAI,CAAA,CAAE,OAAO,CAAA,IAAK,EAAC,EAAG,IAAA,CAAK,IAAI,CAAA;AAAA,QAC3C,CAAA;AACA,QAAA,MAAM,CAAA,GAAI,QAAA,CAAS,oBAAA,CAAqB,QAAQ,EAAE,CAAC,CAAA;AACnD,QAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AACzC,QAAA,CAAA,CAAE,KAAA,GAAQ,IAAA;AACV,QAAA,CAAA,CAAE,GAAA,GAAM,wDAAA;AACR,QAAA,CAAA,CAAE,UAAA,CAAY,YAAA,CAAa,CAAA,EAAG,CAAC,CAAA;AAAA,MACjC;AAAA,IACF,GAAG,MAAM,CAAA;AAAA,EACX;AACF,CAAA;AAEA,IAAO,wBAAA,GAAQ","file":"linkedin-insight.js","sourcesContent":["/**\n * Shared purpose labels and descriptions for built-in vendors.\n * Imported by each vendor — inlined at build time by tsup (zero runtime overhead).\n */\n\nexport const PURPOSE_ANALYTICS = {\n purposeLabel: {\n fr: \"Analyse de session utilisateur et mesure d'audience\",\n en: 'User session analysis and audience measurement',\n },\n purposeDescription: {\n fr: \"Ces cookies nous permettent d'établir des statistiques et volumes de fréquentation et d'utilisation des éléments du site.\",\n en: 'These cookies allow us to compile statistics on site traffic and usage.',\n },\n} as const;\n\nexport const PURPOSE_ADS = {\n purposeLabel: {\n fr: 'Ciblage publicitaire',\n en: 'Advertising targeting',\n },\n purposeDescription: {\n fr: 'Ces cookies sont utilisés pour vous proposer des publicités personnalisées en fonction de votre navigation.',\n en: 'These cookies are used to deliver personalized ads based on your browsing behavior.',\n },\n} as const;\n\nexport const PURPOSE_SUPPORT = {\n purposeLabel: {\n fr: 'Support et assistance',\n en: 'Support and assistance',\n },\n purposeDescription: {\n fr: \"Ces cookies permettent d'interagir avec notre service client et de bénéficier d'une assistance en direct.\",\n en: 'These cookies enable interaction with our customer support and provide live assistance.',\n },\n} as const;\n\nexport const PURPOSE_SOCIAL = {\n purposeLabel: {\n fr: 'Réseaux sociaux',\n en: 'Social media',\n },\n purposeDescription: {\n fr: \"Ces cookies permettent de partager du contenu sur les réseaux sociaux et d'interagir avec des plateformes tierces.\",\n en: 'These cookies allow sharing content on social media and interacting with third-party platforms.',\n },\n} as const;\n","import type { Vendor } from '@modernconsent/core';\nimport { PURPOSE_ADS } from './utils/purposes';\n\ntype LinkedInConfig = {\n partnerId: string;\n};\n\ndeclare global {\n interface Window {\n _linkedin_data_partner_ids: string[];\n lintrk: ((...args: any[]) => void) & { q?: any[] };\n }\n}\n\nconst LinkedInInsight: Vendor<LinkedInConfig> = {\n name: 'LinkedIn Insight Tag',\n category: 'Publicité',\n description: 'Suivi des conversions et retargeting pour les campagnes LinkedIn Ads.',\n ...PURPOSE_ADS,\n requireConsent: true,\n artifacts: [\n 'li_sugr',\n 'bcookie',\n 'lidc',\n 'UserMatchHistory',\n 'AnalyticsSyncHistory',\n 'li_fat_id',\n ],\n init: (config: LinkedInConfig) => {\n if (!config?.partnerId) return;\n\n window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];\n window._linkedin_data_partner_ids.push(config.partnerId);\n\n (function (l: any) {\n if (!l.lintrk) {\n l.lintrk = function (...args: any[]) {\n (l.lintrk.q = l.lintrk.q || []).push(args);\n };\n const s = document.getElementsByTagName('script')[0];\n const b = document.createElement('script') as HTMLScriptElement;\n b.async = true;\n b.src = 'https://snap.licdn.com/li.lms-analytics/insight.min.js';\n s.parentNode!.insertBefore(b, s);\n }\n })(window);\n },\n};\n\nexport default LinkedInInsight;\n"]}
@@ -0,0 +1,29 @@
1
+ import { PURPOSE_ANALYTICS } from './chunk-TBZUWLOP.js';
2
+
3
+ // src/matomo.ts
4
+ var Matomo = {
5
+ name: "Matomo",
6
+ category: "Analytics",
7
+ description: "Matomo est une solution d'analyse web open-source et respectueuse de la vie priv\xE9e.",
8
+ ...PURPOSE_ANALYTICS,
9
+ requireConsent: true,
10
+ artifacts: ["_pk_id", "_pk_ses", "_pk_ref", "_pk_cvar", "mtm_consent", "mtm_consent_removed"],
11
+ init: (config) => {
12
+ if (!config?.siteId || !config?.trackerUrl) return;
13
+ const trackerUrl = config.trackerUrl.replace(/\/$/, "");
14
+ window._paq = window._paq || [];
15
+ window._paq.push(["trackPageView"]);
16
+ window._paq.push(["enableLinkTracking"]);
17
+ window._paq.push(["setTrackerUrl", `${trackerUrl}/matomo.php`]);
18
+ window._paq.push(["setSiteId", config.siteId]);
19
+ const script = document.createElement("script");
20
+ script.async = true;
21
+ script.src = `${trackerUrl}/matomo.js`;
22
+ document.head.appendChild(script);
23
+ }
24
+ };
25
+ var matomo_default = Matomo;
26
+
27
+ export { matomo_default as default };
28
+ //# sourceMappingURL=matomo-H4JJCYJR.js.map
29
+ //# sourceMappingURL=matomo-H4JJCYJR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/matomo.ts"],"names":[],"mappings":";;;AAcA,IAAM,MAAA,GAA+B;AAAA,EACnC,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU,WAAA;AAAA,EACV,WAAA,EACE,wFAAA;AAAA,EACF,GAAG,iBAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,WAAW,CAAC,QAAA,EAAU,WAAW,SAAA,EAAW,UAAA,EAAY,eAAe,qBAAqB,CAAA;AAAA,EAC5F,IAAA,EAAM,CAAC,MAAA,KAAyB;AAC9B,IAAA,IAAI,CAAC,MAAA,EAAQ,MAAA,IAAU,CAAC,QAAQ,UAAA,EAAY;AAE5C,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,OAAA,CAAQ,OAAO,EAAE,CAAA;AACtD,IAAA,MAAA,CAAO,IAAA,GAAO,MAAA,CAAO,IAAA,IAAQ,EAAC;AAC9B,IAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,CAAC,eAAe,CAAC,CAAA;AAClC,IAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,CAAC,oBAAoB,CAAC,CAAA;AACvC,IAAA,MAAA,CAAO,KAAK,IAAA,CAAK,CAAC,iBAAiB,CAAA,EAAG,UAAU,aAAa,CAAC,CAAA;AAC9D,IAAA,MAAA,CAAO,KAAK,IAAA,CAAK,CAAC,WAAA,EAAa,MAAA,CAAO,MAAM,CAAC,CAAA;AAE7C,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AACf,IAAA,MAAA,CAAO,GAAA,GAAM,GAAG,UAAU,CAAA,UAAA,CAAA;AAC1B,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,EAClC;AACF,CAAA;AAEA,IAAO,cAAA,GAAQ","file":"matomo-H4JJCYJR.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { PURPOSE_ANALYTICS } from './utils/purposes';\n\ntype MatomoConfig = {\n siteId: string;\n trackerUrl: string;\n};\n\ndeclare global {\n interface Window {\n _paq: any[];\n }\n}\n\nconst Matomo: Vendor<MatomoConfig> = {\n name: 'Matomo',\n category: 'Analytics',\n description:\n \"Matomo est une solution d'analyse web open-source et respectueuse de la vie privée.\",\n ...PURPOSE_ANALYTICS,\n requireConsent: true,\n artifacts: ['_pk_id', '_pk_ses', '_pk_ref', '_pk_cvar', 'mtm_consent', 'mtm_consent_removed'],\n init: (config: MatomoConfig) => {\n if (!config?.siteId || !config?.trackerUrl) return;\n\n const trackerUrl = config.trackerUrl.replace(/\\/$/, '');\n window._paq = window._paq || [];\n window._paq.push(['trackPageView']);\n window._paq.push(['enableLinkTracking']);\n window._paq.push(['setTrackerUrl', `${trackerUrl}/matomo.php`]);\n window._paq.push(['setSiteId', config.siteId]);\n\n const script = document.createElement('script');\n script.async = true;\n script.src = `${trackerUrl}/matomo.js`;\n document.head.appendChild(script);\n },\n};\n\nexport default Matomo;\n"]}
@@ -0,0 +1,14 @@
1
+ import { Vendor } from '@modernconsent/core';
2
+
3
+ type MatomoConfig = {
4
+ siteId: string;
5
+ trackerUrl: string;
6
+ };
7
+ declare global {
8
+ interface Window {
9
+ _paq: any[];
10
+ }
11
+ }
12
+ declare const Matomo: Vendor<MatomoConfig>;
13
+
14
+ export { Matomo as default };
package/dist/matomo.js ADDED
@@ -0,0 +1,39 @@
1
+ // src/utils/purposes.ts
2
+ var PURPOSE_ANALYTICS = {
3
+ purposeLabel: {
4
+ fr: "Analyse de session utilisateur et mesure d'audience",
5
+ en: "User session analysis and audience measurement"
6
+ },
7
+ purposeDescription: {
8
+ fr: "Ces cookies nous permettent d'\xE9tablir des statistiques et volumes de fr\xE9quentation et d'utilisation des \xE9l\xE9ments du site.",
9
+ en: "These cookies allow us to compile statistics on site traffic and usage."
10
+ }
11
+ };
12
+
13
+ // src/matomo.ts
14
+ var Matomo = {
15
+ name: "Matomo",
16
+ category: "Analytics",
17
+ description: "Matomo est une solution d'analyse web open-source et respectueuse de la vie priv\xE9e.",
18
+ ...PURPOSE_ANALYTICS,
19
+ requireConsent: true,
20
+ artifacts: ["_pk_id", "_pk_ses", "_pk_ref", "_pk_cvar", "mtm_consent", "mtm_consent_removed"],
21
+ init: (config) => {
22
+ if (!config?.siteId || !config?.trackerUrl) return;
23
+ const trackerUrl = config.trackerUrl.replace(/\/$/, "");
24
+ window._paq = window._paq || [];
25
+ window._paq.push(["trackPageView"]);
26
+ window._paq.push(["enableLinkTracking"]);
27
+ window._paq.push(["setTrackerUrl", `${trackerUrl}/matomo.php`]);
28
+ window._paq.push(["setSiteId", config.siteId]);
29
+ const script = document.createElement("script");
30
+ script.async = true;
31
+ script.src = `${trackerUrl}/matomo.js`;
32
+ document.head.appendChild(script);
33
+ }
34
+ };
35
+ var matomo_default = Matomo;
36
+
37
+ export { matomo_default as default };
38
+ //# sourceMappingURL=matomo.js.map
39
+ //# sourceMappingURL=matomo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/purposes.ts","../src/matomo.ts"],"names":[],"mappings":";AAKO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,YAAA,EAAc;AAAA,IACZ,EAAA,EAAI,qDAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,EAAA,EAAI,uIAAA;AAAA,IACJ,EAAA,EAAI;AAAA;AAER,CAAA;;;ACAA,IAAM,MAAA,GAA+B;AAAA,EACnC,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU,WAAA;AAAA,EACV,WAAA,EACE,wFAAA;AAAA,EACF,GAAG,iBAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,WAAW,CAAC,QAAA,EAAU,WAAW,SAAA,EAAW,UAAA,EAAY,eAAe,qBAAqB,CAAA;AAAA,EAC5F,IAAA,EAAM,CAAC,MAAA,KAAyB;AAC9B,IAAA,IAAI,CAAC,MAAA,EAAQ,MAAA,IAAU,CAAC,QAAQ,UAAA,EAAY;AAE5C,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,OAAA,CAAQ,OAAO,EAAE,CAAA;AACtD,IAAA,MAAA,CAAO,IAAA,GAAO,MAAA,CAAO,IAAA,IAAQ,EAAC;AAC9B,IAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,CAAC,eAAe,CAAC,CAAA;AAClC,IAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,CAAC,oBAAoB,CAAC,CAAA;AACvC,IAAA,MAAA,CAAO,KAAK,IAAA,CAAK,CAAC,iBAAiB,CAAA,EAAG,UAAU,aAAa,CAAC,CAAA;AAC9D,IAAA,MAAA,CAAO,KAAK,IAAA,CAAK,CAAC,WAAA,EAAa,MAAA,CAAO,MAAM,CAAC,CAAA;AAE7C,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AACf,IAAA,MAAA,CAAO,GAAA,GAAM,GAAG,UAAU,CAAA,UAAA,CAAA;AAC1B,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,EAClC;AACF,CAAA;AAEA,IAAO,cAAA,GAAQ","file":"matomo.js","sourcesContent":["/**\n * Shared purpose labels and descriptions for built-in vendors.\n * Imported by each vendor — inlined at build time by tsup (zero runtime overhead).\n */\n\nexport const PURPOSE_ANALYTICS = {\n purposeLabel: {\n fr: \"Analyse de session utilisateur et mesure d'audience\",\n en: 'User session analysis and audience measurement',\n },\n purposeDescription: {\n fr: \"Ces cookies nous permettent d'établir des statistiques et volumes de fréquentation et d'utilisation des éléments du site.\",\n en: 'These cookies allow us to compile statistics on site traffic and usage.',\n },\n} as const;\n\nexport const PURPOSE_ADS = {\n purposeLabel: {\n fr: 'Ciblage publicitaire',\n en: 'Advertising targeting',\n },\n purposeDescription: {\n fr: 'Ces cookies sont utilisés pour vous proposer des publicités personnalisées en fonction de votre navigation.',\n en: 'These cookies are used to deliver personalized ads based on your browsing behavior.',\n },\n} as const;\n\nexport const PURPOSE_SUPPORT = {\n purposeLabel: {\n fr: 'Support et assistance',\n en: 'Support and assistance',\n },\n purposeDescription: {\n fr: \"Ces cookies permettent d'interagir avec notre service client et de bénéficier d'une assistance en direct.\",\n en: 'These cookies enable interaction with our customer support and provide live assistance.',\n },\n} as const;\n\nexport const PURPOSE_SOCIAL = {\n purposeLabel: {\n fr: 'Réseaux sociaux',\n en: 'Social media',\n },\n purposeDescription: {\n fr: \"Ces cookies permettent de partager du contenu sur les réseaux sociaux et d'interagir avec des plateformes tierces.\",\n en: 'These cookies allow sharing content on social media and interacting with third-party platforms.',\n },\n} as const;\n","import type { Vendor } from '@modernconsent/core';\nimport { PURPOSE_ANALYTICS } from './utils/purposes';\n\ntype MatomoConfig = {\n siteId: string;\n trackerUrl: string;\n};\n\ndeclare global {\n interface Window {\n _paq: any[];\n }\n}\n\nconst Matomo: Vendor<MatomoConfig> = {\n name: 'Matomo',\n category: 'Analytics',\n description:\n \"Matomo est une solution d'analyse web open-source et respectueuse de la vie privée.\",\n ...PURPOSE_ANALYTICS,\n requireConsent: true,\n artifacts: ['_pk_id', '_pk_ses', '_pk_ref', '_pk_cvar', 'mtm_consent', 'mtm_consent_removed'],\n init: (config: MatomoConfig) => {\n if (!config?.siteId || !config?.trackerUrl) return;\n\n const trackerUrl = config.trackerUrl.replace(/\\/$/, '');\n window._paq = window._paq || [];\n window._paq.push(['trackPageView']);\n window._paq.push(['enableLinkTracking']);\n window._paq.push(['setTrackerUrl', `${trackerUrl}/matomo.php`]);\n window._paq.push(['setSiteId', config.siteId]);\n\n const script = document.createElement('script');\n script.async = true;\n script.src = `${trackerUrl}/matomo.js`;\n document.head.appendChild(script);\n },\n};\n\nexport default Matomo;\n"]}
@@ -0,0 +1,34 @@
1
+ import { loadScript } from './chunk-6JXWYPMF.js';
2
+ import { PURPOSE_ADS } from './chunk-TBZUWLOP.js';
3
+
4
+ // src/meta-pixel.ts
5
+ var MetaPixel = {
6
+ name: "Meta Pixel",
7
+ category: "Publicit\xE9",
8
+ description: "Mesure les conversions et personnalise les publicit\xE9s Facebook/Instagram.",
9
+ ...PURPOSE_ADS,
10
+ requireConsent: true,
11
+ init: (config) => {
12
+ if (!config?.pixelId) return;
13
+ const fbq = function(...args) {
14
+ if (fbq.callMethod) {
15
+ fbq.callMethod(...args);
16
+ } else {
17
+ fbq.queue.push(args);
18
+ }
19
+ };
20
+ fbq.queue = [];
21
+ fbq.loaded = true;
22
+ fbq.version = "2.0";
23
+ window.fbq = fbq;
24
+ window._fbq = fbq;
25
+ fbq("init", config.pixelId);
26
+ fbq("track", "PageView");
27
+ loadScript("https://connect.facebook.net/en_US/fbevents.js");
28
+ }
29
+ };
30
+ var meta_pixel_default = MetaPixel;
31
+
32
+ export { meta_pixel_default as default };
33
+ //# sourceMappingURL=meta-pixel-26NJ4GZJ.js.map
34
+ //# sourceMappingURL=meta-pixel-26NJ4GZJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/meta-pixel.ts"],"names":[],"mappings":";;;;AAoBA,IAAM,SAAA,GAAqC;AAAA,EACzC,IAAA,EAAM,YAAA;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,WAAA,EAAa,8EAAA;AAAA,EACb,GAAG,WAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,IAAA,EAAM,CAAC,MAAA,KAA4B;AACjC,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AAEtB,IAAA,MAAM,GAAA,GAAqB,YAAa,IAAA,EAAa;AACnD,MAAA,IAAI,IAAI,UAAA,EAAY;AAClB,QAAA,GAAA,CAAI,UAAA,CAAW,GAAG,IAAI,CAAA;AAAA,MACxB,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,KAAA,CAAO,KAAK,IAAI,CAAA;AAAA,MACtB;AAAA,IACF,CAAA;AACA,IAAA,GAAA,CAAI,QAAQ,EAAC;AACb,IAAA,GAAA,CAAI,MAAA,GAAS,IAAA;AACb,IAAA,GAAA,CAAI,OAAA,GAAU,KAAA;AACd,IAAA,MAAA,CAAO,GAAA,GAAM,GAAA;AACb,IAAA,MAAA,CAAO,IAAA,GAAO,GAAA;AAEd,IAAA,GAAA,CAAI,MAAA,EAAQ,OAAO,OAAO,CAAA;AAC1B,IAAA,GAAA,CAAI,SAAS,UAAU,CAAA;AAEvB,IAAA,UAAA,CAAW,gDAAgD,CAAA;AAAA,EAC7D;AACF,CAAA;AAEA,IAAO,kBAAA,GAAQ","file":"meta-pixel-26NJ4GZJ.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { loadScript } from './utils/loader';\nimport { PURPOSE_ADS } from './utils/purposes';\n\ntype MetaPixelConfig = {\n pixelId: string;\n};\n\ndeclare global {\n interface Window {\n fbq: ((...args: any[]) => void) & {\n callMethod?: (...args: any[]) => void;\n queue?: any[];\n loaded?: boolean;\n version?: string;\n };\n _fbq: Window['fbq'];\n }\n}\n\nconst MetaPixel: Vendor<MetaPixelConfig> = {\n name: 'Meta Pixel',\n category: 'Publicité',\n description: 'Mesure les conversions et personnalise les publicités Facebook/Instagram.',\n ...PURPOSE_ADS,\n requireConsent: true,\n init: (config: MetaPixelConfig) => {\n if (!config?.pixelId) return;\n\n const fbq: Window['fbq'] = function (...args: any[]) {\n if (fbq.callMethod) {\n fbq.callMethod(...args);\n } else {\n fbq.queue!.push(args);\n }\n };\n fbq.queue = [];\n fbq.loaded = true;\n fbq.version = '2.0';\n window.fbq = fbq;\n window._fbq = fbq;\n\n fbq('init', config.pixelId);\n fbq('track', 'PageView');\n\n loadScript('https://connect.facebook.net/en_US/fbevents.js');\n },\n};\n\nexport default MetaPixel;\n"]}
@@ -0,0 +1,19 @@
1
+ import { Vendor } from '@modernconsent/core';
2
+
3
+ type MetaPixelConfig = {
4
+ pixelId: string;
5
+ };
6
+ declare global {
7
+ interface Window {
8
+ fbq: ((...args: any[]) => void) & {
9
+ callMethod?: (...args: any[]) => void;
10
+ queue?: any[];
11
+ loaded?: boolean;
12
+ version?: string;
13
+ };
14
+ _fbq: Window['fbq'];
15
+ }
16
+ }
17
+ declare const MetaPixel: Vendor<MetaPixelConfig>;
18
+
19
+ export { MetaPixel as default };
@@ -0,0 +1,66 @@
1
+ // src/utils/loader.ts
2
+ function loadScript(src, callback, attrs = {}) {
3
+ return new Promise((resolve, reject) => {
4
+ if (document.querySelector(`script[src="${src}"]`)) {
5
+ resolve();
6
+ return;
7
+ }
8
+ const script = document.createElement("script");
9
+ script.src = src;
10
+ script.async = true;
11
+ for (const [key, value] of Object.entries(attrs)) {
12
+ script.setAttribute(key, value);
13
+ }
14
+ script.onload = () => {
15
+ resolve();
16
+ };
17
+ script.onerror = () => {
18
+ reject(new Error(`Failed to load script: ${src}`));
19
+ };
20
+ document.head.appendChild(script);
21
+ });
22
+ }
23
+
24
+ // src/utils/purposes.ts
25
+ var PURPOSE_ADS = {
26
+ purposeLabel: {
27
+ fr: "Ciblage publicitaire",
28
+ en: "Advertising targeting"
29
+ },
30
+ purposeDescription: {
31
+ fr: "Ces cookies sont utilis\xE9s pour vous proposer des publicit\xE9s personnalis\xE9es en fonction de votre navigation.",
32
+ en: "These cookies are used to deliver personalized ads based on your browsing behavior."
33
+ }
34
+ };
35
+
36
+ // src/meta-pixel.ts
37
+ var MetaPixel = {
38
+ name: "Meta Pixel",
39
+ category: "Publicit\xE9",
40
+ description: "Mesure les conversions et personnalise les publicit\xE9s Facebook/Instagram.",
41
+ ...PURPOSE_ADS,
42
+ requireConsent: true,
43
+ init: (config) => {
44
+ if (!config?.pixelId) return;
45
+ const fbq = function(...args) {
46
+ if (fbq.callMethod) {
47
+ fbq.callMethod(...args);
48
+ } else {
49
+ fbq.queue.push(args);
50
+ }
51
+ };
52
+ fbq.queue = [];
53
+ fbq.loaded = true;
54
+ fbq.version = "2.0";
55
+ window.fbq = fbq;
56
+ window._fbq = fbq;
57
+ fbq("init", config.pixelId);
58
+ fbq("track", "PageView");
59
+ loadScript("https://connect.facebook.net/en_US/fbevents.js");
60
+ }
61
+ };
62
+ var meta_pixel_default = MetaPixel;
63
+
64
+ export { meta_pixel_default as default };
65
+ //# sourceMappingURL=meta-pixel.js.map
66
+ //# sourceMappingURL=meta-pixel.js.map