AdGuard Extensions Libraries

March 17, 2026 · View on GitHub

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

PackageDescription
@adguard/tswebextensionWraps the browser WebExtension API to integrate tsurlfilter into MV2 and MV3 extensions.
@adguard/tsurlfilterContent blocking engine — parses AdGuard rules, matches requests, and provides a declarative converter.
@adguard/agtreeUniversal adblock filter list parser, converter, and validator producing a detailed AST.
@adguard/dnr-rulesetsCLI and library for building and loading prebuilt AdGuard DNR rulesets for MV3 extensions.
@adguard/apiHigh-level filtering API for MV2 extensions — manages filter lists and delegates blocking to tswebextension.
@adguard/api-mv3High-level filtering API for MV3 extensions — MV3 counterpart of @adguard/api.
@adguard/loggerLightweight logging library with configurable levels and custom writers.
@adguard/css-tokenizerFast, spec-compliant CSS tokenizer for standard and Extended CSS.
@adguard/eslint-plugin-logger-contextESLint plugin that enforces context tags in @adguard/logger calls.

Examples and Benchmarks

PackageDescription
examples/adguard-apiSample MV2 extension using @adguard/api.
examples/adguard-api-mv3Sample MV3 extension using @adguard/api-mv3.
examples/tswebextension-mv2Sample MV2 extension using @adguard/tswebextension directly.
examples/tswebextension-mv3Sample 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

Documentation

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