SafariConverterLib
SafariConverterLib copied to clipboard
Swift library that converts AdGuard rules to Safari content blocking rules
Here's the definition: https://adguard.com/kb/general/ad-filtering/create-own-filters/#strict-third-party-modifier Adding support for it should be relatively straightforward. Once it's added the documentation in the knowledge base should be updated.
### Please answer the following questions for yourself before submitting an issue - [X] Filters were updated before reproducing an issue - [X] I checked the [knowledge base](https://adguard.com/kb/) and found...
Currently, there's this limitation: - `urlblock`, `genericblock`, `generichide`, `elemhide`, `specifichide`, and `jsinject` modifiers can be used only as a single modifier in a rule. It's not clear why would we...
Currently, there is this limitation: `@@||sub.example.org^$specifichide` doesn't disable `test.sub.example.org##.banner` and `example.org##.banner` It can be lifted if we change the way the domains are scanned.
This can be achieved by limiting `resource-types` that `$urlblock` rule is applied to. If we exclude `document` from the list, the rule will stop disabling cosmetics.
In the current implementation `$genericblock` is basically the same as `$document`, i.e. it disables filtering completely. This implementation can be improved if we change the way the list is ordered....
Exception rules in Safari rely on the rule type `ignore-previous-rules` so to make it work we have to order the rules in a specific order. Exception rules without modifiers are...
See the documentation here: https://adguard.com/kb/general/ad-filtering/create-own-filters/#non-basic-url-modifier
Here's the idea: ```adblock example.org,~sub.example.org##.banner ``` Could be converted to something like that: ```json { "url-filter": "example.org", "unless-domain": ["*sub.example.org"] } ```
In newer Safari versions there's a resource type `svg-document` that we don't take into account: https://developer.apple.com/documentation/safariservices/creating-a-content-blocker#:~:text=any%20untyped%20load)%2C-,svg%2Ddocument,-%2C%20media%2C We should test for which requests this resource type is used and then decide...