Skip to content

Commit

Permalink
merge master
Browse files Browse the repository at this point in the history
  • Loading branch information
stanislav-atr committed Dec 21, 2022
2 parents 2c10348 + 049012a commit 6191100
Show file tree
Hide file tree
Showing 20 changed files with 196 additions and 89 deletions.
21 changes: 20 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,29 @@
# Scriptlets and Redirect Resources Changelog

## 1.8.0
## Unreleased 1.8.x

### Fixed

- `prevent-xhr` and `trusted-replace-xhr-response` closure bug on multiple requests [#261](https://github.com/AdguardTeam/Scriptlets/issues/261)

## Unreleased 1.7.x

### Fixed

- `prevent-addEventListener` and `log-addEventListener` loosing context when encountering already bound `.addEventListener`

## v1.7.14

### Added

* `set-constant` ADG→UBO conversion for [`emptyArr` and `emptyObj`](https://github.com/uBlockOrigin/uBlock-issues/issues/2411)


## v1.7.13

### Fixed

* `isEmptyObject` helper not counting `prototype` as an object property

## v1.7.10

Expand All @@ -20,6 +38,7 @@
- spread of args bug at `getXhrData` call for `trusted-replace-xhr-response`
- request properties array not being served to `getRequestData` and `parseMatchProps` helpers


## v1.7.3

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# AdGuard Scriptlets and Redirect resources
# AdGuard Scriptlets and Redirect Resources

AdGuard's Scriptlets and Redirect resources library which provides extended capabilities for content blocking.

Expand Down
2 changes: 1 addition & 1 deletion dist/build.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=1.7.10
version=1.7.14
2 changes: 1 addition & 1 deletion dist/redirect-files/prevent-popads-net.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
};
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function hit(source) {
if (source.verbose !== true) {
Expand Down
2 changes: 1 addition & 1 deletion dist/redirects.json
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@
],
"isBlocking": false,
"contentType": "application/javascript;base64",
"content": "IWZ1bmN0aW9uKHNvdXJjZSxhcmdzKXtjb25zdCB1cGRhdGVkQXJncz1hcmdzP1tdLmNvbmNhdChzb3VyY2UpLmNvbmNhdChhcmdzKTpbc291cmNlXTt0cnl7KGZ1bmN0aW9uKHNvdXJjZSl7dmFyIHJpZD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiw5KSx0aHJvd0Vycm9yPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKHJpZCl9O2RlbGV0ZSB3aW5kb3cuUG9wQWRzLGRlbGV0ZSB3aW5kb3cucG9wbnMsT2JqZWN0LmRlZmluZVByb3BlcnRpZXMod2luZG93LHtQb3BBZHM6e3NldDp0aHJvd0Vycm9yfSxwb3Buczp7c2V0OnRocm93RXJyb3J9fSksd2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24ocmlkKXt2YXIgbmF0aXZlT25FcnJvcj13aW5kb3cub25lcnJvcjtyZXR1cm4gZnVuY3Rpb24oZXJyb3Ipe2lmKCJzdHJpbmciPT10eXBlb2YgZXJyb3ImJi0xIT09ZXJyb3IuaW5kZXhPZihyaWQpKXJldHVybiEwO2lmKG5hdGl2ZU9uRXJyb3IgaW5zdGFuY2VvZiBGdW5jdGlvbil7Zm9yKHZhciBfbGVuPWFyZ3VtZW50cy5sZW5ndGgsYXJncz1uZXcgQXJyYXkoX2xlbj4xP19sZW4tMTowKSxfa2V5PTE7X2tleTxfbGVuO19rZXkrKylhcmdzW19rZXktMV09YXJndW1lbnRzW19rZXldO3JldHVybiBuYXRpdmVPbkVycm9yLmFwcGx5KHRoaXMsW2Vycm9yXS5jb25jYXQoYXJncykpfXJldHVybiExfX0ocmlkKS5iaW5kKCksZnVuY3Rpb24oc291cmNlKXtpZighMD09PXNvdXJjZS52ZXJib3NlKXt0cnl7dmFyIGxvZz1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLHRyYWNlPWNvbnNvbGUudHJhY2UuYmluZChjb25zb2xlKSxwcmVmaXg9c291cmNlLnJ1bGVUZXh0fHwiIjtpZihzb3VyY2UuZG9tYWluTmFtZSl7dmFyIHJ1bGVTdGFydEluZGV4LEFHX1NDUklQVExFVF9NQVJLRVI9IiMlIy8vIixVQk9fU0NSSVBUTEVUX01BUktFUj0iIyMranMiO3NvdXJjZS5ydWxlVGV4dC5pbmRleE9mKEFHX1NDUklQVExFVF9NQVJLRVIpPi0xP3J1bGVTdGFydEluZGV4PXNvdXJjZS5ydWxlVGV4dC5pbmRleE9mKEFHX1NDUklQVExFVF9NQVJLRVIpOnNvdXJjZS5ydWxlVGV4dC5pbmRleE9mKFVCT19TQ1JJUFRMRVRfTUFSS0VSKT4tMSYmKHJ1bGVTdGFydEluZGV4PXNvdXJjZS5ydWxlVGV4dC5pbmRleE9mKFVCT19TQ1JJUFRMRVRfTUFSS0VSKSk7dmFyIHJ1bGVQYXJ0PXNvdXJjZS5ydWxlVGV4dC5zbGljZShydWxlU3RhcnRJbmRleCk7cHJlZml4PSIiLmNvbmNhdChzb3VyY2UuZG9tYWluTmFtZSkuY29uY2F0KHJ1bGVQYXJ0KX1sb2coIiIuY29uY2F0KHByZWZpeCwiIHRyYWNlIHN0YXJ0IikpLHRyYWNlJiZ0cmFjZSgpLGxvZygiIi5jb25jYXQocHJlZml4LCIgdHJhY2UgZW5kIikpfWNhdGNoKGUpe30iZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93Ll9fZGVidWcmJndpbmRvdy5fX2RlYnVnKHNvdXJjZSl9fShzb3VyY2UpfSkuYXBwbHkodGhpcyx1cGRhdGVkQXJncyl9Y2F0Y2goZSl7Y29uc29sZS5sb2coZSl9fSh7bmFtZToicHJldmVudC1wb3BhZHMtbmV0IixhcmdzOltdfSxbXSk7"
"content": "IWZ1bmN0aW9uKHNvdXJjZSxhcmdzKXtjb25zdCB1cGRhdGVkQXJncz1hcmdzP1tdLmNvbmNhdChzb3VyY2UpLmNvbmNhdChhcmdzKTpbc291cmNlXTt0cnl7KGZ1bmN0aW9uKHNvdXJjZSl7dmFyIHJpZD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLDkpLHRocm93RXJyb3I9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IocmlkKX07ZGVsZXRlIHdpbmRvdy5Qb3BBZHMsZGVsZXRlIHdpbmRvdy5wb3BucyxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3aW5kb3cse1BvcEFkczp7c2V0OnRocm93RXJyb3J9LHBvcG5zOntzZXQ6dGhyb3dFcnJvcn19KSx3aW5kb3cub25lcnJvcj1mdW5jdGlvbihyaWQpe3ZhciBuYXRpdmVPbkVycm9yPXdpbmRvdy5vbmVycm9yO3JldHVybiBmdW5jdGlvbihlcnJvcil7aWYoInN0cmluZyI9PXR5cGVvZiBlcnJvciYmLTEhPT1lcnJvci5pbmRleE9mKHJpZCkpcmV0dXJuITA7aWYobmF0aXZlT25FcnJvciBpbnN0YW5jZW9mIEZ1bmN0aW9uKXtmb3IodmFyIF9sZW49YXJndW1lbnRzLmxlbmd0aCxhcmdzPW5ldyBBcnJheShfbGVuPjE/X2xlbi0xOjApLF9rZXk9MTtfa2V5PF9sZW47X2tleSsrKWFyZ3NbX2tleS0xXT1hcmd1bWVudHNbX2tleV07cmV0dXJuIG5hdGl2ZU9uRXJyb3IuYXBwbHkodGhpcyxbZXJyb3JdLmNvbmNhdChhcmdzKSl9cmV0dXJuITF9fShyaWQpLmJpbmQoKSxmdW5jdGlvbihzb3VyY2Upe2lmKCEwPT09c291cmNlLnZlcmJvc2Upe3RyeXt2YXIgbG9nPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksdHJhY2U9Y29uc29sZS50cmFjZS5iaW5kKGNvbnNvbGUpLHByZWZpeD1zb3VyY2UucnVsZVRleHR8fCIiO2lmKHNvdXJjZS5kb21haW5OYW1lKXt2YXIgcnVsZVN0YXJ0SW5kZXgsQUdfU0NSSVBUTEVUX01BUktFUj0iIyUjLy8iLFVCT19TQ1JJUFRMRVRfTUFSS0VSPSIjIytqcyI7c291cmNlLnJ1bGVUZXh0LmluZGV4T2YoQUdfU0NSSVBUTEVUX01BUktFUik+LTE/cnVsZVN0YXJ0SW5kZXg9c291cmNlLnJ1bGVUZXh0LmluZGV4T2YoQUdfU0NSSVBUTEVUX01BUktFUik6c291cmNlLnJ1bGVUZXh0LmluZGV4T2YoVUJPX1NDUklQVExFVF9NQVJLRVIpPi0xJiYocnVsZVN0YXJ0SW5kZXg9c291cmNlLnJ1bGVUZXh0LmluZGV4T2YoVUJPX1NDUklQVExFVF9NQVJLRVIpKTt2YXIgcnVsZVBhcnQ9c291cmNlLnJ1bGVUZXh0LnNsaWNlKHJ1bGVTdGFydEluZGV4KTtwcmVmaXg9IiIuY29uY2F0KHNvdXJjZS5kb21haW5OYW1lKS5jb25jYXQocnVsZVBhcnQpfWxvZygiIi5jb25jYXQocHJlZml4LCIgdHJhY2Ugc3RhcnQiKSksdHJhY2UmJnRyYWNlKCksbG9nKCIiLmNvbmNhdChwcmVmaXgsIiB0cmFjZSBlbmQiKSl9Y2F0Y2goZSl7fSJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuX19kZWJ1ZyYmd2luZG93Ll9fZGVidWcoc291cmNlKX19KHNvdXJjZSl9KS5hcHBseSh0aGlzLHVwZGF0ZWRBcmdzKX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKX19KHtuYW1lOiJwcmV2ZW50LXBvcGFkcy1uZXQiLGFyZ3M6W119LFtdKTs="
},
{
"title": "scorecardresearch-beacon",
Expand Down
4 changes: 2 additions & 2 deletions dist/redirects.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#
# AdGuard Scriptlets (Redirects Source)
# Version 1.7.10
# Version 1.7.14
#
- title: 1x1-transparent.gif
description: |-
Expand Down Expand Up @@ -3388,7 +3388,7 @@
};
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function hit(source) {
if (source.verbose !== true) {
Expand Down
34 changes: 17 additions & 17 deletions dist/scriptlets.corelibs.json

Large diffs are not rendered by default.

67 changes: 39 additions & 28 deletions dist/scriptlets.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

/**
* AdGuard Scriptlets
* Version 1.7.10
* Version 1.7.14
*/

(function () {
Expand Down Expand Up @@ -111,7 +111,7 @@
* @returns {boolean}
*/
var isEmptyObject = function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
};

/**
Expand Down Expand Up @@ -1587,7 +1587,7 @@
* Generate random six symbols id
*/
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}

/**
Expand Down Expand Up @@ -2018,7 +2018,7 @@
*
* 3. Click multiple elements by selector with a delay
* ```
* example.com#%#//scriptlet('trusted-click-element', 'button[name="agree"], button[name='check"], input[type="submit"][value="akkoord"]', '', '500')
* example.com#%#//scriptlet('trusted-click-element', 'button[name="agree"], button[name="check"], input[type="submit"][value="akkoord"]', '', '500')
* ```
*
* 4. Match cookies by keys using regex and string
Expand Down Expand Up @@ -7886,7 +7886,11 @@
var ADG_XHR_TYPE = 'xmlhttprequest';
var ADG_SET_CONSTANT_NAME = 'set-constant';
var ADG_SET_CONSTANT_EMPTY_STRING = '';
var ADG_SET_CONSTANT_EMPTY_ARRAY = 'emptyArr';
var ADG_SET_CONSTANT_EMPTY_OBJECT = 'emptyObj';
var UBO_SET_CONSTANT_EMPTY_STRING = '\'\'';
var UBO_SET_CONSTANT_EMPTY_ARRAY = '[]';
var UBO_SET_CONSTANT_EMPTY_OBJECT = '{}';
var ADG_PREVENT_FETCH_NAME = 'prevent-fetch';
var ADG_PREVENT_FETCH_EMPTY_STRING = '';
var ADG_PREVENT_FETCH_WILDCARD = '*';
Expand Down Expand Up @@ -8078,9 +8082,16 @@
parsedName = _parseRule.name,
parsedParams = _parseRule.args;
var preparedParams;
if (parsedName === ADG_SET_CONSTANT_NAME
// https://github.com/AdguardTeam/FiltersCompiler/issues/102
if (parsedName === ADG_SET_CONSTANT_NAME && parsedParams[1] === ADG_SET_CONSTANT_EMPTY_STRING) {
&& parsedParams[1] === ADG_SET_CONSTANT_EMPTY_STRING) {
preparedParams = [parsedParams[0], UBO_SET_CONSTANT_EMPTY_STRING];
} else if (parsedName === ADG_SET_CONSTANT_NAME
// https://github.com/uBlockOrigin/uBlock-issues/issues/2411
&& parsedParams[1] === ADG_SET_CONSTANT_EMPTY_ARRAY) {
preparedParams = [parsedParams[0], UBO_SET_CONSTANT_EMPTY_ARRAY];
} else if (parsedName === ADG_SET_CONSTANT_NAME && parsedParams[1] === ADG_SET_CONSTANT_EMPTY_OBJECT) {
preparedParams = [parsedParams[0], UBO_SET_CONSTANT_EMPTY_OBJECT];
} else if (parsedName === ADG_PREVENT_FETCH_NAME
// https://github.com/AdguardTeam/Scriptlets/issues/109
&& (parsedParams[0] === ADG_PREVENT_FETCH_WILDCARD || parsedParams[0] === ADG_PREVENT_FETCH_EMPTY_STRING)) {
Expand Down Expand Up @@ -13799,7 +13810,7 @@
window.onerror = createOnErrorHandler(rid).bind();
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function setPropertyAccess(object, property, descriptor) {
var currentDescriptor = Object.getOwnPropertyDescriptor(object, property);
Expand Down Expand Up @@ -13921,7 +13932,7 @@
}
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getDescriptorAddon() {
return {
Expand Down Expand Up @@ -13989,7 +14000,7 @@
window.onerror = createOnErrorHandler(rid).bind();
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function setPropertyAccess(object, property, descriptor) {
var currentDescriptor = Object.getOwnPropertyDescriptor(object, property);
Expand Down Expand Up @@ -14089,7 +14100,7 @@
}
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
var updatedArgs = args ? [].concat(source).concat(args) : [source];
try {
Expand Down Expand Up @@ -14136,7 +14147,7 @@
window.onerror = createOnErrorHandler(rid).bind();
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function setPropertyAccess(object, property, descriptor) {
var currentDescriptor = Object.getOwnPropertyDescriptor(object, property);
Expand Down Expand Up @@ -14236,7 +14247,7 @@
}
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
var updatedArgs = args ? [].concat(source).concat(args) : [source];
try {
Expand Down Expand Up @@ -14307,7 +14318,7 @@
window.onerror = createOnErrorHandler(rid).bind();
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function setPropertyAccess(object, property, descriptor) {
var currentDescriptor = Object.getOwnPropertyDescriptor(object, property);
Expand Down Expand Up @@ -14477,7 +14488,7 @@
return new RegExp(escaped);
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getNativeRegexpTest() {
return Object.getOwnPropertyDescriptor(RegExp.prototype, "test").value;
Expand Down Expand Up @@ -14843,7 +14854,7 @@
window.onerror = createOnErrorHandler(rid).bind();
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function setPropertyAccess(object, property, descriptor) {
var currentDescriptor = Object.getOwnPropertyDescriptor(object, property);
Expand Down Expand Up @@ -14962,7 +14973,7 @@
}
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
var updatedArgs = args ? [].concat(source).concat(args) : [source];
try {
Expand Down Expand Up @@ -15010,7 +15021,7 @@
window.onerror = createOnErrorHandler(rid).bind();
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function setPropertyAccess(object, property, descriptor) {
var currentDescriptor = Object.getOwnPropertyDescriptor(object, property);
Expand Down Expand Up @@ -15111,7 +15122,7 @@
}
function noopFunc() {}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
var updatedArgs = args ? [].concat(source).concat(args) : [source];
try {
Expand Down Expand Up @@ -15158,7 +15169,7 @@
window.onerror = createOnErrorHandler(rid).bind();
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function setPropertyAccess(object, property, descriptor) {
var currentDescriptor = Object.getOwnPropertyDescriptor(object, property);
Expand Down Expand Up @@ -15258,7 +15269,7 @@
}
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
var updatedArgs = args ? [].concat(source).concat(args) : [source];
try {
Expand Down Expand Up @@ -15829,7 +15840,7 @@
return new RegExp(escaped);
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getObjectEntries(object) {
var keys = Object.keys(object);
Expand Down Expand Up @@ -16018,7 +16029,7 @@
}).join(" ");
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getObjectEntries(object) {
var keys = Object.keys(object);
Expand Down Expand Up @@ -16259,7 +16270,7 @@
}
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
var updatedArgs = args ? [].concat(source).concat(args) : [source];
try {
Expand Down Expand Up @@ -17296,7 +17307,7 @@
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getRequestData(request) {
var requestInitOptions = getRequestProps();
Expand Down Expand Up @@ -17399,7 +17410,7 @@
};
}
function randomId() {
return Math.random().toString(36).substr(2, 9);
return Math.random().toString(36).slice(2, 9);
}
function hit(source) {
if (source.verbose !== true) {
Expand Down Expand Up @@ -18577,7 +18588,7 @@
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getObjectEntries(object) {
var keys = Object.keys(object);
Expand Down Expand Up @@ -19687,7 +19698,7 @@
return native(num);
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getNativeRegexpTest() {
return Object.getOwnPropertyDescriptor(RegExp.prototype, "test").value;
Expand Down Expand Up @@ -20725,7 +20736,7 @@
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getRequestData(request) {
var requestInitOptions = getRequestProps();
Expand Down Expand Up @@ -21051,7 +21062,7 @@
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
return Object.keys(obj).length === 0 && !obj.prototype;
}
function getObjectEntries(object) {
var keys = Object.keys(object);
Expand Down
Loading

0 comments on commit 6191100

Please sign in to comment.