@duckduckgo/autoconsent 9.4.0 → 9.6.0

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 (44) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/addon-firefox/background.bundle.js +1 -0
  3. package/dist/addon-firefox/content.bundle.js +19 -8
  4. package/dist/addon-firefox/manifest.json +1 -1
  5. package/dist/addon-firefox/rules.json +297 -36
  6. package/dist/addon-mv3/background.bundle.js +1 -0
  7. package/dist/addon-mv3/content.bundle.js +19 -8
  8. package/dist/addon-mv3/manifest.json +1 -1
  9. package/dist/addon-mv3/rules.json +297 -36
  10. package/dist/autoconsent.cjs.js +19 -8
  11. package/dist/autoconsent.esm.js +19 -8
  12. package/dist/autoconsent.playwright.js +1 -1
  13. package/dist/autoconsent.unit.js +316 -44
  14. package/lib/cmps/base.ts +3 -1
  15. package/lib/cmps/consentmanager.ts +2 -0
  16. package/lib/cmps/uniconsent.ts +2 -2
  17. package/lib/eval-snippets.ts +1 -0
  18. package/lib/web.ts +13 -10
  19. package/package.json +3 -3
  20. package/rules/autoconsent/cookie-law-info.json +4 -1
  21. package/rules/autoconsent/ecosia.json +28 -0
  22. package/rules/autoconsent/eu-cookie-compliance.json +10 -3
  23. package/rules/autoconsent/europa-eu.json +29 -0
  24. package/rules/autoconsent/fides.json +25 -0
  25. package/rules/autoconsent/instagram.json +31 -0
  26. package/rules/autoconsent/ketch.json +23 -20
  27. package/rules/autoconsent/paypal-us.json +3 -3
  28. package/rules/autoconsent/reddit.json +19 -5
  29. package/rules/autoconsent/tealium.json +4 -4
  30. package/rules/autoconsent/temu.json +28 -0
  31. package/rules/autoconsent/transcend.json +26 -0
  32. package/rules/autoconsent/webflow.json +34 -0
  33. package/rules/autoconsent/xvideos.json +28 -0
  34. package/rules/rules.json +297 -36
  35. package/tests/ecosia.spec.ts +5 -0
  36. package/tests/eu-cookie-compliance-banner.spec.ts +1 -1
  37. package/tests/europa-eu.spec.ts +6 -0
  38. package/tests/fides.spec.ts +5 -0
  39. package/tests/instagram.spec.ts +5 -0
  40. package/tests/ketch.spec.ts +1 -1
  41. package/tests/temu.spec.ts +5 -0
  42. package/tests/transcend.spec.ts +5 -0
  43. package/tests/webflow.spec.ts +7 -0
  44. package/tests/xvideos.spec.ts +5 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,45 @@
