diff --git a/dist/build.txt b/dist/build.txt index dd13d691..96bce640 100644 --- a/dist/build.txt +++ b/dist/build.txt @@ -1 +1 @@ -version=1.9.58 \ No newline at end of file +version=1.9.61 \ No newline at end of file diff --git a/dist/redirects.yml b/dist/redirects.yml index 6f83d26b..7a8655f2 100644 --- a/dist/redirects.yml +++ b/dist/redirects.yml @@ -1,6 +1,6 @@ # # AdGuard Scriptlets (Redirects Source) -# Version 1.9.58 +# Version 1.9.61 # - title: 1x1-transparent.gif added: v1.0.4 diff --git a/dist/scriptlets.corelibs.json b/dist/scriptlets.corelibs.json index 5e7776ba..b066645e 100644 --- a/dist/scriptlets.corelibs.json +++ b/dist/scriptlets.corelibs.json @@ -1,5 +1,5 @@ { - "version": "1.9.58", + "version": "1.9.61", "scriptlets": [ { "names": [ diff --git a/dist/scriptlets.js b/dist/scriptlets.js index 0a53a6d8..5f2986fc 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.9.58 + * Version 1.9.61 */ (function () { @@ -10394,6 +10394,7 @@ var REMOVE_ATTR_ALIASES = scriptletList[REMOVE_ATTR_METHOD].names; var REMOVE_CLASS_ALIASES = scriptletList[REMOVE_CLASS_METHOD].names; var REMOVE_ATTR_CLASS_APPLYING = ['asap', 'stay', 'complete']; + var ABP_RESOURCE_MARKER = 'abp-resource:'; /** * Possible rule origins. @@ -10668,10 +10669,11 @@ }; /** - * Converts UBO scriptlet rule to AdGuard one + * Converts AdGuard scriptlet rule to UBO syntax. * * @param rule AdGuard scriptlet rule * @returns UBO scriptlet rule + * or undefined if `rule` is not valid AdGuard scriptlet rule. */ var convertAdgScriptletToUbo = function convertAdgScriptletToUbo(rule) { var res; @@ -10955,6 +10957,37 @@ return "".concat(basePart, "$").concat(uboModifiers); }; + /** + * Converts a redirect name to ADG compatible one, if possible + * + * @param name Redirect name to convert + * @returns Converted ADG compatible redirect name or `undefined` if the redirect isn't supported + */ + var convertRedirectNameToAdg = function convertRedirectNameToAdg(name) { + var nameToCheck = name.trim(); + + // Check if the redirect is already ADG compatible + if (validator.REDIRECT_RULE_TYPES.ADG.compatibility[nameToCheck]) { + return nameToCheck; + } + + // Convert uBO redirects to ADG + if (validator.REDIRECT_RULE_TYPES.UBO.compatibility[nameToCheck]) { + return validator.REDIRECT_RULE_TYPES.UBO.compatibility[nameToCheck]; + } + + // Convert ABP redirects to ADG + // AGTree parses '$rewrite=abp-resource:blank-js' as 'rewrite' modifier with + // 'abp-resource:blank-js' value. So at this point we have to check if the + // redirect name starts with 'abp-resource:' and remove it if it does. + if (nameToCheck.startsWith(ABP_RESOURCE_MARKER)) { + nameToCheck = nameToCheck.slice(ABP_RESOURCE_MARKER.length).trim(); + } + + // This also returns `undefined` if the redirect isn't supported + return validator.REDIRECT_RULE_TYPES.ABP.compatibility[nameToCheck]; + }; + /** * @redirect google-analytics * @@ -16653,6 +16686,7 @@ convertUboRedirectToAdg, convertAbpRedirectToAdg, convertRedirectToAdg, + convertRedirectNameToAdg, convertAdgRedirectToUbo }; diff --git a/dist/umd/scriptlets.d.ts b/dist/umd/scriptlets.d.ts index ec718fb6..a20033d8 100644 --- a/dist/umd/scriptlets.d.ts +++ b/dist/umd/scriptlets.d.ts @@ -190,5 +190,12 @@ declare module '@adguard/scriptlets' { * @param rule */ convertRedirectToAdg(rule: string): string; + + /** + * Converts a redirect name to AdGuard one + * + * @param name + */ + convertRedirectNameToAdg(name: string): string | undefined; }; } diff --git a/dist/umd/scriptlets.umd.js b/dist/umd/scriptlets.umd.js index a048bb22..83219def 100644 --- a/dist/umd/scriptlets.umd.js +++ b/dist/umd/scriptlets.umd.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.9.58 + * Version 1.9.61 */ (function (factory) { @@ -10396,6 +10396,7 @@ var REMOVE_ATTR_ALIASES = scriptletList[REMOVE_ATTR_METHOD].names; var REMOVE_CLASS_ALIASES = scriptletList[REMOVE_CLASS_METHOD].names; var REMOVE_ATTR_CLASS_APPLYING = ['asap', 'stay', 'complete']; + var ABP_RESOURCE_MARKER = 'abp-resource:'; /** * Possible rule origins. @@ -10670,10 +10671,11 @@ }; /** - * Converts UBO scriptlet rule to AdGuard one + * Converts AdGuard scriptlet rule to UBO syntax. * * @param rule AdGuard scriptlet rule * @returns UBO scriptlet rule + * or undefined if `rule` is not valid AdGuard scriptlet rule. */ var convertAdgScriptletToUbo = function convertAdgScriptletToUbo(rule) { var res; @@ -10957,6 +10959,37 @@ return "".concat(basePart, "$").concat(uboModifiers); }; + /** + * Converts a redirect name to ADG compatible one, if possible + * + * @param name Redirect name to convert + * @returns Converted ADG compatible redirect name or `undefined` if the redirect isn't supported + */ + var convertRedirectNameToAdg = function convertRedirectNameToAdg(name) { + var nameToCheck = name.trim(); + + // Check if the redirect is already ADG compatible + if (validator.REDIRECT_RULE_TYPES.ADG.compatibility[nameToCheck]) { + return nameToCheck; + } + + // Convert uBO redirects to ADG + if (validator.REDIRECT_RULE_TYPES.UBO.compatibility[nameToCheck]) { + return validator.REDIRECT_RULE_TYPES.UBO.compatibility[nameToCheck]; + } + + // Convert ABP redirects to ADG + // AGTree parses '$rewrite=abp-resource:blank-js' as 'rewrite' modifier with + // 'abp-resource:blank-js' value. So at this point we have to check if the + // redirect name starts with 'abp-resource:' and remove it if it does. + if (nameToCheck.startsWith(ABP_RESOURCE_MARKER)) { + nameToCheck = nameToCheck.slice(ABP_RESOURCE_MARKER.length).trim(); + } + + // This also returns `undefined` if the redirect isn't supported + return validator.REDIRECT_RULE_TYPES.ABP.compatibility[nameToCheck]; + }; + /** * @redirect google-analytics * @@ -16655,6 +16688,7 @@ convertUboRedirectToAdg, convertAbpRedirectToAdg, convertRedirectToAdg, + convertRedirectNameToAdg, convertAdgRedirectToUbo };