Public record
Software health reportschema 0.27.0 · metrics 2.3.1 · 2026-07-26 08:10 UTC

AdguardTeam / FiltersDownloader

Pre-processing library for filters subscriptions

TypeScriptGPL-3.0★ 18 stars⑂ 3 forkssince Apr 2018View on GitHub ↗

AdguardTeam/FiltersDownloader holds a health index of 59 out of 100, placing it in the Moderate band. It scores highest on AI Readiness (74/100) and lowest on Security (36/100). It was last updated 11 days ago. 2 contributors account for most of its recent work.

59
overall / 100
Moderate

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean, calibrated against the distribution of the public record so bands carry percentile meaning; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At Risk ceiling of 34.

59
Exceptional93-100The record's top tier (≈ top 5%); essentially all checked criteria met
Excellent80-92Strong across the board; minor gaps
Good65-79Healthy; gaps are limited and manageable
Moderate50-64Acceptable with notable gaps; review recommended
Weak35-49Material weaknesses across several areas
At Risk20-34Significant weaknesses; adoption warrants caution
Critical1-19Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

The weighted overall 56 is calibrated to 59 on the published index scale (record calibration 2026-08-02).

Ownership

AdGuardOrganization
3,930 followers116 public repossince Aug 2014

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
npm@adguard/filters-downloaderpoints to another repo — not scored2.4.510,1373511 days ago

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

64Moderate · 21% of overall
How it's scored
28.8/36Push recency — last push 11 days ago
6.2/36Commit cadence — 9/52 weeks with commits
11.3/18Commit volume — 17 commits in the last year
5/10OpenSSF Scorecard: Maintained — 6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5
Inputs used
commits_last_year17
human_commit_share0.99
days_since_last_push11
active_weeks_last_year9
How it's scored
27/27Ships releases — 35 releases published
36/36Release recency — latest release 11 days ago
19.8/27Release cadence — a release every ~64.3 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count35
latest_release_tagv2.4.5
releases_from_tagsno
days_since_latest_release11
mean_days_between_releases64.3

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

39Weak · 17% of overall
How it's scored
20/60Stars — 18 stars
2.5/25Forks — 3 forks
6.5/15Watchers — 16 watchers
Inputs used
forks3
stars18
watchers16
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (GPL-3.0)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
readme_badges
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_services
has_pull_request_templateno

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

58Moderate · 23% of overall
How it's scored
25.2/54Bus factor — 2 contributor(s) cover half of all commits
15.9/22.5Commit distribution — top contributor authored 30% of commits
12.2/13.5Contributor breadth — 9 contributors
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Inputs used
bus_factor2
contributors_sampled9
top_contributor_share0.295
How it's scored
31.5/42Issue resolution — 75% of issues closed
0/30PR acceptance — 0/29 decided PRs merged
0/13Newcomer PR acceptance — no first-time contributor's PR decided in 30d
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Inputs used
merged_prs0
open_issues1
closed_issues3
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0.75
closed_unmerged_prs29
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Excluded from scoring (no data or not applicable): newcomer_pr_acceptance. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
25/25Owner reach — 3,930 followers of AdguardTeam
25/25Track record — 116 public repos, account ~11 yr old
Inputs used
followers3,930
owner_typeOrganization
is_verified
owner_loginAdguardTeam
public_repos116
account_age_days4,372

Engineering Quality

Are baseline engineering and documentation practices in place?

72Good · 19% of overall
How it's scored
24/24CI workflows — 4 workflow(s)
24/24Tests present
16/16Linter config — .eslintrc.js
0/9.6Pre-commit hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — no data
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.

Documentation

60Moderate
How it's scored
30/30README
0/25Documentation directory
0/15Documentation / homepage site
10/10Repository description
10/10Topics — 1 topics
10/10Wiki
Inputs used
topicsopen-source
has_wikiyes
homepage
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

36Weak · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — no data
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
3.8/7.5Maintained — 6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5
0/5Packaging — no data
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 84 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate2.6
Excluded from scoring (no data or not applicable): ci_tests, packaging. Remaining weights renormalized.
How it's scored
10.6/35Direct dependencies free of known advisories — 1 affected: axios 1.15.0 (high 8.7)
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
40/40No advisories left outstanding — no advisory has been public longer than 90 days
Inputs used
sourceosv
advisories28
affected_packages1
assessed_packages29
unassessed_packages0
affected_by_severityhigh 1
direct_affected_packages1
Matched the npm:@adguard/filters-downloader@2.4.5 runtime dependency closure — what installing the published package pulls in — 29 packages. Reachability is not analyzed.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight (4%): agent tooling is a real maintenance signal, but a repository with none can still reach 100/100.

74Good · 4% of overall
How it's scored
45/45Agent instructions — AGENTS.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 91 of 99 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.919
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes8,115
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — .eslintrc.js
11/11Static type checking — tsconfig.json
10/10Reproducible environment — Dockerfile, lockfile
2/10Demonstrated agent practice — 1 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilespnpm-lock.yaml
has_dockerfileyes
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configstsconfig.json
agent_commit_share0.01
toolchain_manifests
dependency_bot_commit_share0
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
55/55Manageable file sizes — 0/18 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes38,026
source_files_sampled18
oversized_source_files0

Key facts