1
+ # v9.6.0 (Wed Jan 31 2024)
2
+
3
+ #### 🚀 Enhancement
4
+
5
+ - Add rule for webflow [#364](https://github.com/duckduckgo/autoconsent/pull/364) ([@muodov](https://github.com/muodov))
6
+ - Handle Tealium implicit modal [#363](https://github.com/duckduckgo/autoconsent/pull/363) ([@muodov](https://github.com/muodov))
7
+ - Fix reddit rule [#362](https://github.com/duckduckgo/autoconsent/pull/362) ([@muodov](https://github.com/muodov))
8
+
9
+ #### 🐛 Bug Fix
10
+
11
+ - regression fix: Do not run opt-out unless a pop-up is actually shown [#365](https://github.com/duckduckgo/autoconsent/pull/365) ([@muodov](https://github.com/muodov))
12
+
13
+ #### Authors: 1
14
+
15
+ - Maxim Tsoy ([@muodov](https://github.com/muodov))
16
+
17
+ ---
18
+
19
+ # v9.5.0 (Wed Jan 31 2024)
20
+
21
+ #### 🚀 Enhancement
22
+
23
+ - Fix Ketch and eu-cookie-compliance [#351](https://github.com/duckduckgo/autoconsent/pull/351) ([@muodov](https://github.com/muodov))
24
+ - Bump the dev-dependencies group with 7 updates [#360](https://github.com/duckduckgo/autoconsent/pull/360) ([@dependabot[bot]](https://github.com/dependabot[bot]))
25
+ - Add rule for fides CMP [#359](https://github.com/duckduckgo/autoconsent/pull/359) ([@muodov](https://github.com/muodov))
26
+ - More site-specific rules [#358](https://github.com/duckduckgo/autoconsent/pull/358) ([@muodov](https://github.com/muodov))
27
+ - Support another version of uniconsent [#355](https://github.com/duckduckgo/autoconsent/pull/355) ([@muodov](https://github.com/muodov))
28
+ - Improve Consentmanager.net [#353](https://github.com/duckduckgo/autoconsent/pull/353) ([@muodov](https://github.com/muodov))
29
+ - Improve cookie-law-info rule [#352](https://github.com/duckduckgo/autoconsent/pull/352) ([@muodov](https://github.com/muodov))
30
+
31
+ #### 🐛 Bug Fix
32
+
33
+ - fix: paypal-us [#361](https://github.com/duckduckgo/autoconsent/pull/361) ([@seia-soto](https://github.com/seia-soto))
34
+
35
+ #### Authors: 3
36
+
37
+ - [@dependabot[bot]](https://github.com/dependabot[bot])
38
+ - HoJeong Go ([@seia-soto](https://github.com/seia-soto))
39
+ - Maxim Tsoy ([@muodov](https://github.com/muodov))
40
+
41
+ ---
42
+
1
43
  # v9.4.0 (Fri Jan 26 2024)
2
44
 
3
45
  #### 🚀 Enhancement
@@ -48,6 +48,7 @@
48
48
  EVAL_COMPLIANZ_BANNER_0: () => document.cookie.includes("cmplz_banner-status=dismissed"),
49
49
  EVAL_COOKIE_LAW_INFO_0: () => CLI.disableAllCookies() || CLI.reject_close() || true,
50
50
  EVAL_COOKIE_LAW_INFO_1: () => document.cookie.indexOf("cookielawinfo-checkbox-non-necessary=yes") === -1,
51
+ EVAL_COOKIE_LAW_INFO_DETECT: () => !!window.CLI,
51
52
  EVAL_COOKIE_MANAGER_POPUP_0: () => JSON.parse(document.cookie.split(";").find((c) => c.trim().startsWith("CookieLevel")).split("=")[1]).social === false,
52
53
  EVAL_COOKIEALERT_0: () => document.querySelector("body").removeAttribute("style") || true,
53
54
  EVAL_COOKIEALERT_1: () => document.querySelector("body").removeAttribute("style") || true,
@@ -495,6 +495,7 @@
495
495
  EVAL_COMPLIANZ_BANNER_0: () => document.cookie.includes("cmplz_banner-status=dismissed"),
496
496
  EVAL_COOKIE_LAW_INFO_0: () => CLI.disableAllCookies() || CLI.reject_close() || true,
497
497
  EVAL_COOKIE_LAW_INFO_1: () => document.cookie.indexOf("cookielawinfo-checkbox-non-necessary=yes") === -1,
498
+ EVAL_COOKIE_LAW_INFO_DETECT: () => !!window.CLI,
498
499
  EVAL_COOKIE_MANAGER_POPUP_0: () => JSON.parse(document.cookie.split(";").find((c) => c.trim().startsWith("CookieLevel")).split("=")[1]).social === false,
499
500
  EVAL_COOKIEALERT_0: () => document.querySelector("body").removeAttribute("style") || true,
500
501
  EVAL_COOKIEALERT_1: () => document.querySelector("body").removeAttribute("style") || true,
@@ -801,6 +802,8 @@
801
802
  results.push(this._runRulesSequentially(rule.then));
802
803
  } else if (rule.else) {
803
804
  results.push(this._runRulesSequentially(rule.else));
805
+ } else {
806
+ results.push(true);
804
807
  }
805
808
  }
806
809
  if (rule.any) {
@@ -1348,6 +1351,7 @@
1348
1351
  await this.waitForElement(".cmptblbox", 2e3);
1349
1352
  this.click(".cmptdchoice > a[aria-checked=true]", true);
1350
1353
  this.click(".cmpboxbtnyescustomchoices");
1354
+ this.hide("#cmpwrapper,#cmpbox", "display");
1351
1355
  return true;
1352
1356
  }
1353
1357
  async optIn() {
@@ -1530,10 +1534,10 @@
1530
1534
  return false;
1531
1535
  }
1532
1536
  async detectCmp() {
1533
- return this.elementExists(".unic .unic-box,.unic .unic-bar");
1537
+ return this.elementExists(".unic .unic-box,.unic .unic-bar,.unic .unic-modal");
1534
1538
  }
1535
1539
  async detectPopup() {
1536
- return this.elementVisible(".unic .unic-box,.unic .unic-bar", "any");
1540
+ return this.elementVisible(".unic .unic-box,.unic .unic-bar,.unic .unic-modal", "any");
1537
1541
  }
1538
1542
  async optOut() {
1539
1543
  await this.waitForElement(".unic button", 1e3);
@@ -2061,8 +2065,14 @@
2061
2065
  }
2062
2066
  return foundCMPs;
2063
2067
  }
2068
+ /**
2069
+ * Detect if a CMP has a popup open. Fullfils with the CMP if a popup is open, otherwise rejects.
2070
+ */
2064
2071
  async detectPopup(cmp) {
2065
- const isOpen = await this.waitForPopup(cmp);
2072
+ const isOpen = await this.waitForPopup(cmp).catch((error) => {
2073
+ this.config.logs.errors && console.warn(`error waiting for a popup for ${cmp.name}`, error);
2074
+ return false;
2075
+ });
2066
2076
  if (isOpen) {
2067
2077
  this.updateState({ detectedPopups: this.state.detectedPopups.concat([cmp.name]) });
2068
2078
  this.sendContentMessage({
@@ -2070,15 +2080,16 @@
2070
2080
  cmp: cmp.name,
2071
2081
  url: location.href
2072
2082
  });
2083
+ return cmp;
2073
2084
  }
2074
- return cmp;
2085
+ throw new Error("Popup is not shown");
2075
2086
  }
2087
+ /**
2088
+ * Detect if any of the CMPs has a popup open. Returns a list of CMPs with open popups.
2089
+ */
2076
2090
  async detectPopups(cmps, onFirstPopupAppears) {
2077
2091
  const tasks = cmps.map(
2078
- (cmp) => this.detectPopup(cmp).catch((error) => {
2079
- this.config.logs.errors && console.warn(`error waiting for a popup for ${cmp.name}`, error);
2080
- throw error;
2081
- })
2092
+ (cmp) => this.detectPopup(cmp)
2082
2093
  );
2083
2094
  await Promise.any(tasks).then((cmp) => {
2084
2095
  onFirstPopupAppears(cmp);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 2,
3
3
  "name": "Autoconsent",
4
- "version": "2024.1.26",
4
+ "version": "2024.1.31",
5
5
  "background": {
6
6
  "scripts": [
7
7
  "background.bundle.js"
@@ -1426,6 +1426,9 @@
1426
1426
  "detectCmp": [
1427
1427
  {
1428
1428
  "exists": "#cookie-law-info-bar"
1429
+ },
1430
+ {
1431
+ "eval": "EVAL_COOKIE_LAW_INFO_DETECT"
1429
1432
  }
1430
1433
  ],
1431
1434
  "detectPopup": [
@@ -2136,6 +2139,36 @@
2136
2139
  }
2137
2140
  ]
2138
2141
  },
2142
+ {
2143
+ "name": "ecosia",
2144
+ "vendorUrl": "https://www.ecosia.org/",
2145
+ "runContext": {
2146
+ "urlPattern": "^https://www\\.ecosia\\.org/"
2147
+ },
2148
+ "prehideSelectors": [
2149
+ ".cookie-wrapper"
2150
+ ],
2151
+ "detectCmp": [
2152
+ {
2153
+ "exists": ".cookie-wrapper > .cookie-notice"
2154
+ }
2155
+ ],
2156
+ "detectPopup": [
2157
+ {
2158
+ "visible": ".cookie-wrapper > .cookie-notice"
2159
+ }
2160
+ ],
2161
+ "optIn": [
2162
+ {
2163
+ "waitForThenClick": "[data-test-id=cookie-notice-accept]"
2164
+ }
2165
+ ],
2166
+ "optOut": [
2167
+ {
2168
+ "waitForThenClick": "[data-test-id=cookie-notice-reject]"
2169
+ }
2170
+ ]
2171
+ },
2139
2172
  {
2140
2173
  "name": "etsy",
2141
2174
  "prehideSelectors": [
@@ -2180,12 +2213,12 @@
2180
2213
  "name": "eu-cookie-compliance-banner",
2181
2214
  "detectCmp": [
2182
2215
  {
2183
- "exists": ".eu-cookie-compliance-banner-info"
2216
+ "exists": "body.eu-cookie-compliance-popup-open"
2184
2217
  }
2185
2218
  ],
2186
2219
  "detectPopup": [
2187
2220
  {
2188
- "exists": ".eu-cookie-compliance-popup-open"
2221
+ "exists": "body.eu-cookie-compliance-popup-open"
2189
2222
  }
2190
2223
  ],
2191
2224
  "optIn": [
@@ -2195,8 +2228,14 @@
2195
2228
  ],
2196
2229
  "optOut": [
2197
2230
  {
2198
- "click": ".decline-button,.eu-cookie-compliance-save-preferences-button",
2199
- "optional": true
2231
+ "if": {
2232
+ "visible": ".decline-button,.eu-cookie-compliance-save-preferences-button"
2233
+ },
2234
+ "then": [
2235
+ {
2236
+ "click": ".decline-button,.eu-cookie-compliance-save-preferences-button"
2237
+ }
2238
+ ]
2200
2239
  },
2201
2240
  {
2202
2241
  "hide": ".eu-cookie-compliance-banner-info, #sliding-popup"
@@ -2243,6 +2282,37 @@
2243
2282
  }
2244
2283
  ]
2245
2284
  },
2285
+ {
2286
+ "name": "europa-eu",
2287
+ "vendorUrl": "https://ec.europa.eu/",
2288
+ "runContext": {
2289
+ "urlPattern": "^https://[^/]*europa\\.eu/"
2290
+ },
2291
+ "prehideSelectors": [
2292
+ "#cookie-consent-banner"
2293
+ ],
2294
+ "detectCmp": [
2295
+ {
2296
+ "exists": ".cck-container"
2297
+ }
2298
+ ],
2299
+ "detectPopup": [
2300
+ {
2301
+ "visible": ".cck-container"
2302
+ }
2303
+ ],
2304
+ "optIn": [
2305
+ {
2306
+ "waitForThenClick": ".cck-actions-button[href=\"#accept\"]"
2307
+ }
2308
+ ],
2309
+ "optOut": [
2310
+ {
2311
+ "waitForThenClick": ".cck-actions-button[href=\"#refuse\"]",
2312
+ "hide": ".cck-container"
2313
+ }
2314
+ ]
2315
+ },
2246
2316
  {
2247
2317
  "name": "EZoic",
2248
2318
  "prehideSelectors": [
@@ -2329,6 +2399,33 @@
2329
2399
  }
2330
2400
  ]
2331
2401
  },
2402
+ {
2403
+ "name": "fides",
2404
+ "vendorUrl": "https://github.com/ethyca/fides",
2405
+ "prehideSelectors": [
2406
+ "#fides-overlay"
2407
+ ],
2408
+ "detectCmp": [
2409
+ {
2410
+ "exists": "#fides-overlay #fides-banner"
2411
+ }
2412
+ ],
2413
+ "detectPopup": [
2414
+ {
2415
+ "visible": "#fides-overlay #fides-banner"
2416
+ }
2417
+ ],
2418
+ "optIn": [
2419
+ {
2420
+ "waitForThenClick": "#fides-banner [data-testid=\"Accept all-btn\"]"
2421
+ }
2422
+ ],
2423
+ "optOut": [
2424
+ {
2425
+ "waitForThenClick": "#fides-banner [data-testid=\"Reject all-btn\"]"
2426
+ }
2427
+ ]
2428
+ },
2332
2429
  {
2333
2430
  "name": "funding-choices",
2334
2431
  "prehideSelectors": [
@@ -2738,6 +2835,39 @@
2738
2835
  }
2739
2836
  ]
2740
2837
  },
2838
+ {
2839
+ "name": "instagram",
2840
+ "vendorUrl": "https://instagram.com",
2841
+ "runContext": {
2842
+ "urlPattern": "^https://www\\.instagram\\.com/"
2843
+ },
2844
+ "prehideSelectors": [
2845
+ ".x78zum5.xdt5ytf.xg6iff7.x1n2onr6"
2846
+ ],
2847
+ "detectCmp": [
2848
+ {
2849
+ "exists": ".x1qjc9v5.x9f619.x78zum5.xdt5ytf.x1iyjqo2.xl56j7k"
2850
+ }
2851
+ ],
2852
+ "detectPopup": [
2853
+ {
2854
+ "visible": ".x1qjc9v5.x9f619.x78zum5.xdt5ytf.x1iyjqo2.xl56j7k"
2855
+ }
2856
+ ],
2857
+ "optIn": [
2858
+ {
2859
+ "waitForThenClick": "._a9--._a9_0"
2860
+ }
2861
+ ],
2862
+ "optOut": [
2863
+ {
2864
+ "waitForThenClick": "._a9--._a9_1"
2865
+ },
2866
+ {
2867
+ "wait": 2000
2868
+ }
2869
+ ]
2870
+ },
2741
2871
  {
2742
2872
  "name": "ionos.de",
2743
2873
  "prehideSelectors": [
@@ -2983,6 +3113,7 @@
2983
3113
  },
2984
3114
  {
2985
3115
  "name": "ketch",
3116
+ "vendorUrl": "https://www.ketch.com",
2986
3117
  "runContext": {
2987
3118
  "frame": false,
2988
3119
  "main": true
@@ -3008,7 +3139,7 @@
3008
3139
  },
3009
3140
  "then": [
3010
3141
  {
3011
- "waitForThenClick": "#lanyard_root div[class^='buttons'] > :nth-child(2)"
3142
+ "waitForThenClick": "#lanyard_root div[class*=buttons] > :nth-child(2)"
3012
3143
  },
3013
3144
  {
3014
3145
  "click": "#lanyard_root button[class='confirmButton']"
@@ -3016,43 +3147,42 @@
3016
3147
  ],
3017
3148
  "else": [
3018
3149
  {
3019
- "waitForThenClick": "#lanyard_root div[class^='buttons'] > :nth-child(2)"
3150
+ "waitForThenClick": "#lanyard_root div[class*=buttons] > :nth-child(2)"
3020
3151
  }
3021
3152
  ]
3022
3153
  }
3023
3154
  ],
3024
3155
  "optOut": [
3025
3156
  {
3026
- "click": "#lanyard_root button[class^='link']",
3157
+ "if": {
3158
+ "exists": "#lanyard_root [aria-describedby=banner-description]"
3159
+ },
3160
+ "then": [
3161
+ {
3162
+ "waitForThenClick": "#lanyard_root div[class*=buttons] > button[class*=secondaryButton]",
3163
+ "comment": "can be either settings or reject button"
3164
+ }
3165
+ ]
3166
+ },
3167
+ {
3168
+ "waitFor": "#lanyard_root [aria-describedby=preference-description],#lanyard_root [aria-describedby=modal-description]",
3169
+ "timeout": 1000,
3027
3170
  "optional": true
3028
3171
  },
3029
3172
  {
3030
3173
  "if": {
3031
- "exists": "#lanyard_root button[class*='confirmButton']"
3174
+ "exists": "#lanyard_root [aria-describedby=preference-description],#lanyard_root [aria-describedby=modal-description]"
3032
3175
  },
3033
3176
  "then": [
3034
3177
  {
3035
- "waitForThenClick": "#lanyard_root button[class*='rejectButton']"
3036
- },
3037
- {
3038
- "click": "#lanyard_root button[class*='confirmButton']"
3039
- }
3040
- ],
3041
- "else": [
3042
- {
3043
- "click": "#lanyard_root div[class^='buttons'] > :nth-child(1)",
3044
- "optional": true
3178
+ "waitForThenClick": "#lanyard_root button[class*=rejectButton]"
3045
3179
  },
3046
3180
  {
3047
- "waitForThenClick": "#lanyard_root input:checked"
3048
- },
3049
- {
3050
- "click": "#consentsTab > div:nth-child(2) > div > div[class^='actions'] > button:nth-child(1)"
3181
+ "click": "#lanyard_root button[class*=confirmButton],#lanyard_root div[class*=actions_] > button:nth-child(1)"
3051
3182
  }
3052
3183
  ]
3053
3184
  }
3054
- ],
3055
- "test": []
3185
+ ]
3056
3186
  },
3057
3187
  {
3058
3188
  "name": "kleinanzeigen-de",
@@ -3807,12 +3937,12 @@
3807
3937
  ],
3808
3938
  "detectCmp": [
3809
3939
  {
3810
- "exists": "#ccpaCookieBanner, .privacy-modal-content"
3940
+ "exists": "#ccpaCookieBanner, .privacy-sheet-content"
3811
3941
  }
3812
3942
  ],
3813
3943
  "detectPopup": [
3814
3944
  {
3815
- "exists": "#ccpaCookieBanner, .privacy-modal-content"
3945
+ "exists": "#ccpaCookieBanner, .privacy-sheet-content"
3816
3946
  }
3817
3947
  ],
3818
3948
  "optIn": [
@@ -3832,7 +3962,7 @@
3832
3962
  ],
3833
3963
  "else": [
3834
3964
  {
3835
- "waitForVisible": ".privacy-modal-content #formContent"
3965
+ "waitForVisible": ".privacy-sheet-content #formContent"
3836
3966
  },
3837
3967
  {
3838
3968
  "click": "#formContent .cookiepref-11m2iee-checkbox_base input:checked",
@@ -4182,26 +4312,32 @@
4182
4312
  "urlPattern": "^https://www\\.reddit\\.com/"
4183
4313
  },
4184
4314
  "prehideSelectors": [
4185
- "section:has(a[href^=\"https://www.reddit.com/policies/cookies\"])"
4315
+ "[bundlename=reddit_cookie_banner]"
4186
4316
  ],
4187
4317
  "detectCmp": [
4188
4318
  {
4189
- "exists": "section:has(a[href^=\"https://www.reddit.com/policies/cookies\"])"
4319
+ "exists": "reddit-cookie-banner"
4190
4320
  }
4191
4321
  ],
4192
4322
  "detectPopup": [
4193
4323
  {
4194
- "visible": "section:has(a[href^=\"https://www.reddit.com/policies/cookies\"])"
4324
+ "visible": "reddit-cookie-banner"
4195
4325
  }
4196
4326
  ],
4197
4327
  "optIn": [
4198
4328
  {
4199
- "waitForThenClick": "section:has(a[href^=\"https://www.reddit.com/policies/cookies\"]) section[class^='_'] > section:first-child form button"
4329
+ "waitForThenClick": [
4330
+ "reddit-cookie-banner",
4331
+ "#accept-all-cookies-button > button"
4332
+ ]
4200
4333
  }
4201
4334
  ],
4202
4335
  "optOut": [
4203
4336
  {
4204
- "waitForThenClick": "section:has(a[href^=\"https://www.reddit.com/policies/cookies\"]) section[class^='_'] > section:last-child form button"
4337
+ "waitForThenClick": [
4338
+ "reddit-cookie-banner",
4339
+ "#reject-nonessential-cookies-button > button"
4340
+ ]
4205
4341
  }
4206
4342
  ],
4207
4343
  "test": [
@@ -4591,11 +4727,11 @@
4591
4727
  {
4592
4728
  "name": "Tealium",
4593
4729
  "prehideSelectors": [
4594
- "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs,#consent-layer"
4730
+ "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs,#__tealiumImplicitmodal,#consent-layer"
4595
4731
  ],
4596
4732
  "detectCmp": [
4597
4733
  {
4598
- "exists": "#__tealiumGDPRecModal *,#__tealiumGDPRcpPrefs *"
4734
+ "exists": "#__tealiumGDPRecModal *,#__tealiumGDPRcpPrefs *,#__tealiumImplicitmodal *"
4599
4735
  },
4600
4736
  {
4601
4737
  "eval": "EVAL_TEALIUM_0"
@@ -4603,7 +4739,7 @@
4603
4739
  ],
4604
4740
  "detectPopup": [
4605
4741
  {
4606
- "visible": "#__tealiumGDPRecModal *,#__tealiumGDPRcpPrefs *",
4742
+ "visible": "#__tealiumGDPRecModal *,#__tealiumGDPRcpPrefs *,#__tealiumImplicitmodal *",
4607
4743
  "check": "any"
4608
4744
  }
4609
4745
  ],
@@ -4615,7 +4751,7 @@
4615
4751
  "eval": "EVAL_TEALIUM_DONOTSELL"
4616
4752
  },
4617
4753
  {
4618
- "hide": "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs"
4754
+ "hide": "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs,#__tealiumImplicitmodal"
4619
4755
  },
4620
4756
  {
4621
4757
  "waitForThenClick": "#cm-acceptNone,.js-accept-essential-cookies",
@@ -4644,6 +4780,36 @@
4644
4780
  }
4645
4781
  ]
4646
4782
  },
4783
+ {
4784
+ "name": "temu",
4785
+ "vendorUrl": "https://temu.com",
4786
+ "runContext": {
4787
+ "urlPattern": "^https://[^/]*temu\\.com/"
4788
+ },
4789
+ "prehideSelectors": [
4790
+ "._2d-8vq-W,._1UdBUwni"
4791
+ ],
4792
+ "detectCmp": [
4793
+ {
4794
+ "exists": "._3YCsmIaS"
4795
+ }
4796
+ ],
4797
+ "detectPopup": [
4798
+ {
4799
+ "visible": "._3YCsmIaS"
4800
+ }
4801
+ ],
4802
+ "optIn": [
4803
+ {
4804
+ "waitForThenClick": "._3fKiu5wx._3zN5SumS._3tAK973O.IYOfhWEs.VGNGF1pA"
4805
+ }
4806
+ ],
4807
+ "optOut": [
4808
+ {
4809
+ "waitForThenClick": "._3fKiu5wx._1_XToJBF._3tAK973O.IYOfhWEs.VGNGF1pA"
4810
+ }
4811
+ ]
4812
+ },
4647
4813
  {
4648
4814
  "name": "Termly",
4649
4815
  "prehideSelectors": [
@@ -4953,6 +5119,37 @@
4953
5119
  }
4954
5120
  ]
4955
5121
  },
5122
+ {
5123
+ "name": "transcend",
5124
+ "vendorUrl": "https://unknown",
5125
+ "cosmetic": true,
5126
+ "prehideSelectors": [
5127
+ "#transcend-consent-manager"
5128
+ ],
5129
+ "detectCmp": [
5130
+ {
5131
+ "exists": "#transcend-consent-manager"
5132
+ }
5133
+ ],
5134
+ "detectPopup": [
5135
+ {
5136
+ "visible": "#transcend-consent-manager"
5137
+ }
5138
+ ],
5139
+ "optIn": [
5140
+ {
5141
+ "waitForThenClick": [
5142
+ "#transcend-consent-manager",
5143
+ "#consentManagerMainDialog .inner-container button"
5144
+ ]
5145
+ }
5146
+ ],
5147
+ "optOut": [
5148
+ {
5149
+ "hide": "#transcend-consent-manager"
5150
+ }
5151
+ ]
5152
+ },
4956
5153
  {
4957
5154
  "name": "transip-nl",
4958
5155
  "runContext": {
@@ -5518,6 +5715,42 @@
5518
5715
  }
5519
5716
  ]
5520
5717
  },
5718
+ {
5719
+ "name": "webflow",
5720
+ "vendorUrl": "https://webflow.com/",
5721
+ "prehideSelectors": [
5722
+ ".fs-cc-components"
5723
+ ],
5724
+ "detectCmp": [
5725
+ {
5726
+ "exists": ".fs-cc-components"
5727
+ }
5728
+ ],
5729
+ "detectPopup": [
5730
+ {
5731
+ "visible": ".fs-cc-components"
5732
+ },
5733
+ {
5734
+ "visible": "[fs-cc=banner]"
5735
+ }
5736
+ ],
5737
+ "optIn": [
5738
+ {
5739
+ "wait": 500
5740
+ },
5741
+ {
5742
+ "waitForThenClick": "[fs-cc=banner] [fs-cc=allow]"
5743
+ }
5744
+ ],
5745
+ "optOut": [
5746
+ {
5747
+ "wait": 500
5748
+ },
5749
+ {
5750
+ "waitForThenClick": "[fs-cc=banner] [fs-cc=deny]"
5751
+ }
5752
+ ]
5753
+ },
5521
5754
  {
5522
5755
  "name": "wetransfer.com",
5523
5756
  "detectCmp": [
@@ -5777,6 +6010,34 @@
5777
6010
  }
5778
6011
  ]
5779
6012
  },
6013
+ {
6014
+ "name": "xvideos",
6015
+ "vendorUrl": "https://xvideos.com",
6016
+ "runContext": {
6017
+ "urlPattern": "^https://[^/]*xvideos\\.com/"
6018
+ },
6019
+ "prehideSelectors": [],
6020
+ "detectCmp": [
6021
+ {
6022
+ "exists": ".disclaimer-opened #disclaimer-cookies"
6023
+ }
6024
+ ],
6025
+ "detectPopup": [
6026
+ {
6027
+ "visible": ".disclaimer-opened #disclaimer-cookies"
6028
+ }
6029
+ ],
6030
+ "optIn": [
6031
+ {
6032
+ "waitForThenClick": "#disclaimer-accept_cookies"
6033
+ }
6034
+ ],
6035
+ "optOut": [
6036
+ {
6037
+ "waitForThenClick": "#disclaimer-reject_cookies"
6038
+ }
6039
+ ]
6040
+ },
5780
6041
  {
5781
6042
  "name": "Yahoo",
5782
6043
  "runContext": {
@@ -48,6 +48,7 @@
48
48
  EVAL_COMPLIANZ_BANNER_0: () => document.cookie.includes("cmplz_banner-status=dismissed"),
49
49
  EVAL_COOKIE_LAW_INFO_0: () => CLI.disableAllCookies() || CLI.reject_close() || true,
50
50
  EVAL_COOKIE_LAW_INFO_1: () => document.cookie.indexOf("cookielawinfo-checkbox-non-necessary=yes") === -1,
51
+ EVAL_COOKIE_LAW_INFO_DETECT: () => !!window.CLI,
51
52
  EVAL_COOKIE_MANAGER_POPUP_0: () => JSON.parse(document.cookie.split(";").find((c) => c.trim().startsWith("CookieLevel")).split("=")[1]).social === false,
52
53
  EVAL_COOKIEALERT_0: () => document.querySelector("body").removeAttribute("style") || true,
53
54
  EVAL_COOKIEALERT_1: () => document.querySelector("body").removeAttribute("style") || true,