@c15t/scripts 2.1.0 → 2.2.0-canary-20260727202135
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/AGENTS.md +62 -0
- package/README.md +32 -20
- package/dist/e2e-test-utils.cjs +51 -10
- package/dist/e2e-test-utils.js +37 -3
- package/dist/engine/compile.cjs +9 -5
- package/dist/engine/runtime.cjs +100 -17
- package/dist/engine/runtime.js +91 -12
- package/dist/registry.cjs +97 -12
- package/dist/registry.js +80 -0
- package/dist/resolve.cjs +9 -5
- package/dist/types.cjs +17 -13
- package/dist/vendors/_shared/attributes.cjs +13 -9
- package/dist/vendors/_shared/google-consent.cjs +14 -9
- package/dist/vendors/_shared/install-builders.cjs +12 -8
- package/dist/vendors/_shared/script-url.cjs +16 -12
- package/dist/vendors/ads-and-pixels/linkedin-insights.cjs +9 -5
- package/dist/vendors/ads-and-pixels/meta-pixel.cjs +13 -9
- package/dist/vendors/ads-and-pixels/microsoft-uet.cjs +11 -7
- package/dist/vendors/ads-and-pixels/reddit-pixel.cjs +9 -5
- package/dist/vendors/ads-and-pixels/snapchat-pixel.cjs +11 -7
- package/dist/vendors/ads-and-pixels/tiktok-pixel.cjs +9 -5
- package/dist/vendors/ads-and-pixels/x-pixel.cjs +9 -5
- package/dist/vendors/analytics/adobe-analytics.cjs +90 -0
- package/dist/vendors/analytics/adobe-analytics.js +49 -0
- package/dist/vendors/analytics/ahrefs-analytics.cjs +11 -7
- package/dist/vendors/analytics/amplitude.cjs +193 -0
- package/dist/vendors/analytics/amplitude.js +134 -0
- package/dist/vendors/analytics/clearbit.cjs +69 -0
- package/dist/vendors/analytics/clearbit.js +28 -0
- package/dist/vendors/analytics/cloudflare-web-analytics.cjs +11 -7
- package/dist/vendors/analytics/databuddy.cjs +11 -7
- package/dist/vendors/analytics/fathom-analytics.cjs +11 -7
- package/dist/vendors/analytics/google-tag.cjs +11 -7
- package/dist/vendors/analytics/heap.cjs +181 -0
- package/dist/vendors/analytics/heap.js +134 -0
- package/dist/vendors/analytics/hightouch.cjs +153 -0
- package/dist/vendors/analytics/hightouch.js +109 -0
- package/dist/vendors/analytics/hotjar.cjs +11 -7
- package/dist/vendors/analytics/logrocket.cjs +99 -0
- package/dist/vendors/analytics/logrocket.js +58 -0
- package/dist/vendors/analytics/matomo-analytics.cjs +9 -5
- package/dist/vendors/analytics/microsoft-clarity.cjs +75 -47
- package/dist/vendors/analytics/microsoft-clarity.js +64 -40
- package/dist/vendors/analytics/mixpanel-analytics.cjs +31 -16
- package/dist/vendors/analytics/mixpanel-analytics.js +22 -11
- package/dist/vendors/analytics/pirsch.cjs +108 -0
- package/dist/vendors/analytics/pirsch.js +67 -0
- package/dist/vendors/analytics/plausible-analytics.cjs +9 -5
- package/dist/vendors/analytics/posthog.cjs +11 -7
- package/dist/vendors/analytics/promptwatch.cjs +11 -7
- package/dist/vendors/analytics/rudderstack.cjs +227 -0
- package/dist/vendors/analytics/rudderstack.js +183 -0
- package/dist/vendors/analytics/rybbit-analytics.cjs +9 -5
- package/dist/vendors/analytics/segment.cjs +9 -5
- package/dist/vendors/analytics/umami-analytics.cjs +9 -5
- package/dist/vendors/analytics/vercel-analytics.cjs +11 -7
- package/dist/vendors/functional/crisp.cjs +9 -5
- package/dist/vendors/functional/intercom.cjs +11 -7
- package/dist/vendors/tag-managers/google-tag-manager.cjs +11 -7
- package/dist-types/registry.d.ts +313 -241
- package/dist-types/types.d.ts +42 -4
- package/dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts +18 -18
- package/dist-types/vendors/ads-and-pixels/meta-pixel.d.ts +21 -21
- package/dist-types/vendors/ads-and-pixels/microsoft-uet.d.ts +32 -32
- package/dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts +19 -19
- package/dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts +16 -16
- package/dist-types/vendors/ads-and-pixels/tiktok-pixel.d.ts +28 -28
- package/dist-types/vendors/ads-and-pixels/x-pixel.d.ts +13 -13
- package/dist-types/vendors/analytics/adobe-analytics.d.ts +75 -0
- package/dist-types/vendors/analytics/ahrefs-analytics.d.ts +7 -7
- package/dist-types/vendors/analytics/amplitude.d.ts +234 -0
- package/dist-types/vendors/analytics/clearbit.d.ts +60 -0
- package/dist-types/vendors/analytics/cloudflare-web-analytics.d.ts +7 -7
- package/dist-types/vendors/analytics/databuddy.d.ts +25 -25
- package/dist-types/vendors/analytics/fathom-analytics.d.ts +11 -11
- package/dist-types/vendors/analytics/google-tag.d.ts +17 -17
- package/dist-types/vendors/analytics/heap.d.ts +316 -0
- package/dist-types/vendors/analytics/hightouch.d.ts +285 -0
- package/dist-types/vendors/analytics/hotjar.d.ts +14 -14
- package/dist-types/vendors/analytics/logrocket.d.ts +101 -0
- package/dist-types/vendors/analytics/microsoft-clarity.d.ts +42 -30
- package/dist-types/vendors/analytics/mixpanel-analytics.d.ts +40 -28
- package/dist-types/vendors/analytics/pirsch.d.ts +96 -0
- package/dist-types/vendors/analytics/plausible-analytics.d.ts +13 -13
- package/dist-types/vendors/analytics/posthog.d.ts +39 -39
- package/dist-types/vendors/analytics/promptwatch.d.ts +7 -7
- package/dist-types/vendors/analytics/rudderstack.d.ts +330 -0
- package/dist-types/vendors/analytics/rybbit-analytics.d.ts +18 -18
- package/dist-types/vendors/analytics/segment.d.ts +13 -13
- package/dist-types/vendors/analytics/umami-analytics.d.ts +12 -12
- package/dist-types/vendors/analytics/vercel-analytics.d.ts +16 -16
- package/dist-types/vendors/functional/crisp.d.ts +11 -11
- package/dist-types/vendors/functional/intercom.d.ts +16 -16
- package/dist-types/vendors/tag-managers/google-tag-manager.d.ts +18 -18
- package/docs/README.md +62 -0
- package/docs/frameworks/javascript/script-loader.md +354 -0
- package/docs/frameworks/next/script-loader.md +499 -0
- package/docs/frameworks/react/script-loader.md +553 -0
- package/docs/integrations/adobe-analytics.md +160 -0
- package/docs/integrations/ahrefs-analytics.md +157 -0
- package/docs/integrations/amplitude.md +230 -0
- package/docs/integrations/building-integrations.md +239 -0
- package/docs/integrations/clearbit.md +130 -0
- package/docs/integrations/cloudflare-web-analytics.md +126 -0
- package/docs/integrations/crisp.md +140 -0
- package/docs/integrations/databuddy.md +205 -0
- package/docs/integrations/fathom-analytics.md +150 -0
- package/docs/integrations/google-maps.md +263 -0
- package/docs/integrations/google-tag-manager.md +154 -0
- package/docs/integrations/google-tag.md +134 -0
- package/docs/integrations/heap.md +219 -0
- package/docs/integrations/hightouch.md +199 -0
- package/docs/integrations/hotjar.md +143 -0
- package/docs/integrations/intercom.md +144 -0
- package/docs/integrations/linkedin-insights.md +161 -0
- package/docs/integrations/logrocket.md +175 -0
- package/docs/integrations/matomo-analytics.md +171 -0
- package/docs/integrations/meta-pixel.md +412 -0
- package/docs/integrations/microsoft-clarity.md +173 -0
- package/docs/integrations/microsoft-uet.md +156 -0
- package/docs/integrations/mixpanel-analytics.md +130 -0
- package/docs/integrations/overview.md +149 -0
- package/docs/integrations/pirsch.md +142 -0
- package/docs/integrations/plausible-analytics.md +154 -0
- package/docs/integrations/posthog.md +258 -0
- package/docs/integrations/promptwatch.md +121 -0
- package/docs/integrations/reddit-pixel.md +241 -0
- package/docs/integrations/rudderstack.md +271 -0
- package/docs/integrations/rybbit-analytics.md +143 -0
- package/docs/integrations/segment.md +146 -0
- package/docs/integrations/snapchat-pixel.md +163 -0
- package/docs/integrations/tiktok-pixel.md +123 -0
- package/docs/integrations/umami-analytics.md +148 -0
- package/docs/integrations/vercel-analytics.md +141 -0
- package/docs/integrations/x-pixel.md +157 -0
- package/docs/integrations/youtube.md +193 -0
- package/docs/shared/react/guides/script-loader.md +309 -0
- package/package.json +61 -7
- package/readme.json +8 -4
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -24,8 +28,8 @@ var __webpack_require__ = {};
|
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
hotjar: ()=>hotjar,
|
|
32
|
+
hotjarManifest: ()=>hotjarManifest
|
|
29
33
|
});
|
|
30
34
|
const external_resolve_cjs_namespaceObject = require("../../resolve.cjs");
|
|
31
35
|
const external_types_cjs_namespaceObject = require("../../types.cjs");
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
logRocket: ()=>logRocket,
|
|
32
|
+
logRocketManifest: ()=>logRocketManifest
|
|
33
|
+
});
|
|
34
|
+
const external_resolve_cjs_namespaceObject = require("../../resolve.cjs");
|
|
35
|
+
const external_types_cjs_namespaceObject = require("../../types.cjs");
|
|
36
|
+
const script_url_cjs_namespaceObject = require("../_shared/script-url.cjs");
|
|
37
|
+
const DEFAULT_LOGROCKET_SCRIPT_URL = 'https://cdn.logrocket.io/LogRocket.min.js';
|
|
38
|
+
function validateLogRocketAppId(appId) {
|
|
39
|
+
const normalized = 'string' == typeof appId ? appId.trim() : '';
|
|
40
|
+
const segments = normalized.split('/');
|
|
41
|
+
if (2 !== segments.length || segments.some((segment)=>0 === segment.length)) throw new Error("logRocket: invalid appId - must be a non-empty string in 'org/app' format");
|
|
42
|
+
return normalized;
|
|
43
|
+
}
|
|
44
|
+
const logRocketManifest = {
|
|
45
|
+
...external_types_cjs_namespaceObject.vendorManifestContract,
|
|
46
|
+
vendor: 'logrocket',
|
|
47
|
+
category: 'measurement',
|
|
48
|
+
install: [
|
|
49
|
+
{
|
|
50
|
+
type: 'loadScript',
|
|
51
|
+
src: "{{scriptUrl}}",
|
|
52
|
+
attributes: {
|
|
53
|
+
crossorigin: 'anonymous'
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
afterLoad: [
|
|
58
|
+
{
|
|
59
|
+
type: 'callGlobal',
|
|
60
|
+
global: 'LogRocket',
|
|
61
|
+
method: 'init',
|
|
62
|
+
args: [
|
|
63
|
+
'{{appId}}',
|
|
64
|
+
'{{initOptions}}'
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
};
|
|
69
|
+
function logRocket(options) {
|
|
70
|
+
const appId = validateLogRocketAppId(options?.appId);
|
|
71
|
+
const asyncScriptUrl = (0, script_url_cjs_namespaceObject.trimToUndefined)(options.asyncScriptUrl);
|
|
72
|
+
let manifest = logRocketManifest;
|
|
73
|
+
if (asyncScriptUrl) manifest = {
|
|
74
|
+
...logRocketManifest,
|
|
75
|
+
bootstrap: [
|
|
76
|
+
{
|
|
77
|
+
type: 'setGlobal',
|
|
78
|
+
name: '_lrAsyncScript',
|
|
79
|
+
value: '{{asyncScriptUrl}}',
|
|
80
|
+
ifUndefined: false
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
};
|
|
84
|
+
return (0, external_resolve_cjs_namespaceObject.resolveManifest)(manifest, {
|
|
85
|
+
appId,
|
|
86
|
+
asyncScriptUrl,
|
|
87
|
+
initOptions: options.initOptions ?? {},
|
|
88
|
+
scriptUrl: (0, script_url_cjs_namespaceObject.resolveScriptUrl)((0, script_url_cjs_namespaceObject.trimToUndefined)(options.scriptUrl), DEFAULT_LOGROCKET_SCRIPT_URL)
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
exports.logRocket = __webpack_exports__.logRocket;
|
|
92
|
+
exports.logRocketManifest = __webpack_exports__.logRocketManifest;
|
|
93
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
94
|
+
"logRocket",
|
|
95
|
+
"logRocketManifest"
|
|
96
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
97
|
+
Object.defineProperty(exports, '__esModule', {
|
|
98
|
+
value: true
|
|
99
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { resolveManifest } from "../../resolve.js";
|
|
2
|
+
import { vendorManifestContract } from "../../types.js";
|
|
3
|
+
import { resolveScriptUrl, trimToUndefined } from "../_shared/script-url.js";
|
|
4
|
+
const DEFAULT_LOGROCKET_SCRIPT_URL = 'https://cdn.logrocket.io/LogRocket.min.js';
|
|
5
|
+
function validateLogRocketAppId(appId) {
|
|
6
|
+
const normalized = 'string' == typeof appId ? appId.trim() : '';
|
|
7
|
+
const segments = normalized.split('/');
|
|
8
|
+
if (2 !== segments.length || segments.some((segment)=>0 === segment.length)) throw new Error("logRocket: invalid appId - must be a non-empty string in 'org/app' format");
|
|
9
|
+
return normalized;
|
|
10
|
+
}
|
|
11
|
+
const logRocketManifest = {
|
|
12
|
+
...vendorManifestContract,
|
|
13
|
+
vendor: 'logrocket',
|
|
14
|
+
category: 'measurement',
|
|
15
|
+
install: [
|
|
16
|
+
{
|
|
17
|
+
type: 'loadScript',
|
|
18
|
+
src: "{{scriptUrl}}",
|
|
19
|
+
attributes: {
|
|
20
|
+
crossorigin: 'anonymous'
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
afterLoad: [
|
|
25
|
+
{
|
|
26
|
+
type: 'callGlobal',
|
|
27
|
+
global: 'LogRocket',
|
|
28
|
+
method: 'init',
|
|
29
|
+
args: [
|
|
30
|
+
'{{appId}}',
|
|
31
|
+
'{{initOptions}}'
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
};
|
|
36
|
+
function logRocket(options) {
|
|
37
|
+
const appId = validateLogRocketAppId(options?.appId);
|
|
38
|
+
const asyncScriptUrl = trimToUndefined(options.asyncScriptUrl);
|
|
39
|
+
let manifest = logRocketManifest;
|
|
40
|
+
if (asyncScriptUrl) manifest = {
|
|
41
|
+
...logRocketManifest,
|
|
42
|
+
bootstrap: [
|
|
43
|
+
{
|
|
44
|
+
type: 'setGlobal',
|
|
45
|
+
name: '_lrAsyncScript',
|
|
46
|
+
value: '{{asyncScriptUrl}}',
|
|
47
|
+
ifUndefined: false
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
};
|
|
51
|
+
return resolveManifest(manifest, {
|
|
52
|
+
appId,
|
|
53
|
+
asyncScriptUrl,
|
|
54
|
+
initOptions: options.initOptions ?? {},
|
|
55
|
+
scriptUrl: resolveScriptUrl(trimToUndefined(options.scriptUrl), DEFAULT_LOGROCKET_SCRIPT_URL)
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export { logRocket, logRocketManifest };
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -24,11 +28,61 @@ var __webpack_require__ = {};
|
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
clarity: ()=>clarity,
|
|
32
|
+
clarityManifest: ()=>clarityManifest
|
|
29
33
|
});
|
|
30
34
|
const external_resolve_cjs_namespaceObject = require("../../resolve.cjs");
|
|
31
35
|
const external_types_cjs_namespaceObject = require("../../types.cjs");
|
|
36
|
+
function toClarityConsentState(value) {
|
|
37
|
+
if (true === value) return 'granted';
|
|
38
|
+
if (false === value) return 'denied';
|
|
39
|
+
if ('string' != typeof value) return;
|
|
40
|
+
const normalized = value.toLowerCase();
|
|
41
|
+
if ('granted' === normalized || 'true' === normalized) return 'granted';
|
|
42
|
+
if ('denied' === normalized || 'false' === normalized) return 'denied';
|
|
43
|
+
}
|
|
44
|
+
function getConsentValue(value, keys) {
|
|
45
|
+
for (const key of keys){
|
|
46
|
+
const consent = toClarityConsentState(value[key]);
|
|
47
|
+
if (consent) return consent;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function getConsentPayloadFromState(consents) {
|
|
51
|
+
let adStorage;
|
|
52
|
+
adStorage = consents.marketing ? 'granted' : 'denied';
|
|
53
|
+
let analyticsStorage;
|
|
54
|
+
analyticsStorage = consents.measurement ? 'granted' : 'denied';
|
|
55
|
+
return {
|
|
56
|
+
ad_Storage: adStorage,
|
|
57
|
+
analytics_Storage: analyticsStorage
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function getClarityConsentPayload(consents, defaultConsent) {
|
|
61
|
+
const fallback = getConsentPayloadFromState(consents);
|
|
62
|
+
if (void 0 === defaultConsent) return fallback;
|
|
63
|
+
const booleanConsent = toClarityConsentState(defaultConsent);
|
|
64
|
+
if (booleanConsent) return {
|
|
65
|
+
ad_Storage: booleanConsent,
|
|
66
|
+
analytics_Storage: booleanConsent
|
|
67
|
+
};
|
|
68
|
+
if (null !== defaultConsent && 'object' == typeof defaultConsent) return {
|
|
69
|
+
ad_Storage: getConsentValue(defaultConsent, [
|
|
70
|
+
'ad_Storage',
|
|
71
|
+
'ad_storage',
|
|
72
|
+
'marketing'
|
|
73
|
+
]) ?? fallback.ad_Storage,
|
|
74
|
+
analytics_Storage: getConsentValue(defaultConsent, [
|
|
75
|
+
'analytics_Storage',
|
|
76
|
+
'analytics_storage',
|
|
77
|
+
'measurement',
|
|
78
|
+
'analytics'
|
|
79
|
+
]) ?? fallback.analytics_Storage
|
|
80
|
+
};
|
|
81
|
+
return fallback;
|
|
82
|
+
}
|
|
83
|
+
function syncClarityConsent(info, defaultConsent) {
|
|
84
|
+
window.clarity?.('consentv2', getClarityConsentPayload(info.consents, defaultConsent));
|
|
85
|
+
}
|
|
32
86
|
const clarityManifest = {
|
|
33
87
|
...external_types_cjs_namespaceObject.vendorManifestContract,
|
|
34
88
|
vendor: 'microsoft-clarity',
|
|
@@ -42,9 +96,6 @@ const clarityManifest = {
|
|
|
42
96
|
property: 'q'
|
|
43
97
|
},
|
|
44
98
|
queueFormat: 'array',
|
|
45
|
-
properties: {
|
|
46
|
-
v: '0.7.0'
|
|
47
|
-
},
|
|
48
99
|
ifUndefined: true
|
|
49
100
|
}
|
|
50
101
|
],
|
|
@@ -54,50 +105,27 @@ const clarityManifest = {
|
|
|
54
105
|
src: "{{scriptUrl}}",
|
|
55
106
|
async: true
|
|
56
107
|
}
|
|
57
|
-
],
|
|
58
|
-
onConsentGranted: [
|
|
59
|
-
{
|
|
60
|
-
type: 'callGlobal',
|
|
61
|
-
global: 'clarity',
|
|
62
|
-
args: [
|
|
63
|
-
'consent',
|
|
64
|
-
true
|
|
65
|
-
]
|
|
66
|
-
}
|
|
67
|
-
],
|
|
68
|
-
onConsentDenied: [
|
|
69
|
-
{
|
|
70
|
-
type: 'callGlobal',
|
|
71
|
-
global: 'clarity',
|
|
72
|
-
args: [
|
|
73
|
-
'consent',
|
|
74
|
-
false
|
|
75
|
-
]
|
|
76
|
-
}
|
|
77
108
|
]
|
|
78
109
|
};
|
|
79
110
|
function clarity({ id, defaultConsent, scriptUrl }) {
|
|
80
111
|
const normalizedId = id.trim();
|
|
81
112
|
if (void 0 === scriptUrl && 0 === normalizedId.length) throw new Error(`Invalid Clarity id value "${id}". A non-empty id is required to construct the Clarity loader URL when scriptUrl is not provided.`);
|
|
82
|
-
|
|
83
|
-
if (void 0 !== defaultConsent) manifest = {
|
|
84
|
-
...clarityManifest,
|
|
85
|
-
install: [
|
|
86
|
-
{
|
|
87
|
-
type: 'callGlobal',
|
|
88
|
-
global: 'clarity',
|
|
89
|
-
args: [
|
|
90
|
-
'consent',
|
|
91
|
-
'{{defaultConsent}}'
|
|
92
|
-
]
|
|
93
|
-
},
|
|
94
|
-
...clarityManifest.install
|
|
95
|
-
]
|
|
96
|
-
};
|
|
97
|
-
return (0, external_resolve_cjs_namespaceObject.resolveManifest)(manifest, {
|
|
98
|
-
defaultConsent,
|
|
113
|
+
const resolved = (0, external_resolve_cjs_namespaceObject.resolveManifest)(clarityManifest, {
|
|
99
114
|
scriptUrl: scriptUrl ?? `https://www.clarity.ms/tag/${normalizedId}`
|
|
100
115
|
});
|
|
116
|
+
const onBeforeLoad = resolved.onBeforeLoad;
|
|
117
|
+
const onConsentChange = resolved.onConsentChange;
|
|
118
|
+
return {
|
|
119
|
+
...resolved,
|
|
120
|
+
onBeforeLoad: (info)=>{
|
|
121
|
+
onBeforeLoad?.(info);
|
|
122
|
+
syncClarityConsent(info, defaultConsent);
|
|
123
|
+
},
|
|
124
|
+
onConsentChange: (info)=>{
|
|
125
|
+
onConsentChange?.(info);
|
|
126
|
+
syncClarityConsent(info);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
101
129
|
}
|
|
102
130
|
exports.clarity = __webpack_exports__.clarity;
|
|
103
131
|
exports.clarityManifest = __webpack_exports__.clarityManifest;
|
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
import { resolveManifest } from "../../resolve.js";
|
|
2
2
|
import { vendorManifestContract } from "../../types.js";
|
|
3
|
+
function toClarityConsentState(value) {
|
|
4
|
+
if (true === value) return 'granted';
|
|
5
|
+
if (false === value) return 'denied';
|
|
6
|
+
if ('string' != typeof value) return;
|
|
7
|
+
const normalized = value.toLowerCase();
|
|
8
|
+
if ('granted' === normalized || 'true' === normalized) return 'granted';
|
|
9
|
+
if ('denied' === normalized || 'false' === normalized) return 'denied';
|
|
10
|
+
}
|
|
11
|
+
function getConsentValue(value, keys) {
|
|
12
|
+
for (const key of keys){
|
|
13
|
+
const consent = toClarityConsentState(value[key]);
|
|
14
|
+
if (consent) return consent;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function getConsentPayloadFromState(consents) {
|
|
18
|
+
let adStorage;
|
|
19
|
+
adStorage = consents.marketing ? 'granted' : 'denied';
|
|
20
|
+
let analyticsStorage;
|
|
21
|
+
analyticsStorage = consents.measurement ? 'granted' : 'denied';
|
|
22
|
+
return {
|
|
23
|
+
ad_Storage: adStorage,
|
|
24
|
+
analytics_Storage: analyticsStorage
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function getClarityConsentPayload(consents, defaultConsent) {
|
|
28
|
+
const fallback = getConsentPayloadFromState(consents);
|
|
29
|
+
if (void 0 === defaultConsent) return fallback;
|
|
30
|
+
const booleanConsent = toClarityConsentState(defaultConsent);
|
|
31
|
+
if (booleanConsent) return {
|
|
32
|
+
ad_Storage: booleanConsent,
|
|
33
|
+
analytics_Storage: booleanConsent
|
|
34
|
+
};
|
|
35
|
+
if (null !== defaultConsent && 'object' == typeof defaultConsent) return {
|
|
36
|
+
ad_Storage: getConsentValue(defaultConsent, [
|
|
37
|
+
'ad_Storage',
|
|
38
|
+
'ad_storage',
|
|
39
|
+
'marketing'
|
|
40
|
+
]) ?? fallback.ad_Storage,
|
|
41
|
+
analytics_Storage: getConsentValue(defaultConsent, [
|
|
42
|
+
'analytics_Storage',
|
|
43
|
+
'analytics_storage',
|
|
44
|
+
'measurement',
|
|
45
|
+
'analytics'
|
|
46
|
+
]) ?? fallback.analytics_Storage
|
|
47
|
+
};
|
|
48
|
+
return fallback;
|
|
49
|
+
}
|
|
50
|
+
function syncClarityConsent(info, defaultConsent) {
|
|
51
|
+
window.clarity?.('consentv2', getClarityConsentPayload(info.consents, defaultConsent));
|
|
52
|
+
}
|
|
3
53
|
const clarityManifest = {
|
|
4
54
|
...vendorManifestContract,
|
|
5
55
|
vendor: 'microsoft-clarity',
|
|
@@ -13,9 +63,6 @@ const clarityManifest = {
|
|
|
13
63
|
property: 'q'
|
|
14
64
|
},
|
|
15
65
|
queueFormat: 'array',
|
|
16
|
-
properties: {
|
|
17
|
-
v: '0.7.0'
|
|
18
|
-
},
|
|
19
66
|
ifUndefined: true
|
|
20
67
|
}
|
|
21
68
|
],
|
|
@@ -25,49 +72,26 @@ const clarityManifest = {
|
|
|
25
72
|
src: "{{scriptUrl}}",
|
|
26
73
|
async: true
|
|
27
74
|
}
|
|
28
|
-
],
|
|
29
|
-
onConsentGranted: [
|
|
30
|
-
{
|
|
31
|
-
type: 'callGlobal',
|
|
32
|
-
global: 'clarity',
|
|
33
|
-
args: [
|
|
34
|
-
'consent',
|
|
35
|
-
true
|
|
36
|
-
]
|
|
37
|
-
}
|
|
38
|
-
],
|
|
39
|
-
onConsentDenied: [
|
|
40
|
-
{
|
|
41
|
-
type: 'callGlobal',
|
|
42
|
-
global: 'clarity',
|
|
43
|
-
args: [
|
|
44
|
-
'consent',
|
|
45
|
-
false
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
75
|
]
|
|
49
76
|
};
|
|
50
77
|
function clarity({ id, defaultConsent, scriptUrl }) {
|
|
51
78
|
const normalizedId = id.trim();
|
|
52
79
|
if (void 0 === scriptUrl && 0 === normalizedId.length) throw new Error(`Invalid Clarity id value "${id}". A non-empty id is required to construct the Clarity loader URL when scriptUrl is not provided.`);
|
|
53
|
-
|
|
54
|
-
if (void 0 !== defaultConsent) manifest = {
|
|
55
|
-
...clarityManifest,
|
|
56
|
-
install: [
|
|
57
|
-
{
|
|
58
|
-
type: 'callGlobal',
|
|
59
|
-
global: 'clarity',
|
|
60
|
-
args: [
|
|
61
|
-
'consent',
|
|
62
|
-
'{{defaultConsent}}'
|
|
63
|
-
]
|
|
64
|
-
},
|
|
65
|
-
...clarityManifest.install
|
|
66
|
-
]
|
|
67
|
-
};
|
|
68
|
-
return resolveManifest(manifest, {
|
|
69
|
-
defaultConsent,
|
|
80
|
+
const resolved = resolveManifest(clarityManifest, {
|
|
70
81
|
scriptUrl: scriptUrl ?? `https://www.clarity.ms/tag/${normalizedId}`
|
|
71
82
|
});
|
|
83
|
+
const onBeforeLoad = resolved.onBeforeLoad;
|
|
84
|
+
const onConsentChange = resolved.onConsentChange;
|
|
85
|
+
return {
|
|
86
|
+
...resolved,
|
|
87
|
+
onBeforeLoad: (info)=>{
|
|
88
|
+
onBeforeLoad?.(info);
|
|
89
|
+
syncClarityConsent(info, defaultConsent);
|
|
90
|
+
},
|
|
91
|
+
onConsentChange: (info)=>{
|
|
92
|
+
onConsentChange?.(info);
|
|
93
|
+
syncClarityConsent(info);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
72
96
|
}
|
|
73
97
|
export { clarity, clarityManifest };
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -41,6 +45,28 @@ const mixpanelAnalyticsManifest = {
|
|
|
41
45
|
value: [],
|
|
42
46
|
ifUndefined: true
|
|
43
47
|
},
|
|
48
|
+
{
|
|
49
|
+
type: 'setGlobalPath',
|
|
50
|
+
path: [
|
|
51
|
+
'mixpanel',
|
|
52
|
+
'__SV'
|
|
53
|
+
],
|
|
54
|
+
value: 1.2
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'setGlobalPath',
|
|
58
|
+
path: [
|
|
59
|
+
'mixpanel',
|
|
60
|
+
'_i'
|
|
61
|
+
],
|
|
62
|
+
value: [
|
|
63
|
+
[
|
|
64
|
+
'{{token}}',
|
|
65
|
+
'{{initOptions}}',
|
|
66
|
+
'mixpanel'
|
|
67
|
+
]
|
|
68
|
+
]
|
|
69
|
+
},
|
|
44
70
|
{
|
|
45
71
|
type: 'defineQueueMethods',
|
|
46
72
|
target: 'mixpanel',
|
|
@@ -59,17 +85,6 @@ const mixpanelAnalyticsManifest = {
|
|
|
59
85
|
async: true
|
|
60
86
|
}
|
|
61
87
|
],
|
|
62
|
-
afterLoad: [
|
|
63
|
-
{
|
|
64
|
-
type: 'callGlobal',
|
|
65
|
-
global: 'mixpanel',
|
|
66
|
-
method: 'init',
|
|
67
|
-
args: [
|
|
68
|
-
'{{token}}',
|
|
69
|
-
'{{initOptions}}'
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
],
|
|
73
88
|
onLoadGranted: [
|
|
74
89
|
{
|
|
75
90
|
type: 'callGlobal',
|
|
@@ -12,6 +12,28 @@ const mixpanelAnalyticsManifest = {
|
|
|
12
12
|
value: [],
|
|
13
13
|
ifUndefined: true
|
|
14
14
|
},
|
|
15
|
+
{
|
|
16
|
+
type: 'setGlobalPath',
|
|
17
|
+
path: [
|
|
18
|
+
'mixpanel',
|
|
19
|
+
'__SV'
|
|
20
|
+
],
|
|
21
|
+
value: 1.2
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
type: 'setGlobalPath',
|
|
25
|
+
path: [
|
|
26
|
+
'mixpanel',
|
|
27
|
+
'_i'
|
|
28
|
+
],
|
|
29
|
+
value: [
|
|
30
|
+
[
|
|
31
|
+
'{{token}}',
|
|
32
|
+
'{{initOptions}}',
|
|
33
|
+
'mixpanel'
|
|
34
|
+
]
|
|
35
|
+
]
|
|
36
|
+
},
|
|
15
37
|
{
|
|
16
38
|
type: 'defineQueueMethods',
|
|
17
39
|
target: 'mixpanel',
|
|
@@ -30,17 +52,6 @@ const mixpanelAnalyticsManifest = {
|
|
|
30
52
|
async: true
|
|
31
53
|
}
|
|
32
54
|
],
|
|
33
|
-
afterLoad: [
|
|
34
|
-
{
|
|
35
|
-
type: 'callGlobal',
|
|
36
|
-
global: 'mixpanel',
|
|
37
|
-
method: 'init',
|
|
38
|
-
args: [
|
|
39
|
-
'{{token}}',
|
|
40
|
-
'{{initOptions}}'
|
|
41
|
-
]
|
|
42
|
-
}
|
|
43
|
-
],
|
|
44
55
|
onLoadGranted: [
|
|
45
56
|
{
|
|
46
57
|
type: 'callGlobal',
|