Skip to content

AdguardTeam/tsurlfilter

Repository files navigation

AdGuard Extensions Libraries

badge-open-issues badge-closed-issues badge-license

This monorepo provides a full stack of TypeScript libraries for content blocking in browser extensions. It covers every layer — from filter list parsing and rule matching to browser extension integration and high-level extension APIs — and is used in AdGuard browser extensions and other projects.

Key Concepts

The libraries are organized in layers, each building on the previous one:

  1. Parsingcss-tokenizer and agtree turn raw filter list text into structured tokens and AST nodes.
  2. Matchingtsurlfilter takes parsed rules, builds lookup tables, and evaluates network requests and cosmetic rules against them.
  3. Extension integrationtswebextension wraps the browser WebExtension API (both MV2 and MV3) to apply filtering decisions from the engine.
  4. High-level APIadguard-api and adguard-api-mv3 add filter list management (downloading, caching, auto-updates) on top of tswebextension.

Supporting packages include logger (logging), dnr-rulesets (prebuilt Declarative Net Request rulesets for MV3), and eslint-plugin-logger-context (ESLint rule for logger call formatting).

Packages

Core Libraries

Package Description
@adguard/tswebextension Wraps the browser WebExtension API to integrate tsurlfilter into MV2 and MV3 extensions.
@adguard/tsurlfilter Content blocking engine — parses AdGuard rules, matches requests, and provides a declarative converter.
@adguard/agtree Universal adblock filter list parser, converter, and validator producing a detailed AST.
@adguard/dnr-rulesets CLI and library for building and loading prebuilt AdGuard DNR rulesets for MV3 extensions.
@adguard/api High-level filtering API for MV2 extensions — manages filter lists and delegates blocking to tswebextension.
@adguard/api-mv3 High-level filtering API for MV3 extensions — MV3 counterpart of @adguard/api.
@adguard/logger Lightweight logging library with configurable levels and custom writers.
@adguard/css-tokenizer Fast, spec-compliant CSS tokenizer for standard and Extended CSS.
@adguard/eslint-plugin-logger-context ESLint plugin that enforces context tags in @adguard/logger calls.

Examples and Benchmarks

Package Description
examples/adguard-api Sample MV2 extension using @adguard/api.
examples/adguard-api-mv3 Sample MV3 extension using @adguard/api-mv3.
examples/tswebextension-mv2 Sample MV2 extension using @adguard/tswebextension directly.
examples/tswebextension-mv3 Sample MV3 extension using @adguard/tswebextension directly.
benchmarks/* Performance benchmarks for agtree, css-tokenizer, and tsurlfilter.

Dependency Tree

graph TD
    css-tokenizer --> agtree
    css-tokenizer --> tsurlfilter
    agtree --> tsurlfilter
    agtree --> tswebextension
    tsurlfilter --> tswebextension
    tsurlfilter --> dnr-rulesets
    logger --> tswebextension
    logger --> dnr-rulesets
    tswebextension --> api
    tswebextension --> api-mv3
Loading

Documentation

See each package's README for installation and usage instructions.

About

AdGuard content blocking library

Resources

License

Stars

Watchers

Forks

Contributors