18GitHub stars
9contributors
17commits, last 12 months
11days since last push
35releases
2bus factor
1open issues
npmpackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • npm package '@adguard/filters-downloader' points at a different repository (https://github.com/AdGuardSoftwareLimited/ext-filters-downloader); excluded from ecosystem scoring

More detail

Star and fork history 0 ★ / 3 ⇿
0Stars
3Forks
30Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

12233312019-042022-042025-05
Major 0Minor 3Patch 27

Each point covers 6 days.

OpenSSF Scorecard 2.6 / 10
2.6aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-26 08:10 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/aCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
5Maintained6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5
n/aPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities84 existing vulnerabilities detected
Direct dependencies 3
RegistryPackageVersion constraintManifest
npm@adguard/diff-builder1.1.4package.json
npmaxios1.15.0package.json
npmcrypto-js4.2.0package.json
All dependencies 683

Full resolved dependency set from the GitHub dependency graph: 3 direct and 680 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
npm@adguard/diff-builder1.0.17direct
npmaxios1.6.2direct
npmcrypto-js4.2.0direct
npm@aashutoshrathi/word-wrap1.2.6indirect
npm@ampproject/remapping2.2.1indirect
npm@babel/code-frame7.23.5indirect
npm@babel/compat-data7.23.5indirect
npm@babel/core7.23.6indirect
npm@babel/generator7.23.6indirect
npm@babel/helper-compilation-targets7.23.6indirect
npm@babel/helper-environment-visitor7.22.20indirect
npm@babel/helper-function-name7.23.0indirect
npm@babel/helper-hoist-variables7.22.5indirect
npm@babel/helper-module-imports7.22.15indirect
npm@babel/helper-module-transforms7.23.3indirect
npm@babel/helper-plugin-utils7.22.5indirect
npm@babel/helper-simple-access7.22.5indirect
npm@babel/helper-split-export-declaration7.22.6indirect
npm@babel/helper-string-parser7.23.4indirect
npm@babel/helper-validator-identifier7.22.20indirect
npm@babel/helper-validator-option7.23.5indirect
npm@babel/helpers7.23.6indirect
npm@babel/highlight7.23.4indirect
npm@babel/parser7.23.6indirect
npm@babel/plugin-syntax-async-generators7.8.4indirect
npm@babel/plugin-syntax-bigint7.8.3indirect
npm@babel/plugin-syntax-class-properties7.12.13indirect
npm@babel/plugin-syntax-import-meta7.10.4indirect
npm@babel/plugin-syntax-json-strings7.8.3indirect
npm@babel/plugin-syntax-jsx7.23.3indirect
npm@babel/plugin-syntax-logical-assignment-operators7.10.4indirect
npm@babel/plugin-syntax-nullish-coalescing-operator7.8.3indirect
npm@babel/plugin-syntax-numeric-separator7.10.4indirect
npm@babel/plugin-syntax-object-rest-spread7.8.3indirect
npm@babel/plugin-syntax-optional-catch-binding7.8.3indirect
npm@babel/plugin-syntax-optional-chaining7.8.3indirect
npm@babel/plugin-syntax-top-level-await7.14.5indirect
npm@babel/plugin-syntax-typescript7.23.3indirect
npm@babel/template7.22.15indirect
npm@babel/traverse7.23.6indirect
npm@babel/types7.23.6indirect
npm@bcoe/v8-coverage0.2.3indirect
npm@cspotcode/source-map-support0.8.1indirect
npm@es-joy/jsdoccomment0.41.0indirect
npm@eslint-community/eslint-utils4.4.0indirect
npm@eslint-community/regexpp4.10.0indirect
npm@eslint/eslintrc2.1.4indirect
npm@eslint/js8.56.0indirect
npm@humanwhocodes/config-array0.11.13indirect
npm@humanwhocodes/module-importer1.0.1indirect
npm@humanwhocodes/object-schema2.0.1indirect
npm@isaacs/cliui8.0.2indirect
npm@istanbuljs/load-nyc-config1.1.0indirect
npm@istanbuljs/schema0.1.3indirect
npm@jest/console29.7.0indirect
npm@jest/core29.7.0indirect
npm@jest/create-cache-key-function27.5.1indirect
npm@jest/environment29.7.0indirect
npm@jest/expect29.7.0indirect
npm@jest/expect-utils29.7.0indirect
npm@jest/fake-timers29.7.0indirect
npm@jest/globals29.7.0indirect
npm@jest/reporters29.7.0indirect
npm@jest/schemas29.6.3indirect
npm@jest/source-map29.6.3indirect
npm@jest/test-result29.7.0indirect
npm@jest/test-sequencer29.7.0indirect
npm@jest/transform29.7.0indirect
npm@jest/types27.5.1indirect
npm@jest/types29.6.3indirect
npm@jridgewell/gen-mapping0.3.3indirect
npm@jridgewell/resolve-uri3.1.1indirect
npm@jridgewell/set-array1.1.2indirect
npm@jridgewell/sourcemap-codec1.4.15indirect
npm@jridgewell/trace-mapping0.3.20indirect
npm@jridgewell/trace-mapping0.3.9indirect
npm@nodelib/fs.scandir2.1.5indirect
npm@nodelib/fs.stat2.0.5indirect
npm@nodelib/fs.walk1.2.8indirect
npm@pkgjs/parseargs0.11.0indirect
npm@rollup/plugin-commonjs25.0.7indirect
npm@rollup/plugin-json6.1.0indirect
npm@rollup/plugin-node-resolve15.2.3indirect
npm@rollup/plugin-typescript11.1.5indirect
npm@rollup/pluginutils5.1.0indirect
npm@rollup/rollup-android-arm-eabi4.9.1indirect
npm@rollup/rollup-android-arm644.9.1indirect
npm@rollup/rollup-darwin-arm644.9.1indirect
npm@rollup/rollup-darwin-x644.9.1indirect
npm@rollup/rollup-linux-arm-gnueabihf4.9.1indirect
npm@rollup/rollup-linux-arm64-gnu4.9.1indirect
npm@rollup/rollup-linux-arm64-musl4.9.1indirect
npm@rollup/rollup-linux-riscv64-gnu4.9.1indirect
npm@rollup/rollup-linux-x64-gnu4.9.1indirect
npm@rollup/rollup-linux-x64-musl4.9.1indirect
npm@rollup/rollup-win32-arm64-msvc4.9.1indirect
npm@rollup/rollup-win32-ia32-msvc4.9.1indirect
npm@rollup/rollup-win32-x64-msvc4.9.1indirect
npm@sinclair/typebox0.27.8indirect
npm@sinonjs/commons3.0.0indirect
npm@sinonjs/fake-timers10.3.0indirect
npm@swc-node/core1.12.0indirect
npm@swc-node/register1.8.0indirect
npm@swc-node/sourcemap-support0.4.0indirect
npm@swc/core1.4.2indirect
npm@swc/core-darwin-arm641.4.2indirect
npm@swc/core-darwin-x641.4.2indirect
npm@swc/core-linux-arm-gnueabihf1.4.2indirect
npm@swc/core-linux-arm64-gnu1.4.2indirect
npm@swc/core-linux-arm64-musl1.4.2indirect
npm@swc/core-linux-x64-gnu1.4.2indirect
npm@swc/core-linux-x64-musl1.4.2indirect
npm@swc/core-win32-arm64-msvc1.4.2indirect
npm@swc/core-win32-ia32-msvc1.4.2indirect
npm@swc/core-win32-x64-msvc1.4.2indirect
npm@swc/counter0.1.3indirect
npm@swc/helpers0.5.6indirect
npm@swc/jest0.2.29indirect
npm@swc/types0.1.5indirect
npm@tsconfig/node101.0.9indirect
npm@tsconfig/node121.0.11indirect
npm@tsconfig/node141.0.3indirect
npm@tsconfig/node161.0.4indirect
npm@types/babel__core7.20.5indirect
npm@types/babel__generator7.6.8indirect
npm@types/babel__template7.4.4indirect
npm@types/babel__traverse7.20.4indirect
npm@types/body-parser1.19.5indirect
npm@types/connect3.4.38indirect
npm@types/crypto-js4.2.2indirect
npm@types/estree1.0.5indirect
npm@types/express4.17.21indirect
npm@types/express-serve-static-core4.17.41indirect
npm@types/graceful-fs4.1.9indirect
npm@types/http-errors2.0.4indirect
npm@types/istanbul-lib-coverage2.0.6indirect
npm@types/istanbul-lib-report3.0.3indirect
npm@types/istanbul-reports3.0.4indirect
npm@types/json-schema7.0.15indirect
npm@types/json50.0.29indirect
npm@types/mime1.3.5indirect
npm@types/mime3.0.4indirect
npm@types/node20.10.5indirect
npm@types/qs6.9.10indirect
npm@types/qunit2.19.9indirect
npm@types/range-parser1.2.7indirect
npm@types/resolve1.20.2indirect
npm@types/semver7.5.6indirect
npm@types/send0.17.4indirect
npm@types/serve-static1.15.5indirect
npm@types/stack-utils2.0.3indirect
npm@types/yargs16.0.9indirect
npm@types/yargs17.0.32indirect
npm@types/yargs-parser21.0.3indirect
npm@typescript-eslint/eslint-plugin6.15.0indirect
npm@typescript-eslint/parser6.15.0indirect
npm@typescript-eslint/scope-manager6.15.0indirect
npm@typescript-eslint/type-utils6.15.0indirect
npm@typescript-eslint/types6.15.0indirect
npm@typescript-eslint/typescript-estree6.15.0indirect
npm@typescript-eslint/utils6.15.0indirect
npm@typescript-eslint/visitor-keys6.15.0indirect
npm@ungap/structured-clone1.2.0indirect
npmabbrev1.0.9indirect
npmabbrev1.1.1indirect
npmaccepts1.3.8indirect
npmacorn8.11.2indirect
npmacorn-jsx5.3.2indirect
npmacorn-walk8.3.1indirect
npmajv6.12.6indirect
npmamdefine1.0.1indirect
npmansi-escapes4.3.2indirect
npmansi-escapes5.0.0indirect
npmansi-regex5.0.1indirect
npmansi-regex6.0.1indirect
npmansi-styles3.2.1indirect
npmansi-styles4.3.0indirect
npmansi-styles5.2.0indirect
npmansi-styles6.2.1indirect
npmanymatch3.1.3indirect
npmare-docs-informative0.0.2indirect
npmarg4.1.3indirect
npmargparse1.0.10indirect
npmargparse2.0.1indirect
npmargsparser0.0.7indirect
npmarray-buffer-byte-length1.0.0indirect
npmarray-flatten1.1.1indirect
npmarray-includes3.1.7indirect
npmarray-union2.1.0indirect
npmarray.prototype.findlastindex1.2.3indirect
npmarray.prototype.flat1.3.2indirect
npmarray.prototype.flatmap1.3.2indirect
npmarraybuffer.prototype.slice1.0.2indirect
npmasync1.5.2indirect
npmasynckit0.4.0indirect
npmavailable-typed-arrays1.0.5indirect
npmbabel-jest29.7.0indirect
npmbabel-plugin-istanbul6.1.1indirect
npmbabel-plugin-jest-hoist29.6.3indirect
npmbabel-preset-current-node-syntax1.0.1indirect
npmbabel-preset-jest29.6.3indirect
npmbalanced-match1.0.2indirect
npmbody-parser1.20.1indirect
npmbrace-expansion1.1.11indirect
npmbrace-expansion2.0.1indirect
npmbraces3.0.2indirect
npmbrowserslist4.22.2indirect
npmbser2.1.1indirect
npmbuffer-from1.1.2indirect
npmbuiltin-modules3.3.0indirect
npmbytes3.1.2indirect
npmcall-bind1.0.5indirect
npmcallsites3.1.0indirect
npmcamelcase5.3.1indirect
npmcamelcase6.3.0indirect
npmcaniuse-lite1.0.30001570indirect
npmchalk2.4.2indirect
npmchalk4.1.2indirect
npmchalk5.3.0indirect
npmchar-regex1.0.2indirect
npmci-info3.9.0indirect
npmcjs-module-lexer1.2.3indirect
npmcli-cursor4.0.0indirect
npmcli-table0.3.11indirect
npmcli-truncate3.1.0indirect
npmcliui8.0.1indirect
npmco4.6.0indirect
npmcollect-v8-coverage1.0.2indirect
npmcolor-convert1.9.3indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.3indirect
npmcolor-name1.1.4indirect
npmcolorette2.0.20indirect
npmcolors1.0.3indirect
npmcombined-stream1.0.8indirect
npmcommander11.0.0indirect
npmcommander11.1.0indirect
npmcommander7.2.0indirect
npmcomment-parser1.4.1indirect
npmcommondir1.0.1indirect
npmconcat-map0.0.1indirect
npmconfusing-browser-globals1.0.11indirect
npmcontent-disposition0.5.4indirect
npmcontent-type1.0.5indirect
npmconvert-source-map2.0.0indirect
npmcookie0.5.0indirect
npmcookie-signature1.0.6indirect
npmcreate-jest29.7.0indirect
npmcreate-require1.1.1indirect
npmcross-spawn7.0.3indirect
npmdebug2.6.9indirect
npmdebug3.2.7indirect
npmdebug4.3.4indirect
npmdedent1.5.1indirect
npmdeep-is0.1.4indirect
npmdeepmerge4.3.1indirect
npmdefine-data-property1.1.1indirect
npmdefine-properties1.2.1indirect
npmdelayed-stream1.0.0indirect
npmdepd2.0.0indirect
npmdestroy1.2.0indirect
npmdetect-newline3.1.0indirect
npmdiff4.0.2indirect
npmdiff-sequences29.6.3indirect
npmdir-glob3.0.1indirect
npmdoctrine2.1.0indirect
npmdoctrine3.0.0indirect
npmeastasianwidth0.2.0indirect
npmee-first1.1.1indirect
npmelectron-to-chromium1.4.615indirect
npmemittery0.13.1indirect
npmemoji-regex8.0.0indirect
npmemoji-regex9.2.2indirect
npmencodeurl1.0.2indirect
npmerror-ex1.3.2indirect
npmes-abstract1.22.3indirect
npmes-set-tostringtag2.0.2indirect
npmes-shim-unscopables1.0.2indirect
npmes-to-primitive1.2.1indirect
npmescalade3.1.1indirect
npmescape-html1.0.3indirect
npmescape-string-regexp1.0.5indirect
npmescape-string-regexp2.0.0indirect
npmescape-string-regexp4.0.0indirect
npmescodegen1.8.1indirect
npmeslint8.56.0indirect
npmeslint-config-airbnb-base15.0.0indirect
npmeslint-config-airbnb-typescript17.1.0indirect
npmeslint-import-resolver-node0.3.9indirect
npmeslint-module-utils2.8.0indirect
npmeslint-plugin-import2.29.1indirect
npmeslint-plugin-import-newlines1.3.4indirect
npmeslint-plugin-jsdoc46.9.1indirect
npmeslint-scope7.2.2indirect
npmeslint-visitor-keys3.4.3indirect
npmespree9.6.1indirect
npmesprima2.7.3indirect
npmesprima4.0.1indirect
npmesquery1.5.0indirect
npmesrecurse4.3.0indirect
npmestraverse1.9.3indirect
npmestraverse5.3.0indirect
npmestree-walker0.6.1indirect
npmestree-walker2.0.2indirect
npmesutils2.0.3indirect
npmetag1.8.1indirect
npmeventemitter35.0.1indirect
npmexeca5.1.1indirect
npmexeca7.2.0indirect
npmexit0.1.2indirect
npmexpect29.7.0indirect
npmexpress4.18.2indirect
npmfast-deep-equal3.1.3indirect
npmfast-glob3.3.2indirect
npmfast-json-stable-stringify2.1.0indirect
npmfast-levenshtein2.0.6indirect
npmfastq1.16.0indirect
npmfb-watchman2.0.2indirect
npmfile-entry-cache6.0.1indirect
npmfill-range7.0.1indirect
npmfinalhandler1.2.0indirect
npmfind-up4.1.0indirect
npmfind-up5.0.0indirect
npmflat-cache3.2.0indirect
npmflatted3.2.9indirect
npmfollow-redirects1.15.3indirect
npmfor-each0.3.3indirect
npmforeground-child3.1.1indirect
npmform-data4.0.0indirect
npmforwarded0.2.0indirect
npmfresh0.5.2indirect
npmfs.realpath1.0.0indirect
npmfsevents2.3.3indirect
npmfunction-bind1.1.2indirect
npmfunction.prototype.name1.1.6indirect
npmfunctions-have-names1.2.3indirect
npmgensync1.0.0-beta.2indirect
npmget-caller-file2.0.5indirect
npmget-intrinsic1.2.2indirect
npmget-package-type0.1.0indirect
npmget-stream6.0.1indirect
npmget-symbol-description1.0.0indirect
npmglob10.3.10indirect
npmglob5.0.15indirect
npmglob7.2.3indirect
npmglob8.1.0indirect
npmglob-parent5.1.2indirect
npmglob-parent6.0.2indirect
npmglobals11.12.0indirect
npmglobals13.24.0indirect
npmglobalthis1.0.3indirect
npmglobalyzer0.1.0indirect
npmglobby11.1.0indirect
npmglobrex0.1.2indirect
npmgopd1.0.1indirect
npmgraceful-fs4.2.11indirect
npmgraphemer1.4.0indirect
npmhandlebars4.7.8indirect
npmhas-bigints1.0.2indirect
npmhas-flag1.0.0indirect
npmhas-flag3.0.0indirect
npmhas-flag4.0.0indirect
npmhas-property-descriptors1.0.1indirect
npmhas-proto1.0.1indirect
npmhas-symbols1.0.3indirect
npmhas-tostringtag1.0.0indirect
npmhasown2.0.0indirect
npmhtml-escaper2.0.2indirect
npmhttp-errors2.0.0indirect
npmhuman-signals2.1.0indirect
npmhuman-signals4.3.1indirect
npmhusky8.0.3indirect
npmiconv-lite0.4.24indirect
npmignore5.3.0indirect
npmimport-fresh3.3.0indirect
npmimport-local3.1.0indirect
npmimurmurhash0.1.4indirect
npminflight1.0.6indirect
npminherits2.0.4indirect
npminternal-slot1.0.6indirect
npmipaddr.js1.9.1indirect
npmis-array-buffer3.0.2indirect
npmis-arrayish0.2.1indirect
npmis-bigint1.0.4indirect
npmis-boolean-object1.1.2indirect
npmis-builtin-module3.2.1indirect
npmis-callable1.2.7indirect
npmis-core-module2.13.1indirect
npmis-date-object1.0.5indirect
npmis-extglob2.1.1indirect
npmis-fullwidth-code-point3.0.0indirect
npmis-fullwidth-code-point4.0.0indirect
npmis-generator-fn2.1.0indirect
npmis-glob4.0.3indirect
npmis-module1.0.0indirect
npmis-negative-zero2.0.2indirect
npmis-number7.0.0indirect
npmis-number-object1.0.7indirect
npmis-path-inside3.0.3indirect
npmis-reference1.2.1indirect
npmis-regex1.1.4indirect
npmis-shared-array-buffer1.0.2indirect
npmis-stream2.0.1indirect
npmis-stream3.0.0indirect
npmis-string1.0.7indirect
npmis-symbol1.0.4indirect
npmis-typed-array1.1.12indirect
npmis-weakref1.0.2indirect
npmisarray2.0.5indirect
npmisexe2.0.0indirect
npmistanbul0.4.5indirect
npmistanbul-lib-coverage3.2.2indirect
npmistanbul-lib-instrument5.2.1indirect
npmistanbul-lib-instrument6.0.1indirect
npmistanbul-lib-report3.0.1indirect
npmistanbul-lib-source-maps4.0.1indirect
npmistanbul-reports3.1.6indirect
npmjackspeak2.3.6indirect
npmjest29.7.0indirect
npmjest-changed-files29.7.0indirect
npmjest-circus29.7.0indirect
npmjest-cli29.7.0indirect
npmjest-config29.7.0indirect
npmjest-diff29.7.0indirect
npmjest-docblock29.7.0indirect
npmjest-each29.7.0indirect
npmjest-environment-node29.7.0indirect
npmjest-get-type29.6.3indirect
npmjest-haste-map29.7.0indirect
npmjest-leak-detector29.7.0indirect
npmjest-matcher-utils29.7.0indirect
npmjest-message-util29.7.0indirect
npmjest-mock29.7.0indirect
npmjest-pnp-resolver1.2.3indirect
npmjest-regex-util29.6.3indirect
npmjest-resolve29.7.0indirect
npmjest-resolve-dependencies29.7.0indirect
npmjest-runner29.7.0indirect
npmjest-runtime29.7.0indirect
npmjest-snapshot29.7.0indirect
npmjest-util29.7.0indirect
npmjest-validate29.7.0indirect
npmjest-watcher29.7.0indirect
npmjest-worker29.7.0indirect
npmjs-cleanup1.2.0indirect
npmjs-tokens4.0.0indirect
npmjs-yaml3.14.1indirect
npmjs-yaml4.1.0indirect
npmjsdoc-type-pratt-parser4.0.0indirect
npmjsesc2.5.2indirect
npmjson-buffer3.0.1indirect
npmjson-parse-even-better-errors2.3.1indirect
npmjson-schema-traverse0.4.1indirect
npmjson-stable-stringify-without-jsonify1.0.1indirect
npmjson-stringify-safe5.0.1indirect
npmjson51.0.2indirect
npmjson52.2.3indirect
npmjsonc-parser3.2.0indirect
npmkeyv4.5.4indirect
npmkleur3.0.3indirect
npmleven3.1.0indirect
npmlevn0.3.0indirect
npmlevn0.4.1indirect
npmlilconfig2.1.0indirect
npmlines-and-columns1.2.4indirect
npmlint-staged14.0.1indirect
npmlistr26.6.1indirect
npmlocate-path5.0.0indirect
npmlocate-path6.0.0indirect
npmlodash.merge4.6.2indirect
npmlog-update5.0.1indirect
npmlru-cache10.1.0indirect
npmlru-cache5.1.1indirect
npmlru-cache6.0.0indirect
npmmagic-string0.25.9indirect
npmmagic-string0.30.5indirect
npmmake-dir4.0.0indirect
npmmake-error1.3.6indirect
npmmakeerror1.0.12indirect
npmmedia-typer0.3.0indirect
npmmerge-descriptors1.0.1indirect
npmmerge-stream2.0.0indirect
npmmerge21.4.1indirect
npmmethods1.1.2indirect
npmmicromatch4.0.5indirect
npmmime1.6.0indirect
npmmime-db1.52.0indirect
npmmime-types2.1.35indirect
npmmimic-fn2.1.0indirect
npmmimic-fn4.0.0indirect
npmminimatch3.1.2indirect
npmminimatch5.1.6indirect
npmminimatch9.0.3indirect
npmminimist1.2.8indirect
npmminipass7.0.4indirect
npmmkdirp0.5.6indirect
npmms2.0.0indirect
npmms2.1.2indirect
npmms2.1.3indirect
npmnatural-compare1.4.0indirect
npmnegotiator0.6.3indirect
npmneo-async2.6.2indirect
npmnock13.4.0indirect
npmnode-int640.4.0indirect
npmnode-qunit2.0.0indirect
npmnode-releases2.0.14indirect
npmnode-watch0.7.3indirect
npmnopt3.0.6indirect
npmnormalize-path3.0.0indirect
npmnpm-run-path4.0.1indirect
npmnpm-run-path5.1.0indirect
npmobject-inspect1.13.1indirect
npmobject-keys1.1.1indirect
npmobject.assign4.1.5indirect
npmobject.entries1.1.7indirect
npmobject.fromentries2.0.7indirect
npmobject.groupby1.0.1indirect
npmobject.values1.1.7indirect
npmon-finished2.4.1indirect
npmonce1.4.0indirect
npmonetime5.1.2indirect
npmonetime6.0.0indirect
npmoptionator0.8.3indirect
npmoptionator0.9.3indirect
npmp-limit2.3.0indirect
npmp-limit3.1.0indirect
npmp-locate4.1.0indirect
npmp-locate5.0.0indirect
npmp-try2.2.0indirect
npmparent-module1.0.1indirect
npmparse-json5.2.0indirect
npmparseurl1.3.3indirect
npmpath-exists4.0.0indirect
npmpath-is-absolute1.0.1indirect
npmpath-key3.1.1indirect
npmpath-key4.0.0indirect
npmpath-parse1.0.7indirect
npmpath-scurry1.10.1indirect
npmpath-to-regexp0.1.7indirect
npmpath-type4.0.0indirect
npmperf-regexes1.0.1indirect
npmpicocolors1.0.0indirect
npmpicomatch2.3.1indirect
npmpidtree0.6.0indirect
npmpirates4.0.6indirect
npmpkg-dir4.2.0indirect
npmprelude-ls1.1.2indirect
npmprelude-ls1.2.1indirect
npmpretty-format29.7.0indirect
npmprompts2.4.2indirect
npmpropagate2.0.1indirect
npmproxy-addr2.0.7indirect
npmproxy-from-env1.1.0indirect
npmpunycode2.3.1indirect
npmpure-rand6.0.4indirect
npmqs6.11.0indirect
npmqueue-microtask1.2.3indirect
npmqunit2.20.0indirect
npmrange-parser1.2.1indirect
npmraw-body2.5.1indirect
npmreact-is18.2.0indirect
npmregenerator-runtime0.14.1indirect
npmregexp.prototype.flags1.5.1indirect
npmrequire-directory2.1.1indirect
npmresolve1.1.7indirect
npmresolve1.22.8indirect
npmresolve-cwd3.0.0indirect
npmresolve-from4.0.0indirect
npmresolve-from5.0.0indirect
npmresolve.exports2.0.2indirect
npmrestore-cursor4.0.0indirect
npmreusify1.0.4indirect
npmrfdc1.3.0indirect
npmrimraf3.0.2indirect
npmrimraf5.0.5indirect
npmrollup4.9.1indirect
npmrollup-plugin-cleanup3.2.1indirect
npmrollup-pluginutils2.8.2indirect
npmrun-parallel1.2.0indirect
npmsafe-array-concat1.0.1indirect
npmsafe-buffer5.2.1indirect
npmsafe-regex-test1.0.0indirect
npmsafer-buffer2.1.2indirect
npmsemver6.3.1indirect
npmsemver7.5.4indirect
npmsend0.18.0indirect
npmserve-static1.15.0indirect
npmset-function-length1.1.1indirect
npmset-function-name2.0.1indirect
npmsetprototypeof1.2.0indirect
npmshebang-command2.0.0indirect
npmshebang-regex3.0.0indirect
npmside-channel1.0.4indirect
npmsignal-exit3.0.7indirect
npmsignal-exit4.1.0indirect
npmsisteransi1.0.5indirect
npmskip-regex1.0.2indirect
npmslash3.0.0indirect
npmslice-ansi5.0.0indirect
npmsource-map0.2.0indirect
npmsource-map0.6.1indirect
npmsource-map-support0.5.13indirect
npmsource-map-support0.5.21indirect
npmsourcemap-codec1.4.8indirect
npmspdx-exceptions2.3.0indirect
npmspdx-expression-parse4.0.0indirect
npmspdx-license-ids3.0.16indirect
npmsprintf-js1.0.3indirect
npmstack-utils2.0.6indirect
npmstatuses2.0.1indirect
npmstring-argv0.3.2indirect
npmstring-length4.0.2indirect
npmstring-width4.2.3indirect
npmstring-width5.1.2indirect
npmstring.prototype.trim1.2.8indirect
npmstring.prototype.trimend1.0.7indirect
npmstring.prototype.trimstart1.0.7indirect
npmstrip-ansi6.0.1indirect
npmstrip-ansi7.1.0indirect
npmstrip-bom3.0.0indirect
npmstrip-bom4.0.0indirect
npmstrip-final-newline2.0.0indirect
npmstrip-final-newline3.0.0indirect
npmstrip-json-comments3.1.1indirect
npmsupports-color3.2.3indirect
npmsupports-color5.5.0indirect
npmsupports-color7.2.0indirect
npmsupports-color8.1.1indirect
npmsupports-preserve-symlinks-flag1.0.0indirect
npmtest-exclude6.0.0indirect
npmtext-table0.2.0indirect
npmtiny-glob0.2.9indirect
npmtmpl1.0.5indirect
npmto-fast-properties2.0.0indirect
npmto-regex-range5.0.1indirect
npmtoidentifier1.0.1indirect
npmtracejs0.1.8indirect
npmts-api-utils1.0.3indirect
npmts-node10.9.2indirect
npmtsconfig-paths3.15.0indirect
npmtslib2.6.2indirect
npmtype-check0.3.2indirect
npmtype-check0.4.0indirect
npmtype-detect4.0.8indirect
npmtype-fest0.20.2indirect
npmtype-fest0.21.3indirect
npmtype-fest1.4.0indirect
npmtype-is1.6.18indirect
npmtyped-array-buffer1.0.0indirect
npmtyped-array-byte-length1.0.0indirect
npmtyped-array-byte-offset1.0.0indirect
npmtyped-array-length1.0.4indirect
npmtypescript5.3.3indirect
npmuglify-js3.17.4indirect
npmunbox-primitive1.0.2indirect
npmunderscore1.13.6indirect
npmundici-types5.26.5indirect
npmunpipe1.0.0indirect
npmupdate-browserslist-db1.0.13indirect
npmuri-js4.4.1indirect
npmutils-merge1.0.1indirect
npmv8-compile-cache-lib3.0.1indirect
npmv8-to-istanbul9.2.0indirect
npmvary1.1.2indirect
npmwalker1.0.8indirect
npmwhich1.3.1indirect
npmwhich2.0.2indirect
npmwhich-boxed-primitive1.0.2indirect
npmwhich-typed-array1.1.13indirect
npmword-wrap1.2.5indirect
npmwordwrap1.0.0indirect
npmwrap-ansi7.0.0indirect
npmwrap-ansi8.1.0indirect
npmwrappy1.0.2indirect
npmwrite-file-atomic4.0.2indirect
npmy18n5.0.8indirect
npmyallist3.1.1indirect
npmyallist4.0.0indirect
npmyaml2.3.1indirect
npmyargs17.7.2indirect
npmyargs-parser21.1.1indirect
npmyn3.1.1indirect
npmyocto-queue0.1.0indirect
Dependency advisories 1

Installing npm:@adguard/filters-downloader@2.4.5 pulls in 29 packages, direct and transitive: 1 carry known advisories, of which 1 are direct dependencies.

PackageVersionRelationSeverityAdvisoriesFixed in
axios1.15.0directhigh281.18.0

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "open-source"
      ],
      "is_fork": false,
      "size_kb": 702,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Shell": 70,
        "Dockerfile": 1330,
        "JavaScript": 2751,
        "TypeScript": 124349
      },
      "pushed_at": "2026-07-14T13:56:10Z",
      "created_at": "2018-04-18T14:23:30Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-14T01:59:36Z",
      "description": "Pre-processing library for filters subscriptions",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "GPL-3.0",
      "default_branch": "master",
      "license_spdx_raw": "GPL-3.0",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://adguard.com/",
      "name": "AdGuard",
      "type": "Organization",
      "login": "AdguardTeam",
      "company": null,
      "location": "Cyprus",
      "followers": 3930,
      "avatar_url": "https://avatars.githubusercontent.com/u/8361145?v=4",
      "created_at": "2014-08-05T09:10:39Z",
      "is_verified": null,
      "public_repos": 116,
      "account_age_days": 4372
    },
    "license": {
      "state": "standard",
      "spdx_id": "GPL-3.0",
      "raw_spdx": "GPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.4.5",
          "kind": "patch",
          "published_at": "2026-07-14T13:56:45Z"
        },
        {
          "tag": "v2.4.4",
          "kind": "patch",
          "published_at": "2026-04-14T14:26:45Z"
        },
        {
          "tag": "v2.4.3",
          "kind": "patch",
          "published_at": "2026-04-03T21:33:09Z"
        },
        {
          "tag": "v2.4.2",
          "kind": "patch",
          "published_at": "2025-06-30T17:25:21Z"
        },
        {
          "tag": "v2.4.1",
          "kind": "patch",
          "published_at": "2025-06-09T14:13:23Z"
        },
        {
          "tag": "v2.4.0",
          "kind": "minor",
          "published_at": "2025-03-27T17:29:39Z"
        },
        {
          "tag": "v2.3.1",
          "kind": "patch",
          "published_at": "2025-03-12T10:53:20Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2025-03-06T11:06:49Z"
        },
        {
          "tag": "v2.2.6",
          "kind": "patch",
          "published_at": "2024-12-13T09:58:59Z"
        },
        {
          "tag": "v2.2.5",
          "kind": "patch",
          "published_at": "2024-12-12T15:01:21Z"
        },
        {
          "tag": "v2.2.4",
          "kind": "patch",
          "published_at": "2024-12-06T11:26:56Z"
        },
        {
          "tag": "v2.2.3",
          "kind": "patch",
          "published_at": "2024-11-25T10:26:52Z"
        },
        {
          "tag": "v2.2.2",
          "kind": "patch",
          "published_at": "2024-07-12T09:47:22Z"
        },
        {
          "tag": "v2.2.1",
          "kind": "patch",
          "published_at": "2024-05-22T14:43:40Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2024-03-26T14:26:55Z"
        },
        {
          "tag": "v2.1.2",
          "kind": "patch",
          "published_at": "2024-03-25T13:53:39Z"
        },
        {
          "tag": "v2.1.1",
          "kind": "patch",
          "published_at": "2024-03-13T11:35:59Z"
        },
        {
          "tag": "v2.0.7",
          "kind": "patch",
          "published_at": "2024-01-17T13:17:47Z"
        },
        {
          "tag": "v2.0.6",
          "kind": "patch",
          "published_at": "2024-01-17T10:00:57Z"
        },
        {
          "tag": "v2.0.5",
          "kind": "patch",
          "published_at": "2024-01-11T10:21:57Z"
        },
        {
          "tag": "v2.0.4",
          "kind": "patch",
          "published_at": "2024-01-10T19:37:32Z"
        },
        {
          "tag": "v2.0.3",
          "kind": "patch",
          "published_at": "2023-12-29T18:05:16Z"
        },
        {
          "tag": "v2.0.2",
          "kind": "patch",
          "published_at": "2023-12-29T17:17:10Z"
        },
        {
          "tag": "v2.0.1",
          "kind": "patch",
          "published_at": "2023-12-29T12:39:29Z"
        },
        {
          "tag": "v1.1.23",
          "kind": "patch",
          "published_at": "2023-11-09T15:23:43Z"
        },
        {
          "tag": "v1.1.21",
          "kind": "patch",
          "published_at": "2023-10-20T17:55:05Z"
        },
        {
          "tag": "v1.1.20",
          "kind": "patch",
          "published_at": "2023-10-10T13:36:37Z"
        },
        {
          "tag": "v1.1.15",
          "kind": "patch",
          "published_at": "2023-10-05T22:40:44Z"
        },
        {
          "tag": "v1.1.14",
          "kind": "patch",
          "published_at": "2023-10-05T22:36:16Z"
        },
        {
          "tag": "v1.1.13",
          "kind": "patch",
          "published_at": "2023-10-05T22:34:24Z"
        },
        {
          "tag": "v1.1.12",
          "kind": "patch",
          "published_at": "2022-03-22T15:00:44Z"
        },
        {
          "tag": "v1.1.11",
          "kind": "patch",
          "published_at": "2022-03-21T19:03:56Z"
        },
        {
          "tag": "v1.1.3",
          "kind": "patch",
          "published_at": "2021-07-13T16:18:30Z"
        },
        {
          "tag": "v1.0.13",
          "kind": "patch",
          "published_at": "2020-05-28T21:29:53Z"
        },
        {
          "tag": "v1.0.11",
          "kind": "patch",
          "published_at": "2020-05-26T08:23:27Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "99a4ea1348954d371b73523af286224ea5e6a79c",
          "body": null,
          "is_bot": true,
          "headline": "Release v2.4.5 (PR 2)",
          "author_name": "adguard-octopass[bot]",
          "author_login": "adguard-octopass[bot]",
          "committed_at": "2026-07-14T01:59:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd327c3d96cdc649a5c9d4cf00812c6ed7864afc",
          "body": null,
          "is_bot": false,
          "headline": "AG-54909 Migrate CI to GitHub Actions (PR 1)",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2026-07-08T19:00:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2eca807d73a1898da033c7ccb4e4a214f50102b7",
          "body": "Squashed commit of the following:\n\ncommit ff9b48306dde196a5083dfc9896febf60ed6650a\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Thu May 14 20:28:10 2026 +0300\n\n    AG-54210 Update node-ssh Docker image to 22.22--0\n    \n    Update adguard/node-ssh image from 22.17--0 to 22.22--0 which includes\n\n[…]\nm 10.33.4 with support for minimumReleaseAge and\n    minimumReleaseAgeExclude settings for supply-chain attack prevention.\n    \n    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Pull request 89: AG-54210 Update node-ssh Docker image to 22.22--0",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2026-05-14T18:13:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c218b08f73188b17ce471e7b2e9680a90c28a4f",
          "body": "….2, pnpm 10.33.4)\n\nSquashed commit of the following:\n\ncommit 1db12b981c45cf3dfc5b2136ab955d2ab96a21b2\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Thu May 14 14:31:59 2026 +0300\n\n    chore: update node-ssh image to 22.22--0\n    \n    Update Docker image to node-ssh:22.22--0 which includes\n    Node.js 22.22.2 and pnpm 10.33.4.\n    \n    This is needed to support minimumReleaseAge in pnpm-workspace.yaml\n    (AG-54210).",
          "is_bot": false,
          "headline": "Pull request 88: chore: update node-ssh image to 22.22--0 (Node 22.22…",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2026-05-14T13:44:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f70025eda35f9e52f83a12f7bd651090c146d9a",
          "body": "Squashed commit of the following:\n\ncommit 208d67537230012671b8b615db768e2e069926a1\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue May 12 12:20:53 2026 +0300\n\n    AG-54210 set pnpm minimumReleaseAge to 7 days",
          "is_bot": false,
          "headline": "Pull request 87: AG-54210 set pnpm minimumReleaseAge to 7 days",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2026-05-12T09:56:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c16cc1d2aafc71cc84263ccef081999a2b1de985",
          "body": "Squashed commit of the following:\n\ncommit 4dcef368cb072612a68554269a8c1aaf8dedcf41\nAuthor: Dima Seregin <d.seregin@adguard.com>\nDate:   Mon Apr 27 18:53:35 2026 +0300\n\n    fix: re-enable vcs tagging task\n    \n    AG-53636\n\ncommit 8678ae67657516eae033419d121cfa0e6b3c5a76\nAuthor: Dima Seregin <d.sereg\n[…]\ndate bamboo-specs/tests.yaml: replace docker: block with docker build\n    - Update bamboo-specs/build.yaml: replace docker: block with docker build,\n      update artifact location to output/artifacts/",
          "is_bot": false,
          "headline": "AG-53636: replace docker image with docker build in bamboo-specs",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2026-04-27T16:06:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "80232a1120dae58185d97ad36fb6ec78c44e9372",
          "body": "Squashed commit of the following:\n\ncommit fd173716c936bfba136d89026df1edeaa6d1cbe8\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Thu Apr 16 07:51:44 2026 -0400\n\n    rename tests dir name",
          "is_bot": false,
          "headline": "AG-53285 rename tests dir name",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2026-04-16T12:40:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81b8c9cd7ddff5814b48a6bce999adc45ac5346e",
          "body": "Squashed commit of the following:\n\ncommit eb61542eb7b7a91c86671d60e7c8265af90c78cf\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Wed Apr 15 13:12:53 2026 -0400\n\n    update vite\n\ncommit 7b5eb6d2f5dfa8abf0c0a239e4ccd74953015c53\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Wed Apr 15 12:58:03 2026 -04\n[…]\n400\n\n    pin vitest version\n\ncommit 39e3492189cd7adb0041cc3195ddf252870de131\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Wed Apr 15 12:18:41 2026 -0400\n\n    use vitest instead of jest for unit tests",
          "is_bot": false,
          "headline": "AG-52672 use vitest instead of jest for unit tests",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2026-04-16T11:40:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f7407e7c69cdf812b8062149b158ba141fd0ea01",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2026-04-14T14:25:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0de9bb95e519810ee5467075d9134032425afbc6",
          "body": "Squashed commit of the following:\n\ncommit 0d6d157c3765d301b3b620c7ab878eb6bda0a777\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Apr 14 16:10:45 2026 +0300\n\n    fix increment",
          "is_bot": false,
          "headline": "Pull request 83: Fix increment",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2026-04-14T13:17:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56b0055c32603dca3716373cbdda2e78fce7c748",
          "body": "Squashed commit of the following:\n\ncommit 6a8a8833a21a94e93547be46ea493ba6ce0c4fdc\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Apr 14 15:27:39 2026 +0300\n\n    Refactor CI workflow: streamline build step in test job",
          "is_bot": false,
          "headline": "Pull request 82: Refactor CI workflow: streamline build step in test job",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2026-04-14T12:36:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cba4dbca55278f52e3585970d3a6d30ff58b8088",
          "body": "Squashed commit of the following:\n\ncommit 72eb7d5ab6c5409af0b34ecb0f5d6389f4b3f042\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Apr 14 13:07:10 2026 +0300\n\n    AG-53183: Update axios to 1.15.0",
          "is_bot": false,
          "headline": "Pull request 81: AG-53183: Update axios to 1.15.0",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2026-04-14T10:32:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4fe3d2c2c8ae6d4a6649a8f27f92864816aadce",
          "body": "related: https://github.com/AdguardTeam/AdguardBrowserExtension/issues/3407\n\nSquashed commit of the following:\n\ncommit 6d11b5d3a1be45b08087597a2716dad72fb9fe1f\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Fri Apr 3 11:36:48 2026 -0400\n\n    fix tests with hardcoded base url\n\ncommit 138088ecd04349408\n[…]\nrent one, resolve conflicts\n\ncommit 64d8f6403fd417e528e2b1704928806da5b75726\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Fri Apr 3 00:55:47 2026 -0400\n\n    add headers.lastModified to DownloadResult",
          "is_bot": false,
          "headline": "AG-49676 add headers.lastModified to DownloadResult",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2026-04-03T21:30:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4770c4f7e4727bfed0019c34c2eff6b32d9a2b2f",
          "body": "Squashed commit of the following:\n\ncommit 44eca67c943cfecd097214c45105cd51b3ee5e29\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Wed Apr 1 13:25:08 2026 -0400\n\n    use Assert type instead of any\n\ncommit 7ace57fa8a7998a5e5c33c9215b140ff94656073\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Wed Apr 1 \n[…]\n specs\n\ncommit 95477609a7aa8ead8336d2bb5612f960b8e839e6\nAuthor: slvvko <v.leleka@adguard.com>\nDate:   Thu Mar 26 21:59:32 2026 -0400\n\n    add node matrix in test github workflow\n\n... and 1 more commit",
          "is_bot": false,
          "headline": "AG-52472 add docs for agents in filters-downloader",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2026-04-02T14:27:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "73b0fa7145d5d87737c5854b009d4159deb1f1a5",
          "body": "…o build specifications\n\nSquashed commit of the following:\n\ncommit 282c170df0a624c3cfd63fe69b8c8ae454ac3909\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Fri Feb 20 08:09:22 2026 +0200\n\n    AG-50920 Remove webhook notifications from all bamboo build specifications",
          "is_bot": false,
          "headline": "Pull request 78: AG-50920 Remove webhook notifications from all bambo…",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2026-02-20T13:17:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8b78ca26b3ba8d2bea2ec122114bd53458d94a0",
          "body": "Squashed commit of the following:\n\ncommit d331c2cb4c9892f0b403032e944e93a7ca6c8856\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Mon Jan 19 11:10:48 2026 +0200\n\n    AG-50156 remove adg-docker requirement",
          "is_bot": false,
          "headline": "Pull request 77: AG-50156 remove adg-docker requirement",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2026-01-19T10:04:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56bd94a2acfe73c35660c1af33598b8369f0eda4",
          "body": "Squashed commit of the following:\n\ncommit f3d8b400ff4cd134b03db13f072b28d541e4807d\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Wed Dec 17 18:47:48 2025 +0300\n\n    AG-49550: add extension requirement",
          "is_bot": false,
          "headline": "AG-49550: add extension requirement",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2025-12-18T06:58:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ca62686f97cb42ab4af51327ff38fdb36fef3e71",
          "body": "Squashed commit of the following:\n\ncommit 9a20b528763e48dc0f599295dcfff73ef371ab26\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Jun 30 13:53:00 2025 -0400\n\n    build before test\n\ncommit fcafa1c20996d7ae2e151232f76833c51bddd486\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Jun 30 13:50:30 2025 -0400\n\n    add eslint exclusion import/extensions for _qunit_tests_/filters-downloader.test.ts",
          "is_bot": false,
          "headline": "run build earlier for test workflow",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2025-06-30T18:33:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b1380514d0d4f20b0771c8754d2f24ce70445de",
          "body": "Squashed commit of the following:\n\ncommit 818852d9fd665dbbfea4cdbac7c38792caaf697e\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Jun 30 13:11:25 2025 -0400\n\n    update diff-builder to v1.1.2",
          "is_bot": false,
          "headline": "AG-43382 update diff-builder to v1.1.2",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2025-06-30T17:21:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "217442b89b7ab1b627230d7eb9dc78ea6bec987f",
          "body": "Squashed commit of the following:\n\ncommit 05b23af55ef35ef658e15313b31aa3d25d8f471a\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Mon Jun 9 17:09:52 2025 +0300\n\n    update deps to version published on npm\n\ncommit 46048515af8ee142dc19cf8032815298796c7d8c\nAuthor: Dmitriy Seregin <d.seregin@ad\n[…]\n    added tgz command\n\ncommit 113a9c75bb52dbdc7cfa9c999fedd08b7fadba60\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Fri Jun 6 14:59:39 2025 +0300\n\n    AG-43002: update diff-builder to 1.1.1",
          "is_bot": false,
          "headline": "AG-43002: update diff-builder to 1.1.1",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2025-06-09T14:11:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f1b42f030a92d0e76055bc34de522cd4faae472c",
          "body": "Squashed commit of the following:\n\ncommit 345b861289eee9348eba27724c29bfb5c6bae6d9\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon May 26 18:36:22 2025 -0400\n\n    AG-42652 add .npmrc to .gitignore",
          "is_bot": false,
          "headline": "AG-42652 add .npmrc to .gitignore",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2025-05-27T12:58:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8e7197b597173f96246f8f3a2d08b0c25f784d8",
          "body": "Squashed commit of the following:\n\ncommit b26cf24e48bdb5ff54b558fe13328461957442d8\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon May 12 12:21:34 2025 -0400\n\n    update pnpm-lock.yaml\n\ncommit f6189bd74d2df085f38ae04cab1b6ae8eafae852\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Ma\n[…]\niff-builder\n\ncommit 9ed57aec82a4da9e32c567f755cf5a51e217eecb\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Sat May 10 15:12:16 2025 -0400\n\n    update node to v22 and use pnpm v10 instead of yarn",
          "is_bot": false,
          "headline": "AG-41223 update node to v22 and use pnpm v10",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2025-05-12T18:53:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d6444f23eb9142708574007ffa9b3fc03155a8d8",
          "body": "Squashed commit of the following:\n\ncommit d83199160ca8b6a72603020b406e5ee4fefe0485\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Mar 27 16:58:53 2025 +0300\n\n    change minor version, not patch\n\ncommit bc04bfd31836d231cfe66837b2a5a00acbc2e3e5\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Mar 27 16:44:29 2025 +0300\n\n    AG-31776: bump diff-builder to 1.1.0",
          "is_bot": false,
          "headline": "AG-31776: bump diff-builder to 1.1.0",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2025-03-27T17:27:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f6c8ce254bcb5ea8938893838a19b8b9acb4ac1",
          "body": "Squashed commit of the following:\n\ncommit c001e2576bcb1442f5b836a048b8ceb58ba6481e\nAuthor: jellizaveta <e.egorova@adguard.com>\nDate:   Tue Mar 11 21:30:36 2025 +0300\n\n    revert old test\n\ncommit 2d93e626fb5a1a380f3842fa4569f7340d1f9797\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Tue Mar 11 2\n[…]\n00\n\n    test, legacy options\n\ncommit d38974c6ca0308f9e1d38129437d41f1f7558b15\nAuthor: jellizaveta <e.egorova@adguard.com>\nDate:   Tue Mar 11 20:23:33 2025 +0300\n\n    AG-40593 Handle empty source files",
          "is_bot": false,
          "headline": "AG-40593 Handle empty source files",
          "author_name": "Elizaveta Egorova",
          "author_login": "jellizaveta",
          "committed_at": "2025-03-12T10:31:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1a8049ad15bae4bf1b4f2513d0dbbc4e174f158b",
          "body": "…ad local file.\n\nSquashed commit of the following:\n\ncommit 567e40a11a631ad0fbf5c6a8b27452f288255723\nAuthor: jellizaveta <e.egorova@adguard.com>\nDate:   Thu Mar 6 12:55:12 2025 +0300\n\n    remove unused var, increment minor version\n\ncommit 3727e7ac276d74860792e97428c2b989dfea5bac\nAuthor: jellizaveta <\n[…]\n file loading.\n\ncommit ad326a497a581e523a77816680118cad5e548202\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Mar 4 19:52:29 2025 +0200\n\n    AG-39419 handle case with duplicated end of origin",
          "is_bot": false,
          "headline": "AG-39419 AG-40445 Fixed  'filterOrigin' path duplication while downlo…",
          "author_name": "Elizaveta Egorova",
          "author_login": "jellizaveta",
          "committed_at": "2025-03-06T10:56:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c992361f3f8a2ba904044101ac28bf06060cf3d",
          "body": "Squashed commit of the following:\n\ncommit 48d8660f8e27e90caa8f4695a1d5a1cb96c3c1d5\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Fri Dec 13 12:22:33 2024 +0300\n\n    update\n\ncommit 210a70eec3635a78c98b5a4a20320e666c9cccf9\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Dec 12 22:58:27 2024 +0300\n\n    bump version",
          "is_bot": false,
          "headline": "AG-38419: bump version",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2024-12-13T09:57:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d656577f3f2feb48ca964d99ae6349eae1a7d411",
          "body": "Squashed commit of the following:\n\ncommit fa4588096d562d15120c29580541b89807e8a0e3\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Dec 12 17:32:40 2024 +0300\n\n    AG-38419: better exporting of types in package.json",
          "is_bot": false,
          "headline": "AG-38419: better exporting of types in package.json",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2024-12-12T14:58:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e654a6710122022b0b6e914bf495c342d09c2943",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2024-12-06T11:21:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2db4570cbe13f449ee139781ecab3fc9fd3e9cec",
          "body": "Squashed commit of the following:\n\ncommit 9708d216b90c98f09e6f0d4931aa3ba7cdbf7af6\nAuthor: jellizaveta <e.egorova@adguard.com>\nDate:   Fri Dec 6 14:11:08 2024 +0300\n\n    update changelog\n\ncommit df3b5b0b758d335d6870437fb720de3589160272\nAuthor: jellizaveta <e.egorova@adguard.com>\nDate:   Fri Dec 6 13\n[…]\n1412\n\ncommit 5405295e893bbc144bd4ce2c72257c60916b652f\nAuthor: jellizaveta <e.egorova@adguard.com>\nDate:   Mon Dec 2 21:02:44 2024 +0300\n\n    update createErrorMessage function\n\n... and 11 more commits",
          "is_bot": false,
          "headline": "AG-31412 Improve error message during include directives resolving.",
          "author_name": "Elizaveta Egorova",
          "author_login": "jellizaveta",
          "committed_at": "2024-12-06T11:15:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ff5bf214bfd0fbb34a191d5ba878f6593733a978",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-35252 to master\n\nSquashed commit of the following:\n\ncommit ba64821c82e066c49de3c7bb54e2ac71db9f5d47\nAuthor: Rafkat Galiullin <r.galiullin@adguard.com>\nDate:   Mon Nov 25 13:20:50 2024 +0300\n\n    Prepare for release\n\ncommit b93991682e468eb115cc4e18e1\n[…]\nce\n\ncommit 2f71cf78937003730340abfae8ba13965c64b14d\nAuthor: Rafkat Galiullin <r.galiullin@adguard.com>\nDate:   Wed Nov 20 11:20:22 2024 +0300\n\n    AG-35252: Cannot add custom filters from Google Drive",
          "is_bot": false,
          "headline": "AG-35252: Cannot add custom filters from Google Drive",
          "author_name": "Rafkat Galiullin",
          "author_login": "neolite",
          "committed_at": "2024-11-25T10:22:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b41f152edf4d9bb6a4b75056a14a0ac5a8c374e7",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2024-07-12T09:45:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec5bba093a4234589086daffc8b565e2c62ef0bb",
          "body": "Squashed commit of the following:\n\ncommit 4e6539c1b70ce00446bfeb77dd3d01c336951232\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Fri Jul 12 01:13:48 2024 +0300\n\n    improve DefinedExpressions type",
          "is_bot": false,
          "headline": "improve DefinedExpressions type. AG-34320",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2024-07-12T09:34:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ee0de1c3cd72813db0683d0e92a48bcf11b4ed7",
          "body": "Squashed commit of the following:\n\ncommit c72653acbb7d7b18a27cb90f24697cd36d9c07eb\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Wed May 22 19:25:23 2024 +0300\n\n    fix docs",
          "is_bot": false,
          "headline": "fix docs",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2024-05-22T16:44:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9217d969ac759e6a809abb5e092e4f592382c5e4",
          "body": "Squashed commit of the following:\n\ncommit 2c80659cd4639260d03f99a7087134673eb90945\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Wed May 22 17:40:09 2024 +0300\n\n    throw the error\n\ncommit 1cb75beab26088756ec144145d7869c4a8efd7c0\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Wed May 22 1\n[…]\nerror handling during include directives resolving\n\ncommit f1f676ac6421ba921b2def8d655ab99103f2aa52\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Wed May 22 16:47:23 2024 +0300\n\n    bump version",
          "is_bot": false,
          "headline": "Improve error handling",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2024-05-22T14:41:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a89001337a6ca2bda542225fd06a6503c63c70bd",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-31356 to master\n\nSquashed commit of the following:\n\ncommit b585c43ffd01e1e452552dc9dfb059d357ec016c\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Mar 26 16:00:37 2024 +0200\n\n    AG-31356 update changelog\n\ncommit 684cf078e77db8e0065d0e4772fe\n[…]\n0 19:04:15 2024 +0200\n\n    cleanup\n\ncommit fa78ee9dfe9bec151ffb799db1cb41deb4fc1b36\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Tue Mar 19 17:44:13 2024 +0200\n\n    handle a failed patch update",
          "is_bot": false,
          "headline": "AG-31356 return rawFilter as a string",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2024-03-26T14:22:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2898d7c48bc534c414ed75dd49667d09d55b1634",
          "body": "https://github.com/AdguardTeam/AdguardBrowserExtension/issues/2717\n\nSquashed commit of the following:\n\ncommit f24324f7058e40b3a7e48cd41278a39cfce27e5a\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Mar 25 14:56:31 2024 +0200\n\n    update diff-builder to v1.0.17\n\ncommit d9861d66e52fc644e4c02d\n[…]\n0 19:04:15 2024 +0200\n\n    cleanup\n\ncommit fa78ee9dfe9bec151ffb799db1cb41deb4fc1b36\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Tue Mar 19 17:44:13 2024 +0200\n\n    handle a failed patch update",
          "is_bot": false,
          "headline": "handle a failed patch update. AG-30494",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2024-03-25T13:39:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "762326f7310c56291bbc664c68aa0c0925bdd111",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2024-03-13T11:33:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c0b3889a69ffd9a9e578a033a0e37d1c51b0815",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-29426 to master\n\nSquashed commit of the following:\n\ncommit 867adc6029033d19b6d364733a4793becf14cf08\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Wed Mar 13 14:28:14 2024 +0300\n\n    CHANGELOG.md edited online with Bitbucket\n\ncommit 2d23ab11c61\n[…]\n4 +0200\n\n    AG-29426 add tests\n\ncommit bf40b17734a9ab7c670db98d4b89c7406def05d7\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Thu Feb 22 19:38:12 2024 +0200\n\n    AG-29426 add checksum validation",
          "is_bot": false,
          "headline": "AG-29426 add checksum validation",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2024-03-13T11:32:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3987769cf0f38c6e5bdeb3420e70778a6d45ea1a",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-30908 to master\n\nSquashed commit of the following:\n\ncommit 003c7951aa37b8826a0809292803836522f865a2\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Wed Mar 6 12:13:04 2024 +0200\n\n    AG-30908 clean node_modules",
          "is_bot": false,
          "headline": "AG-30908 clean node_modules",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2024-03-06T10:17:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90fcd96ff054fc21baa70f85ef8c70152045b641",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-29546 to master\n\nSquashed commit of the following:\n\ncommit 9b6b3ba49fae07b65bd4c443a0e5cd7bf181572b\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Wed Jan 17 16:13:03 2024 +0300\n\n    AG-29546: updated diff-builder to 1.0.13",
          "is_bot": false,
          "headline": "AG-29546: updated diff-builder to 1.0.13",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2024-01-17T13:15:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1855b90386a1c35bc13b5aa138e8817c53bfd9ca",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-29544 to master\n\nSquashed commit of the following:\n\ncommit 6e4472a058f004c898a8060a521d03a2e70378a9\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Wed Jan 17 12:52:45 2024 +0300\n\n    AG-29544: update diff-builder to 1.0.12",
          "is_bot": false,
          "headline": "AG-29544: update diff-builder to 1.0.12",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2024-01-17T09:58:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9ce0a568c3bef12402bf374acdef0c994ec5dc8",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/update-deps to master\n\nSquashed commit of the following:\n\ncommit 18bce98d9d778b7e7b59e305824c2a5b4e53026a\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Jan 11 13:14:58 2024 +0300\n\n    bump version\n\ncommit 2e732cfbe9e64e3f15f5204892f784c52348855d\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Jan 11 13:13:36 2024 +0300\n\n    update diff-builder",
          "is_bot": false,
          "headline": "Feature/update deps",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2024-01-11T10:17:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08bb415ecc2376738d13dfe9893c6b472426c75f",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/new_line_split to master\n\nSquashed commit of the following:\n\ncommit 014f12b463f0f452d6ce0399e0df0765592e5f80\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Wed Jan 10 21:22:11 2024 +0200\n\n    fix tests\n\ncommit d71ee6cbe67f96492d7178c8374f5069531abe\n[…]\n24 +0200\n\n    changelog\n\ncommit e7551cb968e20cf8311f18be555908049886aa15\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Wed Jan 10 21:14:43 2024 +0200\n\n    split lines considering all line endings",
          "is_bot": false,
          "headline": "Pull request #53: Split lines considering all line endings",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2024-01-10T19:35:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af0ef9a02c640ec876952898ca372381d0320c33",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/performance to master\n\nSquashed commit of the following:\n\ncommit 5bbb50d6e491ffbe5b4f0134174bde4c51bb4271\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Fri Dec 29 19:59:57 2023 +0200\n\n    fix performance regress",
          "is_bot": false,
          "headline": "Fix performance regress",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2023-12-29T18:02:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "891785b75bce681ae44c89415d966437442e8ac0",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/update_diff_builder to master\n\nSquashed commit of the following:\n\ncommit afa00d9265a70ea4e284001ba5164a06918b7cc6\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Fri Dec 29 19:05:11 2023 +0200\n\n    update diff builder to v1.0.8",
          "is_bot": false,
          "headline": "Update diff builder to v1.0.8",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2023-12-29T17:14:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae16a31c482da8a2c94d94e303511d8534bf8d9b",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-29245 to master\n\nSquashed commit of the following:\n\ncommit d2bae3d67cad1b85b53da5c8c128c8d54a63f1e7\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Fri Dec 29 15:20:41 2023 +0300\n\n    AG-29245: update diff-builder",
          "is_bot": false,
          "headline": "AG-29245: update diff-builder",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2023-12-29T12:37:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d994350143fc6ef72a9286e379b5b08865a8d85",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/gh_actions to master\n\nSquashed commit of the following:\n\ncommit 110d54f3385288d102fe537d9c3dfac965326aac\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Wed Dec 27 18:38:34 2023 +0200\n\n    fix github actions",
          "is_bot": false,
          "headline": "Fix github actions",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2023-12-27T16:40:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42f6eb88de05a49bd8414533c3e14d9cbf45a2e1",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/AG-27444 to master\n\nSquashed commit of the following:\n\ncommit 70c316492ef18f36d3a39ee75a7dfe55e26093e6\nMerge: 9917433 fa19707\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Wed Dec 27 18:28:41 2023 +0200\n\n    Merge branch 'feature/AG-27444' of \n[…]\n\n\n    use yarn to run rimraf\n\ncommit 40d1d2bdf0ced3a46146f3c51ff5af558cdb9c79\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Dec 19 19:32:28 2023 +0200\n\n    fix rimraf\n\n... and 22 more commits",
          "is_bot": false,
          "headline": "AG-27444 patch updates + typescript",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2023-12-27T16:29:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8c0967f19d60b50c8b927e00c73acb9ffb4d4d64",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-12-19T17:28:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "396efeb36a6f08d1c042187a6aa0c64bdad793a7",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/AG-27444-1 to master\n\nSquashed commit of the following:\n\ncommit 555e22d6315c4f2e4aa2cd91e4fdf6c9c05c3289\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Dec 19 19:26:18 2023 +0200\n\n    fix path\n\ncommit de7d313d41f60287857f821dad025fe998bbc10e\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Dec 19 19:22:00 2023 +0200\n\n    AG-27444 update specs",
          "is_bot": false,
          "headline": "AG-27444 update specs",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2023-12-19T17:28:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5daa1107775a7116b3dcb8af6b29c26dde0c257b",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-11-09T15:18:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9951c64c855fde507cb5d106dbbee0cb225f0064",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-5510 to master\n\nSquashed commit of the following:\n\ncommit cded56382173803a31759b4be0b2df5ca64f64c5\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Thu Nov 9 17:14:20 2023 +0200\n\n    AG-5510 fix tests\n\ncommit 5b21d29d6bc56229a56c84553e64f4c48f6e82\n[…]\n23 +0200\n\n    AG-5510 add documentation\n\ncommit 603de9c4dedb4bfd426901eaab801583b8033bee\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Thu Nov 9 17:08:56 2023 +0200\n\n    AG-5510 support text/html",
          "is_bot": false,
          "headline": "AG-5510 support text/html",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2023-11-09T15:18:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dbf9e9d08a34300774f6ce533d8b373efa9dca68",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-10-27T11:57:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "caea64228f1a5a4066262d86de5f9f65561961d5",
          "body": "Squashed commit of the following:\n\ncommit 4ea753b3d68498328fdb58650600188170ee712a\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Fri Oct 27 14:23:12 2023 +0300\n\n    fix changelog",
          "is_bot": false,
          "headline": "fix changelog",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2023-10-27T11:57:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee19bc9659e13606cfdac7766dfe7f2b49ccacd5",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-10-20T17:51:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "566742ffda63274792cf7506960e20737623675d",
          "body": "Squashed commit of the following:\n\ncommit ba00331a3becf9dd63d38b04c7627ed2da83ef55\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Fri Oct 20 20:46:35 2023 +0300\n\n    update changelog\n\ncommit ae6b40837f537999b18dd65f4aded36d839bfbdb\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Fri Oct 20 \n[…]\nngines.node to 18 or greater in package.json\n\ncommit fa24924c14702d9882a4484071234c6452a88ca7\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Fri Oct 20 20:22:33 2023 +0300\n\n    fix url validation",
          "is_bot": false,
          "headline": "fix url validation. AG-26168",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2023-10-20T17:51:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "601ba9c35238b4c26126fa8c5c751aa3f62dbb9a",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-10-10T13:34:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1d324f71df368b0155b9cfe8b2b0640e1cb22cc",
          "body": "Squashed commit of the following:\n\ncommit d8a02e6ab69b9601df5f2e902adbf61c0ab87b55\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Tue Oct 10 12:57:07 2023 +0300\n\n    update changelog\n\ncommit eb676f91dd552bb702beb1ed7eb96bedf9ecf44e\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Oct 9 2\n[…]\n6 01:52:15 2023 +0300\n\n    add gh release workflow\n\ncommit e717db763343a23b3b99e7ff564c660de2dc6c42\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Fri Oct 6 01:51:56 2023 +0300\n\n    add changelog",
          "is_bot": false,
          "headline": "AG-26472 add changelog and gh release workflow",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2023-10-10T13:34:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9870402444a55fb63cbcd7b5533fc91231be8c66",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-10-03T18:28:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "796afe68b11e99a2c0c9df2d50d346b1cb2eaa6c",
          "body": "Squashed commit of the following:\n\ncommit 67ff668642d3c5e45f329670ec2ebb4246b625f6\nMerge: e3a9196 d820df6\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Tue Oct 3 12:36:07 2023 +0300\n\n    Merge branch 'master' into fix/AG-26382\n\ncommit e3a919697edbb78893876e88192168144c80c15e\nAuthor: Slava Lele\n[…]\n23 +0300\n\n    test pre-commit hook\n\ncommit 625777dfaf1473a522d3a1488e7104ee8bdb3467\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Oct 2 22:23:27 2023 +0300\n\n    run lint-staged on pre-commit",
          "is_bot": false,
          "headline": "run lint-staged on pre-commit. AG-26382",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2023-10-03T18:28:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d820df661cf4357b7ee4d5b75251e9204ad9aa43",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-10-03T09:35:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afc60c58f8662b50278e47b5dd12cdba1f37dfd4",
          "body": "Squashed commit of the following:\n\ncommit a568d65bd1e5a891ab4be8f0696117f272056d88\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Oct 2 22:08:47 2023 +0300\n\n    fix linter\n\ncommit 4ea3cb50ca1958edc266d7199078b0e3030ff240\nMerge: dd94c11 4e77339\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDat\n[…]\n 17:23:22 2023 +0300\n\n    add cosmetic code fixes\n\ncommit e3e0597152bbc5fdc8207f2de8839a6966b307ea\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Fri Sep 29 17:19:38 2023 +0300\n\n    update readme",
          "is_bot": false,
          "headline": "support `!#else` directive. #20 AG-26168",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2023-10-03T09:35:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e7733921d9b51644d8f92724a244d1d68f39e7e",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-10-02T19:02:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "378e36b3b584f4b52ceeac43413945a5246160f0",
          "body": "Squashed commit of the following:\n\ncommit c489d1624a1ee560fcd7b58b87d2b205e3016f3a\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Oct 2 21:49:55 2023 +0300\n\n    run linter during test specs\n\ncommit 29d7d4b14b42005252bce65b8087dff71639a165\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Oct 2 21:48:23 2023 +0300\n\n    fix linter errors\n\ncommit 3dee85e577d4e79f59299ae4f9d9ebbb614fcda7\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Mon Oct 2 21:48:08 2023 +0300\n\n    add linter",
          "is_bot": false,
          "headline": "add linter. AG-26382",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2023-10-02T19:02:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "086b55a7683e0600ffebc830d6a55a9a24a37d1a",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2023-10-02T10:28:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b72fb753959b423cf9ab9d73473b076a50460184",
          "body": "Squashed commit of the following:\n\ncommit 5a1bc874d8f8541ab03939eb93047ee4bb792962\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Fri Sep 29 21:22:45 2023 +0300\n\n    update docker image",
          "is_bot": false,
          "headline": "update docker image. AG-26335",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2023-10-02T10:28:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8249bbca52adc7a7f6a83f14eb3e76ffbaea722d",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2022-11-25T13:48:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f898ca7f2c05b663ef7c82004a963a894e471ec3",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-14765 to master\n\nSquashed commit of the following:\n\ncommit 020a9303368e2421015ada27a4e17ce5ea78d901\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Fri Nov 25 15:25:19 2022 +0200\n\n    AG-14765 add comment why removed Promise.all\n\ncommit 2c25d1fb9\n[…]\n+0200\n\n    AG-14765 fix command\n\ncommit 55a45d003a3f3806969d36e33baa9412cdec22d4\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Nov 22 20:01:16 2022 +0200\n\n    AG-14765 add chunked promise all",
          "is_bot": false,
          "headline": "AG-14765 add chunked promise all",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2022-11-25T13:48:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c110c0b5829b30433cae07222e24e8bda065736d",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2022-11-11T10:03:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3576fda2eacb0afe5faa4882babfade21dc23280",
          "body": "Merge in EXTENSIONS/filters-downloader from fixes/AG-17065 to master\n\nSquashed commit of the following:\n\ncommit 1b4fb5130b557d75efc4fcdf0ea83eab89206b94\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Nov 10 19:07:08 2022 +0400\n\n    fix\n\ncommit 4ecaae6b55065d511e47cd2b318f9dfa11df41ab\nAu\n[…]\n59 2022 +0400\n\n    undo version bump\n\ncommit e0529fd395061c90ce2cb7a4941feac90fb12d19\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Oct 20 17:32:14 2022 +0400\n\n    AG-17065: fixed export",
          "is_bot": false,
          "headline": "Pull request #36: AG-17065: fixed export",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2022-11-11T10:03:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "54c6d224c1a92117a5c5cf1305b363522244f902",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2022-04-04T14:54:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebfda727da3520c44018cc9d992645e5bcceba3c",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/AG-13506 to master\n\nSquashed commit of the following:\n\ncommit c71d42a904b545f8b1b274da3b1b2177088c9131\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Mon Apr 4 12:19:11 2022 +0300\n\n    fix\n\ncommit bd95d79f48a82bcff124547d5fdf6e79270d4466\nA\n[…]\n 2022 +0300\n\n    changed package.json\n\ncommit d88c17053cc530b920b7ac28986bd3ca58980953\nAuthor: Dmitriy Seregin <d.seregin@adguard.com>\nDate:   Thu Mar 31 18:12:20 2022 +0300\n\n    AG-13506: added types",
          "is_bot": false,
          "headline": "AG-13506: added types",
          "author_name": "Dmitry Seregin",
          "author_login": "105th",
          "committed_at": "2022-04-04T14:54:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cf44f54d7e3c7c1a9e60073c77a3b9cf3780b54f",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2022-03-22T14:48:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b82484f5a18f5db67ca53b8f1ce4b29de2491de9",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-2774_1 to master\n\nSquashed commit of the following:\n\ncommit 211fe2a5adb9ac1bb64fd95a92ceca8d70efa27a\nAuthor: tvinzz <o.labudko@adguard.com>\nDate:   Tue Mar 22 21:31:29 2022 +0700\n\n    moved definedProperties check into resolveConditions\n\ncommit c502\n[…]\n presented\n\ncommit ddf063127ae6a1b09590b217360c0ec5c83f5e5b\nAuthor: tvinzz <o.labudko@adguard.com>\nDate:   Sat Mar 19 03:49:22 2022 +0700\n\n    resolve conditions only if definedProperties is presented",
          "is_bot": false,
          "headline": "Pull request: AG-2774 Make \"!#include\" sensitive to \"!#if\"",
          "author_name": "Oleg Labudko",
          "author_login": null,
          "committed_at": "2022-03-22T14:48:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0b6c89f8c99dac62b6a683983445b1ec8af4c616",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2022-03-18T13:18:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77bbc4d87814d4cb4b5b07840e44eb98cfc09b42",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-13204 to master\n\nSquashed commit of the following:\n\ncommit 5d6676d6b7db4d4dd93db82ca826a7323f2017ae\nAuthor: Anton <a.kaprielov@adguard.com>\nDate:   Fri Mar 18 14:05:24 2022 +0300\n\n    AG-13204 fix test & update qunit\n\ncommit ca8557656d5764fbb80697b8\n[…]\n12:14:28 2022 +0300\n\n    AG-13204\n\ncommit f328b9c4493695c6f8e8b032aadfcc88a24cdf7b\nAuthor: Anton <a.kaprielov@adguard.com>\nDate:   Tue Mar 15 17:12:47 2022 +0300\n\n    AG-13204 Filter Importation Error",
          "is_bot": false,
          "headline": "Pull request #30: Filter Importation Error",
          "author_name": "Anton Kaprielov",
          "author_login": null,
          "committed_at": "2022-03-18T13:18:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2e7e8768715f9a84b603c0997d84effa9c684a2",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2022-03-16T10:25:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f28e6b5887ace35ba9188a6d6a0e9ab3e7a79b97",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-2774 to master\n\nSquashed commit of the following:\n\ncommit d5e59f39d3b70d8966447b66153a51bf5783ba1e\nAuthor: tvinzz <o.labudko@adguard.com>\nDate:   Wed Mar 16 17:01:38 2022 +0700\n\n    removed redundant test files\n\ncommit 41de02cd185f07e5bdac63ac3c49b5\n[…]\n:   Wed Mar 16 02:47:56 2022 +0700\n\n    added more tests\n\ncommit cde9793814e1c70b714108492216992a2b5a43e9\nAuthor: tvinzz <o.labudko@adguard.com>\nDate:   Wed Mar 16 02:25:03 2022 +0700\n\n    added tests",
          "is_bot": false,
          "headline": "Pull request: AG-2774 Make \"!#include\" sensitive to \"!#if\"",
          "author_name": "Oleg Labudko",
          "author_login": null,
          "committed_at": "2022-03-16T10:25:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "60972b2676b7ffbca1313ffce235781816e9f7d9",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2022-03-16T09:13:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66fe50a02e536a3c094fe7232b7b11167aadbe61",
          "body": "Merge in EXTENSIONS/filters-downloader from add_test_files to master\n\nSquashed commit of the following:\n\ncommit 2838fa0da2e88782c0b7df3994e3a2ed9b908821\nAuthor: tvinzz <o.labudko@adguard.com>\nDate:   Wed Mar 16 03:08:37 2022 +0700\n\n    added test files",
          "is_bot": false,
          "headline": "Pull request: Add test files",
          "author_name": "Oleg Labudko",
          "author_login": null,
          "committed_at": "2022-03-16T09:13:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e841264fc49a9cf10724e576d0c3f1c89a610d5",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2022-03-04T10:01:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f7775041450f55dfb3e5b5edb326e730a80f322",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/AG-12919 to master\n\nSquashed commit of the following:\n\ncommit 464724243045d77192e1cd2ada58db07f7d7b4a2\nAuthor: Anton <a.kaprielov@adguard.com>\nDate:   Thu Mar 3 16:31:59 2022 +0300\n\n    AG-12919 fix comment\n\ncommit 3edd98bf70d78f0c6e3dd71c2f01aa4ff\n[…]\n09:48 2022 +0300\n\n    AG-12919 fix comment\n\ncommit 24a19d2f5711f667a276cf5919a140ba3a4e3124\nAuthor: Anton <a.kaprielov@adguard.com>\nDate:   Thu Mar 3 14:08:40 2022 +0300\n\n    add fetch to getLocalFile",
          "is_bot": false,
          "headline": "Pull request #29: AG-12919 add fetch to getLocalFile",
          "author_name": "Anton Kaprielov",
          "author_login": null,
          "committed_at": "2022-03-04T10:01:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4fc68cc0133c271a028f763e8f1b5cc0fb5e53b",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2021-10-26T09:05:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17978c5fd23d957754d0fa815d62d2180d3cd63a",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/tests to master\n\nSquashed commit of the following:\n\ncommit d32bdc36ddb1d08b5c0a3da2ab8f400c4f5b98b7\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Tue Oct 26 11:42:10 2021 +0300\n\n    make tests fail with error code",
          "is_bot": false,
          "headline": "Pull request #28: make tests fail with error code",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2021-10-26T09:05:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f5ddddcac413b8843b38a52db7484a583a45693",
          "body": null,
          "is_bot": false,
          "headline": "skipci: Automatic increment build number",
          "author_name": "Atlassian Bamboo",
          "author_login": null,
          "committed_at": "2021-10-26T08:32:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4acba97f470225c988bf3061ba6e8ffc39417134",
          "body": "…tically\n\nMerge in EXTENSIONS/filters-downloader from feature/AG-9441 to master\n\nSquashed commit of the following:\n\ncommit 7c2074a5c0810896aa01a88e94ba843a489e145e\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Fri Oct 22 16:26:33 2021 +0300\n\n    AG-9441 setup specs\n\ncommit f7c8ad928f2adb4a2733a93a29f6b16fa867a37b\nAuthor: Maxim Topciu <mtopciu@adguard.com>\nDate:   Fri Oct 22 14:44:57 2021 +0300\n\n    AG-9441 prepare plans",
          "is_bot": false,
          "headline": "Pull request #27: Feature/AG-9441 setup specs to deploy to npm automa…",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2021-10-25T10:58:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46971635fd176de1535c66d8f3d0cc13db208a3c",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-9365 to master\n\nSquashed commit of the following:\n\ncommit a793106f7b9ceb3b7406f9fa83ff8f889b46c5ce\nAuthor: Vladimir Zhelvis <v.zhelvis@adguard.com>\nDate:   Mon Aug 2 17:55:56 2021 +0300\n\n    update\n\ncommit 44123b878e00bac933d3e271e68d86ea49542c04\nAu\n[…]\n21 +0300\n\n    add isLocal export\n\ncommit e72f8dcd5cdc71fb5e1de6fb04fcfd49b1971229\nAuthor: Vladimir Zhelvis <v.zhelvis@adguard.com>\nDate:   Mon Aug 2 12:01:39 2021 +0300\n\n    fix local file downloading",
          "is_bot": false,
          "headline": "Pull request #26: Fix/AG-9365 Fix local custom filter file import",
          "author_name": "Vladimir Zhelvis",
          "author_login": "zhelvis",
          "committed_at": "2021-08-02T15:30:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "506d2536b4ae6df4181be21766540f216ab6cbd6",
          "body": "Merge in EXTENSIONS/filters-downloader from fix/AG-9148 to master\n\nSquashed commit of the following:\n\ncommit ca79a899b5ad5ce9433dbf65c2526d4374b7a9c8\nAuthor: Slava Leleka <v.leleka@adguard.com>\nDate:   Thu Jul 29 15:55:00 2021 +0300\n\n    update license and package.json",
          "is_bot": false,
          "headline": "update license. AG-9148",
          "author_name": "Slava Leleka",
          "author_login": "slvvko",
          "committed_at": "2021-07-30T10:09:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a87c603d04ae2494f8df60ff9e325ee2114256ed",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/AG-9009 to master\n\nSquashed commit of the following:\n\ncommit 1aff8c4208d8446beafa0ca9839321a0f59b3812\nAuthor: tvinzz <o.labudko@adguard.com>\nDate:   Mon Jul 12 18:08:12 2021 +0300\n\n    fixed url constants\n\ncommit ae4909d896e8a04e9aae4e56b1563279c84\n[…]\nersion to 1.1.3 and axios\n\ncommit ba9694dfa974d7281f0bdf4f1f918b861a4c2958\nAuthor: tvinzz <o.labudko@adguard.com>\nDate:   Mon Jul 12 15:35:06 2021 +0300\n\n    removed redundant decodeURI and added test",
          "is_bot": false,
          "headline": "Pull request: AG-9009 Escape special characters",
          "author_name": "Oleg Labudko",
          "author_login": null,
          "committed_at": "2021-07-13T16:06:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "06eb3ae5928dd2a1064ef9dd9b328011f3603fce",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/npm to master\n\nSquashed commit of the following:\n\ncommit 75a6f8f89e786a08b4ac2c6b340ed14e8444f684\nAuthor: Maxim Topciu <maximtop@gmail.com>\nDate:   Mon Jun 28 17:13:23 2021 +0300\n\n    prepare for publishing to npm",
          "is_bot": false,
          "headline": "Pull request #22: prepare for publishing to npm",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2021-06-29T13:00:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01e77c8180e7b29a20bda7bf0be7d479ba9c26eb",
          "body": "… is undefined\n\nMerge in EXTENSIONS/filters-downloader from fix/fetch to master\n\n* commit 'a1c7ed5321bcd15e091dd76d77ada53f216e4dcd':\n  download local files with xmlhttprequest\n  replace XMLHttpRequest with fetch, fix tests",
          "is_bot": false,
          "headline": "Pull request #21: add fetch downloader, throw error if XMLHttpRequest…",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2021-02-25T07:47:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1c7ed5321bcd15e091dd76d77ada53f216e4dcd",
          "body": null,
          "is_bot": false,
          "headline": "download local files with xmlhttprequest",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2021-02-24T10:06:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bbd6c6e6f05f2895b28b3e7478886f3f96b44d7",
          "body": null,
          "is_bot": false,
          "headline": "replace XMLHttpRequest with fetch, fix tests",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2021-02-20T12:43:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "302b8fcbe4e9d4296c259e0359214c2994467506",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/AG-4057-1 to master\n\n* commit '462a8b753da3429665960968cf79084ccc0caed5':\n  AG-4057 remove gulpfile",
          "is_bot": false,
          "headline": "Pull request #20: AG-4057 remove gulpfile",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2020-09-14T09:36:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "462a8b753da3429665960968cf79084ccc0caed5",
          "body": null,
          "is_bot": false,
          "headline": "AG-4057 remove gulpfile",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2020-09-14T06:28:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afde37dfe7f9a3ba6041e3c9fb30271ad2eb4d43",
          "body": "Merge in EXTENSIONS/filters-downloader from feature/AG-4057 to master\n\n* commit 'd6f833fbf07e8ac69593dbf6994668ee50e819db':\n  AG-4057 update version\n  AG-4057 add node-qunit dev dependency\n  AG-4057 fix messages\n  AG-4057 refactor FiltersDownloader and prepare it for use with browser",
          "is_bot": false,
          "headline": "Pull request #19: Feature/AG-4057",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2020-09-14T06:22:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6f833fbf07e8ac69593dbf6994668ee50e819db",
          "body": null,
          "is_bot": false,
          "headline": "AG-4057 update version",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2020-09-11T13:05:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9871954a4d48d50680416b1ee8e5d8a25665861",
          "body": null,
          "is_bot": false,
          "headline": "AG-4057 add node-qunit dev dependency",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2020-09-11T12:25:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ecfeb1f1f7dfb19ac0aa22b8736f094e06021ef",
          "body": null,
          "is_bot": false,
          "headline": "AG-4057 fix messages",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2020-09-11T12:21:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fae0ed72185d1c615252efe84715443219163db9",
          "body": null,
          "is_bot": false,
          "headline": "AG-4057 refactor FiltersDownloader and prepare it for use with browser",
          "author_name": "Maxim Topciu",
          "author_login": "maximtop",
          "committed_at": "2020-09-11T12:18:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 35,
      "commits_last_year": 17,
      "latest_release_at": "2026-07-14T13:56:45Z",
      "latest_release_tag": "v2.4.5",
      "releases_from_tags": false,
      "days_since_last_push": 11,
      "active_weeks_last_year": 9,
      "days_since_latest_release": 11,
      "mean_days_between_releases": 64.3
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@adguard/filters-downloader",
          "exists": true,
          "license": "GPL-3.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/@adguard/filters-downloader",
          "is_deprecated": false,
          "latest_version": "2.4.5",
          "repository_url": "https://github.com/AdGuardSoftwareLimited/ext-filters-downloader",
          "versions_count": 35,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 3,
          "monthly_downloads": 10137,
          "first_published_at": "2021-06-29T13:02:27.497000Z",
          "latest_published_at": "2026-07-14T13:55:52.677000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 11
        }
      ]
    },
    "popularity": {
      "forks": 3,
      "stars": 18,
      "watchers": 16,
      "fork_history": {
        "days": [
          {
            "date": "2019-04-05",
            "count": 1
          },
          {
            "date": "2021-10-22",
            "count": 1
          },
          {
            "date": "2025-05-26",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 3,
        "total_forks": 3
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 38026,
      "source_files_sampled": 18,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 8115
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "axios",
            "direct": true,
            "version": "1.15.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.7,
            "advisory_ids": [
              "GHSA-35jp-ww65-95wh",
              "GHSA-3g43-6gmg-66jw",
              "GHSA-3w6x-2g7m-8v23",
              "GHSA-42h9-826w-cgv3",
              "GHSA-445q-vr5w-6q77",
              "GHSA-5c9x-8gcm-mpgx",
              "GHSA-62hf-57xw-28j9",
              "GHSA-6chq-wfr3-2hj9",
              "GHSA-777c-7fjr-54vf",
              "GHSA-7q8q-rj6j-mhjq"
            ],
            "fixed_version": "1.18.0",
            "advisory_count": 28,
            "oldest_advisory_days": 82
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1
        },
        "advisory_count": 28,
        "affected_count": 1,
        "assessed_count": 29,
        "malicious_count": 0,
        "assessed_package": "npm:@adguard/filters-downloader@2.4.5",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@adguard/diff-builder",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.1.4"
        },
        {
          "name": "axios",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.15.0"
        },
        {
          "name": "crypto-js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "4.2.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@adguard/diff-builder",
            "direct": true,
            "version": "1.0.17",
            "ecosystem": "npm"
          },
          {
            "name": "axios",
            "direct": true,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "crypto-js",
            "direct": true,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aashutoshrathi/word-wrap",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@ampproject/remapping",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.23.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.23.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-environment-visitor",
            "direct": false,
            "version": "7.22.20",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-function-name",
            "direct": false,
            "version": "7.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-hoist-variables",
            "direct": false,
            "version": "7.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.22.15",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.23.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-simple-access",
            "direct": false,
            "version": "7.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-split-export-declaration",
            "direct": false,
            "version": "7.22.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.23.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.22.20",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.23.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/highlight",
            "direct": false,
            "version": "7.23.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-async-generators",
            "direct": false,
            "version": "7.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-bigint",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-properties",
            "direct": false,
            "version": "7.12.13",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-meta",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-json-strings",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.23.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-logical-assignment-operators",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-nullish-coalescing-operator",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-numeric-separator",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-object-rest-spread",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-catch-binding",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-chaining",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-top-level-await",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.23.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.22.15",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.23.6",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@cspotcode/source-map-support",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@es-joy/jsdoccomment",
            "direct": false,
            "version": "0.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "8.56.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/config-array",
            "direct": false,
            "version": "0.11.13",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/object-schema",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/cliui",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/load-nyc-config",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/console",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/core",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/create-cache-key-function",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/globals",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/reporters",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/source-map",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-result",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-sequencer",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/transform",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/set-array",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.4.15",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.20",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgjs/parseargs",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-commonjs",
            "direct": false,
            "version": "25.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-json",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-node-resolve",
            "direct": false,
            "version": "15.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-typescript",
            "direct": false,
            "version": "11.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.27.8",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "10.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@swc-node/core",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "@swc-node/register",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@swc-node/sourcemap-support",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-darwin-arm64",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-darwin-x64",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-linux-arm64-gnu",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-linux-arm64-musl",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-linux-x64-gnu",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-linux-x64-musl",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-win32-arm64-msvc",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-win32-ia32-msvc",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/core-win32-x64-msvc",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/counter",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/helpers",
            "direct": false,
            "version": "0.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/jest",
            "direct": false,
            "version": "0.2.29",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/types",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node10",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node12",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node14",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node16",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__core",
            "direct": false,
            "version": "7.20.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__generator",
            "direct": false,
            "version": "7.6.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__template",
            "direct": false,
            "version": "7.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__traverse",
            "direct": false,
            "version": "7.20.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/body-parser",
            "direct": false,
            "version": "1.19.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/connect",
            "direct": false,
            "version": "3.4.38",
            "ecosystem": "npm"
          },
          {
            "name": "@types/crypto-js",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express-serve-static-core",
            "direct": false,
            "version": "4.17.41",
            "ecosystem": "npm"
          },
          {
            "name": "@types/graceful-fs",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-errors",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-coverage",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-report",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-reports",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json5",
            "direct": false,
            "version": "0.0.29",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mime",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mime",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "20.10.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/qs",
            "direct": false,
            "version": "6.9.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/qunit",
            "direct": false,
            "version": "2.19.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/range-parser",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/resolve",
            "direct": false,
            "version": "1.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/semver",
            "direct": false,
            "version": "7.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/send",
            "direct": false,
            "version": "0.17.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/serve-static",
            "direct": false,
            "version": "1.15.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stack-utils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "16.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "17.0.32",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs-parser",
            "direct": false,
            "version": "21.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-walk",
            "direct": false,
            "version": "8.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "amdefine",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "are-docs-informative",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "argsparser",
            "direct": false,
            "version": "0.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "array-buffer-byte-length",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-flatten",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-includes",
            "direct": false,
            "version": "3.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.findlastindex",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flat",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flatmap",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "arraybuffer.prototype.slice",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "available-typed-arrays",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "babel-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-istanbul",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jest-hoist",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-current-node-syntax",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-jest",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.22.2",
            "ecosystem": "npm"
          },
          {
            "name": "bser",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "builtin-modules",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001570",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-table",
            "direct": false,
            "version": "0.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "cli-truncate",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "co",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "collect-v8-coverage",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colorette",
            "direct": false,
            "version": "2.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "colors",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "comment-parser",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "commondir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "confusing-browser-globals",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "0.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "create-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-require",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "destroy",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-newline",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "diff-sequences",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eastasianwidth",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.4.615",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-abstract",
            "direct": false,
            "version": "1.22.3",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-shim-unscopables",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-to-primitive",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escodegen",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "8.56.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-airbnb-base",
            "direct": false,
            "version": "15.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-airbnb-typescript",
            "direct": false,
            "version": "17.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-import-resolver-node",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-module-utils",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-import",
            "direct": false,
            "version": "2.29.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-import-newlines",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-jsdoc",
            "direct": false,
            "version": "46.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "2.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "exit",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "4.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "fb-watchman",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.15.3",
            "ecosystem": "npm"
          },
          {
            "name": "for-each",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "foreground-child",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "function.prototype.name",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "functions-have-names",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-symbol-description",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "10.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "5.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "11.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "13.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "globalthis",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "globalyzer",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "globrex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "graphemer",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.8",
            "ecosystem": "npm"
          },
          {
            "name": "has-bigints",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "husky",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.4.24",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "internal-slot",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-array-buffer",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-bigint",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-boolean-object",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-builtin-module",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-callable",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-date-object",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-module",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-negative-zero",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number-object",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-reference",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-regex",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-shared-array-buffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-string",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-symbol",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-typed-array",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakref",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul",
            "direct": false,
            "version": "0.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "jackspeak",
            "direct": false,
            "version": "2.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-changed-files",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-circus",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-cli",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-config",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-diff",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-docblock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-each",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-node",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-get-type",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-haste-map",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-leak-detector",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-matcher-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-pnp-resolver",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve-dependencies",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runner",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runtime",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-snapshot",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-validate",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-watcher",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-cleanup",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdoc-type-pratt-parser",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "2.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "leven",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "lint-staged",
            "direct": false,
            "version": "14.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "listr2",
            "direct": false,
            "version": "6.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "log-update",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.5",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "makeerror",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "methods",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "0.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "nock",
            "direct": false,
            "version": "13.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-int64",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-qunit",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.14",
            "ecosystem": "npm"
          },
          {
            "name": "node-watch",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "object.entries",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "object.fromentries",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "object.groupby",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.values",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "1.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "perf-regexes",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pidtree",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "pirates",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "prompts",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "propagate",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "qunit",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "regenerator-runtime",
            "direct": false,
            "version": "0.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "regexp.prototype.flags",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.8",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve.exports",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "rfdc",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-plugin-cleanup",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-pluginutils",
            "direct": false,
            "version": "2.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-array-concat",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex-test",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-name",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "skip-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slice-ansi",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "sourcemap-codec",
            "direct": false,
            "version": "1.4.8",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-utils",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-argv",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-length",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trim",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimend",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimstart",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-glob",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "tmpl",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "to-fast-properties",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tracejs",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ts-node",
            "direct": false,
            "version": "10.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "tsconfig-paths",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "1.6.18",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-buffer",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-length",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-offset",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-length",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.17.4",
            "ecosystem": "npm"
          },
          {
            "name": "unbox-primitive",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "underscore",
            "direct": false,
            "version": "1.13.6",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "5.26.5",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "utils-merge",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "v8-compile-cache-lib",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "walker",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-boxed-primitive",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-typed-array",
            "direct": false,
            "version": "1.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yn",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 683,
        "direct_count": 3,
        "indirect_count": 680
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 1,
        "closed_ratio": 0.75,
        "closed_issues": 3,
        "closed_unmerged_prs": 29
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "maximtop",
          "commits": 39,
          "avatar_url": "https://avatars.githubusercontent.com/u/17272769?v=4"
        },
        {
          "type": "User",
          "login": "Mizzick",
          "commits": 33,
          "avatar_url": "https://avatars.githubusercontent.com/u/13855288?v=4"
        },
        {
          "type": "User",
          "login": "slvvko",
          "commits": 21,
          "avatar_url": "https://avatars.githubusercontent.com/u/12473278?v=4"
        },
        {
          "type": "User",
          "login": "4-life",
          "commits": 21,
          "avatar_url": "https://avatars.githubusercontent.com/u/10114517?v=4"
        },
        {
          "type": "User",
          "login": "105th",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/11395678?v=4"
        },
        {
          "type": "User",
          "login": "jellizaveta",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/91964807?v=4"
        },
        {
          "type": "User",
          "login": "ameshkov",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/5947035?v=4"
        },
        {
          "type": "User",
          "login": "neolite",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/576423?v=4"
        },
        {
          "type": "User",
          "login": "zhelvis",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/25105808?v=4"
        }
      ],
      "contributors_sampled": 9,
      "top_contributor_share": 0.295
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "mirror.yml",
        "prepare-release.yml",
        "publish-release.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".eslintrc.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 5,
            "reason": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "84 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "99a4ea1348954d371b73523af286224ea5e6a79c",
        "ran_at": "2026-07-26T08:10:08Z",
        "aggregate_score": 2.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-14T01:59:33Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 27,
          "created_at": "2024-05-23T12:28:35Z",
          "last_comment_at": "2024-05-23T12:30:04Z",
          "last_comment_author": "Alex-302"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/AdguardTeam/FiltersDownloader",
    "host": "github.com",
    "name": "FiltersDownloader",
    "owner": "AdguardTeam"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": "The weighted overall 56 is calibrated to 59 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 56,
            "calibrated": 59,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 59,
      "inputs": {
        "security": 36,
        "vitality": 64,
        "community": 39,
        "governance": 58,
        "calibration": "2026-08-02",
        "engineering": 72,
        "ai_readiness": 74,
        "weighted_overall_raw": 56
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 64,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 51,
            "inputs": {
              "commits_last_year": 17,
              "human_commit_share": 0.99,
              "days_since_last_push": 11,
              "active_weeks_last_year": 9
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 11 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "9/52 weeks with commits",
                "points": 6.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "17 commits in the last year",
                "points": 11.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
                "points": 5,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "releases_count": 35,
              "latest_release_tag": "v2.4.5",
              "releases_from_tags": false,
              "days_since_latest_release": 11,
              "mean_days_between_releases": 64.3
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "35 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 35
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 11 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~64.3 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 64.3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 25,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 25 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 25
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "weak",
        "name": "Community & Adoption",
        "value": 39,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 29,
            "inputs": {
              "forks": 3,
              "stars": 18,
              "watchers": 16,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "18 stars",
                "points": 20,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "3 forks",
                "points": 2.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "16 watchers",
                "points": 6.5,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (GPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "GPL-3.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 58,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 59,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 9,
              "top_contributor_share": 0.295
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 30% of commits",
                "points": 15.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 30
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "9 contributors",
                "points": 12.2,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "weak",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 36,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 1,
              "closed_issues": 3,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.75,
              "closed_unmerged_prs": 29,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "75% of issues closed",
                "points": 31.5,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 75
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "0/29 decided PRs merged",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 0,
                      "decided": 29
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "excellent",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "followers": 3930,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "AdguardTeam",
              "public_repos": 116,
              "account_age_days": 4372
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "3,930 followers of AdguardTeam",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3930,
                      "login": "AdguardTeam"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "116 public repos, account ~11 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 116
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 72,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".eslintrc.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "topics": [
                "open-source"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "1 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "weak",
        "name": "Security",
        "value": 36,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 26,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 2.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "84 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Matched the npm:@adguard/filters-downloader@2.4.5 runtime dependency closure — what installing the published package pulls in — 29 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@adguard/filters-downloader@2.4.5",
                  "assessed": 29
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 76,
            "inputs": {
              "source": "osv",
              "advisories": 28,
              "affected_packages": 1,
              "assessed_packages": 29,
              "unassessed_packages": 0,
              "affected_by_severity": "high 1",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: axios 1.15.0 (high 8.7)",
                "points": 10.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "axios 1.15.0 (high 8.7)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 29,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 5
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 74,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.919,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 8115
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "91 of 99 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 91,
                      "sampled": 99
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 0.01,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".eslintrc.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "exceptional",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 38026,
              "source_files_sampled": 18,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/18 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 18,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [],
      "scores": {
        "library": 2
      },
      "primary": null,
      "evidence": [
        {
          "tier": "description",
          "label": "library",
          "source": "description:library",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "none",
      "host_extension": false,
      "runs_as_process": false,
      "consumed_by_code": false
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "npm package '@adguard/filters-downloader' points at a different repository (https://github.com/AdGuardSoftwareLimited/ext-filters-downloader); excluded from ecosystem scoring"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T08:10:16.005592Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/AdguardTeam/FiltersDownloader.svg",
  "full_name": "AdguardTeam/FiltersDownloader",
  "license_state": "standard",
  "license_spdx": "GPL-3.0"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v2.3.1, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm.