{"_id":"@adguard/api-mv3","_rev":"15-b6a00f968fe6c1eda69a7f190b3a7c90","name":"@adguard/api-mv3","dist-tags":{"latest":"2.0.1"},"versions":{"0.0.2":{"name":"@adguard/api-mv3","version":"0.0.2","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.0.2","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"03982a0360863b381e82a44a8845422653c010c4","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.0.2.tgz","fileCount":15,"integrity":"sha512-o9Y17CO7RiXQLJb4yVTs/e0yPBu3GJ96H8R2UcaL6VkxYh4LwqfNcJ/+rDkvvS8FJLhUALAw7LM/E7tK8lLJNQ==","signatures":[{"sig":"MEYCIQC4kG2fn8mNYIQMA+4fl6Va+YnsxaANB9uFl5GAJLo1TgIhANHmtWkmff+jxlK+Zx/kdmBA82mJ42VNdcLDV5BqML+G","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1560729},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/72220673/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-o9Y17CO7RiXQLJb4yVTs/e0yPBu3GJ96H8R2UcaL6VkxYh4LwqfNcJ/+rDkvvS8FJLhUALAw7LM/E7tK8lLJNQ==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"^1.0.1","@adguard/tswebextension":"https://github.com/AdguardTeam/tsurlfilter/raw/release/v2.3-for-5.0/packages/tswebextension/tswebextension.tgz"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","cross-env":"^7.0.3","typescript":"^5.3.2","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.10.7","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.0.2_1718800166399_0.12703229097050794","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@adguard/api-mv3","version":"0.0.3","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.0.3","dist":{"shasum":"dd1e1c0501e85eaddf1e3e4451fa7241ca907468","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.0.3.tgz","fileCount":15,"integrity":"sha512-QfOUzvXJQI5tLDULBVLvvtUgs1LXESkUy3QcOUA0E+yfJWuq7uD1va9aiTBY2+/cV8ARGWPmzrri+scKrvGLkw==","signatures":[{"sig":"MEUCIAyJ7dAI3S6lZTTyf9KapbQk5Q+Na3yj/eC9jvJ87jHBAiEAlAfXUtkKT5xPTUkfgEjKaoVVABHDfkFybUxRc/z5xGs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1560140},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/1933314/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-QfOUzvXJQI5tLDULBVLvvtUgs1LXESkUy3QcOUA0E+yfJWuq7uD1va9aiTBY2+/cV8ARGWPmzrri+scKrvGLkw==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"^1.0.1","@adguard/tswebextension":"2.0.0-alpha.0"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","cross-env":"^7.0.3","typescript":"^5.3.2","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.10.7","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.0.3_1719568216530_0.5230466697384673","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@adguard/api-mv3","version":"0.1.1","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.1.1","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"49500458b0b2fcf59d04c7a47dd80cb1f39808f9","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.1.1.tgz","fileCount":16,"integrity":"sha512-jZsMKIKYMmRDAG+ecIm7e4BC7bWUDXacHBYybnJYWkHKNj6izqHqpbTbltN0GSj6G1JHdyyhmA6RpJM27e+vYA==","signatures":[{"sig":"MEYCIQC2O3cjMI9JRixo7MjUz1Yp+sTUKQkfTqx9mRm80FRNhwIhANibAdWDxIw/Q+WbkmjJLfDhjEcn0AcVG85J/+9cJJS+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571356},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"jest","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/1933316/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-jZsMKIKYMmRDAG+ecIm7e4BC7bWUDXacHBYybnJYWkHKNj6izqHqpbTbltN0GSj6G1JHdyyhmA6RpJM27e+vYA==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"^1.0.0","@adguard/tswebextension":"^2.0.0-alpha.1"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","@swc/jest":"^0.2.36","cross-env":"^7.0.3","typescript":"^5.3.2","@types/jest":"^29.5.12","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.10.7","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.1.1_1720493315273_0.8084582157506199","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@adguard/api-mv3","version":"0.1.2","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.1.2","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"5337f0992ed1217b1f0b09aed301499f1e8200b4","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.1.2.tgz","fileCount":16,"integrity":"sha512-DHVwD7DtA4+R0B3+FOAt/MZFTSUk2tspfUt2cw25s7+VB53lTmXQ33eZH5Bp2MJXVcaM4hwWJ2XQ+3f2urWHNQ==","signatures":[{"sig":"MEQCIFIq6lV8lnalp4lC7AKR4RfLQGQdlFc5o4KGN8G2Q4xbAiA+5dfKfe8+v6vh2BH/Tulk0D2OSr/Bww4QFtzHcVr/BQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571442},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"jest","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/137953281/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-DHVwD7DtA4+R0B3+FOAt/MZFTSUk2tspfUt2cw25s7+VB53lTmXQ33eZH5Bp2MJXVcaM4hwWJ2XQ+3f2urWHNQ==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"^1.0.1","@adguard/tswebextension":"^2.1.0-alpha.0"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","@swc/jest":"^0.2.36","cross-env":"^7.0.3","typescript":"^5.3.2","@types/jest":"^29.5.12","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.10.7","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.1.2_1722254021246_0.4280388356377507","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@adguard/api-mv3","version":"0.1.3","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.1.3","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"8e048f6cd92155e756486871732fad4c5cac293f","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.1.3.tgz","fileCount":16,"integrity":"sha512-Dz+UQcxLV0JKZ1gPOdv710C7HU1WFQSan6fmfCt9VHvhDS5C2awHcqEOiG2KHSKsFXM6oKjDwjue0xQmlHSQxA==","signatures":[{"sig":"MEUCIGnhMfCk3Gmo7B9+CrOmSZYpC9w1xlVs2GagwVH/r5vAAiEArbp/7xbbU4CmPL8B0kJ/3LrhTuUt9Zb/HAh/wJGtPlw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1571442},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"jest","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/163512322/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-Dz+UQcxLV0JKZ1gPOdv710C7HU1WFQSan6fmfCt9VHvhDS5C2awHcqEOiG2KHSKsFXM6oKjDwjue0xQmlHSQxA==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"^1.0.1","@adguard/tswebextension":"^2.1.0-alpha.1"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","@swc/jest":"^0.2.36","cross-env":"^7.0.3","typescript":"^5.3.2","@types/jest":"^29.5.12","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.10.7","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.1.3_1722265419671_0.8700441853690966","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@adguard/api-mv3","version":"0.1.6","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.1.6","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"9f9d74cb2e10cc82878665e3fb0695d64c36b326","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.1.6.tgz","fileCount":16,"integrity":"sha512-/edUe05hL5VaZ6Z45VDFE/9t07G0nUd8Mq/zBdDboQ79prfE1bb6F8ed0F2cZrQxvj9MM4CCwl1NsiSKOknDUQ==","signatures":[{"sig":"MEUCIQC7IlIUUHMaLyPYp49otepcywJelyht5+TX5bT36/vWHQIgUjHbQYHLIkk5jB0LbNDUkQ2tSZfzr91T8Uhbmz1cFv4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1573514},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"jest","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/1933314/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-/edUe05hL5VaZ6Z45VDFE/9t07G0nUd8Mq/zBdDboQ79prfE1bb6F8ed0F2cZrQxvj9MM4CCwl1NsiSKOknDUQ==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"^1.0.1","@adguard/tswebextension":"^2.1.0-alpha.2"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","@swc/jest":"^0.2.36","cross-env":"^7.0.3","typescript":"^5.3.2","@types/jest":"^29.5.12","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.10.7","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.1.6_1723822972545_0.43025998149133415","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"@adguard/api-mv3","version":"0.1.7","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.1.7","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"c4b6060a8c76f92e93364b860067fe77ee00003d","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.1.7.tgz","fileCount":16,"integrity":"sha512-+VHsWCP4VAHVrvykrXZDeGIxY0Aszh0YerOnGeY5BTKY8JKPVBQzeULY7zYjvez+oBNqRJmYxf6+YzZxgoJWXA==","signatures":[{"sig":"MEQCIGMcYZzHKv1bjrXjVBnOD1/DQMTYzpCwbKnPIn7upZgTAiBhKbIWAUHgv5pl1a6Sd5UKK+JC3RLsAaj5fWbb/5v9RQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1576875},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"jest","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/174817281/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-+VHsWCP4VAHVrvykrXZDeGIxY0Aszh0YerOnGeY5BTKY8JKPVBQzeULY7zYjvez+oBNqRJmYxf6+YzZxgoJWXA==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"^1.0.1","@adguard/tswebextension":"^2.2.0-alpha.1"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","@swc/jest":"^0.2.36","cross-env":"^7.0.3","typescript":"^5.3.2","@types/jest":"^29.5.12","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.10.7","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.1.7_1725030888095_0.45819620471746547","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@adguard/api-mv3","version":"0.2.0","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.2.0","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"19f40c9dacf6d687a5b9c6c73b98ca3523a0483c","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.2.0.tgz","fileCount":16,"integrity":"sha512-oUSgGRrv6k5Ufvt1A+4mLu1eJLzM04iYHzvZbmud7tRx1//l+2Ay5Z9oX1STHmow3/zEtKY6qjbSqLyfMbT5cg==","signatures":[{"sig":"MEUCIQCCVA6yA06TDwozSYUDJO9Qt2bbXIwB3dp1DlSUwSub9gIgf1Ev95lfyhuNofsKrfX454v69BmaSepwstJJ8Ez5ff4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1577552},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"jest","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/137953281/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-oUSgGRrv6k5Ufvt1A+4mLu1eJLzM04iYHzvZbmud7tRx1//l+2Ay5Z9oX1STHmow3/zEtKY6qjbSqLyfMbT5cg==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API for MV3","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"^1.0.2","@adguard/tswebextension":"^2.3.0-alpha.1"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","@swc/jest":"^0.2.36","cross-env":"^7.0.3","typescript":"^5.3.2","@types/jest":"^29.5.12","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.12.1","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.2.0_1727877851123_0.12618201472045465","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@adguard/api-mv3","version":"0.2.1","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.2.1","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"a333289e231ace83bf5e0f7a2f425d0f82593b3e","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.2.1.tgz","fileCount":16,"integrity":"sha512-aZsnLons8ZBliByv3l2MRlJExGueQG8ekTMVl2MmZAtYfO+oFA8JBeF38xuPMpK9+abDf/oUS3DyeRj3auxq6w==","signatures":[{"sig":"MEUCIQCLM+pObiUUBOg3uTIKtxoiqcP/246YLw36e15EVNfoZQIgV+KCqjU9q0fM0webSPfYzh9cr7/YOVPnRfqcmiG/3Xo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1577550},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"jest","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/174817281/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-aZsnLons8ZBliByv3l2MRlJExGueQG8ekTMVl2MmZAtYfO+oFA8JBeF38xuPMpK9+abDf/oUS3DyeRj3auxq6w==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API for MV3","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"1.1.0","@adguard/tswebextension":"2.4.0-alpha.3"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","@swc/jest":"^0.2.36","cross-env":"^7.0.3","typescript":"^5.3.2","@types/jest":"^29.5.12","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.12.1","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.2.1_1728992831938_0.09841096657671367","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@adguard/api-mv3","version":"0.2.3","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.2.3","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"d5be1ed769e06522d2901c7b6d012feb1ea44077","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.2.3.tgz","fileCount":16,"integrity":"sha512-Y0ZlAP8fVRQAExg0XgRzUd2d19Iw1EL38LEDdp1ypQhePQLh4ZfC7bAsAGQ2TnlojAGqYLr+iMVbEeB7wZsv6Q==","signatures":[{"sig":"MEUCIQDJ4JzVbNi3t+O1bAPdeyAI6eBZCAMg+Kda9U8FtDQpuwIgGJWYgBxVjPbcOIOuwJ2EKI76AdLBarGCKk6CL3aoEyc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1577550},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"jest","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","increment":"pnpm version patch --no-git-tag-version","postbuild":"pnpm types && ts-node tasks/build-txt","check-types":"tsc --project tsconfig.build.json --noemit","lint:eslint":"eslint --cache 'src/**/*.ts' 'tasks/**/*.ts'"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/174817281/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-Y0ZlAP8fVRQAExg0XgRzUd2d19Iw1EL38LEDdp1ypQhePQLh4ZfC7bAsAGQ2TnlojAGqYLr+iMVbEeB7wZsv6Q==","_npmVersion":"10.2.4","description":"This is a TypeScript library that implements AdGuard's extension API for MV3","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"3.22.4","@adguard/logger":"1.1.0","@adguard/tswebextension":"2.4.0-alpha.7"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"8.54.0","rollup":"^4.6.0","core-js":"^3.33.3","ts-node":"^10.9.1","@swc/core":"^1.3.99","@swc/jest":"^0.2.36","cross-env":"^7.0.3","typescript":"^5.3.2","@types/jest":"^29.5.12","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.12.1","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.2.3_1732294973496_0.9306762840367415","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@adguard/api-mv3","version":"0.3.0","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@0.3.0","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"23074019f376700c630d3b8e641d89efc29ce9b7","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-0.3.0.tgz","fileCount":16,"integrity":"sha512-R2RoqVDU12CqlRbIhOpYNwwSk2127C20prYv4E71lb5Wmvp/ybWV7mQADeaMVXBWXLfq3qgShi1qoHj35OGqYg==","signatures":[{"sig":"MEUCIQC81XAw4fQ/NTKIS/1odskTJ+PjBN9aGYcEJSU9F+lu1QIgQz4NZQ7XoyoUGI54r/SBtPALdnO68whd3XXpCeU5QFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98581},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"vitest run","tgz":"pnpm pack --out adguard-api-mv3.tgz","lint":"pnpm lint:eslint && pnpm check-types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","postbuild":"pnpm types && tsx tasks/build-txt","check-types":"tsc","lint:eslint":"eslint --cache --ignore-path .gitignore ."},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"ameshkov","email":"am@adguard.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/163512322/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-R2RoqVDU12CqlRbIhOpYNwwSk2127C20prYv4E71lb5Wmvp/ybWV7mQADeaMVXBWXLfq3qgShi1qoHj35OGqYg==","_npmVersion":"10.9.2","description":"This is a TypeScript library that implements AdGuard's extension API for MV3","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"3.24.4","@adguard/tswebextension":"^3.1.0-alpha.3"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","eslint":"8.54.0","rollup":"^4.6.0","vitest":"^2.1.6","core-js":"^3.33.3","@swc/core":"^1.10.18","cross-env":"^7.0.3","typescript":"^5.3.2","@types/node":"^22.13.4","@rollup/plugin-swc":"^0.3.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.0.1","eslint-plugin-jsdoc":"^46.9.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^25.0.7","@typescript-eslint/parser":"6.13.1","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.2.3","@types/webextension-polyfill":"0.12.1","eslint-config-airbnb-typescript":"17.1.0","@typescript-eslint/eslint-plugin":"^6.13.1"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_0.3.0_1748338987846_0.8981142150523309","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@adguard/api-mv3","version":"1.0.0","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@1.0.0","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"0c0ecfa2f51dd048b3e88c315878d068911942e6","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-1.0.0.tgz","fileCount":16,"integrity":"sha512-YZSBpgXoGP3u999TT1/zIbZKEpw2D19fYgWpDcMdRpYbrszKMDjvtq+CqjZ2wWrEnhTpSs7LGWNZiB/A2dD24A==","signatures":[{"sig":"MEUCIGOaeYFHwQVUpe8kDmYZCbwDKjCBq+5oUDPvc5GOWTD/AiEAiDetR0KnbJQSQ4VWaBoeVjST9/haU9ccFNPht/A/zA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116231},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"vitest run","tgz":"pnpm pack --out adguard-api-mv3.tgz","lint":"pnpm lint:code && pnpm lint:types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","lint:code":"eslint --cache --ignore-path .gitignore .","postbuild":"pnpm types && tsx tasks/build-txt","lint:types":"tsc"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"ameshkov","email":"am@adguard.com"},"_resolved":"/opt/atlassian/application-data/bamboo/shared/build-dir/137953281/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-YZSBpgXoGP3u999TT1/zIbZKEpw2D19fYgWpDcMdRpYbrszKMDjvtq+CqjZ2wWrEnhTpSs7LGWNZiB/A2dD24A==","_npmVersion":"10.9.2","description":"This is a TypeScript library that implements AdGuard's extension API for MV3","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"3.24.4","@adguard/tswebextension":"^3.2.17"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","jsdom":"^25.0.1","eslint":"8.57.1","rollup":"^4.28.0","vitest":"^3.2.4","core-js":"^3.33.3","@swc/core":"^1.10.18","cross-env":"^7.0.3","typescript":"^5.7.3","@types/node":"^22.14.0","@rollup/plugin-swc":"^0.4.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.1.0","eslint-plugin-jsdoc":"^48.11.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^28.0.1","@typescript-eslint/parser":"^7.5.0","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.3.0","@types/webextension-polyfill":"^0.12.1","eslint-config-airbnb-typescript":"^18.0.0","@typescript-eslint/eslint-plugin":"^7.5.0"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_1.0.0_1764790259041_0.5948400618667617","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@adguard/api-mv3","version":"2.0.0","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@2.0.0","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"16ad583d877abf0ddcbdf3ede1389cca67a22d6f","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-2.0.0.tgz","fileCount":16,"integrity":"sha512-5kU1DN5T/BP4eQXIlsGMZS5t4U8eFXnjhhV2gineU+/9L6ErN7aZ8aqkzSRmaa3/4HqcXt7vzxF7Q0UFlvYs1w==","signatures":[{"sig":"MEQCIGvNAPe71YxqJmei6WPXDw6w24bHEP0pPgaZE/nO0WjZAiBFccFPjzHJdW26AGlPHYGcnnv2JYoMJZOlQAFqu0EAMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115924},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":"./dist/adguard-api.js","./assistant":"./dist/adguard-assistant.js","./content-script":"./dist/adguard-content.js"},"scripts":{"e2e":"vitest run","tgz":"pnpm pack --out adguard-api-mv3.tgz","lint":"pnpm lint:code && pnpm lint:types","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","prepush":"pnpm build","lint:code":"eslint --cache --ignore-path .gitignore .","postbuild":"pnpm types && tsx tasks/build-txt","lint:types":"tsc"},"typings":"dist/types/background/index.d.ts","_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/var/atlassian/application-data/bamboo/shared/build-dir/296714529/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-5kU1DN5T/BP4eQXIlsGMZS5t4U8eFXnjhhV2gineU+/9L6ErN7aZ8aqkzSRmaa3/4HqcXt7vzxF7Q0UFlvYs1w==","_npmVersion":"10.9.2","description":"This is a TypeScript library that implements AdGuard's extension API for MV3","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"3.24.4","@adguard/tswebextension":"^4.0.3"},"typesVersions":{"*":{"assistant":["dist/types/content-script/assistant.d.ts"],"content-script":["dist/types/content-script/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","jsdom":"^25.0.1","eslint":"8.57.1","rollup":"^4.28.0","vitest":"^4.0.15","core-js":"^3.33.3","@swc/core":"^1.10.18","cross-env":"^7.0.3","typescript":"^5.7.3","@types/node":"^22.14.0","@rollup/plugin-swc":"^0.4.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.1.0","eslint-plugin-jsdoc":"^48.11.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^28.0.1","@typescript-eslint/parser":"^7.5.0","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.3.0","@types/webextension-polyfill":"^0.12.1","eslint-config-airbnb-typescript":"^18.0.0","@typescript-eslint/eslint-plugin":"^7.5.0"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_2.0.0_1772706635929_0.8806282551902167","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@adguard/api-mv3","version":"2.0.1","author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","_id":"@adguard/api-mv3@2.0.1","maintainers":[{"name":"ameshkov","email":"am@adguard.com"},{"name":"maximtop","email":"maximtop@gmail.com"},{"name":"blakhard","email":"vlad.abdulmianov@gmail.com"}],"dist":{"shasum":"ff38d8d2f157e4b2b176fa9003ffa6e7d32af1b4","tarball":"https://registry.npmjs.org/@adguard/api-mv3/-/api-mv3-2.0.1.tgz","fileCount":15,"integrity":"sha512-GMhbeyPpe/CCBWaQr118jxryvP6jWV8KVxzaQOxtGc3UkOE0pD+Nn6GS/PqbLWkK7h0JMyUSZGUoA18L+jjiTg==","signatures":[{"sig":"MEQCICC8mRdhioNC4oXpGc2pQHpeBNd6gae/H1SW74/GCBPlAiAO2L0VS68MqwF5MGndLbBxiF77aIPfaSbeL5qQ4Yzt0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80777},"main":"dist/adguard-api.js","_from":"file:adguard-api-mv3.tgz","exports":{".":{"types":"./dist/types/background/index.d.ts","default":"./dist/adguard-api.js"},"./assistant":{"types":"./dist/types/content-script/assistant.d.ts","default":"./dist/adguard-assistant.js"},"./content-script":{"types":"./dist/types/content-script/index.d.ts","default":"./dist/adguard-content.js"}},"scripts":{"tgz":"pnpm pack --out adguard-api-mv3.tgz","lint":"pnpm lint:code && pnpm lint:types && pnpm lint:md","build":"rollup -c rollup.config.ts --configPlugin @rollup/plugin-swc && pnpm postbuild","types":"tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outdir dist/types","lint:md":"markdownlint .","prepush":"pnpm build","test:ci":"vitest run --reporter default --reporter junit --outputFile=./tests-reports/adguard-api-mv3.xml","lint:code":"eslint --cache --ignore-path .gitignore .","postbuild":"pnpm types && tsx tasks/build-txt","test:prod":"pnpm lint && pnpm test:ci","lint:types":"tsc"},"_npmUser":{"name":"maximtop","email":"maximtop@gmail.com"},"_resolved":"/var/atlassian/application-data/bamboo/shared/build-dir/296714527/202145793-202211329/adguard-api-mv3.tgz","_integrity":"sha512-GMhbeyPpe/CCBWaQr118jxryvP6jWV8KVxzaQOxtGc3UkOE0pD+Nn6GS/PqbLWkK7h0JMyUSZGUoA18L+jjiTg==","_npmVersion":"10.9.7","description":"This is a TypeScript library that implements AdGuard's extension API for MV3","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"3.24.4","@adguard/tswebextension":"^4.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","jsdom":"^25.0.1","eslint":"8.57.1","rollup":"^4.28.0","vitest":"^4.0.15","core-js":"^3.33.3","@swc/core":"^1.10.18","cross-env":"^7.0.3","typescript":"^5.7.3","@types/node":"^22.14.0","markdownlint":"^0.37.4","markdownlint-cli":"^0.44.0","@rollup/plugin-swc":"^0.4.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-json":"^6.1.0","eslint-plugin-jsdoc":"^48.11.0","eslint-plugin-import":"^2.29.0","@rollup/plugin-commonjs":"^28.0.1","@typescript-eslint/parser":"^7.5.0","eslint-config-airbnb-base":"15.0.0","@rollup/plugin-node-resolve":"^15.3.0","@types/webextension-polyfill":"^0.12.1","eslint-config-airbnb-typescript":"^18.0.0","@typescript-eslint/eslint-plugin":"^7.5.0"},"_npmOperationalInternal":{"tmp":"tmp/api-mv3_2.0.1_1778855975157_0.7550362297035953","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2024-06-19T12:29:26.253Z","modified":"2026-08-19T10:43:15.085Z","0.0.2":"2024-06-19T12:29:26.571Z","0.0.3":"2024-06-28T09:50:16.731Z","0.1.1":"2024-07-09T02:48:35.497Z","0.1.2":"2024-07-29T11:53:41.404Z","0.1.3":"2024-07-29T15:03:39.885Z","0.1.6":"2024-08-16T15:42:52.918Z","0.1.7":"2024-08-30T15:14:48.319Z","0.2.0":"2024-10-02T14:04:11.355Z","0.2.1":"2024-10-15T11:47:12.179Z","0.2.3":"2024-11-22T17:02:53.738Z","0.3.0":"2025-05-27T09:43:08.015Z","1.0.0":"2025-12-03T19:30:59.227Z","2.0.0":"2026-03-05T10:30:36.082Z","2.0.1":"2026-05-15T14:39:35.365Z"},"author":{"name":"Adguard Software Ltd."},"license":"GPL-3.0-only","description":"This is a TypeScript library that implements AdGuard's extension API for MV3","maintainers":[{"email":"am@adguard.com","name":"ameshkov"},{"email":"maximtop@gmail.com","name":"maximtop"},{"email":"vlad.abdulmianov@gmail.com","name":"blakhard"},{"email":"d.naumov@adguard.com","name":"d13410n3"}],"readme":"# AdGuard API MV3\n\nAdGuard API is a filtering library that provides the following features:\n\n- Request and content filtering, using\n[@adguard/tswebextension][tswebextensionreadme].\n- Content blocking via AdGuard Assistant UI.\n\n[tswebextensionreadme]: https://github.com/AdguardTeam/tsurlfilter/blob/master/packages/tswebextension/README.md\n\n## Table of contents\n\n- [Installation](#installation)\n- [Required web accessible resources](#required-web-accessible-resources)\n- [Required declarativeNetRequest API assets](#required-declarativenetrequest-api-assets)\n- [Configuration](#configuration)\n- [Local Script Rules for MV3](#local-script-rules-for-mv3)\n- [Excluding Unsafe Rules for Chrome Web Store \"Skip Review\"](#excluding-unsafe-rules-for-chrome-web-store-skip-review)\n- [Static methods](#static-methods)\n    - [`AdguardApi.create`](#adguardapicreate)\n- [Methods](#methods)\n    - [`adguardApi.getMessageHandler`](#adguardapigetmessagehandler)\n    - [`adguardApi.start`](#adguardapistart)\n    - [`adguardApi.stop`](#adguardapistop)\n    - [`adguardApi.configure`](#adguardapiconfigure)\n    - [`adguardApi.openAssistant`](#adguardapiopenassistant)\n    - [`adguardApi.closeAssistant`](#adguardapicloseassistant)\n    - [`adguardApi.getRulesCount`](#adguardapigetrulescount)\n    - [`adguardApi.onAssistantCreateRule`](#adguardapionassistantcreaterule)\n    - [`adguardApi.onRequestBlocked`](#adguardapionrequestblocked)\n- [Usage](#usage)\n- [Minimum supported browser versions](#minimum-supported-browser-versions)\n\n## Installation\n\n1. Install the `@adguard/api-mv3` module via `npm` or `yarn`\n\n    ```shell\n    npm install @adguard/api-mv3\n    ```\n\n    or\n\n    ```shell\n    yarn add @adguard/api-mv3\n    ```\n\n1. Import the `AdguardApi` class to the background script\n\n    ```ts\n    import { AdguardApi } from \"@adguard/api-mv3\";\n    ```\n\n1. Import `adguard-contents` at the top of your content script entry\n\n    ```ts\n    import '@adguard/api-mv3/content-script';\n    ```\n\n1. Import `adguard-assistant` at the top of your assistant script entry\n\n    ```ts\n    import '@adguard/api-mv3/assistant';\n    ```\n\n## Required web accessible resources\n\nAdGuard API MV3 requires [web accessible resources][webaccessibleresources] from the\n[AdGuard Scriptlets library][scriptletsredirectres] to be able to redirect web\nrequests to a local \"resource\" using the `$redirect` rule modifier. You can use\n[@adguard/tswebextension CLI][tswebextensionusage] to download it.\n\n[webaccessibleresources]: https://developer.chrome.com/docs/extensions/mv3/manifest/web_accessible_resources/\n[scriptletsredirectres]: https://github.com/AdguardTeam/Scriptlets#redirect-resources\n[tswebextensionusage]: https://github.com/AdguardTeam/tsurlfilter/blob/master/packages/tswebextension/README.md#cli\n\n## Required declarativeNetRequest API assets\n\n**IMPORTANT: To correct work of `$redirect` path should be `/web-accessible-resources/redirects`.**\n\nIf you are using `@adguard/dnr-rulesets` package, path to web accessible resources is\nbuilt-in into converted rules with `$redirect` modifier and packed inside rulesets.\n\nBecause it should used via periodically updating from the remote in the runtime\nand passed as part of dynamic rules - `Configuration.rules`.\n\nAdGuard API MV3 requires prebuilt DNR rule sets to be able to filter\nweb requests. You can use\n[@adguard/dnr-rulesets CLI](../dnr-rulesets/README.md) to download it.\nWe also provide a extension example with scripts for loading DNR\nrulesets and patching manifest in the\n[examples/adguard-api-mv3](../examples/adguard-api-mv3/) directory.\n\n## Configuration\n\n**Syntax:**\n\n```typescript\ntype Configuration = {\n    filters: number[];\n    filteringEnabled: boolean;\n    assetsPath: string;\n    allowlist?: string[] | undefined;\n    blocklist?: string[] | undefined;\n    rules?: string[] | undefined;\n    documentBlockingPageUrl?: string | undefined;\n};\n```\n\n**Properties:**\n\n- `filters` (mandatory) - An array of filters identifiers. You can look for\n  possible filters identifiers in [dnr-rulesets](../dnr-rulesets/README.md#included-filter-lists).\n\n- `filteringEnabled` (mandatory) - Enable/disable filtering engine.\n\n- `assetsPath` (mandatory) - Path to the directory with DNR rule sets. You can\n  use the [dnr-rulesets](../dnr-rulesets/README.md) CLI to download DNR rule sets.\n\n- `allowlist` (optional) - An array of domains, for which AdGuard won't work.\n\n- `blocklist` (optional) - This property completely changes AdGuard behavior. If\n  it is defined, Adguard will work for domains from the `blocklist` only. All\n  other domains will be ignored. If `blocklist` is defined, `allowlist` will be\n  ignored.\n\n- `rules` (optional) - An array of custom filtering rules. Here is an\n  [article][filter-rules] describing filtering rules syntax. These custom rules\n  might be created by a user via AdGuard Assistant UI.\n\n- `documentBlockingPageUrl` (optional) - Redirect URL for blocking rules with\n  `$document` modifier. If not specified, default browser page will be shown.\n  Page will receive following query parameters:\n    - `url` - blocked URL\n    - `rule` - blocking rule that triggered on this URL\n    - `filterId` - ID of the filter that contains this rule (0 for user rules)\n\n  Example:\n\n    ```text\n    chrome-extension://<extension_id>/blocking-page.html\n      ?url=https%3A%2F%2Fexample.net%2F\n      &rule=example.net%24document\n      &filterId=0\n    ```\n\n[filter-rules]: https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters\n\n**Example:**\n\n```ts\nconst configuration: Configuration = {\n    // Filters identifiers defined in @adguard/dnr-rulesets\n    filters: [1, 2, 3, 4, 9, 14],\n    filteringEnabled: true,\n    assetsPath: 'filters',\n    allowlist: ['www.example.com'],\n    rules: ['example.org##h1'],\n};\n```\n\n> ![!WARNING]\n> **Please note, that we do not allow using `filters.adtidy.org` other than for\n> testing purposes**. You have to use your own server for storing filter files.\n> You can (and actually should) use `filters.adtidy.org` for periodically\n> updating files on your side.\n\n## Local Script Rules for MV3\n\nIn Manifest V3 extensions, JavaScript injection rules have strict security restrictions\ndue to Chrome Web Store policies regarding remote code execution. The API enforces a\nrequired validation mechanism to ensure all script rules are pre-verified.\n\n### How it works\n\n**When local_script_rules.js IS provided (Recommended):**\n\n- All JS script rules are pre-verified and bundled into the extension during the build process.\n- At runtime, only script rules that match entries in `local_script_rules.js` are executed.\n- All other scripts are discarded to prevent remote code execution.\n- This ensures perfect compliance with Chrome Web Store policies.\n\n**When local_script_rules.js is NOT provided:**\n\n- All script rules (except scriptlets) will be **blocked** for security compliance.\n- The extension will not execute any custom JS rules to prevent potential remote code execution.\n- **It is highly recommended to always provide `local_script_rules.js`** during your build process.\n\n**With UserScripts API permission enabled:**\n\n- Custom JS rules can be executed directly via the browser's userScripts API, which provides secure sandboxing.\n- This requires explicit user activation via extension settings.\n\n### Why it's critical for MV3\n\nProviding `local_script_rules.js` is **essential** for MV3 extensions because:\n\n1. Chrome Web Store strictly forbids remote code execution in extensions.\n2. Pre-verification ensures only safe, approved scripts can execute.\n3. Failure to provide it results in all script rules being blocked.\n4. This prevents Chrome Web Store rejection due to potential policy violations.\n\n### Extending `local_script_rules.js`\n\nYou can extend `local_script_rules.js` with custom rules during your extension's build process.\nThis allows you to pre-approve specific custom scriptlets or JS injection rules before runtime.\n\n**Example implementation:**\n\nSee the MV3 example extension for a complete implementation:\n\n- **Extra scripts definition**:\n  [`extension/src/extra-scripts.ts`][extra-scripts-example]\n- **Build script usage**:\n  [`scripts/build/build.ts`][build-script-example]\n\n[extra-scripts-example]: ../examples/adguard-api-mv3/extension/src/extra-scripts.ts\n[build-script-example]: ../examples/adguard-api-mv3/scripts/build/build.ts\n\nThe build script uses the `AssetsLoader.extendLocalScriptRulesJs()` method to add\nextra pre-verified rules to `local_script_rules.js`:\n\n```typescript\nimport { AssetsLoader, LOCAL_SCRIPT_RULES_JS_FILENAME } from '@adguard/dnr-rulesets';\nimport { extraScripts } from './extra-scripts';\n\nconst loader = new AssetsLoader();\nawait loader.extendLocalScriptRulesJs(\n    path.join('./extension/filters', LOCAL_SCRIPT_RULES_JS_FILENAME),\n    extraScripts\n);\n```\n\n## Excluding Unsafe Rules for Chrome Web Store \"Skip Review\"\n\nChrome Web Store provides a\n[\"skip review\" option](https://developer.chrome.com/docs/webstore/skip-review)\nfor extensions that only use \"safe\" declarativeNetRequest rules.\nThis allows your extension updates to be published instantly without\nmanual review, significantly reducing update deployment time.\n\n### What are safe rules?\n\nAccording to Chrome's policy, only declarative rules with the following action types are considered \"safe\":\n\n- `block` - blocks network requests\n- `allow` - allows network requests\n- `allowAllRequests` - allows all requests from a domain\n- `upgradeScheme` - upgrades HTTP to HTTPS\n\nRules with other action types (such as `redirect`, `modifyHeaders`,\n`removeHeaders`) are considered \"unsafe\" and require manual review.\n\n### Why exclude unsafe rules?\n\nTo qualify for the \"skip review\" option in Chrome Web Store:\n\n1. Your extension must only contain safe declarative rules\n2. Unsafe rules must be excluded from your rulesets during the build process\n3. This allows faster extension updates and reduces review queue time\n\n### How to exclude unsafe rules in your build process\n\nThe `@adguard/dnr-rulesets` package provides the `excludeUnsafeRules` function that:\n\n- Scans all rulesets in your filters directory\n- Identifies and removes unsafe rules\n- Stores unsafe rules in metadata for reference\n- Updates ruleset checksums automatically\n- AdGuard API will extract unsafe rules automatically and apply them via `sessionRules`\n\n#### CLI Usage\n\nAdd this command to your build process after loading DNR rulesets:\n\n```bash\ndnr-rulesets exclude-unsafe-rules ./extension/filters/declarative [options]\n```\n\n**Options:**\n\n- `--prettify-json` (default: `true`) - Prettify JSON output\n- `--limit <number>` - Maximum number of unsafe rules allowed. Build fails if exceeded.\n\n**Example in package.json:**\n\n```json\n{\n  \"scripts\": {\n    \"load-dnr-rulesets\": \"dnr-rulesets load ./extension/filters\",\n    \"patch-manifest\": \"dnr-rulesets manifest ./extension/manifest.json ./extension/filters\",\n    \"exclude-unsafe-rules\": \"dnr-rulesets exclude-unsafe-rules ./extension/filters/declarative --limit 4900\",\n    \"build\": \"npm run load-dnr-rulesets && npm run patch-manifest && npm run exclude-unsafe-rules\"\n  }\n}\n```\n\n`4900` is selected intentionally since limit for `sessionRules` is `5000`.\n\n#### Programmatic API Usage\n\nYou can also integrate `excludeUnsafeRules` into your build scripts:\n\n```typescript\nimport { excludeUnsafeRules } from '@adguard/dnr-rulesets';\n\nasync function build() {\n    // Load DNR rulesets and patch manifest first\n    // ... your existing build code ...\n\n    // Exclude unsafe rules for CWS \"skip review\"\n    await excludeUnsafeRules({\n        dir: './extension/filters/declarative',\n        prettifyJson: false,  // optional: minimize JSON file size\n        limit: 4900,          // optional: fail build if too many unsafe rules\n    });\n\n    console.log('Unsafe rules excluded. Extension is ready for CWS skip review.');\n}\n```\n\n**Complete build script example:**\n\n```typescript\nimport { AssetsLoader, ManifestPatcher, excludeUnsafeRules } from '@adguard/dnr-rulesets';\n\nasync function build() {\n    // 1. Load DNR rulesets\n    const loader = new AssetsLoader();\n    await loader.load('./extension/filters');\n\n    // 2. Patch manifest with rulesets\n    const patcher = new ManifestPatcher();\n    patcher.patch('./extension/manifest.json', './extension/filters', {\n        forceUpdate: true,\n        ids: ['2', '3'], // your filter IDs\n    });\n\n    // 3. Exclude unsafe rules for CWS \"skip review\"\n    await excludeUnsafeRules({\n        dir: './extension/filters/declarative',\n        prettifyJson: false,\n        limit: 4900,\n    });\n\n    // 4. Continue with your webpack/build process...\n}\n```\n\n### Important Notes\n\n- **Call order matters**: Always run `excludeUnsafeRules` **after**\n  loading rulesets and patching manifest. Prevent double call of\n  `excludeUnsafeRules` in your build process since it will override\n  unsafe rules from first call and all unsafe rules will be just\n  deleted from rulesets.\n\nFor a complete working example, see the\n[example extension build script](../examples/adguard-api-mv3/scripts/build/build.ts).\n\n## Static methods\n\nCreates a new `AdguardApi` instance.\n\n### `AdguardApi.create`\n\n**Syntax:**\n\n```typescript\npublic static async create(): Promise<AdguardApi>\n```\n\n**Example:**\n\n```typescript\nconst adguardApi = await AdguardApi.create();\n```\n\n## Methods\n\n### `adguardApi.getMessageHandler`\n\nGets the message handler for API content script messages.\n\nThe API message handler name is a constant that can be exported as\n`MESSAGE_HANDLER_NAME` from `@adguard/api-mv3`.\n\nThe list of possible message types is defined in [tswebextension](../tswebextension/src/lib/common/message.ts)\n\n**Syntax:**\n\n```ts\npublic getMessageHandler(): MessageHandlerMV3\n```\n\n**Example:**\n\n```ts\n// get tswebextension message handler\nconst handleApiMessage = adguardApi.getMessageHandler();\n\nconst handleAppMessage = async (message: Message) => {\n  // handle your app messages here\n};\n\n// route message depending on handler name\nbrowser.runtime.onMessage.addListener(async (message, sender) => {\n  if (message?.handlerName === MESSAGE_HANDLER_NAME) {\n    return Promise.resolve(handleApiMessage(message, sender));\n  }\n  return handleAppMessage(message);\n});\n```\n\n**Returns:**\n\nA message handler that will listen to internal messages. For example: messages\nfor get computed css for content-script.\n\n### `adguardApi.start`\n\nInitializes AdGuard API and starts it immediately.\n\n**Syntax:**\n\n```typescript\npublic async start(configuration: Configuration): Promise<Configuration>\n```\n\n**Example:**\n\n```typescript\nconst appliedConfiguration = await adguardApi.start(configuration);\n```\n\n**Parameters:**\n\n- `configuration` - [API Configuration](#configuration)\n\n**Returns:**\n\nA Promise, resolved with applied\n[API Configuration](#configuration) when api is initialized and\nfiltering started\n\n### `adguardApi.stop`\n\nCompletely stops AdGuard API.\n\n**Syntax:**\n\n```ts\npublic async stop(): Promise<void>\n```\n\n**Example:**\n\n```ts\nawait adguardApi.stop();\n```\n\n**Returns:**\n\nPromise, resolved when API is completely stopped\n\n### `adguardApi.configure`\n\nThis method modifies AdGuard configuration.\n\n> Note, that Adguard must be already started (see [adguardApi.start](#adguardapistart)).\n\n**Syntax:**\n\n```ts\npublic async configure(configuration: Configuration): Promise<Configuration>\n```\n\n**Example:**\n\n```ts\nconst updatedConfiguration = await adguardApi.configure(configuration);\n```\n\n**Parameters:**\n\n- `configuration` - [API Configuration](#configuration)\n\n**Returns:**\n\nA `Promise` object that is getting resolved with applied\n[API Configuration](#configuration) when the API config is updated.\n\n### `adguardApi.openAssistant`\n\nOpens the AdGuard Assistant UI in the specified tab. You must also subscribe\non [onAssistantCreateRule](#adguardapionassistantcreaterule) event channel for\napplying rules that are created by Adguard Assistant.\n\n**Syntax:**\n\n```ts\npublic async openAssistant(tabId: number): Promise<void>\n```\n\n**Example:**\n\n```ts\nawait adguardApi.openAssistant(tabId);\n```\n\n**Parameters:**\n\n- `tabId` - `chrome.tabs.Tab` id, see: <https://developer.chrome.com/docs/extensions/reference/tabs/#type-Tab>\n\n**Returns:**\n\nA `Promise` object that is getting resolved when the Assistant UI is opened in\nthe specified tab.\n\n### `adguardApi.closeAssistant`\n\nCloses AdGuard Assistant in the specified tab.\n\n**Syntax:**\n\n```ts\npublic async openAssistant(tabId: number): Promise<void>\n```\n\n**Example:**\n\n```ts\nawait adguardApi.closeAssistant(tabId);\n```\n\n**Parameters:**\n\n- `tabId` - `chrome.tabs.Tab` id, see: <https://developer.chrome.com/docs/extensions/reference/tabs/#type-Tab>\n\n**Returns:**\n\nA `Promise` object that is getting resolved when Assistant UI id closed in the\nspecified tab.\n\n### `adguardApi.getRulesCount`\n\nGets currently loaded rules count.\n\n**Syntax:**\n\n```typescript\npublic getRulesCount(): number\n```\n\n**Example:**\n\n```typescript\nadguardApi.getRulesCount();\n```\n\n**Returns:**\n\nrules count number\n\n### `adguardApi.onAssistantCreateRule`\n\n`TsWebExtension` event channel that receives events when a rule is created\nvia AdGuard Assistant.\n\n**Syntax:**\n\n```ts\npublic onAssistantCreateRule: EventChannel<string>;\n```\n\n**Example:**\n\n```ts\n\n// update config on Assistant rule apply\nconst applyRule = async (rule): Promise<void> => {\n  console.log(`Rule ${rule} was created by Adguard Assistant`);\n  configuration.rules!.push(rule);\n  await adguardApi.configure(configuration);\n};\n\n// add listener\nadguardApi.onAssistantCreateRule.subscribe(applyRule);\n\n// remove listener\nadguardApi.onAssistantCreateRule.unsubscribe(applyRule);\n```\n\n### `adguardApi.onRequestBlocked`\n\nAPI for adding and removing listeners for request blocking events.\n\n> [!NOTE]\n> You must have the `webRequest` permission in your manifest to use.\n\n> [!NOTE]\n> Rule calculated by tsurlfilter is not always the same as the declarative rule that has blocked the request.\n> That's why we provide an `assumedRule` and `assumedFilterId` properties in the event object.\n> We will improve the rule calculation algorithm to provide more accurate results in future releases.\n\n**Syntax:**\n\n```typescript\nexport interface RequestBlockingLoggerInterface {\n    addListener(listener: EventChannelListener<RequestBlockingEvent>): void;\n    removeListener(listener: EventChannelListener<RequestBlockingEvent>): void;\n}\n```\n\n**Callback parameter properties:**\n\n```typescript\ntype RequestBlockingEvent = {\n    /**\n     * Tab identifier.\n     */\n    tabId: number;\n\n    /**\n     * Blocked request id.\n     */\n    requestId: string;\n\n    /**\n     * Blocked request URL.\n     */\n    requestUrl: string;\n\n    /**\n     * Referrer URL.\n     */\n    referrerUrl: string;\n\n    /**\n     * Request mime type\n     */\n    requestType: ContentType;\n\n    /**\n     * Assumed Filtering rule index, which has blocked this request.\n     * May not be provided if request is blocked by DNR rule.\n     */\n    assumedRuleIndex?: number;\n\n    /**\n     * Assumed rule's filter identifier. May not be provided if request is blocked by DNR rule.\n     */\n    assumedFilterId?: number;\n\n    /**\n     * Company category name for requests blocked by DNR rule. Provided only if request is blocked by DNR rule.\n     */\n    companyCategoryName?: string;\n};\n```\n\nLearn more about `companyCategoryName` in the [list of company categories].\n\n> Note that few events can be fired for the same request, e.g., when a request is blocked by a DNR rule,\n> first event is fired during `onBeforeRequest` with `assumedRuleIndex` and `assumedFilterId` properties\n> but no `companyCategoryName` is provided,\n> and the second event is fired during `onErrorOccurred` with `companyCategoryName` property defined\n> but `assumedRuleIndex` and `assumedFilterId` are `-1`.\n> So you can handle such requests by the `requestId` property.\n\n[list of company categories]: https://github.com/AdguardTeam/companiesdb/blob/main/README.md#tracker-categories\n\n**Example:**\n\n```typescript\n// Registers an event listener\nadguardApi.onRequestBlocked.addListener(\n  callback // function, mandatory\n)\n// Removes specified event listener\nadguardApi.onRequestBlocked.removeListener(\n  callback // function, mandatory\n)\n```\n\n> Supported Request types:\n>\n> - `DOCUMENT` - top-level frame document.\n> - `SUBDOCUMENT` - document loaded in a nested frame.\n> - `SCRIPT`\n> - `STYLESHEET`\n> - `OBJECT`\n> - `IMAGE`\n> - `XMLHTTPREQUEST`\n> - `MEDIA`\n> - `FONT`\n> - `WEBSOCKET`\n> - `OTHER`\n\n## Usage\n\nSee full sample app project in [examples/adguard-api](../examples/adguard-api-mv3)\n\n```ts\nimport browser from 'webextension-polyfill';\nimport { AdguardApi, type Configuration, MESSAGE_HANDLER_NAME } from '@adguard/api-mv3';\n\n(async (): Promise<void> => {\n    // create new AdguardApi instance\n    const adguardApi = await AdguardApi.create();\n\n    // console log event on request blocking\n    const onRequestBlocked = (event: RequestBlockingEvent) => {\n        console.log(event);\n    };\n\n    adguardApi.onRequestBlocked.addListener(onRequestBlocked);\n\n    let configuration: Configuration = {\n        /**\n         * filters identifiers from dnr-rulesets\n         * @see https://filters.adtidy.org/extension/chromium/filters.json\n         */\n        filters: [2, 3, 4],\n        filteringEnabled: true,\n        allowlist: ['www.example.com'],\n        rules: ['example.org##h1'],\n        assetsPath: 'filters',\n    };\n\n    // console log current rules count, loaded in engine\n    const logTotalCount = (): void => {\n        console.log('Total rules count:', adguardApi.getRulesCount());\n    };\n\n    try {\n        configuration = await adguardApi.start(configuration);\n        console.log('Finished Adguard API initialization.');\n        console.log('Applied configuration: ', JSON.stringify(configuration));\n        logTotalCount();\n    } catch (error) {\n        console.error('Failed to start AdGuard API:', error);\n        return;\n    }\n\n    configuration.allowlist!.push('www.google.com');\n\n    try {\n        await adguardApi.configure(configuration);\n        console.log('Finished Adguard API re-configuration');\n        logTotalCount();\n    } catch (error) {\n        console.error('Failed to configure AdGuard API:', error);\n    }\n\n    const onAssistantCreateRule = async (rule: string) => {\n        // update config on assistant rule apply\n        console.log(`Rule ${rule} was created by Adguard Assistant`);\n        configuration.rules!.push(rule);\n        try {\n            await adguardApi.configure(configuration);\n            console.log('Finished Adguard API re-configuration');\n            logTotalCount();\n        } catch (error) {\n            console.error('Failed to apply assistant rule:', error);\n        }\n    };\n\n    adguardApi.onAssistantCreateRule.subscribe(onAssistantCreateRule);\n\n    // get tswebextension message handler\n    const handleApiMessage = adguardApi.getMessageHandler();\n\n    // define custom message handler\n    const handleAppMessage = async (message: any) => {\n        switch (message.type) {\n            case 'OPEN_ASSISTANT': {\n                const active = await browser.tabs.query({ active: true });\n                if (active[0]?.id) {\n                    await adguardApi.openAssistant(active[0].id);\n                }\n                break;\n            }\n            default:\n            // do nothing\n        }\n    };\n\n    browser.runtime.onMessage.addListener(async (message, sender) => {\n        // route message depending on handler name\n        if (message?.handlerName === MESSAGE_HANDLER_NAME) {\n            return Promise.resolve(handleApiMessage(message, sender));\n        }\n        return handleAppMessage(message);\n    });\n\n    // Disable Adguard in 1 minute\n    setTimeout(async () => {\n        adguardApi.onRequestBlocked.removeListener(onRequestBlocked);\n        adguardApi.onAssistantCreateRule.unsubscribe(onAssistantCreateRule);\n        await adguardApi.stop();\n        console.log('Adguard API MV3 has been disabled.');\n    }, 60 * 1000);\n})();\n```\n\n<!-- TODO: check minimum supported version later -->\n## Minimum supported browser versions\n\n| Browser                 | Version |\n| ----------------------- | :-----: |\n| Chromium Based Browsers |   84    |\n\n## Documentation\n\n- [Changelog](CHANGELOG.md)\n- [Development guide](../../DEVELOPMENT.md)\n- [LLM agent rules](AGENTS.md)\n","readmeFilename":"README.md"}