@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.
- package/LICENSE +21 -0
- package/dist/abtasty-3G4JRT5W.js +21 -0
- package/dist/abtasty-3G4JRT5W.js.map +1 -0
- package/dist/abtasty.d.ts +8 -0
- package/dist/abtasty.js +53 -0
- package/dist/abtasty.js.map +1 -0
- package/dist/amplitude-CFLVTHYV.js +25 -0
- package/dist/amplitude-CFLVTHYV.js.map +1 -0
- package/dist/amplitude.d.ts +8 -0
- package/dist/amplitude.js +57 -0
- package/dist/amplitude.js.map +1 -0
- package/dist/chunk-6JXWYPMF.js +28 -0
- package/dist/chunk-6JXWYPMF.js.map +1 -0
- package/dist/chunk-TBZUWLOP.js +35 -0
- package/dist/chunk-TBZUWLOP.js.map +1 -0
- package/dist/clarity-KJPNK3FJ.js +29 -0
- package/dist/clarity-KJPNK3FJ.js.map +1 -0
- package/dist/clarity.d.ts +13 -0
- package/dist/clarity.js +39 -0
- package/dist/clarity.js.map +1 -0
- package/dist/criteo-XKQPP2XY.js +23 -0
- package/dist/criteo-XKQPP2XY.js.map +1 -0
- package/dist/criteo.d.ts +13 -0
- package/dist/criteo.js +55 -0
- package/dist/criteo.js.map +1 -0
- package/dist/gcmads-LKOHK6MW.js +23 -0
- package/dist/gcmads-LKOHK6MW.js.map +1 -0
- package/dist/gcmads.d.ts +10 -0
- package/dist/gcmads.js +33 -0
- package/dist/gcmads.js.map +1 -0
- package/dist/google-analytics-SSTM7QMW.js +37 -0
- package/dist/google-analytics-SSTM7QMW.js.map +1 -0
- package/dist/google-analytics.d.ts +14 -0
- package/dist/google-analytics.js +69 -0
- package/dist/google-analytics.js.map +1 -0
- package/dist/googleads-XPXUKIXQ.js +72 -0
- package/dist/googleads-XPXUKIXQ.js.map +1 -0
- package/dist/googleads.d.ts +14 -0
- package/dist/googleads.js +104 -0
- package/dist/googleads.js.map +1 -0
- package/dist/gtm-WFI6ABNK.js +25 -0
- package/dist/gtm-WFI6ABNK.js.map +1 -0
- package/dist/gtm.d.ts +13 -0
- package/dist/gtm.js +57 -0
- package/dist/gtm.js.map +1 -0
- package/dist/hotjar-YCFHYSKB.js +38 -0
- package/dist/hotjar-YCFHYSKB.js.map +1 -0
- package/dist/hotjar.d.ts +8 -0
- package/dist/hotjar.js +48 -0
- package/dist/hotjar.js.map +1 -0
- package/dist/hubspot-TLVPT4LG.js +31 -0
- package/dist/hubspot-TLVPT4LG.js.map +1 -0
- package/dist/hubspot.d.ts +8 -0
- package/dist/hubspot.js +63 -0
- package/dist/hubspot.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/intercom-4MUKJZOV.js +42 -0
- package/dist/intercom-4MUKJZOV.js.map +1 -0
- package/dist/intercom.d.ts +14 -0
- package/dist/intercom.js +52 -0
- package/dist/intercom.js.map +1 -0
- package/dist/linkedin-insight-EH5OICV7.js +40 -0
- package/dist/linkedin-insight-EH5OICV7.js.map +1 -0
- package/dist/linkedin-insight.d.ts +16 -0
- package/dist/linkedin-insight.js +50 -0
- package/dist/linkedin-insight.js.map +1 -0
- package/dist/matomo-H4JJCYJR.js +29 -0
- package/dist/matomo-H4JJCYJR.js.map +1 -0
- package/dist/matomo.d.ts +14 -0
- package/dist/matomo.js +39 -0
- package/dist/matomo.js.map +1 -0
- package/dist/meta-pixel-26NJ4GZJ.js +34 -0
- package/dist/meta-pixel-26NJ4GZJ.js.map +1 -0
- package/dist/meta-pixel.d.ts +19 -0
- package/dist/meta-pixel.js +66 -0
- package/dist/meta-pixel.js.map +1 -0
- package/dist/piano-analytics-CZXSQQNF.js +30 -0
- package/dist/piano-analytics-CZXSQQNF.js.map +1 -0
- package/dist/piano-analytics.d.ts +10 -0
- package/dist/piano-analytics.js +62 -0
- package/dist/piano-analytics.js.map +1 -0
- package/dist/pinterest-pixel-B7J3RCSI.js +31 -0
- package/dist/pinterest-pixel-B7J3RCSI.js.map +1 -0
- package/dist/pinterest-pixel.d.ts +16 -0
- package/dist/pinterest-pixel.js +63 -0
- package/dist/pinterest-pixel.js.map +1 -0
- package/dist/plausible-GI4L4SM4.js +25 -0
- package/dist/plausible-GI4L4SM4.js.map +1 -0
- package/dist/plausible.d.ts +11 -0
- package/dist/plausible.js +57 -0
- package/dist/plausible.js.map +1 -0
- package/dist/posthog-N2HG7XOO.js +32 -0
- package/dist/posthog-N2HG7XOO.js.map +1 -0
- package/dist/posthog.d.ts +9 -0
- package/dist/posthog.js +42 -0
- package/dist/posthog.js.map +1 -0
- package/dist/reddit-pixel-SKXRCFEF.js +34 -0
- package/dist/reddit-pixel-SKXRCFEF.js.map +1 -0
- package/dist/reddit-pixel.d.ts +16 -0
- package/dist/reddit-pixel.js +66 -0
- package/dist/reddit-pixel.js.map +1 -0
- package/dist/segment-GZJFC57W.js +66 -0
- package/dist/segment-GZJFC57W.js.map +1 -0
- package/dist/segment.d.ts +13 -0
- package/dist/segment.js +76 -0
- package/dist/segment.js.map +1 -0
- package/dist/sentry-UIBASRVZ.js +27 -0
- package/dist/sentry-UIBASRVZ.js.map +1 -0
- package/dist/sentry.d.ts +10 -0
- package/dist/sentry.js +59 -0
- package/dist/sentry.js.map +1 -0
- package/dist/smartsupp-I6XHQISS.js +27 -0
- package/dist/smartsupp-I6XHQISS.js.map +1 -0
- package/dist/smartsupp.d.ts +14 -0
- package/dist/smartsupp.js +37 -0
- package/dist/smartsupp.js.map +1 -0
- package/dist/snapchat-pixel-SYR3ZSSB.js +37 -0
- package/dist/snapchat-pixel-SYR3ZSSB.js.map +1 -0
- package/dist/snapchat-pixel.d.ts +15 -0
- package/dist/snapchat-pixel.js +47 -0
- package/dist/snapchat-pixel.js.map +1 -0
- package/dist/tiktok-pixel-FDGVKGOH.js +70 -0
- package/dist/tiktok-pixel-FDGVKGOH.js.map +1 -0
- package/dist/tiktok-pixel.d.ts +14 -0
- package/dist/tiktok-pixel.js +80 -0
- package/dist/tiktok-pixel.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/loader.ts","../src/utils/purposes.ts","../src/meta-pixel.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;;;ACjBO,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;;;ACLA,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.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_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,30 @@
|
|
|
1
|
+
import { loadScript } from './chunk-6JXWYPMF.js';
|
|
2
|
+
import { PURPOSE_ANALYTICS } from './chunk-TBZUWLOP.js';
|
|
3
|
+
|
|
4
|
+
// src/piano-analytics.ts
|
|
5
|
+
var PianoAnalytics = {
|
|
6
|
+
name: "Piano Analytics",
|
|
7
|
+
category: "Analytics",
|
|
8
|
+
description: "Solution europ\xE9enne de mesure d'audience et d'analyse comportementale (ex AT Internet).",
|
|
9
|
+
...PURPOSE_ANALYTICS,
|
|
10
|
+
requireConsent: true,
|
|
11
|
+
artifacts: ["_pcid", "_pctx", "pa_user", "pa_privacy", "atuserid"],
|
|
12
|
+
init: (config) => {
|
|
13
|
+
if (!config?.siteId) return;
|
|
14
|
+
loadScript("https://tag.aticdn.net/piano-analytics.js").then(() => {
|
|
15
|
+
if (window.pa) {
|
|
16
|
+
const paConfig = { site: config.siteId };
|
|
17
|
+
if (config.collectDomain) {
|
|
18
|
+
paConfig.collectDomain = config.collectDomain;
|
|
19
|
+
}
|
|
20
|
+
window.pa.setConfigurations(paConfig);
|
|
21
|
+
window.pa.sendEvent("page.display", { page: document.title });
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var piano_analytics_default = PianoAnalytics;
|
|
27
|
+
|
|
28
|
+
export { piano_analytics_default as default };
|
|
29
|
+
//# sourceMappingURL=piano-analytics-CZXSQQNF.js.map
|
|
30
|
+
//# sourceMappingURL=piano-analytics-CZXSQQNF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/piano-analytics.ts"],"names":[],"mappings":";;;;AAUA,IAAM,cAAA,GAAsC;AAAA,EAC1C,IAAA,EAAM,iBAAA;AAAA,EACN,QAAA,EAAU,WAAA;AAAA,EACV,WAAA,EACE,4FAAA;AAAA,EACF,GAAG,iBAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,WAAW,CAAC,OAAA,EAAS,OAAA,EAAS,SAAA,EAAW,cAAc,UAAU,CAAA;AAAA,EACjE,IAAA,EAAM,CAAC,MAAA,KAAwB;AAC7B,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AAErB,IAAA,UAAA,CAAW,2CAA2C,CAAA,CAAE,IAAA,CAAK,MAAM;AACjE,MAAA,IAAK,OAAe,EAAA,EAAI;AACtB,QAAA,MAAM,QAAA,GAAgB,EAAE,IAAA,EAAM,MAAA,CAAO,MAAA,EAAO;AAC5C,QAAA,IAAI,OAAO,aAAA,EAAe;AACxB,UAAA,QAAA,CAAS,gBAAgB,MAAA,CAAO,aAAA;AAAA,QAClC;AACA,QAAC,MAAA,CAAe,EAAA,CAAG,iBAAA,CAAkB,QAAQ,CAAA;AAC7C,QAAC,MAAA,CAAe,GAAG,SAAA,CAAU,cAAA,EAAgB,EAAE,IAAA,EAAM,QAAA,CAAS,OAAO,CAAA;AAAA,MACvE;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACF,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"piano-analytics-CZXSQQNF.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { loadScript } from './utils/loader';\nimport { PURPOSE_ANALYTICS } from './utils/purposes';\n\ntype PianoConfig = {\n siteId: string;\n /** Collection domain (e.g. 'logs.example.com'). Defaults to Piano's default. */\n collectDomain?: string;\n};\n\nconst PianoAnalytics: Vendor<PianoConfig> = {\n name: 'Piano Analytics',\n category: 'Analytics',\n description:\n \"Solution européenne de mesure d'audience et d'analyse comportementale (ex AT Internet).\",\n ...PURPOSE_ANALYTICS,\n requireConsent: true,\n artifacts: ['_pcid', '_pctx', 'pa_user', 'pa_privacy', 'atuserid'],\n init: (config: PianoConfig) => {\n if (!config?.siteId) return;\n\n loadScript('https://tag.aticdn.net/piano-analytics.js').then(() => {\n if ((window as any).pa) {\n const paConfig: any = { site: config.siteId };\n if (config.collectDomain) {\n paConfig.collectDomain = config.collectDomain;\n }\n (window as any).pa.setConfigurations(paConfig);\n (window as any).pa.sendEvent('page.display', { page: document.title });\n }\n });\n },\n};\n\nexport default PianoAnalytics;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Vendor } from '@modernconsent/core';
|
|
2
|
+
|
|
3
|
+
type PianoConfig = {
|
|
4
|
+
siteId: string;
|
|
5
|
+
/** Collection domain (e.g. 'logs.example.com'). Defaults to Piano's default. */
|
|
6
|
+
collectDomain?: string;
|
|
7
|
+
};
|
|
8
|
+
declare const PianoAnalytics: Vendor<PianoConfig>;
|
|
9
|
+
|
|
10
|
+
export { PianoAnalytics as default };
|
|
@@ -0,0 +1,62 @@
|
|
|
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/piano-analytics.ts
|
|
37
|
+
var PianoAnalytics = {
|
|
38
|
+
name: "Piano Analytics",
|
|
39
|
+
category: "Analytics",
|
|
40
|
+
description: "Solution europ\xE9enne de mesure d'audience et d'analyse comportementale (ex AT Internet).",
|
|
41
|
+
...PURPOSE_ANALYTICS,
|
|
42
|
+
requireConsent: true,
|
|
43
|
+
artifacts: ["_pcid", "_pctx", "pa_user", "pa_privacy", "atuserid"],
|
|
44
|
+
init: (config) => {
|
|
45
|
+
if (!config?.siteId) return;
|
|
46
|
+
loadScript("https://tag.aticdn.net/piano-analytics.js").then(() => {
|
|
47
|
+
if (window.pa) {
|
|
48
|
+
const paConfig = { site: config.siteId };
|
|
49
|
+
if (config.collectDomain) {
|
|
50
|
+
paConfig.collectDomain = config.collectDomain;
|
|
51
|
+
}
|
|
52
|
+
window.pa.setConfigurations(paConfig);
|
|
53
|
+
window.pa.sendEvent("page.display", { page: document.title });
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var piano_analytics_default = PianoAnalytics;
|
|
59
|
+
|
|
60
|
+
export { piano_analytics_default as default };
|
|
61
|
+
//# sourceMappingURL=piano-analytics.js.map
|
|
62
|
+
//# sourceMappingURL=piano-analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/loader.ts","../src/utils/purposes.ts","../src/piano-analytics.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;;;ACJA,IAAM,cAAA,GAAsC;AAAA,EAC1C,IAAA,EAAM,iBAAA;AAAA,EACN,QAAA,EAAU,WAAA;AAAA,EACV,WAAA,EACE,4FAAA;AAAA,EACF,GAAG,iBAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,WAAW,CAAC,OAAA,EAAS,OAAA,EAAS,SAAA,EAAW,cAAc,UAAU,CAAA;AAAA,EACjE,IAAA,EAAM,CAAC,MAAA,KAAwB;AAC7B,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AAErB,IAAA,UAAA,CAAW,2CAA2C,CAAA,CAAE,IAAA,CAAK,MAAM;AACjE,MAAA,IAAK,OAAe,EAAA,EAAI;AACtB,QAAA,MAAM,QAAA,GAAgB,EAAE,IAAA,EAAM,MAAA,CAAO,MAAA,EAAO;AAC5C,QAAA,IAAI,OAAO,aAAA,EAAe;AACxB,UAAA,QAAA,CAAS,gBAAgB,MAAA,CAAO,aAAA;AAAA,QAClC;AACA,QAAC,MAAA,CAAe,EAAA,CAAG,iBAAA,CAAkB,QAAQ,CAAA;AAC7C,QAAC,MAAA,CAAe,GAAG,SAAA,CAAU,cAAA,EAAgB,EAAE,IAAA,EAAM,QAAA,CAAS,OAAO,CAAA;AAAA,MACvE;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACF,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"piano-analytics.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 PianoConfig = {\n siteId: string;\n /** Collection domain (e.g. 'logs.example.com'). Defaults to Piano's default. */\n collectDomain?: string;\n};\n\nconst PianoAnalytics: Vendor<PianoConfig> = {\n name: 'Piano Analytics',\n category: 'Analytics',\n description:\n \"Solution européenne de mesure d'audience et d'analyse comportementale (ex AT Internet).\",\n ...PURPOSE_ANALYTICS,\n requireConsent: true,\n artifacts: ['_pcid', '_pctx', 'pa_user', 'pa_privacy', 'atuserid'],\n init: (config: PianoConfig) => {\n if (!config?.siteId) return;\n\n loadScript('https://tag.aticdn.net/piano-analytics.js').then(() => {\n if ((window as any).pa) {\n const paConfig: any = { site: config.siteId };\n if (config.collectDomain) {\n paConfig.collectDomain = config.collectDomain;\n }\n (window as any).pa.setConfigurations(paConfig);\n (window as any).pa.sendEvent('page.display', { page: document.title });\n }\n });\n },\n};\n\nexport default PianoAnalytics;\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { loadScript } from './chunk-6JXWYPMF.js';
|
|
2
|
+
import { PURPOSE_ADS } from './chunk-TBZUWLOP.js';
|
|
3
|
+
|
|
4
|
+
// src/pinterest-pixel.ts
|
|
5
|
+
var PinterestPixel = {
|
|
6
|
+
name: "Pinterest Tag",
|
|
7
|
+
category: "Publicit\xE9",
|
|
8
|
+
description: "Suivi des conversions et optimisation des campagnes Pinterest.",
|
|
9
|
+
...PURPOSE_ADS,
|
|
10
|
+
requireConsent: true,
|
|
11
|
+
artifacts: ["_pinterest_ct_ua", "_pin_unauth", "_derived_epik", "_epik"],
|
|
12
|
+
init: (config) => {
|
|
13
|
+
if (!config?.tagId) return;
|
|
14
|
+
if (!window.pintrk) {
|
|
15
|
+
const pintrk = window.pintrk = function(...args) {
|
|
16
|
+
pintrk.queue.push(args);
|
|
17
|
+
};
|
|
18
|
+
pintrk.queue = [];
|
|
19
|
+
pintrk.version = "3.0";
|
|
20
|
+
loadScript("https://s.pinimg.com/ct/core.js").then(() => {
|
|
21
|
+
window.pintrk("load", config.tagId);
|
|
22
|
+
window.pintrk("page");
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var pinterest_pixel_default = PinterestPixel;
|
|
28
|
+
|
|
29
|
+
export { pinterest_pixel_default as default };
|
|
30
|
+
//# sourceMappingURL=pinterest-pixel-B7J3RCSI.js.map
|
|
31
|
+
//# sourceMappingURL=pinterest-pixel-B7J3RCSI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/pinterest-pixel.ts"],"names":[],"mappings":";;;;AAcA,IAAM,cAAA,GAA0C;AAAA,EAC9C,IAAA,EAAM,eAAA;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,WAAA,EAAa,gEAAA;AAAA,EACb,GAAG,WAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW,CAAC,kBAAA,EAAoB,aAAA,EAAe,iBAAiB,OAAO,CAAA;AAAA,EACvE,IAAA,EAAM,CAAC,MAAA,KAA4B;AACjC,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAEpB,IAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,MAAA,MAAM,MAAA,GAAe,MAAA,CAAO,MAAA,GAAS,SAAA,GAAa,IAAA,EAAa;AAC7D,QAAA,MAAA,CAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,MACxB,CAAA;AACA,MAAA,MAAA,CAAO,QAAQ,EAAC;AAChB,MAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAEjB,MAAA,UAAA,CAAW,iCAAiC,CAAA,CAAE,IAAA,CAAK,MAAM;AACvD,QAAA,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,MAAA,CAAO,KAAK,CAAA;AAClC,QAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,MACtB,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AACF,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"pinterest-pixel-B7J3RCSI.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { loadScript } from './utils/loader';\nimport { PURPOSE_ADS } from './utils/purposes';\n\ntype PinterestConfig = {\n tagId: string;\n};\n\ndeclare global {\n interface Window {\n pintrk: ((...args: any[]) => void) & { queue?: any[]; version?: string };\n }\n}\n\nconst PinterestPixel: Vendor<PinterestConfig> = {\n name: 'Pinterest Tag',\n category: 'Publicité',\n description: 'Suivi des conversions et optimisation des campagnes Pinterest.',\n ...PURPOSE_ADS,\n requireConsent: true,\n artifacts: ['_pinterest_ct_ua', '_pin_unauth', '_derived_epik', '_epik'],\n init: (config: PinterestConfig) => {\n if (!config?.tagId) return;\n\n if (!window.pintrk) {\n const pintrk: any = (window.pintrk = function (...args: any[]) {\n pintrk.queue.push(args);\n });\n pintrk.queue = [];\n pintrk.version = '3.0';\n\n loadScript('https://s.pinimg.com/ct/core.js').then(() => {\n window.pintrk('load', config.tagId);\n window.pintrk('page');\n });\n }\n },\n};\n\nexport default PinterestPixel;\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Vendor } from '@modernconsent/core';
|
|
2
|
+
|
|
3
|
+
type PinterestConfig = {
|
|
4
|
+
tagId: string;
|
|
5
|
+
};
|
|
6
|
+
declare global {
|
|
7
|
+
interface Window {
|
|
8
|
+
pintrk: ((...args: any[]) => void) & {
|
|
9
|
+
queue?: any[];
|
|
10
|
+
version?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
declare const PinterestPixel: Vendor<PinterestConfig>;
|
|
15
|
+
|
|
16
|
+
export { PinterestPixel as default };
|
|
@@ -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_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/pinterest-pixel.ts
|
|
37
|
+
var PinterestPixel = {
|
|
38
|
+
name: "Pinterest Tag",
|
|
39
|
+
category: "Publicit\xE9",
|
|
40
|
+
description: "Suivi des conversions et optimisation des campagnes Pinterest.",
|
|
41
|
+
...PURPOSE_ADS,
|
|
42
|
+
requireConsent: true,
|
|
43
|
+
artifacts: ["_pinterest_ct_ua", "_pin_unauth", "_derived_epik", "_epik"],
|
|
44
|
+
init: (config) => {
|
|
45
|
+
if (!config?.tagId) return;
|
|
46
|
+
if (!window.pintrk) {
|
|
47
|
+
const pintrk = window.pintrk = function(...args) {
|
|
48
|
+
pintrk.queue.push(args);
|
|
49
|
+
};
|
|
50
|
+
pintrk.queue = [];
|
|
51
|
+
pintrk.version = "3.0";
|
|
52
|
+
loadScript("https://s.pinimg.com/ct/core.js").then(() => {
|
|
53
|
+
window.pintrk("load", config.tagId);
|
|
54
|
+
window.pintrk("page");
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
var pinterest_pixel_default = PinterestPixel;
|
|
60
|
+
|
|
61
|
+
export { pinterest_pixel_default as default };
|
|
62
|
+
//# sourceMappingURL=pinterest-pixel.js.map
|
|
63
|
+
//# sourceMappingURL=pinterest-pixel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/loader.ts","../src/utils/purposes.ts","../src/pinterest-pixel.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;;;ACjBO,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,cAAA,GAA0C;AAAA,EAC9C,IAAA,EAAM,eAAA;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,WAAA,EAAa,gEAAA;AAAA,EACb,GAAG,WAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW,CAAC,kBAAA,EAAoB,aAAA,EAAe,iBAAiB,OAAO,CAAA;AAAA,EACvE,IAAA,EAAM,CAAC,MAAA,KAA4B;AACjC,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAEpB,IAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,MAAA,MAAM,MAAA,GAAe,MAAA,CAAO,MAAA,GAAS,SAAA,GAAa,IAAA,EAAa;AAC7D,QAAA,MAAA,CAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,MACxB,CAAA;AACA,MAAA,MAAA,CAAO,QAAQ,EAAC;AAChB,MAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAEjB,MAAA,UAAA,CAAW,iCAAiC,CAAA,CAAE,IAAA,CAAK,MAAM;AACvD,QAAA,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,MAAA,CAAO,KAAK,CAAA;AAClC,QAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,MACtB,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AACF,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"pinterest-pixel.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_ADS } from './utils/purposes';\n\ntype PinterestConfig = {\n tagId: string;\n};\n\ndeclare global {\n interface Window {\n pintrk: ((...args: any[]) => void) & { queue?: any[]; version?: string };\n }\n}\n\nconst PinterestPixel: Vendor<PinterestConfig> = {\n name: 'Pinterest Tag',\n category: 'Publicité',\n description: 'Suivi des conversions et optimisation des campagnes Pinterest.',\n ...PURPOSE_ADS,\n requireConsent: true,\n artifacts: ['_pinterest_ct_ua', '_pin_unauth', '_derived_epik', '_epik'],\n init: (config: PinterestConfig) => {\n if (!config?.tagId) return;\n\n if (!window.pintrk) {\n const pintrk: any = (window.pintrk = function (...args: any[]) {\n pintrk.queue.push(args);\n });\n pintrk.queue = [];\n pintrk.version = '3.0';\n\n loadScript('https://s.pinimg.com/ct/core.js').then(() => {\n window.pintrk('load', config.tagId);\n window.pintrk('page');\n });\n }\n },\n};\n\nexport default PinterestPixel;\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { loadScript } from './chunk-6JXWYPMF.js';
|
|
2
|
+
import { PURPOSE_ANALYTICS } from './chunk-TBZUWLOP.js';
|
|
3
|
+
|
|
4
|
+
// src/plausible.ts
|
|
5
|
+
var Plausible = {
|
|
6
|
+
name: "Plausible",
|
|
7
|
+
category: "Analytics",
|
|
8
|
+
description: "Analytics l\xE9ger et respectueux de la vie priv\xE9e, sans cookies.",
|
|
9
|
+
...PURPOSE_ANALYTICS,
|
|
10
|
+
/** Plausible is cookieless and privacy-first — no consent required by default. */
|
|
11
|
+
requireConsent: false,
|
|
12
|
+
init: (config) => {
|
|
13
|
+
if (!config?.domain) return;
|
|
14
|
+
const base = (config.instanceUrl ?? "https://plausible.io").replace(/\/$/, "");
|
|
15
|
+
loadScript(`${base}/js/script.js`, void 0, {
|
|
16
|
+
"data-domain": config.domain,
|
|
17
|
+
defer: "defer"
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
var plausible_default = Plausible;
|
|
22
|
+
|
|
23
|
+
export { plausible_default as default };
|
|
24
|
+
//# sourceMappingURL=plausible-GI4L4SM4.js.map
|
|
25
|
+
//# sourceMappingURL=plausible-GI4L4SM4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plausible.ts"],"names":[],"mappings":";;;;AAWA,IAAM,SAAA,GAAqC;AAAA,EACzC,IAAA,EAAM,WAAA;AAAA,EACN,QAAA,EAAU,WAAA;AAAA,EACV,WAAA,EAAa,sEAAA;AAAA,EACb,GAAG,iBAAA;AAAA;AAAA,EAEH,cAAA,EAAgB,KAAA;AAAA,EAChB,IAAA,EAAM,CAAC,MAAA,KAA4B;AACjC,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACrB,IAAA,MAAM,QAAQ,MAAA,CAAO,WAAA,IAAe,sBAAA,EAAwB,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7E,IAAA,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,aAAA,CAAA,EAAiB,MAAA,EAAW;AAAA,MAC5C,eAAe,MAAA,CAAO,MAAA;AAAA,MACtB,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH;AACF,CAAA;AAEA,IAAO,iBAAA,GAAQ","file":"plausible-GI4L4SM4.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { loadScript } from './utils/loader';\nimport { PURPOSE_ANALYTICS } from './utils/purposes';\n\ntype PlausibleConfig = {\n /** Your site domain as registered in Plausible (e.g. 'example.com') */\n domain: string;\n /** Custom Plausible instance URL (default: 'https://plausible.io') */\n instanceUrl?: string;\n};\n\nconst Plausible: Vendor<PlausibleConfig> = {\n name: 'Plausible',\n category: 'Analytics',\n description: 'Analytics léger et respectueux de la vie privée, sans cookies.',\n ...PURPOSE_ANALYTICS,\n /** Plausible is cookieless and privacy-first — no consent required by default. */\n requireConsent: false,\n init: (config: PlausibleConfig) => {\n if (!config?.domain) return;\n const base = (config.instanceUrl ?? 'https://plausible.io').replace(/\\/$/, '');\n loadScript(`${base}/js/script.js`, undefined, {\n 'data-domain': config.domain,\n defer: 'defer',\n });\n },\n};\n\nexport default Plausible;\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Vendor } from '@modernconsent/core';
|
|
2
|
+
|
|
3
|
+
type PlausibleConfig = {
|
|
4
|
+
/** Your site domain as registered in Plausible (e.g. 'example.com') */
|
|
5
|
+
domain: string;
|
|
6
|
+
/** Custom Plausible instance URL (default: 'https://plausible.io') */
|
|
7
|
+
instanceUrl?: string;
|
|
8
|
+
};
|
|
9
|
+
declare const Plausible: Vendor<PlausibleConfig>;
|
|
10
|
+
|
|
11
|
+
export { Plausible as default };
|
|
@@ -0,0 +1,57 @@
|
|
|
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/plausible.ts
|
|
37
|
+
var Plausible = {
|
|
38
|
+
name: "Plausible",
|
|
39
|
+
category: "Analytics",
|
|
40
|
+
description: "Analytics l\xE9ger et respectueux de la vie priv\xE9e, sans cookies.",
|
|
41
|
+
...PURPOSE_ANALYTICS,
|
|
42
|
+
/** Plausible is cookieless and privacy-first — no consent required by default. */
|
|
43
|
+
requireConsent: false,
|
|
44
|
+
init: (config) => {
|
|
45
|
+
if (!config?.domain) return;
|
|
46
|
+
const base = (config.instanceUrl ?? "https://plausible.io").replace(/\/$/, "");
|
|
47
|
+
loadScript(`${base}/js/script.js`, void 0, {
|
|
48
|
+
"data-domain": config.domain,
|
|
49
|
+
defer: "defer"
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var plausible_default = Plausible;
|
|
54
|
+
|
|
55
|
+
export { plausible_default as default };
|
|
56
|
+
//# sourceMappingURL=plausible.js.map
|
|
57
|
+
//# sourceMappingURL=plausible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/loader.ts","../src/utils/purposes.ts","../src/plausible.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;;;ACHA,IAAM,SAAA,GAAqC;AAAA,EACzC,IAAA,EAAM,WAAA;AAAA,EACN,QAAA,EAAU,WAAA;AAAA,EACV,WAAA,EAAa,sEAAA;AAAA,EACb,GAAG,iBAAA;AAAA;AAAA,EAEH,cAAA,EAAgB,KAAA;AAAA,EAChB,IAAA,EAAM,CAAC,MAAA,KAA4B;AACjC,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACrB,IAAA,MAAM,QAAQ,MAAA,CAAO,WAAA,IAAe,sBAAA,EAAwB,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7E,IAAA,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,aAAA,CAAA,EAAiB,MAAA,EAAW;AAAA,MAC5C,eAAe,MAAA,CAAO,MAAA;AAAA,MACtB,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH;AACF,CAAA;AAEA,IAAO,iBAAA,GAAQ","file":"plausible.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 PlausibleConfig = {\n /** Your site domain as registered in Plausible (e.g. 'example.com') */\n domain: string;\n /** Custom Plausible instance URL (default: 'https://plausible.io') */\n instanceUrl?: string;\n};\n\nconst Plausible: Vendor<PlausibleConfig> = {\n name: 'Plausible',\n category: 'Analytics',\n description: 'Analytics léger et respectueux de la vie privée, sans cookies.',\n ...PURPOSE_ANALYTICS,\n /** Plausible is cookieless and privacy-first — no consent required by default. */\n requireConsent: false,\n init: (config: PlausibleConfig) => {\n if (!config?.domain) return;\n const base = (config.instanceUrl ?? 'https://plausible.io').replace(/\\/$/, '');\n loadScript(`${base}/js/script.js`, undefined, {\n 'data-domain': config.domain,\n defer: 'defer',\n });\n },\n};\n\nexport default Plausible;\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PURPOSE_ANALYTICS } from './chunk-TBZUWLOP.js';
|
|
2
|
+
|
|
3
|
+
// src/posthog.ts
|
|
4
|
+
var posthogVendor = {
|
|
5
|
+
category: "Analytics",
|
|
6
|
+
name: "PostHog",
|
|
7
|
+
description: "PostHog is a product analytics suite, built for the enterprise.",
|
|
8
|
+
...PURPOSE_ANALYTICS,
|
|
9
|
+
requireConsent: true,
|
|
10
|
+
artifacts: ["ph_phc_", "ph_"],
|
|
11
|
+
init: (config) => {
|
|
12
|
+
const localOption = Object.assign(
|
|
13
|
+
{},
|
|
14
|
+
{
|
|
15
|
+
instance: "https://app.posthog.com"
|
|
16
|
+
},
|
|
17
|
+
config
|
|
18
|
+
);
|
|
19
|
+
if (!localOption.apiKey) return;
|
|
20
|
+
const script = document.createElement("script");
|
|
21
|
+
script.innerHTML = `
|
|
22
|
+
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}var u=t.createElement("script");u.type="text/javascript",u.async=!0,u.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(u,r);var c=e;for(void 0!==a?c=e[a]=[]:a="posthog",c.people=c.people||[],c.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},c.people.toString=function(){return c.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags".split(" "),n=0;n<o.length;n++)g(c,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
|
|
23
|
+
posthog.init('${localOption.apiKey}', {api_host: '${localOption.instance}'});
|
|
24
|
+
`;
|
|
25
|
+
document.head.appendChild(script);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var posthog_default = posthogVendor;
|
|
29
|
+
|
|
30
|
+
export { posthog_default as default };
|
|
31
|
+
//# sourceMappingURL=posthog-N2HG7XOO.js.map
|
|
32
|
+
//# sourceMappingURL=posthog-N2HG7XOO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/posthog.ts"],"names":[],"mappings":";;;AAQA,IAAM,aAAA,GAAuC;AAAA,EAC3C,QAAA,EAAU,WAAA;AAAA,EACV,IAAA,EAAM,SAAA;AAAA,EACN,WAAA,EAAa,iEAAA;AAAA,EACb,GAAG,iBAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW,CAAC,SAAA,EAAW,KAAK,CAAA;AAAA,EAC5B,IAAA,EAAM,CAAC,MAAA,KAA0B;AAC/B,IAAA,MAAM,cAAc,MAAA,CAAO,MAAA;AAAA,MACzB,EAAC;AAAA,MACD;AAAA,QACE,QAAA,EAAU;AAAA,OACZ;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAI,CAAC,YAAY,MAAA,EAAQ;AAEzB,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAA,CAAO,SAAA,GAAY;AAAA;AAAA,0BAAA,EAEK,WAAA,CAAY,MAAM,CAAA,eAAA,EAAkB,WAAA,CAAY,QAAQ,CAAA;AAAA,QAAA,CAAA;AAEhF,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,EAClC;AACF,CAAA;AAEA,IAAO,eAAA,GAAQ","file":"posthog-N2HG7XOO.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { PURPOSE_ANALYTICS } from './utils/purposes';\n\ntype PostHogOption = {\n apiKey: string;\n instance: string;\n};\n\nconst posthogVendor: Vendor<PostHogOption> = {\n category: 'Analytics',\n name: 'PostHog',\n description: 'PostHog is a product analytics suite, built for the enterprise.',\n ...PURPOSE_ANALYTICS,\n requireConsent: true,\n artifacts: ['ph_phc_', 'ph_'],\n init: (config: PostHogOption) => {\n const localOption = Object.assign(\n {},\n {\n instance: 'https://app.posthog.com',\n },\n config,\n ) as PostHogOption;\n\n if (!localOption.apiKey) return;\n\n const script = document.createElement('script');\n script.innerHTML = `\n !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(\".\");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}var u=t.createElement(\"script\");u.type=\"text/javascript\",u.async=!0,u.src=s.api_host+\"/static/array.js\",(r=t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(u,r);var c=e;for(void 0!==a?c=e[a]=[]:a=\"posthog\",c.people=c.people||[],c.toString=function(t){var e=\"posthog\";return\"posthog\"!==a&&(e+=\".\"+a),t||(e+=\" (stub)\"),e},c.people.toString=function(){return c.toString(1)+\".people (stub)\"},o=\"capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags\".split(\" \"),n=0;n<o.length;n++)g(c,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);\n posthog.init('${localOption.apiKey}', {api_host: '${localOption.instance}'});\n `;\n document.head.appendChild(script);\n },\n};\n\nexport default posthogVendor;\n"]}
|
package/dist/posthog.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
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/posthog.ts
|
|
14
|
+
var posthogVendor = {
|
|
15
|
+
category: "Analytics",
|
|
16
|
+
name: "PostHog",
|
|
17
|
+
description: "PostHog is a product analytics suite, built for the enterprise.",
|
|
18
|
+
...PURPOSE_ANALYTICS,
|
|
19
|
+
requireConsent: true,
|
|
20
|
+
artifacts: ["ph_phc_", "ph_"],
|
|
21
|
+
init: (config) => {
|
|
22
|
+
const localOption = Object.assign(
|
|
23
|
+
{},
|
|
24
|
+
{
|
|
25
|
+
instance: "https://app.posthog.com"
|
|
26
|
+
},
|
|
27
|
+
config
|
|
28
|
+
);
|
|
29
|
+
if (!localOption.apiKey) return;
|
|
30
|
+
const script = document.createElement("script");
|
|
31
|
+
script.innerHTML = `
|
|
32
|
+
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}var u=t.createElement("script");u.type="text/javascript",u.async=!0,u.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(u,r);var c=e;for(void 0!==a?c=e[a]=[]:a="posthog",c.people=c.people||[],c.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},c.people.toString=function(){return c.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags".split(" "),n=0;n<o.length;n++)g(c,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
|
|
33
|
+
posthog.init('${localOption.apiKey}', {api_host: '${localOption.instance}'});
|
|
34
|
+
`;
|
|
35
|
+
document.head.appendChild(script);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var posthog_default = posthogVendor;
|
|
39
|
+
|
|
40
|
+
export { posthog_default as default };
|
|
41
|
+
//# sourceMappingURL=posthog.js.map
|
|
42
|
+
//# sourceMappingURL=posthog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/purposes.ts","../src/posthog.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;;;ACNA,IAAM,aAAA,GAAuC;AAAA,EAC3C,QAAA,EAAU,WAAA;AAAA,EACV,IAAA,EAAM,SAAA;AAAA,EACN,WAAA,EAAa,iEAAA;AAAA,EACb,GAAG,iBAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW,CAAC,SAAA,EAAW,KAAK,CAAA;AAAA,EAC5B,IAAA,EAAM,CAAC,MAAA,KAA0B;AAC/B,IAAA,MAAM,cAAc,MAAA,CAAO,MAAA;AAAA,MACzB,EAAC;AAAA,MACD;AAAA,QACE,QAAA,EAAU;AAAA,OACZ;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAI,CAAC,YAAY,MAAA,EAAQ;AAEzB,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAA,CAAO,SAAA,GAAY;AAAA;AAAA,0BAAA,EAEK,WAAA,CAAY,MAAM,CAAA,eAAA,EAAkB,WAAA,CAAY,QAAQ,CAAA;AAAA,QAAA,CAAA;AAEhF,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,EAClC;AACF,CAAA;AAEA,IAAO,eAAA,GAAQ","file":"posthog.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 PostHogOption = {\n apiKey: string;\n instance: string;\n};\n\nconst posthogVendor: Vendor<PostHogOption> = {\n category: 'Analytics',\n name: 'PostHog',\n description: 'PostHog is a product analytics suite, built for the enterprise.',\n ...PURPOSE_ANALYTICS,\n requireConsent: true,\n artifacts: ['ph_phc_', 'ph_'],\n init: (config: PostHogOption) => {\n const localOption = Object.assign(\n {},\n {\n instance: 'https://app.posthog.com',\n },\n config,\n ) as PostHogOption;\n\n if (!localOption.apiKey) return;\n\n const script = document.createElement('script');\n script.innerHTML = `\n !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(\".\");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}var u=t.createElement(\"script\");u.type=\"text/javascript\",u.async=!0,u.src=s.api_host+\"/static/array.js\",(r=t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(u,r);var c=e;for(void 0!==a?c=e[a]=[]:a=\"posthog\",c.people=c.people||[],c.toString=function(t){var e=\"posthog\";return\"posthog\"!==a&&(e+=\".\"+a),t||(e+=\" (stub)\"),e},c.people.toString=function(){return c.toString(1)+\".people (stub)\"},o=\"capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags\".split(\" \"),n=0;n<o.length;n++)g(c,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);\n posthog.init('${localOption.apiKey}', {api_host: '${localOption.instance}'});\n `;\n document.head.appendChild(script);\n },\n};\n\nexport default posthogVendor;\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { loadScript } from './chunk-6JXWYPMF.js';
|
|
2
|
+
import { PURPOSE_ADS } from './chunk-TBZUWLOP.js';
|
|
3
|
+
|
|
4
|
+
// src/reddit-pixel.ts
|
|
5
|
+
var RedditPixel = {
|
|
6
|
+
name: "Reddit Pixel",
|
|
7
|
+
category: "Publicit\xE9",
|
|
8
|
+
description: "Suivi des conversions et optimisation des campagnes Reddit Ads.",
|
|
9
|
+
...PURPOSE_ADS,
|
|
10
|
+
requireConsent: true,
|
|
11
|
+
artifacts: ["_rdt_uuid"],
|
|
12
|
+
init: (config) => {
|
|
13
|
+
if (!config?.pixelId) return;
|
|
14
|
+
if (!window.rdt) {
|
|
15
|
+
const rdt = window.rdt = function(...args) {
|
|
16
|
+
if (rdt.sendEvent) {
|
|
17
|
+
rdt.sendEvent(...args);
|
|
18
|
+
} else {
|
|
19
|
+
rdt.callQueue.push(args);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
rdt.callQueue = [];
|
|
23
|
+
loadScript("https://www.redditstatic.com/ads/pixel.js").then(() => {
|
|
24
|
+
window.rdt("init", config.pixelId);
|
|
25
|
+
window.rdt("track", "PageVisit");
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
var reddit_pixel_default = RedditPixel;
|
|
31
|
+
|
|
32
|
+
export { reddit_pixel_default as default };
|
|
33
|
+
//# sourceMappingURL=reddit-pixel-SKXRCFEF.js.map
|
|
34
|
+
//# sourceMappingURL=reddit-pixel-SKXRCFEF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/reddit-pixel.ts"],"names":[],"mappings":";;;;AAcA,IAAM,WAAA,GAAoC;AAAA,EACxC,IAAA,EAAM,cAAA;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,WAAA,EAAa,iEAAA;AAAA,EACb,GAAG,WAAA;AAAA,EACH,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW,CAAC,WAAW,CAAA;AAAA,EACvB,IAAA,EAAM,CAAC,MAAA,KAAyB;AAC9B,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AAEtB,IAAA,IAAI,CAAC,OAAO,GAAA,EAAK;AACf,MAAA,MAAM,GAAA,GAAY,MAAA,CAAO,GAAA,GAAM,SAAA,GAAa,IAAA,EAAa;AACvD,QAAA,IAAI,IAAI,SAAA,EAAW;AACjB,UAAA,GAAA,CAAI,SAAA,CAAU,GAAG,IAAI,CAAA;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,QACzB;AAAA,MACF,CAAA;AACA,MAAA,GAAA,CAAI,YAAY,EAAC;AAEjB,MAAA,UAAA,CAAW,2CAA2C,CAAA,CAAE,IAAA,CAAK,MAAM;AACjE,QAAA,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,MAAA,CAAO,OAAO,CAAA;AACjC,QAAA,MAAA,CAAO,GAAA,CAAI,SAAS,WAAW,CAAA;AAAA,MACjC,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AACF,CAAA;AAEA,IAAO,oBAAA,GAAQ","file":"reddit-pixel-SKXRCFEF.js","sourcesContent":["import type { Vendor } from '@modernconsent/core';\nimport { loadScript } from './utils/loader';\nimport { PURPOSE_ADS } from './utils/purposes';\n\ntype RedditConfig = {\n pixelId: string;\n};\n\ndeclare global {\n interface Window {\n rdt: ((...args: any[]) => void) & { sendEvent?: any; callQueue?: any[] };\n }\n}\n\nconst RedditPixel: Vendor<RedditConfig> = {\n name: 'Reddit Pixel',\n category: 'Publicité',\n description: 'Suivi des conversions et optimisation des campagnes Reddit Ads.',\n ...PURPOSE_ADS,\n requireConsent: true,\n artifacts: ['_rdt_uuid'],\n init: (config: RedditConfig) => {\n if (!config?.pixelId) return;\n\n if (!window.rdt) {\n const rdt: any = (window.rdt = function (...args: any[]) {\n if (rdt.sendEvent) {\n rdt.sendEvent(...args);\n } else {\n rdt.callQueue.push(args);\n }\n });\n rdt.callQueue = [];\n\n loadScript('https://www.redditstatic.com/ads/pixel.js').then(() => {\n window.rdt('init', config.pixelId);\n window.rdt('track', 'PageVisit');\n });\n }\n },\n};\n\nexport default RedditPixel;\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Vendor } from '@modernconsent/core';
|
|
2
|
+
|
|
3
|
+
type RedditConfig = {
|
|
4
|
+
pixelId: string;
|
|
5
|
+
};
|
|
6
|
+
declare global {
|
|
7
|
+
interface Window {
|
|
8
|
+
rdt: ((...args: any[]) => void) & {
|
|
9
|
+
sendEvent?: any;
|
|
10
|
+
callQueue?: any[];
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
declare const RedditPixel: Vendor<RedditConfig>;
|
|
15
|
+
|
|
16
|
+
export { RedditPixel 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/reddit-pixel.ts
|
|
37
|
+
var RedditPixel = {
|
|
38
|
+
name: "Reddit Pixel",
|
|
39
|
+
category: "Publicit\xE9",
|
|
40
|
+
description: "Suivi des conversions et optimisation des campagnes Reddit Ads.",
|
|
41
|
+
...PURPOSE_ADS,
|
|
42
|
+
requireConsent: true,
|
|
43
|
+
artifacts: ["_rdt_uuid"],
|
|
44
|
+
init: (config) => {
|
|
45
|
+
if (!config?.pixelId) return;
|
|
46
|
+
if (!window.rdt) {
|
|
47
|
+
const rdt = window.rdt = function(...args) {
|
|
48
|
+
if (rdt.sendEvent) {
|
|
49
|
+
rdt.sendEvent(...args);
|
|
50
|
+
} else {
|
|
51
|
+
rdt.callQueue.push(args);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
rdt.callQueue = [];
|
|
55
|
+
loadScript("https://www.redditstatic.com/ads/pixel.js").then(() => {
|
|
56
|
+
window.rdt("init", config.pixelId);
|
|
57
|
+
window.rdt("track", "PageVisit");
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
var reddit_pixel_default = RedditPixel;
|
|
63
|
+
|
|
64
|
+
export { reddit_pixel_default as default };
|
|
65
|
+
//# sourceMappingURL=reddit-pixel.js.map
|
|
66
|
+
//# sourceMappingURL=reddit-pixel.js.map
|