mirror of
https://github.com/gorhill/uBlock.git
synced 2026-03-11 09:04:36 +00:00
Regex-based static network filters are those most likely to cause performance degradation, and as such the best guard against undue performance degradation caused by regex-based filters is the ability to extract valid and good tokens from regex patterns. This commit introduces a complete regex parser so that the static network filtering engine can now safely extract tokens regardless of the complexity of the regex pattern. The regex parser is a library imported from: https://github.com/foo123/RegexAnalyzer The syntax highlighter adds an underline to regex-based filters as a visual aid to filter authors so as to avoid mistakenly creating regex-based filters. This commit further colors the underline as a warning when a regex-based filter is found to be untokenizable. Filter list authors are invited to spot these untokenizable regex-based filters in their lists to verify that no mistake were made for those filters, causing them to be untokenizabke. For example, what appears to be a mistake: /^https?:\/\/.*\/sw.js?.[a-zA-Z0-9%]{50,}/ Though the mistake is minor, the regex-based filter above is untokenizable as a result, and become tokenizable when the `.` is properly escaped: /^https?:\/\/.*\/sw\.js?.[a-zA-Z0-9%]{50,}/ Filter list authors can use this search expression in the asset viewer to find instances of regex-based filters: /^(@@)?\/[^\n]+\/(\$|$)/
50 lines
1.9 KiB
HTML
50 lines
1.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>uBlock Origin</title>
|
|
</head>
|
|
<body>
|
|
<script src="js/console.js"></script>
|
|
<script src="lib/lz4/lz4-block-codec-any.js"></script>
|
|
<script src="lib/punycode.js"></script>
|
|
<script src="lib/publicsuffixlist/publicsuffixlist.js"></script>
|
|
<script src="lib/regexanalyzer/regex.js"></script>
|
|
<script src="js/webext.js"></script>
|
|
<script src="js/vapi.js"></script>
|
|
<script src="js/vapi-common.js"></script>
|
|
<script src="js/vapi-background.js"></script>
|
|
<script src="js/vapi-webrequest.js"></script><!-- Forks can pick the webext, chromium, or their own implementation -->
|
|
<script src="js/background.js"></script>
|
|
<script src="js/traffic.js"></script>
|
|
<script src="js/hntrie.js"></script>
|
|
<script src="js/strie.js"></script>
|
|
<script src="js/utils.js"></script>
|
|
<script src="js/uritools.js"></script>
|
|
<script src="js/lz4.js"></script>
|
|
<script src="js/cachestorage.js"></script>
|
|
<script src="js/assets.js"></script>
|
|
<script src="js/filtering-context.js"></script>
|
|
<script src="js/redirect-engine.js"></script>
|
|
<script src="js/dynamic-net-filtering.js"></script>
|
|
<script src="js/url-net-filtering.js"></script>
|
|
<script src="js/static-filtering-parser.js"></script>
|
|
<script src="js/static-net-filtering.js"></script>
|
|
<script src="js/static-ext-filtering.js"></script>
|
|
<script src="js/cosmetic-filtering.js"></script>
|
|
<script src="js/scriptlet-filtering.js"></script>
|
|
<script src="js/html-filtering.js"></script>
|
|
<script src="js/hnswitches.js"></script>
|
|
<script src="js/ublock.js"></script>
|
|
<script src="js/storage.js"></script>
|
|
<script src="js/logger.js"></script>
|
|
<script src="js/pagestore.js"></script>
|
|
<script src="js/tab.js"></script>
|
|
<script src="js/messaging.js"></script>
|
|
<script src="js/text-encode.js"></script>
|
|
<script src="js/contextmenu.js"></script>
|
|
<script src="js/reverselookup.js"></script>
|
|
<script src="js/start.js"></script>
|
|
<script src="js/commands.js"></script>
|
|
</body>
|
|
</html>
|